atlas news
    
Aral Balkan
25  juin     14h42
Web Numbers
   Are you ready for Web Numbers? Domains? Where we’re going, we don’t need domains IP addresses are about to make a comeback on the web in a big (ok, small) way. What’s all this, then? As some of you might know, I’ve been working for the past six years on building a little thing I call the Small Web...
21  mars     09h59
Careless people
   Facebook: they sound nice. This is not your father’s book review So, a bit of an admission: I normally don’t read stuff about Big Tech, even though I’ve been railing against it in one form or other for a little over the past decade. Why? It gets me angry. Like, really angry. I used to believe,...
16  octobre     17h45
Optimal automation
   We keep seeing the following cycle in growth-based systems: A technology is introduced that improves a manual process via automation. The technology is iteratively improved, eventually reaching an optimal state of automation. Instead of stopping there1, due to infinite growth requirements, we move...
19  août     16h22
Kitten Kawaii: porting a React library and Next.js web site to Kitten
   Interactive embed (play with it) Kitten Kawaii is a Kitten port of React Kawaii by Miuki Miu (Elizabet Oliveira) that you can play with in the interactive embed above (also try it out in its own window tab so you can see its responsiveness and URL-based state). I stumbled on Muiki Miu’s (Elizabet...
24  juin     09h50
Small Web: computer science colloquium at University of Groningen
   Download the video and watch it with your favourite video player. Recording1 of the live stream of a computer science colloquium on the Small Web I presented at the University of Groningen on June 11th, 2024. (Transcript) Update: I was going back and forth between calling the personal social...
23  juin     18h51
Fedora has been shipping with a broken screen reader for nine years but the real problem is me
   Fedora, a major Linux distribution, has been shipping with a broken screen reader for nine years1. This can only happen in an ableist culture. If there is one takeaway you need from this post, it’s this. Unless you’re interested in the details or the ensuing drama, you can stop reading here and you...
01  juin     11h05
Small Technology Foundation funding application for NLnet Foundation NGI Zero Core seventh call
   Yesterday, I spent most of the day getting Kitten’s new interactive shell working over a socket connection (this isn’t trivial if you want your shell to display Node.js REPL’s preview completions properly). Then, I took fifteen minutes to submit Small Technology Foundation’s application for funding...
23  mai     18h11
New Kitten features: Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability)
   Sorry, your browser doesn’t support embedded videos. But that doesn’t mean you can’t watch it You can download the video and watch it with your favourite video player. Yours truly demonstrating the new Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability) features...
26  mars     19h25
Draw Together
   Sorry, your browser doesn’t support embedded videos. But that doesn’t mean you can’t watch it You can download the video and watch it with your favourite video player. Let me take you step-by-step as I remake Draw Together from scratch. Draw Together is a little collaborative drawing toy I made...
08  mars     15h20
Streaming HTML
   Sorry, your browser doesn’t support embedded videos. But that doesn’t mean you can’t watch it You can download the video and watch it with your favourite video player. Building the Streaming HTML counter example. Estimated reading time: 25 minutes. Kitten has a new experimental workflow for...
20  février     09h59
End-to-end encrypted Kitten Chat
   Sorry, your browser doesn’t support embedded videos. But that doesn’t mean you can’t watch it You can download Small Is Beautiful #27 directly, and watch it with your favourite video player. Small Is Beautiful (Feb, 2023): End-to-end encrypted Kitten Chat (an example peer-to-peer Small Web app...
14  novembre     11h18
Installing Helix Editor Language Servers
   Helix Editor using the Bash Language Server to show the symbols in the script included in this post. figcaption margin-top: -1.5em Helix Editor I’ve been using Helix Editor as my daily driver for web development for most of this year and - while it has some outstanding issues1 (what doesn’t?) - I...
09  novembre     19h00
Is the fediverse about to get Fryed? (Or, Why every toot is also a potential denial of service attack )
   Stephen is a big fish to fry. (I’m here all week.) Warning: the fediverse is about to get Fryed. Stephen Fryed, that is. Following the recent takeover of Twitter by a proto-fascist billionaire man-baby, people have been fleeing1 to the fediverse2. Among them are folks who, on Twitter, at least,...
