HNHacker News
TopNewBestAskShowJobs

et1337

2,718 karma · joined September 11, 2013

https://etodd.io
submissionscomments
et1337··on Unity's Mono problem: C# code runs slower than it should
Makes sense! I think dustbunny said it best: C# is “not worth the squeeze” specifically in Godot, and specifically if you’re going for performance. But maybe that’ll change soon, who knows. The engine is still improving at a good clip.
et1337··on Unity's Mono problem: C# code runs slower than it should
My post could have been a bit longer. It seems to have been misunderstood.

I use GDScript because it’s currently the best supported language in Godot. Most of the ecosystem is GDScript. C# feels a bit bolted-on. (See: binding overhead) If the situation were reversed, I’d be using C#. That’s one technical reason to prefer GDScript. But you’re free to choose C# for any number of reasons, I’m just trying to answer the question.

et1337··on Unity's Mono problem: C# code runs slower than it should
Performance is one issue with C#: https://sampruden.github.io/posts/godot-is-not-the-new-unity...
et1337··on Go Gray, Not Cray: Why You Should Grayscale Your Phone
I tried it for a while, it was fun explaining it to people, but didn’t actually help much. I ended up blocking all time wasters except HN, which is almost monochrome anyway.
et1337··on Scaling Go Testing with Contract and Scenario Mocks
I think we’re in agreement. Mocks are usually all about reaching inside the implementation and checking things. I prefer highly accurate “fakes” - for example running queries against a real ephemeral Postgres instance in a Docker container instead of mocking out every SQL query and checking that query.Execute was called with the correct arguments.
et1337··on Scaling Go Testing with Contract and Scenario Mocks
They mean the dependencies. If you’re testing system A whose sole purpose is to call functions in systems B and C, one approach is to replace B and C with mocks. The test simply checks that A calls the right functions.

The pain comes when system B changes. Oftentimes you can’t even make a benign change (like renaming a function) without updating a million tests.

et1337··on Why Twilio Segment moved from microservices back to a monolith
If something is difficult or scary, do it more often. Smaller changes are less risky. Code that is merged but not deployed is essentially “inventory” in the factory metaphor. You want to keep inventory low. If the distance between the main branch and production is kept low, then you can always feel pretty confident that the main branch is in a good state, or at least close to one. That’s invaluable when you inevitably need to ship an emergency fix. You can just commit the fix to main instead of trying to find a known good version and patching it. And when a deployment does break something, you’ll have a much smaller diff to search for the problem.
et1337··on Jujutsu worktrees are convenient (2024)
This is a perfect microcosm example of why I like Jujutsu. Useful git tips and tricks like this are just the default behavior in jj.
et1337··on Zig's new plan for asynchronous programs
I’m excited to see how this turns out. I work with Go every day and I think Io corrects a lot of its mistakes. One thing I am curious about is whether there is any plan for channels in Zig. In Go I often wish IO had been implemented via channels. It’s weird that there’s a select keyword in the language, but you can’t use it on sockets.
et1337··on Google is killing the open web, part 2
I’m no Google fan, but deprecating XSLT is a rare opportunity to shrink the surface area of the web’s “API” without upsetting too many people. It would be one less thing for independent browsers like Ladybird to worry about. Thus actually weakening Google’s chokehold on the browser market.
et1337··on Revisiting Interface Segregation in Go
At $WORK we have taken interface segregation to the extreme. For example, say we have a data access object that gets consumed by many different packages. Rather than defining a single interface and mock on the producer side that can be reused by all these packages, each package defines its own minimal interface containing only the methods it needs, and a corresponding mock. This makes it extremely difficult to trace the execution flow, and turns a simple function signature change into an hour-long ordeal of regenerating mocks.
et1337··on Photos: New Phoenix Microcenter is a 'tech-heaven' for geeks
My favorite place as a kid XD I still get excited thinking about it haha
et1337··on Migrating from AWS to Hetzner
I’ve heard this a lot, but… doesn’t Hetzner do the same?
et1337··on How to tame a user interface using a spreadsheet
Love this. Personally I like Excalidraw [0] for UI mock-ups but I might use a Google Sheet next time for sharing/multiplayer purposes.

[0] https://excalidraw.com/

et1337··on Switch to Jujutsu Already: A Tutorial
I think the author is one of those folks who were able to fully grasp the beauty of the Git data model for the first time by switching to Jujutsu. It makes it easier to see the “DAG of commits” vision than Git with its index and stashes and confusingly named commands with fifty flags.
et1337··on Email immutability matters more in a world with AI
New startup idea: point a C2PA camera at a screen and launder videos through it at $1 per minute.
et1337··on Zig's new I/O: function coloring is inevitable?
I think this is a good kind of function coloring. It would avoid some scars I have from:

