Sign in

Olivier Forget

@olivierforget.net
268 followers 177 following 1K posts

Aerospace engineer turned developer and entepreneur. olivierforget.net Interested in web and user agency on the net. Building dropserver.org

PostsRepliesMedia
Olivier Forget @olivierforget.net · 17/09/2026
That white 757 reminds me of the time I spotted a COMCO 757 on the tarmac in Guyana in October 2014. No idea what it was doing. A number of khaki-and-shirt clad folks got out and unloaded a few things. Wikipedia doesn't enlighten much about what COMCO does 🤷‍♂️
A white 757 on the tarmac under an overcast sky. COMCO is written on the tail.
130
Olivier Forget @olivierforget.net · 08/09/2026
"With regular CSS you have a class, you're ending up, like, searching for where that is. So, like, okay. This is a class here, but, like, where is that defined? Oh, it's in several different files." @syntax.fm on StyleX syntax.fm/show/1035/wh... True, but I'd solve this with better CSS tooling.
Part of a transcript with highlighted text: "With with regular CSS Wes you have a class, you're you're ending up, like, searching for for where that is. So, like like, okay. This is a class here, but, like, where is that defined? Oh, it's in several different files."
110
Olivier Forget @olivierforget.net · 28/08/2026
UX people: Beware your empty states! Add hints to empty boxes to avoid confusing your users. Apple: Ha! lol
A screenshot of the Safari browser with a large box below the empty address bar. The box is totally empty.
110
Olivier Forget @olivierforget.net · 25/08/2026
👀 "10x less memory..." Node was built because the old servers written in C couldn't handle modern (at the time) workloads. Soon we'll compile our Node / JS to C because Node/JS takes too much memory for modern workloads.
HTTP server. Porffor can now host a HTTP server, efficiently. Comparing to Node/Bun/Deno, an unrealistic hello world server uses >10x less memory and beats all three on performance for throughput and latency.
110
Olivier Forget @olivierforget.net · 25/08/2026
No cheating. Share the last photo of the sky from your camera roll. From the back of a 777-300ER over the Atlantic
A view through the window of an airliner showing brigth white clouds and sky.
000
Olivier Forget @olivierforget.net · 20/08/2026
🤢
A screenshot of the top of Safari on a recent MacOS. Rounded elements everywhere.
010
Olivier Forget @olivierforget.net · 05/08/2026
I don't recall seeing so many Linux mags in French press shops in the past. Is this new?
A photo of computing magazines in a shop. There are several Linux mags.
120
Olivier Forget @olivierforget.net · 11/06/2026
The template is what you'd expect (if you come from Vue ) but it renders on the server, and can be updated surgically DOM-side by calling Backflip's generated update function for that component. Benefits: - single source for HTML - fast rendering on the server - surgical updates in DOM
<styled-meter
		b-attr:level
		:class="level > 80 ? 'high' : ''"
		b-export>
	<h3>{{ valname }}</h3>
	<meter 
		low="0"
		high="80"
		max="100"
		:value="level"></meter>
	{{ level }} GW