20  octobre     10h08
NLnet Grant Application for Domain Rejected
   On October 12th, 2022, we recevied the following form letter, informing us that our NLnet Grant Application (original application, follow-up questions and answers) for Domain has been rejected. Dear Aral, I'm sorry to have to inform you that your project "Domain" (2022-08-099)...
28  septembre     08h31
Nlnet Grant Application for Domain - First Update: Questions and Answers
   This is the first update to our NLnet Grant Application for Domain. You applied to the 2022-08 open call from NLnet. We have some questions regarding your project proposal Domain. Thank you for getting back to us. Please find the answers, inline, below. You requested 50000 euro, equivalent of one...
16  septembre     09h49
Small Is Beautiful Episode 22 Small Web Kitten Dweb Camp Braid
  
30  août     13h30
Dear Linux, Privileged Ports Must Die
   Privileged ports, toffs of the Linux world. Kitten is a small web server that runs as a user-level service and would never need elevated privileges if it wasn’t for one archaic anti-security feature in Linux that dates back to the mainframe era: privileged ports. Back to the future As it was in...
17  août     15h15
Lipstick on a Pig: learning the most important lesson in design
   I just released a little tool called Lipstick on a Pig that helps keep the visual appearance of supported command-line applications in sync with the current light dark mode setting (colour scheme) of your system in GNOME. But why is this tool even necessary to begin with? Let’s start at the...
01  août     17h26
Make Helix Editor follow the system colour scheme
   Black Box adheres to the system colour scheme in GNOME. This is a niche post for those of you using a Terminal application that adheres to system light dark mode settings1 (like the excellent Black Box by Paulo Queiroz) and Helix Editor. The problem is that Helix editor currently does not support...
29  juillet     10h04
NLnet Grant Application for Domain
   This is my application to get NLnet funding to work on Domain as part of the User-Operated Internet Fund1 I feel it’s important that such grant applications are made public so everyone has visibility into the process. This will allow us to collectively learn from the experience and perhaps even to...
