NotesYou are viewing a humanly curated list of 681 fine personal & independent blogs and sites that are updated regularly. No algorithms ever!FeedUnfurl
NotesWouldnât it be nice if you could link to specific bits of text on a Web page rather than forcing people following your links to scan the page for whatever piece of information youâre trying to convey? With full support from major browser manufacturers appearing late last year, the Web has finally caught up with hypertext theory from the previous century.FeedUnfurl
NotesRandom morning thoughts: how many people actually visit this blog? Where do they come from? What if I could just spend a little time to build my own analytics?Unfurl
NotesMicroW8 is a WebAssembly based fantasy console inspired by the likes of TIC-80, WASM-4 and PICO-8.
The initial motivation behind MicroW8 was to explore whether there was a way to make WebAssembly viable for size-coding. (Size coding being the art of creating tiny (often <= 256 bytes) graphical effects and games.) The available examples so far are all in this space, however, I very carefully made sure that all design decisions make sense from the point of view of bigger projects as well.Unfurl
Notes I feel that such claims about the IndieWeb not "taking off" are either stating the obvious or, if that's not the intention, completely missing the point. It's like saying that gardening hasn't taken off because most people buy their vegetables at the supermarket. The IndieWeb doesn't need to "take off" to be valuable to those who participate in it. Maintaining a personal website is about owning your digital presence, embracing creative freedom, and expressing your individuality! It's not about appealing to the masses! FeedUnfurl
NotesA collaborative note taking, wiki and documentation platform that scales. Built with Django and React. Opensource alternative to Notion or Outline. Unfurl
NotesIf you take just one thing away from this article, I want it to be this: please build your own website. A little home on the independent web.FeedUnfurl
NotesInstead of a boring scrollbar thought it would be fun to have an animated stick figure that walks up and down the side of your page when you scroll. Unfurl
NotesMostly revealed to the Web by Solid.js, shortly after embraced by Preact, but also blended into usignal, or implemented by many others, this pattern convinced tons of developers that hooks might not be the best solution to reactivity out there, but while the concept might look and feel super simple and natural to deal with, the complexity behind spans from 30LOC to pretty convoluted code bases.FeedEmbedUnfurl
NotesOur compact signals implementation is inspired by Andrea Giammarchiâs excellent article on signals. If youâre curious about the nitty-gritty, I highly recommend giving it a read.
NotesToday, I learned that PyScript exists. PyScript is, at its core, some rigging to make Pyodide, a WebAssembly port of the CPython Python interpreter, real easy to use as a proper client-side web scripting language. Just include one <script> tag and now <script type="py"> is a valid thing you can have in your website. Put Python code inside of it, interact with the DOM, the works. I think that rules and/or is kind of horrifying, depending. Obviously, for me, the immediate question was: Can this run Mastodon.py? And the answer is: Yes, very competently.FeedUnfurl
NotesWhat if you could add PostScript code just into your HTML code and forget about all the JavasScript? What if you could configure it just with the properties of the tag, having your PostScript graphics at the size as you want and at the format you want? Like an canvas tag, but without JavaScript. Like an SVG tag, but programmable. Unfurl
NotesEspecially for side projects with limited traffic requirements and scaling concerns, the promise of SQLite is that it can remove a lot of ongoing hassles. Without a separate database, cache, or queue, there is less network traffic (because the SQLite file is local), and less servers to manage, maintain, and backup.Unfurl
NotesRecently, a friend asked if I knew of a Web Component that generates a QR Code from meaningful HTML. She said that there seemed to be plenty of options for creating QR codes in general, but none that worked by extending already-useful HTML instead of just configuring it all with JavaScript. I couldn't find any either, but thinking through these kinds of patterns is probably what I enjoy most about working on the web, so I thought I'd write up how I'd make one.Unfurl
Notesscaling WebSockets has proven to be far more complex than we expected. Below are some of the most important lessons we've learned along the way.Unfurl
NotesWebGL shaders rendered to canvas elements are a great way to add interesting visuals to a website. Unfortunately, unlike HTML, they do not natively integrate with CSS. This post shows a way to work around this limitation and influence WebGL graphics from CSS.FeedUnfurl
NotesThis is a javascript library that can play module music files. It is based on the libopenmpt C/C++ library. To translate libopenmpt into Javascript emscripten was used.
Modernized ES6 module version with libopenmpt AudioWorklet backendUnfurl
NotesI was mulling over this for a while, and I had an idea. I like having a set of screenshots as a visual history of the stuff Iâve worked on (including this site), but Iâm not very good at remembering to create them. I just finished a bunch of design tweaking on this site, and I completely forgot to take a screenshot of what it looked like before I started making changes.FeedUnfurl
NotesI recently stumbled on a super cool, well-executed hover effect from the clerk.com website where a bloom of tiny pixels light up, their glow staggering from the center to the edges of its container. With some available free time over this Thanksgiving break, I hacked together my own version of a pixel canvas background shimmer. It quickly evolved into a pixel-canvas Web Component that can be enjoyed in the demo below. The component script and demo code have also been pushed up to a GitHub repo.FeedUnfurl
NotesAI isn't making our software dramatically better because software quality was (perhaps) never primarily limited by coding speed. The hard parts of software development â understanding requirements, designing maintainable systems, handling edge cases, ensuring security and performance â still require human judgment.
What AI does do is let us iterate and experiment faster, potentially leading to better solutions through more rapid exploration. But only if we maintain our engineering discipline and use AI as a tool, not a replacement for good software practices. Remember: The goal isn't to write more code faster. It's to build better software. Used wisely, AI can help us do that. But it's still up to us to know what "better" means and how to achieve it.FeedUnfurl
NotesSo why did we ditch Fly? In the end it came down to the following four things. Until these are improved, Iâd be unlikely to recommend it for Productionâą work.FeedUnfurl
NotesSkia Canvas is a browser-less implementation of the HTML Canvas drawing API for Node.js. It is based on Googleâs Skia graphics engine and, accordingly, produces very similar results to Chromeâs <canvas> element. The library is well suited for use on desktop machines where you can render hardware-accelerated graphics to a window and on the server where it can output a variety of image formats.Unfurl
NotesAs an alternative to Chromatic, Iâve been using Storybookâs Test Runner to power screenshot tests for Microsoft Loop. We configure the test runner to run in CI and take a screenshot of every story. However, the initial implementation based on the official Storybook docs was very flaky due to inconsistent screenshots of the same story. Here are some tips to reduce flakiness in your Storybook screenshot tests.Unfurl
NotesOn the Overture Slack, Jake Wasserman shared a cool trick where you can connect to a remote DuckDB database using the ATTACH statement, using an HTTP or S3 URL. Jakeâs demo was especially cool because he created a DB containing only views referencing an Overture parquet on S3, so the hosted database file was only a couple hundred kilobytes.FeedUnfurl
NotesIf you are rendering images in a canvas element and want to keep the pixels square and BLOCKY, you should know about the image-rendering CSS property.Unfurl
NotesBetter Auth is framework-agnostic authentication (and authorization) framework for TypeScript. It provides a comprehensive set of features out of the box and includes a plugin ecosystem that simplifies adding advanced functionalities. Whether you need 2FA, multi-tenant support, or other auth releated features. It lets you focus on building your actual application instead of reinventing the wheel.Unfurl
NotesMomentum scrolling plugins are the web equivalent of turning a functional bike into a unicycle because it "looks cool." It adds unnecessary complexity, degrades usability, and frustrates users. Instead of reinventing scrolling, stick to what works: native, predictable, fast scrolling behavior.
Don't make scrolling a thing. Just let people scroll.Unfurl