A good portion of my job on the developer experience team at Jump is focused on improving code quality, and writing Credo ¹ checks is a significant part of that. Today, Jump is open sourcing all the Credo checks we’ve built internally which might be of value to the rest of the community. Jump.CredoChecks encodes a lot of very opinionated (hi, have you met me? 👋) knowledge about ways that both…
At work, many of us were having a persistent issue where our Elixir app was having to do a full recompile very frequently, despite not having touched the dependencies, mix.exs , and so on. We were finally able to narrow it down to affecting the people who use Claude Code and Mise together (it may affect ASDF users as well?). The crux of the issue in our case was that Claude’s Bash tool (and it…
This is the talk I gave at ElixirConf 2025, titled “Cat and Mouse: Challenges in Adversarial Web Scraping.” Description: The time comes in every developer’s career when they need to scrape a web page. If you’re lucky, a simple HTTP request gets you what you need, or maybe you have to spoof some browser headers. But if that’s not enough, what can you do? And from the other side, as a site operator,…
This is the lightning talk I gave at ElixirConf 2024, “Don’t Say the M Word.” View the Google Slides Download the PDF (160 KB) Unable to display PDF file. Download instead.
These are the slides for my ElixirConf 2024 talk, “More Testing, Fewer Tests.” These slides probably don’t make a ton of sense on their own—you’ll also need the code samples, particularly the test directory. Find the code on GitHub View the Google Slides Download the PDF (160 KB) Unable to display PDF file. Download instead.
Contents Who cares about one-person frameworks? How Elixir collapses a web app’s tech stack Removing layers of the stack Building more of the stack into the platform itself Building more of the stack using tools you already know What's it add up to? A few other accelerators for SaaS startups Buying a 200 hour head start Consuming OpenAPI specifications with grace Maintainability over time Wrapping…
This week, I launched a demo feature for SleepEasy to make it really easy for prospective users to see what the app can do for their site. Right at the top of the home page , you just drop in your site’s URL and we’ll check: Uptime (is your site working at all?) Broken links (we’ll try to load the first 5,000 links, images, scripts, etc.) HTTPS support (to make sure your SSL/TLS certificates…
Two of the core features of SleepEasy—uptime checks and broken link checking—are built on web scraping. In this last half of December, as I gear up for a big marketing push and public signups, I’ve been doing a lot of work to get these features really dialed in and reliable. The naive approach to web scraping is so simple! You make an HTTP GET request and… bam! Done! As with everything in software…
There’s a joke in rocket engineering that you never say something exploded, you say it underwent a rapid, unscheduled disassembly. In the same way, I experienced some rapid, unscheduled learning this last week with SleepEasy. It started last Sunday, when I talked about how the early access launch went . At the very end of the post (and the accompanying social media threads), I linked to the newly…
Last week I soft-launched SleepEasy to people on my early access list . I had a small email list of about 30 people who had signed up because they wanted SleepEasy to monitor their domain, and in the course of talking about the early access launch, another 10 or so people joined that list. So, how did it go? How many people signed up? Keep in mind, I was launching to an intentionally small group.…