I’ve been looking for a way to give back to the cycling community of my town that I love so much for many years, and it’s finally coming together in the form of Bend Bike Rides: a site for the community to see and report trail conditions, gather on group rides, and more. Continue reading…
I just spent far too long trying to bend Zed to my will. It reminded me of how I needed multiple weeks on and off configuring and reconfiguring VSCode to work for me. It is rare that the defaults provided in a code editor work for me. So I tried, and I’ve given up for a few very important (to me) reasons… Continue reading…
I am thrilled to announce the first major version of oneRepo. Many years of experience creating monorepo tooling for high performance frontend, JavaScript, and TypeScript teams at major organizations has led to the creation of this command-line interface, an API, and a toolchain for better, safer, and faster monorepos. Continue reading…
It cannot be denied just how fast Rust-based linters for JavaScript are. The major tools available now are Biome and Oxc , both running at nearly 100x the speed of ESLint. But they have one major drawback and I don’t think they’re going to take over ESLint without it… Continue reading…
Here’s a little trend for 2023 that’s going around: listing out the default apps (and tools!) that I’ve used in 2023. I enjoy this little go around, as I’ve been getting to discover new apps that I might want to try. Continue reading…
Path aliasing, sometimes referred to as import or module resolution, in the earliest and most naïve sense, is a method of overloading the Node Require Resolution Algorithm so that it first looks in some particular defined folders for modules of a given name before looking for installed modules of the same name in node_modules folders. While this seems handy at first glance, in practice, it’s is an…
When was the last time you stopped to think about the cost of a new third-party package that you’re adding into your process? Where do you recommend balancing between “not invented here” syndrome and using packages just because they exist? I always come back to the “left-pad incident” as an extreme example to avoid the latter, but where should we be drawing the line between the two? Let’s take a…
How do so many people just ignore cruft in their projects and keep moving forward? I was fighting with a bunch of package.json files recently that had 10s of dependencies that were completely unused. Why was it left this way? Continue reading…
The problem with Web Components has and always will be that they were designed for the browser and not for the developer. As many features as they get, they’re still ergonomically odd and difficult to maintain. Continue reading…
We’re now nearly a month into the year 2023. I’ve started a new job and have been doing a lot of research for new projects and auditing old code. This process has given me time to reflect on what is and is not working – and what I’d like to see going forward this year. Continue reading…
I’m a bit of a stickler about meetings. If I can, I like to instill a healthy meeting culture in teams I work with. Not all meetings are bad, but I have some rules that I like to follow to ensure that they don’t become that way. This is my list of tips for keeping meetings healthy and useful. Continue reading…
I’ve been thinking back to my time as a core member of the original team that built the Twitter web app. I learned a great many lessons there and thinking through them: How would I rebuild something similar to the Twitter web app today, like a Mastodon or Activity Pub web client? Continue reading…
We all make mistakes in the technical planning process that bubble through to execution. Looking back over the past 10 years or so, these are the two biggest tech & development mistakes that I think I have made and the lessons that I’ve learned from them. Continue reading…
I originally wanted to avoid using any sort of server-side code for my site, getting around the FART completely is not currently possible when you have a statically generated site. In this post, I’ll walk through how I got rid of the flash of inaccurate color themes for Tailwindcss dark mode (with auto media query support!), building off of some others’ examples using Netlify Edge Functions.…
I can’t think of any scenario when I do not want box-sizing: border-box; set on every element on my page by default. In fact, I can’t think of the last time that I wanted to use the default content-box method. However, I’ve just come across a major company’s design system that does not use border-box across all elements. Continue reading…
I built my website with Astro, without having intended to. I often use my own personal site as a test-bed for learning new frameworks and tech. In testing out Astro, it just sort of stuck. As I continued, it became clear why – but the reason isn’t what I thought it would be. Continue reading…
It is odd to feel this way, I admit. But with Twitter’s new management, I feel like I’m mourning the loss of something that was near and dear to me. Continue reading…
I created my own Photo Booth application with Electron, Node.js, React, and Tailwindcss and used a GoPro as a webcam for my wedding instead of renting a commercial booth. It was fun to build and even more fun to use. Continue reading…
This is a collection of tools and things that I use on a daily basis that I just want to have written down somewhere. Maybe they’re useful for you too. Continue reading…
As teams grow, become distributed, and not everyone is able to be involved in every decision, it becomes more important to record what’s happening and why decisions are and were made. From a technical standpoint, “Tech Designs” are a great way to structure this information and keep around long-term for posterity. Continue reading…
I needed an escape while stressing about my (previously) upcoming wedding. Having some personal annoyances with how difficult it would be to personalize Docusaurus, I sat down and hacked at Astro for a day and a half. I came up with a fully working static website & blog in no time. Continue reading…
I created my own photobooth application with Electron, Node.js, React, and Tailwindcss and used a GoPro as a webcam for my wedding instead of renting a commercial booth. It was fun to build and even more fun to use. Continue reading…
When needing to run a highly available Express server with Node.js and a lot of middleware, it’s important to ensure that you don’t have any runaway processes blocking other requests. In this post, I share an easy wrapper for Express applications to always ensure every middleware is captured in a timeout loop. Continue reading…
This part of the modern wedding website series will cover tools chosen to satisfy requirements of creating a modern wedding website in 2022. Continue reading…
Multi-part series documenting how to create a modern realtime RSVP-enabled wedding website using Google Firebase, React, Tailwindcss, and Parcel. Continue reading…
I’ve been sitting on this decision for a long time. It’s not easy to abandon something I have poured a lot of thought, care, time, and effort into. It’s almost like quitting a job… except I never got paid for the job. Open source was, is, and will continue to be the gateway for my entire skillset. Without it, I don’t think I would have ever learned how write software, let alone ever have become a…
Safely template HTML responses from Node.js and Express.js servers using JavaScript’s built-in templating functions, not giant libraries. Continue reading…
Working with git can be hard, verbose, and repetitive. I’ve been using this small collection of sh/zsh functions for a few years now and I don’t think I could work without them anymore. Continue reading…