Building a collaborative pixel art editor with CRDTs
CRDTs sound cool, but how are they actually used? Let's learn by building a collaborative pixel art editor.
The latest blog posts to take off on Hacker News. 552 posts.
CRDTs sound cool, but how are they actually used? Let's learn by building a collaborative pixel art editor.
A function that computes to the first color if the used color scheme is light or unknown, or to the second color if the used color scheme is dark.
Many projects are littered with files that just re-export other files. These so called "barrel files" are one of the key reasons why JavaScript tooling is slow in bigger projects.
Now that we’ve eliminated CAPTCHAs at Cloudflare, we want to hasten the demise of CAPTCHAs across the internet. We’re thrilled to announce that Turnstile is generally available, and Turnstile’s ‘Managed’ mode is now completely free to everyone for unlimited use.
Announcing the launch of Vivaldi on iOS – a new browsing experience available now on the App Store.
Guest Post: What problems HTTP/3 solves, how it performs, why it’s seen such swift adoption, and what limitations it is still working to overcome.
CRDTs don't have to be all academic papers and math jargon. Learn what CRDTs are and how they work through interactive visualizations and code samples.
Docker Compose is a brilliant tool for bringing up local development environments for web projects. But working with multiple projects can be a pain due to clashes. For example, all projects want to listen to port 80 (or perhaps one of the super common higher ones like 8000 etc.). This forces developers to only bring…
An exploration of how Extism makes it easy to use WebAssembly
Modern extension to classic 2003 article by Joel Spolsky
I’ll cut to the chase before I type too many more words: textarea { field-sizing: content; /* used to be `form-sizing` but changed to this */ } I came across it via an Amit Merchant blog post…
Many of my interactive pages have a draggable object . I want the reader to move the object around, and I want the diagram to respond in some way. Here I’ll document the code I use to make this work with both mouse and touch input, using browser features that are widely supported since 2020. Here’s a common case I…
I was checking the status of a FedEx order when Brave warned me that “this site has been blocked from accessing your motion sensors”. I’m struggling to understand why a website would need that access. Do I get a different experience if I drop my device? Tip my monitor over? Spin the mouse around?
This post looks at the Closure Compiler, Google's tool from the mid-2000s for adding types to JavaScript. It looks at how its focus on minification led to very different design choices than TypeScript, and how this and a few other factors led to TypeScript becoming the ubiquitous solution for JavaScript + types. The…
Today, we are introducing WebGPU support to Cloudflare Workers. This blog will explain why it's important, why we did it, how you can use it, and what comes next
Automated translation of web content is now available to Firefox users! Unlike cloud-based alternatives, translation is done locally in Firefox, so that the text being translated does not leave your machine. Many thanks to the various partners of the EU R&D Bergamot project.
Learn how to make your TypeScript npm packages accessible and usable by a wider audience in our easy-to-follow tutorial.
While the survey will be open for 3 weeks, responses entered within the first 9 days (until October 1st) will have a much higher impact on the Web, as preliminary data will be used to inform Interop 2024 proposals.
In typography/design, ‘sidenotes’ place footnotes/endnotes in the margins for easier reading. I discuss design choices, HTML implementations and their pros/cons.
As far as I know this is the first Haskell program compiled to Webassembly (WASM) with mainline ghc and using the browser DOM.
Starting in Android 14, it may not be necessary to use a third-party app to turn your smartphone into a webcam for your PC, as that functionality is getting baked into the Android OS itself — though there’s a catch.
Many popular npm packages depend on 6-8x more packages than they need to. Most of these are unnecessary polyfills and it's one of the key reasons node_modules folders are so large. The eslint ecosystem seems to be most affected by this.
I’ve been programming for a long time. When I say long time, I mean decades, with an S. Hopefully that’s long enough. In that time my experience has primarily been programming for contemporary platforms, e.g. Linux, Windows, macOS on desktop-class or server-class CPU architectures. Recently, I embarked on building a…
Rethinking ‘rethinking reactivity’
Behind the scenes - how I'm making redblobgames.com - interactive explanations of game development algorithms and math