HNHacker News
TopNewBestAskShowJobs

FrancoisBosun

286 karma · joined May 24, 2016

submissionscomments
FrancoisBosun··on I asked Claude for 37,500 random names, and it can't stop saying Marcus
Meh, I tell it "use uuidgen and get your randomness from that". Of course, that won't work on ChatGPT web, but works well enough on the command line.
FrancoisBosun··on Time travel? Or, just clever technology
Explained in the article:

> A producer sends a backing track to a performer - SyncDNA adds a slight delay to the outbound feed

The "backing track" is probably the beat or something similar.

FrancoisBosun··on You Should Add Debug Views to Your DB
I do the "same thing", but using PostgreSQL `EXPLAIN ANALYZE`. EXPLAIN ANALYZE has information about the number of rows returned, which means I know exactly which node in the query plan failed to return expected values.
FrancoisBosun··on Multiplex: Command-Line Process Mutliplexer
This has some overlap with Overmind / foreman / Procfile. To wait for another process to be started, I resort to using plain `sleep` or `dockerize -wait`.

Good job on building this!

FrancoisBosun··on Solid protocol restores digital agency
In the article, it is mentioned that « we can grant temporary access to cardiac-related data » (paraphrased). This is where it gets difficult: how am I to know that some data is cardiac-related or not? Is it important to share my thyroid levels or not? This is a very difficult problem. I wouldn’t know what to share for medical history.
FrancoisBosun··on Brut: A New Web Framework for Ruby
Sorbet is nice, but for data structure enforcement and data validation, I much prefer the dry-rb ecosystem.
FrancoisBosun··on Frequent reauth doesn't make you more secure
Heroku's 25 hours comes to mind... this is so infuriating and annoying.
FrancoisBosun··on Why are 2025/05/28 and 2025-05-28 different days in JavaScript?
You still need the timezone name to map back to UTC, in case you want to make some types of computations, usually along the lines of "how long ago was this" and "remaining time until this thing happens".

You may argue that we can use local time to make the computations and be done with it, but during DST transitions, local time jumps so the number of actual seconds won't be consistent.

FrancoisBosun··on Show HN: I reverse engineered top websites to build an animated UI library
I use an older iPad and the page crashed so hard the Home button didn’t do anything for about 30 seconds. The iPad eventually turned off, because I had pressed the power button, to no avail, a couple of times.
FrancoisBosun··on PanGui – A cross-platform UI library with a razor sharp focus on performance
C, C++, C#, and probably Rust. There’s a section about that. There’s a link to the FAQ I. That section.
FrancoisBosun··on Nullboard: Kanban board in a single HTML file
Not so different from Word/Excel/Lotus 1-2-3 from the 90s! I like that most software saves-as-I-type now, but that was the workflow back then. Ctrl+S was the most used key combo on my keyboard back then. Now, it's `:w<Enter>`.
FrancoisBosun··on Walking in short bursts consume 20-60% more energy than walking continuously
I hate shopping, because it’s start and stop all the time. I get tired after only 30m.

Then, I’ll walk home from the office (1h) and will have lots of energy to actually DO something.

The title resonated with me very strongly.

FrancoisBosun··on Putting a full power search engine in Ecto
This looks very, very interesting! Good work. My only nitpick is the ligatures. I believe pipelining in Elixir uses the |> operator, but the blog post uses a kind of triangle pointing to the right. Due to my previous exposure to Elixir, I guessed that it must have been |>, but if I hadn’t know, then I would be really confused when I tried to write that in my editor to replicate the code.
FrancoisBosun··on Sapling: Source control that's user-friendly and scalable (2022)
I use Sapling as my main driver. I can commit or revert individual hunks just fine.
FrancoisBosun··on Four billion years in four minutes – Simulating worlds on the GPU
Sunshine (Adagio in D minor)

https://open.spotify.com/intl-fr/track/50ExtKr8j9cHTY3OEw282...

I asked Siri to identify the song.

FrancoisBosun··on Three years in North Korea as a foreigner (2021)
I'm mostly surprised about the free admission of bribery:

> However, I soon found that a bottle of Johnie Walker Black Label handed out at particularly frustrating moments made things miraculously happen a lot quicker. Oh how the North Koreans loved their whiskey.

