I am of the opinion that the Hypertext Transfer Protocol is a marvel. It’s earliest version could not be simpler: it only describes the most basic GET request, and yet GET remains the workhorse of the web thirty-three years later. The rest of what would ... more
Background I have been working on a long running Rails application where one of the primary pieces of functionality is the ability to export dozens of reports in PDF format. When the application was first written the PDF generation was handled by PDFKit. ... more
Using the Platform If you’ve ever worked on a front-end project, especially one that’s a Single Page Application, you’ve probably needed to do client-side validation. There’s quite a few options we could choose, so let’s do a quick rundown of everything. ... more
Whenever website analytics are discussed it is usually in the context of marketing. Which pages are getting the most visits, which advertising campaigns are most successful, and so on. You don’t have to work in advertising to make use of analytics, especially ... more
What Are Render Functions? Render functions are what Vue uses under the hood to render to the DOM. All vue templates are compiled into render functions which return a virtual DOM tree and get mounted to the actual DOM. This template: <div>hello</div> ... more
Sometime in the year 2020 time collapsed on itself and lost all meaning. Children ran rampant through zoom meetings and we all generally forgot how to wear pants. Yes, the darkened days. What did we do in 2020? We all became home chefs. We dove head ... more
It’s easy to think of software development as a baldly utilitarian task. A process needs to be formalized or some data needs to be transformed, and so we write code that automates the task. Inputs are received, outputs are produced, and you might assume ... more
I had only a small amount of experience with Django when I started my current project. Naively, I thought that learning this new tech stack would be a breeze since I had worked with many different frameworks before. However, as I dug deeper into Django ... more
This post is a guide for creating pseudorandom yet deterministic tests in Cypress. Cypress can “test anything that runs in a browser”. As such it is mostly agnostic about the implementation details of your application, such as a front-end framework, ... more
The Problem The Pinia docs offer two distinct syntax for writing Pinia stores. Option Store Setup Store However when asked, “Which syntax should I pick”, the docs simply say to “pick the one that you feel the most comfortable with”. “You do not yet realize ... more
As the Simple Thread team grew in 2022, so did the list of books that we’ve collectively read. We rounded up a few of the favorites from a few of our team members that were read this past year and wanted to give the gift of sharing with them you all ... more
When I started at Simple Thread earlier this year, I got brought on a new project where we decided on using Tailwind for writing CSS. I was initially hesitant about it since I very much like writing plain old CSS. I wrote a lot of custom CSS at my previous ... more
Good names What is a name? A name is a label, a handle, a pointer in your brain’s memory. A complex idea neatly encapsulated. A name lets you refer to “the economy” , or “dogfooding” mid-sentence without needing a three-paragraph essay to explain the ... more
It’s common for applications to use threaded comment replies for managing communication. In Vue, we can use recursion to help manage displaying those threads. What is recursion? Simply put, a recursive function is one that calls itself with some condition ... more
In a previous life, I was what you could call a “cartographer”. I spent my days making maps, but probably not in the way that immediately comes to mind. I wasn’t out exploring uncharted wildernesses; I was sitting in front of a computer teasing away ... more
Not too long ago, I built a React app using MobX for state management. It was an exciting, at times confusing, but overall enjoyable experience that I plan to write about soon. One distinctive feature of MobX development that I found especially interesting ... more
Last Friday marked our third annual RVA JavaScript Conference, and we think it was our best one yet! Thank you Richmond! We are truly grateful to all of the attendees and the Richmond and central Virginia software development communities for making it ... more
Simple Thread is one of the organizing sponsors of next month’s RVA JavaScript Conference; one of our region’s most successful annual software conferences. This has led us to some lessons learned in fostering sponsor-attendee engagement. How Storybrand ... more
Oprah Winfrey is famous for many reasons, but one of the most popular episodes of her eponymous talk show was her yearly “Favorite Things” Show — it’s actually so popular, years removed from Oprah , she still publishes her annual list. In Favorite Things, ... more
This past year I decided to catch up on the latest in JavaScript frameworks and learn React. Actually, it was it bit more than just learning React as I also was eager to pick up ES6 and Node. Anyway, after experiencing the complexities of Angular, Backbone, ... more