atlas news
    
Aral Balkan
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...
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: 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 directly, and watch it with your favourite video player. Small Is Beautiful Feb, : End to end encrypted Kitten Chat an example peer to...
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: . em 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 issues what...
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 fleeing to the fediverse . Among them are folks who, on Twitter, at...
20  octobre     10h08
NLnet Grant Application for Domain Rejected
   On October th, , 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 ; ...
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 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 euro, equivalent of...
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...
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 settings like the excellent Black Box by Paulo Queiroz and Helix Editor. The problem is that Helix editor currently does...
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 Fund 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...
16  février     13h34
Decentralisation begins at decentring yourself
   My talk at the Department of Art Media Technology, University of Southampton, on Wednesday, February th, . This morning, I was invited to gave a talk at the Department of Art amp; 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 together a very basic NodeKit extension for Codium. Download nodekit for codium . . .vsix ’ What’s NodeKit Watch the NodeKit video introduction to find out. Install Either drag 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...
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 web manifesto: a short and sweet middle finger to web . Is it Covid or bullshit allergy Towards the end of , I started noticing more and more articles on web cropping up, each one more grating than the last. It was as if journalists public relations hacks were in a race...
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...
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: . em; How do you like them apples We didn’t and poor Better paid the price. Trillion dollar corporations...
11  décembre     18h06
Comet
   Tweak: the images have drop shadows that create too much spacing; reduce this. p img margin bottom: em; Comet. Wallpaper illustation by Margo de Weerdt After several months of work, Comet version . is now available to install on elementary OS ....
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 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 amp; amp; chmod x tmp magick amp; amp; test wget qO ...
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 to . It only took me three months. The journey begins elementary OS Odin was officially released on August th, . 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...
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 quot; ff c quot;; 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...
    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 laptop . So,...
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...
25  juillet     12h27
Fish shell
   Fishing for a new shell Sorry. Beautiful defaults Good design isn’t about removing the seams altogether ; 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...
25  juin     12h59
Remote: a little module for more elegant remoting with WebSockets
   Remote is a tiny lt; 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...
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 month to 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...
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 a camera but the quality of the audio you get will depend on how clean the USB source powering...
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....
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 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 years ago, at the end of , 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...
08  mai     10h03
Ethics as PR (or the Some Very Good People Work There ’ Fallacy)
   Ethics in AI There’s been a lot of research into Ethics in AI recently and it’s being sponsored and led by... checks notes ... surveillance capitalists like DeepMind . Similarly, lots of people are working on Ethics in Health at Philip Morris and Ethics in Environmentalism at ExxonMobil...
19  avril     11h24
Using Subresource Integrity (SRI) in Vite with small-tech vite-plugin-sri
   A few weeks ago I created a Subresource Integrity SRI plugin called small tech vite plugin sri for Vite. What is SRI and why should I care SRI is important if you don’t trust the place you’re loading resources scripts and styles from. In your HTML file, you provide the hash of each external...
16  avril     18h45
Clean up the web
   Developers, it’s time for you to choose a side: will you help rid the web of privacy invading tracking or be complicit in it s ï https: CleanUpTheWeb.org Spread the word using the CleanUpTheWeb and FlocOffGoogle hashtags.
03  avril     12h26
Passing data from layouts to pages in SvelteKit
   Data flow from layout to page slot in SvelteKit I’m prototyping Basil, the free and open hosting client that’s going to power small web.org, in SvelteKit and one thing I want to ensure from the outset is that the app is not hardcoded for our use so that anyone can easily set up a Small...
01  avril     15h35
Site.js starter template for vite svelte
   Over the past few weeks, I’ve been experimenting with some initial clients for the Small Web clients for Site.js and Place using Snowpack and Svelte. While I finally got everything working after some trouble and a few discussions pull requests, etc. , some recent regressions in Snowpack broke what...
    15h04
npm init using
   Want to download a git repository to use as a starting point for your own Node.js app but you don’t want to clone the repository Try this: npm init using lt;github account gt; lt;starter project name gt; lt;my project gt; What that will do is download the specified repository into the my...
09  mars     14h22
References to methods are a JavaScript minefield
   Your code, doing exactly what you told it to as always . So, tell me what’s wrong with the following code: ms s m h const ONE DAY const ONCE A DAY ONE DAY class Certificate renewalDate null constructor Renewal is in thirty days...
07  mars     12h46
fs-extra to fs
   I’m a big fan of the fs extra module for Node.js. It has made my life much easier over the years. However, as I migrate my modules from CommonJS to ECMAScript Modules ESM and as I’m looking at bundling Place into a single JS file for deployment using esbuild, I’ve started removing third party...