23  mars     15h47
Using bound functions to unit test EcmaScript Modules
   Imagine you have the following EcmaScript module you want to unit test: untestable.js const configurationValue 'something' export function functionToTest () return configurationValue The problem is you can’t test it for different values of configurationValue (which, in a real example, might...
16  février     13h34
Decentralisation begins at decentring yourself
   My talk at the Department of Art & Media Technology, University of Southampton, on Wednesday, February 16th, 2022. This morning, I was invited to gave a talk at the Department of Art & Media Technology, University of Southampton. I was invited by Adam Procter, a long-time ally who heads up the...
15  février     11h03
NodeKit extension for Codium
   NodeKit for Codium: a reluctant fork of Svelte Language Tools. This past week, I cobbled together1 a very basic NodeKit extension for Codium. Download nodekit-for-codium-0.5.0.vsix ’ What’s NodeKit? Watch the NodeKit video introduction to find out. Install Either drag the downloaded package to the...
07  février     10h15
Everyone Hates Facebook (but this is more than just about Facebook)
   And my timelines lit up in a rare unity, the left and right, the rich and the poor, the healthy and the sick, all pleading and nodding and saying, yes, yes please, please do that. - Adam Dalliance Well, it’s official, everybody hates Facebook. But why we hate it matters. As does what we intend to...
26  janvier     11h40
NodeKit Update
   Since the initial demo of NodeKit at last week’s Small Is Beautiful, we now actually have a nodekit command, the server now does naïve restarts on route changes, and routes are now lazily loaded the first time they’re hit. I wanted to record this before jumping down the rabbit hole of implementing...
06  janvier     10h55
The web0 manifesto
   The web0 manifesto: a short and sweet middle finger to web3. Is it Covid or bullshit allergy? Towards the end of 2021, I started noticing more and more articles on web3 cropping up, each one more grating than the last. It was as if journalists public relations hacks1 were in a race to the death to...
20  décembre     18h07
How to send an email
   How to send an email by speaking SMTP interactively to an email server. (This is how email works under the hood and it’s simpler than you might think. Play the video and follow along.) Like this? Fund us Small Technology Foundation is a tiny, independent not-for-profit. We exist in part thanks to...
18  décembre     13h21
The Three Laws of Personal Devices
   The Universal Declaration of Cyborg Rights states that we extend our selves using digital and networked technologies and that this extended self must be protected under human rights law. As the primary means by which we extend ourselves today are through our everyday personal devices - computers,...
16  décembre     12h18
Saying goodbye to an old friend
   Optical adjustment, screenshot needs a bit more whitespace at the bottom. figure:first-of-type img background-color: white; padding-bottom: 0.65em; How do you like them apples? We didn’t and poor Better paid the price. Trillion-dollar corporations are not your friend. This isn’t a revelation to...
11  décembre     18h06
Comet
   Tweak: the images have drop shadows that create too much spacing; reduce this. p img margin-bottom: -1em; Comet. Wallpaper illustation by Margo de Weerdt After several months of work, Comet version 1.0 is now available to install on elementary OS 6. Comet is one of the artefacts from my three...
29  novembre     16h34
Ireland’s two-tier health insurance system
   Sorry, your browser does not support embedded audio. Download the recording. An excerpt from an almost ten-minute phone call with a Vhi corporate advisor. (Transcript.) Question How do you get pre-existing conditions and waiting periods waived when getting health insurance from Vhi in Ireland?...
24  novembre     15h36
The magic one-line ImageMagick 7 AppImage installer
   To install ImageMagick 7 on any distribution that supports AppImage, copy and paste this one-line script into your favourite shell: bash -lic "wget -O tmp magick https: download.imagemagick.org ImageMagick download binaries magick && chmod x tmp magick && test (wget -qO- https...
23  novembre     17h03
How to apply a chroma key using ImageMagick
   Yesterday, I wrote a short post on the fediverse with an overview of how to take a screenshot of an app with a context menu showing in elementary OS, while keeping its alpha channel and drop shadow using Krita. Today, I decided that since I want localised screenshots for Comet in the elementary OS...
08  novembre     15h20
My three-month-long elementary OS 6 upgrade adventure in three parts. (Part 1: Catts)
   I just upgraded my operating system from elementary OS 5 to 6. It only took me three months. The journey begins elementary OS 6 (Odin) was officially released on August 10th, 2021. Since there is no auto-update tool, you have to back everything up, wipe your computer, and install the new operating...
31  octobre     21h26
How to count Unicode glyphs in Vala using Gtk
   Want to try something really scary this Halloween? Try counting the characters in a string in Vala. For example, how many characters do you think there are in the following string? var zombie " "; One? You’re right So how would you go about getting this result in Vala? Use zombie.length,...
19  octobre     17h00
How to change the colour of the underline in gspell
   gspell is GNOME’s spell-checking library. When it discovers misspelld wrds, it underlines them in dark red. (Only, it can’t do wavy underlines so it does solid ones.) To change the colour, say to Dracula pink for dark mode, you set gspell text view.underline color "#ff79c6"; Haha, just...
15  octobre     20h11
How to disable Gtk-Message warnings in your app
   So every elementary OS app at the moment, if you start it from Terminal, welcomes you with a variation of the following salutation: Gtk-Message: ... : Failed to load module "canberra-gtk-module" Gtk-Message: ... : Failed to load module "canberra-gtk-module" Isn’t that friendly? The...
24  août     19h37
Implementing dark mode in a handful of lines of CSS with CSS filters
   I finally got round to implementing dark mode for this site (the cobbler’s children have no shoes and all that...) Here’s all the CSS I had to add: media (prefers-color-scheme: dark) Invert all elements on the body while attempting to not alter the hue substantially. body filter: invert(100%) hue...
    18h39
Omnibus GitLab Let’s Encrypt renewal error and fix
   I moved source.small-tech.org, our self-hosted GitLab instance, to Eclips.is a few months ago and noticed today that the Let’s Encrypt certificate had failed to renew. When I looked on the server, the outdated Let’s Encrypt certificates were in etc gitlab ssl as expected but, when I looked in the...
16  août     10h07
Key Mapper: a visual tool for remapping keys (and more) on Linux
   Mapping keys has never been easier in Linux. I’m a bit particular when it comes to typing. Specifically, I like to use good typographical habits whenever possible. And, I use an external keyboard with a physical ANSI US Keyboard layout set to UK Macintosh layout on my Linux laptop1. So, I need to...
08  août     15h36
Apple is trying to redefine what it means to violate your privacy. We must not let it.
   Screeching for freedom. Illustration by Jérémie Fontana. I was there when Steve Jobs unveiled the original iPhone (ironically, I gave a talk on Flash there right after his keynote). I started making apps for iOS from day one, learned Swift while it was still in alpha and updated my code with every...
25  juillet     12h27
Fish shell
   Fishing for a new shell? (Sorry.) Beautiful defaults Good design isn’t about removing the seams altogether1; it’s about having beautiful defaults and layering the seams. And this is something that Fish shell absolutely nails. To be fair, I have no idea why I didn’t give it a proper shot until...
25  juin     12h59
Remote: a little module for more elegant remoting with WebSockets
   Remote1 is a tiny (< 50 lines of code) module that creates a very lightweight façade over a socket connection, using convention over configuration to give you an expressive interface with which to send outgoing messages and handle incoming ones. You can use it both on the server and on the...
27  mai     12h05
Make anything a JavaScript module using Node.js ESM Module Loaders
   Disclaimer: you can’t load an actual bottle into Node.js (yet). I have a message in a text file called bottle.txt. Here’s how I load it into Node.js and output it to the console: import message from 'bottle.txt' message() Wait, what? How? I’m glad you asked. It’s thanks to Node.js’s...
26  mai     10h05
Archival cascades: a practical way to not break URLs
   Cascades are beautiful things. This week, I reduced our DigitalOcean hosting costs for Small Technology Foundation from 90 month to 5 month by moving our canonical source code repositories as well as a few other servers to the complimentary hosting provided to our not-for-profit by the Eclips.is...
23  mai     19h36
How to get clean analog audio from a Blue Yeti microphone into a Sony a6400 camera using a Raspberry Pi Zero
   Download the video. A live demonstration from today’s S’update. Transcript) Clean audio clean USB power You can connect the headphone out of a Blue Yeti microphone into the mic in of a Sony a6400 camera but the quality of the audio you get will depend on how clean the USB source powering your Blue...
