It’s exhausting to communicate all day in your non-native language, but we can practice kindness and understanding to relieve some of that mental load. | Continue reading
Why we undervalue front-end expertise in the web development world. | Continue reading
Applications are now open for our first 2022 Apprenticeships. This is our paid, junior-level position providing structured support and mentorship to get you to be a billable thoughtbot Developer or Designer. | Continue reading
Get better at detecting and preventing bugs by focusing on the boundaries in and around your program. | Continue reading
What technologies do we recommend to early career web developers? | Continue reading
Broadening our definition of “parsing” yields some useful insights. | Continue reading
Build a search-as-you-type text box with Turbo, Stimulus, and Rails. | Continue reading
Write Boolean expressions using operators instead of if/else for a more readable outcome. | Continue reading
Search through user-provided HTML content with PostgreSQL and Active Record. | Continue reading
Classical philosophy offers us multiple reasoning strategies for dealing with tricky bugs. | Continue reading
De-risking ideas early and often is an effective, enlightening way of figuring out the how. | Continue reading
Test-driven development, object-oriented design, and functional programming converge on some similar ideas. | Continue reading
TDD purism belongs to the world of dynamic typing. | Continue reading
Did you know you could use a mouse without using your hands? | Continue reading
In The Visual Display of QuantitativeInformation, Edward Tufte calls... | Continue reading
Describing images with the alt attribute and figcaption element. | Continue reading
There are benefits and drawbacks to every CSS styling approach. Keeping an open mind helps. | Continue reading
Scheduling, recurring events and relative dates have always been hard. Until now. | Continue reading
Performance issues are a form of technical debt, and we must pay them off by making informed incremental improvements. | Continue reading
Chances are you’ve worked with the any
type in TypeScript. It’s widely overused, and subtly dangerous. Let’s explore why you should avoid it, and when you might truly need to use it.
|
Continue reading
Our communication practices can be very disrupting. Remote work has taught me to be more considerate of how I communicate with others. We should treat other people’s time as we like ours to be treated. | Continue reading
Most people learn vim’s normal
, insert
, and visual
modes. But they’re only casually acquainted with vim’s powerful Ex commands. Let’s take a look at some.
|
Continue reading
Have you ever tried to find a bug that only exists in staging, and no one knows why? That’s not nice at all. | Continue reading
Emacs’ Org mode is a great tool for productivity, be it business or pleasure. | Continue reading
Learn how to apply a little forethought and discipline to provide your users a more informative and stable app experience. | Continue reading
Learn how to apply a little forethought and discipline to provide your users a more informative and stable Web experience. | Continue reading
Vim has a reputation for being hard to quit. But it turns out there are so many ways to get out of it — it’s like vim wants you to quit. Let’s look at a few. | Continue reading
Learn how to imbue your vim setup with the power of the TypeScript language server. | Continue reading
A list of best practices while developing an App using React Native for an efficient coding experience. | Continue reading
Making stuff is cool, but making stuff people actually use is amazing. Learn how to do the latter. | Continue reading
Behind every great digital product is a great internal product, but prioritising dashboards over new features can be a tough decision. Here are some reasons to consider taking the time to think differently about internal products and the people that use them. | Continue reading
One of the first questions developers and designers are asked when planning a new feature is “How long would that take?”. But what do we gain from the answer? | Continue reading
Naming presenters can be challenging. By shifting our perspective to look at what abstraction we are representing rather than the data being presented, we can bring clarity to our presenters, views, and models. | Continue reading
Having your code reviewed can be daunting. But it can also be very helpful. As reviewers, we can make the difference. Here are five tips to make your code reviews more helpful to the author. | Continue reading
When faking external services in tests, start with something simple. I like having a public interface to adapters and having an in-memory adapter for tests. Let me show you an example. | Continue reading
Refactoring has a specific meaning. When we misuse the word, we lose the ability to communicate an important concept. Let’s revisit what refactoring is and what it is not. | Continue reading