Insights
Insights.
What we learn building and running real products: planning and launching for founders, and the engineering details for the curious.
What to prepare before you talk to an app studio
The few things that turn a first call into a useful one and an estimate into a real number. No technical knowledge needed.
Sending email from a Cloudflare Worker over plain SMTP
How our contact form sends email straight from a Cloudflare Worker to an ordinary mailbox provider, using TCP sockets and about 60 lines of SMTP.
Seamless video loops with Remotion
How we turned our logo into a looping hero video with Remotion, why every animated value is a function of the loop's time, and how we check the seam.
Why Safari would not play our video, and the 30-line Worker that fixed it
Cloudflare Workers static assets answer range requests with the whole file, and Safari refuses to play video served that way. How we found and fixed it.
Never lose a save: cloud saves with immutable blobs and compare-and-swap
A robust design for syncing user data across devices: write-once blobs plus one pointer updated with compare-and-swap, so a save is never overwritten by accident.
Building Expo Android apps locally instead of in the cloud
Release Android builds for an Expo app on our own Linux machines with eas build --local: exact toolchain versions and the Gradle memory settings that work.
Running a real app on the Cloudflare Workers free plan
What the free plan's 10 ms of CPU per request means in practice, and the design choices that keep a live travel app inside it.
Why Apple rejects apps, and how to get approved next time
The App Store rejections we see most often, what Apple actually means by them, and the fixes that get an app through review on the next try.
Start a project
Have something you want built?
Tell us about it. We reply to every message with an honest take on whether we are the right fit.