16  mai     16h57
JSDB Migrations
   I’m busy working on Basil, the Small Web host, and while it’s nowhere near ready to use yet, I thought I’d try my hand at writing a database migration as they will be necessary once other people start using it. Basil runs on Site.js and Site.js uses JSDB - JavaScript Database as its database. True...
14  mai     14h14
Scraping the latest EU VAT rates for e-services from the European Commission’s web site with Node.js
   So, you now know how to verify an EU VAT number with Node.js. Lucky you (Don’t say I don’t spoil you.) But do you know what the latest VAT rates are every EU country? (Do you? Huh, do you, punk?) OK, so you can find them here. Yes, that’s an HTML page. No, I haven’t been able to find a simple JSON...
    12h46
Using the European Commission EU VAT Number validation API with Node.js
   You may know of the VIES site where you can manually validate EU VAT numbers but did you know that the European Commission also has an API for programmatically doing this?1 So that’s the good news. The bad news is that it’s SOAP. I’ll wait until you’re done retching... ok, feeling better? Let’s...
10  mai     15h20
Hell site
   They have a word for Twitter on the fediverse. They call it hell site . It’s very apt. When I first joined about 15 years ago, at the end of 2006, it was a very different place. A small, non-algorithmically curated space where you could have group chats with your friends. What I didn’t know back...