FrancoisBosun··on Show HN: A free minimalist daily habit tracker
I use an iPhone 12 mini. In portrait mode, the site was nearly unusable. I would add a habit, and the keyboard covered up the description field. There was no way for me to scroll the page to get the description field. Fortunately, the iOS keyboard has a next field button which I could click and hello me to entered the habit description.

I too like the clean design and wish you good luck.

FrancoisBosun··on Things the guys who stole my phone have texted me to try to get me to unlock it
They don’t. They’re using another phone and texting the original owner, threatening them, in order to scare them into unlocking the device.

When you boot the “Lost” phone, it asks for the password of the owner’s iCloud account. There is probably an information leak where the original email or phone is presented and the thief can track the original owner through that.

FrancoisBosun··on Features I wish PostgreSQL had as a developer
Adding an index means the write path suddenly became slower. Sometimes, a covering index will be very beneficial. « It depends » is usually the right answer. I’m fine with the engine telling me « this query is usually slow » and I investigate why. I’m not ok with the engine adding indices willy-nilly and suddenly writing to the DB is 10x slower.
FrancoisBosun··on Show HN: Truncate, a word-based strategy game
I enjoyed my game. I had some difficulty playing due to the board not being very wide: many nooks and crannies. In the dictionary, search for « ti » and notice the invalid character in « solfage ». Congrats!
FrancoisBosun··on Building a Scalable Accounting Ledger
SQLite, as used in the article, has a very simple data model: 64 bit ints, 64 bit floats, and textual data. If you used a different database engine, you would probably use the datatypes it offers instead.
FrancoisBosun··on Pijul is a free and open source (GPL2) distributed version control system
I logged in just to upvote this! Got a good chuckle out of me :)
FrancoisBosun··on Mexico building rail rival as water shortages drain Panama Canal
DoshDorington did something like that… https://www.youtube.com/watch?v=HzpUQZIr15g&t=900s&pp=2AGEB5...
FrancoisBosun··on Show HN: ElectricSQL, Postgres to SQLite active-active sync for local-first apps
Not the author, but PostgreSQL has constraint triggers that can run procedures / functions on insert/update/delete, to allow/reject a given row or statement. That would be one way to confirm that a given update from a client is valid, from the POV of the application.
FrancoisBosun··on [dead]
It is striking that most generated photos have the woman on the left. Only two states have the woman on the right. This is probably due to the source material the AI was trained with, I understand, but that was striking anyway.

Human taste would have chosen to vary the poses as well, because the pictures kind of all have the same look.

Except for Florida-person, of course...

FrancoisBosun··on Peplum: F/OSS Parallel Computing and Supercomputing with Ruby Infrastructure
« … With Ruby Infrastructure. » Ruby isn’t doing the compute. Instead, Ruby is used to distribute and run workloads on individual machines. The underlying project is Peplum: https://rubygems.org/gems/peplum/versions/0.3.3
FrancoisBosun··on Quicssh: SSH over QUIC
Mosh has latency-hiding mechanisms. I used mosh for a bit on while riding a bus. Latency-hiding helped quite a bit to keep the UI responsive.
FrancoisBosun··on Update millions of records in Rails
The downcasing in done in Ruby-land, thus the records had to be loaded in memory, on the worker. If the downcasing was done on the DB itself, then the records would not have needed to travel all the way to the worker, only to be discarded 200ms later. Better to run an UPDATE query direct against the DB instance, with IDs to control concurrency: UPDATE addresses SET city = lower(city), state = lower(state) WHERE id BETWEEN a AND b
FrancoisBosun··on We chose NanoIDs for PlanetScale’s API
In PostgreSQL, if a DB exception is raised (unique_violation), the whole transaction will abort: there is no way to retry.
FrancoisBosun··on Code doesn’t have to be a mess
When the dependency is deprecated, I have to stop what I'm doing and replace the dependency. If the dependency has a show-stopper bug, I either have to wait, vendor the dependency, or rewrite. That's what the original article advocates for: be careful what you import. leftpad, probably write it yourself. React, OK to use, but maybe vendor.
Page 1 of 3Next →