- seemingly harmless functions that unexpectedly end up writing four different files to disk.

- Packages that do I/O or start threads when you simply import them.

et1337··on The story of Max, a real programmer
To make it a fair comparison, you also need to consider all the old-school Apache and PHP config files required to get that beautiful little script working. :) I still have battle scars.
et1337··on Show HN: Octelium – FOSS Alternative to Teleport, Cloudflare, Tailscale, Ngrok
You’re getting a lot of negative feedback but I think it’s mostly just people who don’t speak (or actively hate) enterprise jargon. Hacker News is not super enterprisey. Just don’t respond. I work for a company called StrongDM and we basically do exactly what Octelium does. I was able to determine that pretty quickly from your website which is not common. Enterprise security is just inherently a buzzwordy, vague cloud of companies all competing to own the magic quadrant.

That said, you are also including some buzzwords on your homepage that appeal to Hacker News folks, like “self-hosted”. That will get a blank stare from enterprise folks.

So I think you should pick one audience or the other. Tailscale took the strategy of appealing to Hacker News types and then shifting up market from there. My company appeals directly to the biggest enterprises we can find and the difference is stark.

I think you’ll get less negative feedback if you choose one of these target audiences and focus on them exclusively.

edit: by the way, Octelium looks awesome, well done!

et1337··on Ask HN: What Are You Working On? (June 2025)
A surreal open world mystery game in the “Outer Wilds-like” genre - sometimes referred to as “Metroidbrainia”

Just made the first devlog video: https://youtu.be/CFgDlAthcuA

et1337··on What makes a good engineer also makes a good engineering organization (2024)
I think there’s more to creativity than persistence and high intelligence. What about Docker, or Terraform? Super simple ideas that as far as I can tell, were not the result of persistence, and were not uniquely intellectually taxing to invent.

I don’t think there’s a formula for creativity. Sometimes it happens, sometimes it doesn’t.

et1337··on Ending TLS Client Authentication Certificate Support in 2026
In case anyone misses the joke, I think this is what passkeys are.
et1337··on Ask HN: Cursor or Windsurf?
I was 100% in agreement with you when I tried out Copilot. So annoying and distracting. But Cursor’s autocomplete is nothing like that. It’s much less intrusive and mostly limits itself to suggesting changes you’ve already done. It’s a game changer for repetitive refactors where you need to do 50 nearly identical but slightly different changes.
et1337··on You sent the message, but did you write it?
Maybe I should have been more direct, but this was someone at work that I don’t speak to that often.
et1337··on You sent the message, but did you write it?
I DM’d someone a specific question recently and got back some generic, long-winded, impeccably formatted bullet points when previously this person had barely used any punctuation. I said something like, wow I like your formatting! Is that an extension or something? I always have a hard time with Slack formatting, etc. They replied that they were “trying something called structured communication.”

It probably made me angrier than it should have. Now I’m wondering if I’m the “old man yelling at cloud”.

et1337··on Owning my own data, part 1: Integrating a self-hosted calendar solution
The problem is TAI is not the source of truth in real life. In real life, Arizona can change its laws and suddenly that event is going to happen at a different TAI timestamp. That’s why the unambiguous storage format has to be a date time with time zone, and not just a timestamp.
et1337··on Vim after Bram: a core maintainer on how they've kept it going
I highly recommend the VSVim extension for VSCode. There’s no need to dive into the overwhelming world of customizing vim. You can get all the benefits of modal editing in your existing editor. In fact VSCode is even better with its built-in multi-cursor support.
et1337··on We are destroying software
A lot of these points are opposites of each other, so much so that it seems intentional. We’re to maintain backward compatibility, yet eschew complexity.

We’re to reinvent the wheel for ourselves instead of relying on huge dependency trees, yet new languages and frameworks (the most common form of wheel reinventing) are verboten.

The only way I can think to meet all these demands is for everyone (other than you, of course) to stop writing code.

And I gotta say, a part of me wishes for that at least once a day, but it’s not a part of me I’m proud of.

et1337··on Go Upgrade Checklist
I’ll add an item that is not yet on our checklist but has already bitten us several times: check your code generation. Since code generation is so popular in the Go ecosystem, we’ve got 5 or 6 different codegen tools that update on various timelines. Twice now we’ve gone through a checklist similar to this article, patted ourselves on the back, and a week later found out no one can regenerate any code.
et1337··on Are Immutable Linux Distros right for you?
I just went all-in on Bluefin DX. It’s my first time using Linux where almost everything worked out of the box, even my 4070. Had to disable Bluetooth to get suspend working, but otherwise, this is the year of Linux on the desktop for me.
← PreviousPage 2 of 10Next →