HNHacker News
TopNewBestAskShowJobs

julik

763 karma · joined March 4, 2011

https://blog.julik.nl and https://github.com/julik
submissionscomments
julik··on What we know so far about Spain train crash
So they have lineside signaling as backup but it does not have blocks? That looks like misengineering, wow. Some reports said that the renfe train rolled for 25km - if this is what their fallback is like - it is absolutely inexcusable. Oh my...
julik··on What we know so far about Spain train crash
It is the proper procedure, and it does come (in a lot of countries, AFAIK) with a lot of guardrails:

There will be a so-called "train order" allowing passage of a specific section ignoring the safety system warnings, which has strict validity limits both in time and in the area where it applies, usually denoted by specific hectometric mileposts

When cab signaling is involved (LZB is one of these) and it malfunctions, the entire system normally changes to "driving on sight only" - which indeed limits the train to 40, 30, 20, sometimes - 15 km/h (see https://fr.wikipedia.org/wiki/Marche_%C3%A0_vue) or the line gets switched to lineside signaling - if it is available.

I don't know how you could violate all of those rules - both from the driver's side and from the traffic control side - but it sounds absolutely horrible. Like an override of at least 2 (if not 3) very explicit safety margins.

julik··on I no longer care to work on any Ruby gems so I've archived all my repositories
Many did, however it was never in the open source package. A few tried (Hippocratic license, which guaranteed that your software wouldn't be used by pretty much anyone) but it doesn't work. It is hard to only give things to parties you like - moreover, have a guarantee that you both like them today _and_ will like them in the future.

Having your work hoovered up by Big AI is no different to having your app hosted by AWS whereby AWS makes a ton of money and you get the bug reports to fix for free (if you are lucky). Only before it would take AWS to fork and maintain something like OpenSearch in such a situation.

It's a sad situation but exploitation is hardly new, and hardly unique to software.

julik··on I no longer care to work on any Ruby gems so I've archived all my repositories
It was "where are the vibecoded Photoshops" a year or two ago. Behold: now they are here - crude in places but workable. Building a new pro-level app with its own UI paradigms and concepts is going to be the next frontier. Give it 6 to 12 months, I'd say.
julik··on I no longer care to work on any Ruby gems so I've archived all my repositories
No, like outsourcing the inbetweening - which was being done for decades at this point
julik··on Living in the Weimar Era of Ruby
Appreciate the feedback.

That said: I am not obligated to quote a speech that is freely available for everyone to listen to or to read. I don't know which "comments" exactly I have "distorted", but - on the other hand - this is an opinion piece, not a Reuters ticker report.

julik··on Living in the Weimar Era of Ruby
I think I have received more of what was _not_ said than of what was said. I did watch the entire thing a couple of times just to make sure I haven't missed something. I think this article explains it better https://jardo.dev/what-about-rails
julik··on Living in the Weimar Era of Ruby
True, and there is also Crystal which is - in a few aspects - better than Go even, and has way more pleasant aesthetics.

The way the JVM didn't take off doesn't surprise me because Sun and Oracle have bodged it so bad, and because there were legitimate issues using the JVM when your project was small. I can't shake the feeling that to this day, even the coveted JetBrains products still fill like Swing. Indents are ugly, widgets are ugly, window refresh takes 3-4 refresh frames instead of 0, font rendering is just-not-quite-good-enough... and that does stick.

Also, the Java community was not necessarily receptive to progress - mostly because so much stuff depends on it (including very highly paid, senior carreers). They mostly went "The JVM is great for developing your own toy language, go have at it" but it would always be the-actual-Java interop. For example, my adventures with Clojure ended very abruptly because I simply do not know Java well enough to feel comfortable when I get a NullPointerException.

Which I obviously did get on my second line of REPL input.

julik··on Living in the Weimar Era of Ruby
The journey always has value, in retrospect (if you manage to get through in one piece). But - to be honest - if I could have prompted my way to the software I built back then instead of grinding through the bits and bobs - I would have done it.

I can appreciate the internal beauty but getting "a thing that does thing and does it well", and seeing others enjoy using it has way more value for me than "what type system could work more elegantly here".

julik··on Living in the Weimar Era of Ruby
Thank you for stopping to read my article and yet mustering the energy to write such a long rebuttal. The point about hexapdf is duly noted, my omission.

I deliberately refrain from the whole DHH racism/faschism/nazism/oligarchy axis because that is not something I would like to convey nor discuss where I post.

You are right that he is primarily a businessman - and a very successful at that, specifically in marketing and creating hype. The very point that I am making though, is that of all the application points he could choose for applying his hype prowess he chose to dunk on the community that got him where he is.

And one of the things I have enjoyed immensely - and I know I am not alone in this - is writing Ruby commercially, also with other people. Simply due to DHH being such an influencing figure - the markets do notice, so whoever already was yelling "Ruby is dead" now gets more ammunition. I do believe this was an absolutely unnecessary, harmful gesture. But hey - it happened.

> And you can also try to convince the hexapdf author to improve hexapdf

The days of spending months to convince anyone of anything like that are largely over, but that deserves another article - and it's not a great phenomenon, even though it produces more artifacts (a lot of them quite good).

julik··on Living in the Weimar Era of Ruby
If people want to have the OG transcript - they can always find it. I was translating the message he (willingly or not) has sent out to that particular audience, in that particular context.
julik··on Living in the Weimar Era of Ruby
...maybe, but for now - we dance (OP here)
julik··on Living in the Weimar Era of Ruby
When I was becoming a self-taught software engineer it also was hilarious, no doubt about it - and very inefficient. I did enjoy it and did build some stuff, and not all of it was bad.

So, if anything, if the intent is "I can do it all myself and I will fire you now" - I love to see them stumble, if the intent is "I want to get my hands dirty and let's work together" - I will be happy to assist. It's not a pipe dream: it does happen.

julik··on Living in the Weimar Era of Ruby
OP here - no, I am not under pressure to do vibe code for work, I do it willingly (but - IMO - responsibly). And I do not think hand-coding will be sustainable for most tasks simply because it will be very hard to justify in most situations where you work with other people - be it on community basis or commercially. It's hard to say "I have to spend a week doing this by hand" when the next person is expecting you to do this in an afternoon (and rightly so).

I think we should write code by hand from time to time to not lose currency - but it's not the primary nor the default anymore.

julik··on Show HN: Performative-UI – a react component library of design tropes
That is absolutely delightful
julik··on Cloudflare Flagship
https://github.com/flippercloud/flipper
julik··on Stop Using Conventional Commits
It is bad terminology, yes. But also - a pretense that you know the overarching influence of a commit ahead of time, which you don't - but once you have conventional commits everyone on the team and the LLMs have to spend time/tokens inventing that stupid nomenclature.
julik··on Conventional Commits encourages focus on the wrong things
Previously: https://blog.julik.nl/2020/04/do-not-use-tickets-in-commit-t... with honorable mention of conventional commits. There is nothing conventional about them - it's ceremony that's wasting valuable characters that can have a better use.

The article is 100% on the mark.

julik··on Cloudflare Flagship
Which is not hard to do (it is a modulo over a mersenne twister or something similar), but in my recent gigs just Flipper with optional "state of the flags table as of now" endpoint was more than enough. That modulo+random combo required tools like LaunchDarkly to ship SDKs in several languages, and the ones I had to work with were just plain horrible fit for their language of choice. But because the evaluation was relegated to the edge, the whole system got way more complex than desirable. In actuality, I think a refetch of the current flags table "for this customer" every so often is just fine, and way less of a nuisance.

So glad Flipper exists and I don't have to deal with this stuff anymore.

julik··on The West forgot how to make things, now it’s forgetting how to code
But - albeit briefly - a lot of value for the shareholders has been created
julik··on Moldova broke our data pipeline
This. Pulling in Parquet and all of its dependencies is utter overkill.
julik··on Director Gore Verbinski: Unreal Engine is the greatest slip backwards for movie
This is the next evolution of the "My film does not use CGI" sneering. Sure, doing proper pre-rendered VFX with photo-realism is great and also people doing it love it. But can it be done on the budgets/fixed bids/turnarounds when the producer comes with "...and all of that will be a full virtual set and it should be streaming next Monday morning", for peanuts?..

If it's Gore saying it - maybe he should talk to his producers then, and ask them whether they actually have budgeted the "proper" VFX talent/timelines for the show. He has creative control - the people doing the work do not.

julik··on I switched from VSCode to Zed
Mine is 2560x1440 which is a pretty nice "sweet spot" size. A comparable 5k to 6k display still commands a substantial price, and - given that I work at two locations - would need me to have two of them. The screen I use as my current (a 3x2 BenQ) also has some amount of subsampling going on, because running it at 2x ("Retina native HiDPI") all the UI controls are too damn big, and space is not enough. Running it at 1x (everything teeeny-tiny) is just not very good for my eyesight and not very workable - and, again, with Zed bumps into the same broken antialiasing rasterizer they have.

And it is not an OS thing. The OS renders subpixel antialiased fonts just fine. But Zed uses its own font rasterizer, and it completely falters when faced with a "standard passable resolution" screen - the letters become mushy, as if they have been blurred - and rather sloppily at that.

julik··on I switched from VSCode to Zed
I would have switched in a pinch if Zed had their low-DPI font rendering in order. At the moment it just looks bad.
julik··on Permission Systems for Enterprise That Scale
Interesting article, but it mixes up two concerns, I would say. One is retrieving trees from the DB and storing them - which can be annoying but has nothing to do with permissions. Another one is "hiding" unpermitted nodes/branches from the viewer (if that is what applying permissions is about - it can also handle read-only things, for instance). If these two concepts get separated and it is not a big deal to "overfetch" for the current user before doing the filtering - things become way easier. When the tree is reconstructed, you can do breadth-first traversal and compute permissions for every item in there - or retrieve the permissions for items at that level, if you are doing ACL stuff. From there - if there is no permission for the current viewer on that node - you exclude it from further scans and you do not add its' children to further traversals as you go down. Max. number of scans = tree depth. With some PG prowess you could even fold this into sophisticated SQL stuff.

Trees with RDBMSes do stay a pain, though :-)

julik··on Be Careful with GIDs in Rails
Yes, you need both
julik··on We replaced H.264 streaming with JPEG screenshots (and it worked better)
Having built an image sequence player using JPEGs back in the day - I can attest that it slappps.
julik··on Airbus A320 – intense solar radiation may corrupt data critical for flight
It depends on whether the ELAC is an LRU (line-replaceable unit, i.e. a box with ports that can be swapped at an airport) and whether a software update can be uploaded into a unit that is installed (not all aircraft have a "firmware update via cable or floppy", so to speak)
julik··on Airbus A320 – intense solar radiation may corrupt data critical for flight
This ELAC version is 100-something, and the A320 first flew around 1988. Why the updates - for example, there are updates to flight control law transitions, like after 1991 where the aircraft would limit flight control inputs during landing, thinking it would be preventing a stall - because it would not go into the flare law appropriately. See https://en.wikipedia.org/wiki/Iberia_Flight_1456

The cause could have also been an extra check introduced in one of the routines - which backfired in this particular failure scenario.

julik··on Airbus A320 – intense solar radiation may corrupt data critical for flight
True. I would say, however, that every "concept" of airliner flight deck has its own gimmicks that can kill. The Airbus "dual input" is such a gimmick. Even though there was, for example, an AF accident with a 777 where there was hardware linkage between yokes and the two pilots were fighting... each other. Physically.
Page 1 of 9Next →