</styled-meter>class StyledMeter extends HTMLElement {
	static observedAttributes = ["level"];
	constructor() {
		super();
		this.bf = new BackflipStyledMeter(this);
	}
	attributeChangedCallback(name) {
		this.bf.update(name);
	}
}
customElements.define("styled-meter", StyledMeter);
310
Olivier Forget @olivierforget.net · 11/06/2026
Some progress on BackflipHTML. I added {{ expr }} updating DOM-side. Here are some web components that wrap <meter> and display the {{ level }} numerically below. (A class name also gets added to the component based on level's value, per earlier work).
210
Olivier Forget @olivierforget.net · 29/05/2026
Replying here to let you know something is broken on porffor.dev in Firefox. The lines of the chart do not show up and there is a warning about "unexpected values"
Screenshot of https://porffor.dev/ showing chart with missing lines and console warning.
110
Olivier Forget @olivierforget.net · 29/05/2026
Seriously.
Screenshot of AP article showing the title truncated as ... "launch nuclea..."
010
Olivier Forget @olivierforget.net · 09/02/2026
Very cool! I never got a ride in a Trislander but this reminds me of a flight in an Islander in New Zealand. Windy and bumpy, it took a couple of tries to nail the landing on Stewart Island. Pax were turning green to grey but I was sitting next to the pilot having the time of my life.
110
Olivier Forget @olivierforget.net · 29/01/2026
Went for a mountain bike ride yesterday. I'm really grateful for the nice hills I have close by. It's excellent for clearing my head, getting a hard workout and enjoying nice views.
A photo taken from the top of a drop off. There are green hills to the horizon and a dirt trail that snakes around the bottom. A mountain bike and the rider's arm are in the lower foreground.
020
Olivier Forget @olivierforget.net · 25/12/2025
We've hauled so much stuff in our Pachy.
The back of a minivan with a large and long box in itThe back of a minivan filled with wrapped presentsThe back of a minivan full of plantsThe back of a minivan full of bags and stuff.
010
Olivier Forget @olivierforget.net · 30/10/2025
The only thing that's gone wrong with my @frame.work laptop since I got it 4 years ago is that the USB cable fell apart. They just sent me a new one free of charge. I didn't have to argue or anything (I think they don't mess around with anything that carries a decent amount of electrical juice.)
Photo of a brand new USB cable next to a dilapidated USB cable. The sheath is flaking off in strands revealing the twisted wire armor of the cable.
020
Olivier Forget @olivierforget.net · 15/09/2025
Set up my wife with tailscale on her phone: took 60 seconds. Adding her tailscale ID as an auth method in the Leftovers app on Dropserver: 10 seconds. (Maybe less? It's literally one dropdown to select who the user is for this peer user on the tailnet. See screenshot) A productive afternoon.
A screenshot of the UI for an appspace's tailscale node in ds-host. It says:

"Users: 1 of 2 tailnet users are users of this appspace"

"Olivier Forget (teleclimber@github)
Appspace user: "Oli" EDIT"

"Tailnet user: <redacted>. Appspace user:"

After that there is a dropdown with 4 options:

- Select Appspace User
- Oli
- M<redacted>
- Create new user

Below that cancel and save buttons.
000
Olivier Forget @olivierforget.net · 27/08/2025
I also made it so users have flexible ways of authenticating. So you can have multiple authentication identifiers. That turned out handy because my user was using the domain from the old instance. Oops! I just added the new ID and was set. Then I added the appspace to tailscale, and got a third ID!
One tricky part with moving appspace data is that appspace users should be able to log in at the new appspace location. Luckily, as part of the Tailscale integration work I made it possible for each appspace user to have multiple authentication identifiers. When I restored the appspace data, I could not access the appspace because my user was associated with the domain name that I used with the old instance. The UI lets you associate any number of auth ids to a user, so I just added my new ID and it was happy.

Then I connected the appspace to tailscale, and that created a third ID.
100
Olivier Forget @olivierforget.net · 27/08/2025
I moved my personal note taking app from one instance of Dropserver to another, and I'm really glad I made the effort to make appspace data easy to move. Backup + download on old instance, then restore + upload on the new one. Done!
A screenshot of the user interface of Dropserver appspace admin, showing the bottom of logs, that read:



2025-08-27T18:47:10Z ds-host Pausing appspace

2025-08-27T18:47:10Z sandbox-479 Sandbox terminated

2025-08-27T18:47:12Z ds-host backing up appspace data



Below that there is a listing of backups and a "Backup Now" button and a "restore" link.
100
Olivier Forget @olivierforget.net · 10/08/2025
Developed in Saulala:
A coastline in the fog with an island in the foreground.
010
Olivier Forget @olivierforget.net · 10/05/2025
👀
Ad that says "we dont do rocket science we do Internet science. It's way harder" it's and for an Alaskan telecom.
000
Olivier Forget @olivierforget.net · 18/02/2025
I want to know who wrote the Bluetooth toggle on MacOS. I get this fun scenario once in a while👇 Either of these toggles becomes stuck, and if I manage to toggle one the other eventually ends up in the opposite position. "It just works" -- Je me souviens.
A screenshot from a Mac showing the Bluetooth tray toggle in the OFF position, and the Bluetooth toggle in the Settings app in the ON position.A screenshot from a Mac showing the Bluetooth tray toggle in the ON position, and the Bluetooth toggle in the Settings app in the OFF position.
010
Olivier Forget @olivierforget.net · 15/02/2025
This reminded me that Inspiration 4, the civilian space mission led by (soon-to-be-NASA-administrator) Jared Isaacman on a SpaceX Dragon capsule raised a boat load of money for ... St Jude. inspiration4.com/donate Where did it all go wrong?
A screenshot from X.com.

@DOGE: "doge website is live!.. "
@elonmusk: RT of Doge: "Details of cost savings will be poste here"
@rookieisaacman reply: "Massively refreshing. For the first time in a long time, there is a path toward responsible spending, a balanced budget and focusing resources on what truly moves the needle for Americans"
031
Olivier Forget @olivierforget.net · 27/01/2025
The Cobra originally had retractable skids. And it looked so cool. Pic From www.helis.com/database/new...
A picture of the Cobra helicopter prototype flying with skids retracted.
040
Olivier Forget @olivierforget.net · 26/01/2025
Agreed. For me it's the excellent experience of the dev-server proxy I get when I work on a Vue SPA. Having my changes to components and CSS reflected immediately after I save is fantastic. This from @chriscoyier.net comes to mind (chriscoyier.net/2024/11/07/d...)
Image title "What's the perfect amount of time for this feedback loop?" There is a list of options from 10 minutes to 0.1 seconds. "1 second" is given a 1-start rating, 0.1-.02 seconds has 5 stars.
120
Olivier Forget @olivierforget.net · 31/12/2024
One nice feature of Mastodon is that it tries to eliminate repeat views of the same post in your timeline. So when a post become popular and many of your followees repost it, you only see it once (theoretically, it's not perfect). I'd love for @bsky.app to add this.
A screenshot of my bluesky timeline showing the same post twice in a row, reposted by two different people I follow.
021
Olivier Forget @olivierforget.net · 26/12/2024
Oh cool thanks Chrysler for the Christmas present
Dash of a car with check engine light onLit check engine light
000
Olivier Forget @olivierforget.net · 12/12/2024
Yep. Boo dependabot. @github.com please improve this.
Github dependabot page for project Dropserver for "Misuse of ServerConfig.PublicKeyCallback may cause authorization bypass in golang.org/x/crypto" CVE-2024-45337Verbose output of govulncheck on same Dropserver project showing that it is not affected by the vulnerability because we don't appear to call affect methods. Full text:

"DropServer git:(tailscale-1) ✗ govulncheck -show verbose ./...
Scanning your code and 643 packages across 83 dependent modules for known vulnerabilities...

Fetching vulnerabilities from the database...

Checking the code against the vulnerabilities...

=== Symbol Results ===

No vulnerabilities found.

=== Package Results ===

No other vulnerabilities found.

=== Module Results ===

Vulnerability #1: GO-2024-3321
    Misuse of ServerConfig.PublicKeyCallback may cause authorization bypass in
    golang.org/x/crypto
  More info: https://pkg.go.dev/vuln/GO-2024-3321
  Module: golang.org/x/crypto
    Found in: golang.org/x/crypto@v0.29.0
    Fixed in: golang.org/x/crypto@v0.31.0

Your code is affected by 0 vulnerabilities.
This scan also found 0 vulnerabilities in packages you import and 1
vulnerability in modules you require, but your code doesn't appear to call these
vulnerabilities.
050
Olivier Forget @olivierforget.net · 05/12/2024
It seems there is art in creating good ansible playbooks. You're taking a procedural world and remapping it into a semi-declarative world, and you're sitting in the middle like..
Toys Story meme with "footguns, footguns everywhere"
010
Olivier Forget @olivierforget.net · 27/11/2024
The first thing this paper says about PDS in ATProto is it "allows anybody to query the data it hosts via a HTTP API." This is making it just a bit too easy for bots to come and slurp everything I've liked and commented on, no? I know that data is public, but still, weird. arxiv.org/pdf/2402.03239
Screenshot of text: 3.2 Personal Data Servers (PDS)
A PDS stores repositories and associated media files, and allows
anybody to query the data it hosts via a HTTP API. Moreover, a
PDS provides a real-time stream of updates for the repositories it...
110
Olivier Forget @olivierforget.net · 21/11/2024
I wrote my own chat-style continuous journaling web-app. Writing down what I'm doing and where I get hung up and how I resolve it is valuable in many ways: get back into a project easily, go back to the last time I hit this problem (even two years ago like in the pic), "When the heck did I..." etc..
Screenshot of a set of notes in chronological order. They read:

Automated ds-host VM configuration

10:08:29 AM

Today is going to be learn ansible day.

10:31:01 AM

Looks like I'll need to upgrade python on the Mac to get ansible working. Lovely. (it requires 3.9, I have 3.7).

11:00:37 AM

Going to try brew install pyenv. Following this: https://www.freecodecamp.org/news/python-version-on-mac-update/

11:09:28 AM

Installing via pyenv failed. Something about being unable to compile. Xcode issue? Whatever, I'm downloading the pkg from python.org.

11:11:56 AM

The Python installer says it wants to install SSL root certificates. Not weird at all. This forum post indicates it's not needed if you download python from the website. https://python-forum.io/thread-20083.html Guessing this means auto updating won't work? We'll see.

11:13:26 AM

That worked. python3 on MacOS is now at version 3.11. Moving on.

12:00:44 PM

Cruising through the ansible docs. It's fairly simple at...
010
Olivier Forget @olivierforget.net · 17/11/2024
Windsurfing, particularly if there are waves (had a great day at Seal Beach Friday, my arms still hurt). Wing foiling if the wind isn't strong.
Some guy windsurfing in an agitated sea with lots of whitecaps. Sail is red blue and green.
010
Olivier Forget @olivierforget.net · 12/11/2024
I'm experimenting with @tailscale.com 's tsnet, and it appears to have no issue running multiple nodes with different backends at the same time in the same go process. I have one node connected to the default ts backend and one on an instance of headscale.net I have running in a VM. Good job TS! 👍
A screenshot of a terminal output. It reads:

tsnet-test-tail STARTING SERVER https://controlplane.tailscale.com
tsnet-test-head STARTING SERVER https://headscale.illuminoted.com
tsnet-test-head https://headscale.illuminoted.com bus notify:   Notify{state=Running} <nil>
tsnet-test-tail https://controlplane.tailscale.com bus notify:   Notify{state=Running} <nil>
2024/11/12 11:57:31 AuthLoop: state is Running; done
2024/11/12 11:57:31 AuthLoop: state is Running; done
tsnet-test-tail GOT REQUEST https://controlplane.tailscale.com
tsnet-test-head GOT REQUEST https://headscale.illuminoted.com
161
Olivier Forget @olivierforget.net · 01/11/2024
My daughter wanted to be a butterfly this Halloween. So we spent time (a lot of time) making a cool costume. Lots of hacking and painting. At some point the back of the wings became blue. It was a hit, but it's only after looking at the pics today that I realized she's the @bsky.app butterfly!
A young girls on a sidewalk facing away from the camera. She is dressed in black and iswearing large radiant blue butterfly wings.
010
Olivier Forget @olivierforget.net · 31/10/2024
That type of costume is great for tiny ones. I made my daughter an airplane last year.
A small child in a pink cardboard airplane costume.
110
Olivier Forget @olivierforget.net · 21/10/2024
Found this little guy in Kauai, HI last week.
A pretty bright green lizzard(?) with blueish tint and red spots in areas on a green leaf.
010
Olivier Forget @olivierforget.net · 15/01/2024
This past week I've been working on automatically generating a basic #HTML web page for #Dropserver apps. This completes the picture for my long-running project of making Dropserver able to install apps from URLs. The design could be better (I'll keep tweaking) but here's what it looks like now:
A screenshot of a website for the "Leftovers" app. It shows a pizza icon and the app name with subhead "Don't let your delicious leftovers go to waste" in the header, underlined with a thick green bar.

Below, two boxes show installation instructions and a brief description of Dropserver.

Below that some details about the app, and then a list of existing versions with changelog.

It's minimalist, fairly clear, but not exactly beautiful.
111
Olivier Forget @olivierforget.net · 11/01/2024
The way a text input element breaks out of its grid item if the grid columns are defined as "50% 50%" but not if they're defined as "1fr 1fr" is why I have a hard time "loving" #CSS.
A screenshot of a web page with a text input element in a beige colored box. The input element exceeds its boundary to the right.A screenshot of a web page with a text input element in a beige colored box. The input element is perfectly contained within its box.
140