Rendered at 10:28:44 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
kristianp 14 hours ago [-]
LLM tells:
> Fyve faded. Gin kept going.
> the honest version of web programming: no magic, explicit control flow, and a handler shape you can hold in your head.
> keep the request path explicit, run no reflection there, and put the boring work behind one object you can inspect: the Context.
> None of it is hard. Enough of it becomes noise.
> we didn’t rename ours — we made gin.Context satisfy the standard interface, adding full compatibility
> Params land in a small slice, the matched handler is already sitting on the final node, and the request path avoids reflection.
LLMs tend to write in this style full of short sentences or phrases separated by commas.
It's actually hard to understand what the point is at times:
> The work follows the length of the URL, not the number of routes registered in the app.
> That is the kind of performance work I trust: fewer operations on the hot path, and fewer concepts in the programmer’s head.
> The quiet goal was zero breaking changes.
Adjectives such as "honest" and "quiet" are LLM tells.
manucorporat 12 hours ago [-]
thanks for the feedback! while i wrote all the story myself I let AI do a full rewrite, i have not developed the eye to do the editing yet
throawayonthe 12 hours ago [-]
that's confusing, why would you [ write -> LLMify -> edit to deslopify ] rather than keep working with your own words
ShinyLeftPad 11 hours ago [-]
Why on Earth would you do that?
manucorporat 17 hours ago [-]
I released Gin in Hacker news more than 10 years ago! Changed my career and allowed me to meet a lot of interesting people. Thank you HN!
codegangsta 15 hours ago [-]
Hey manucorporat! So fun seeing this on the frontpage of HN. I'm bummed our two paths didn't cross in person via a Go conference or something else. Wanted to say how happy I was to see Gin rise in popularity in the community. I think you did a great job taking some of the elegant bits from Martini and making some better technical tradeoffs that were more idiomatic for Go.
Great to see you here :D
ShinyLeftPad 11 hours ago [-]
I liked reading about Qwik as well. Thanks for sharing.
espetro 16 hours ago [-]
Thanks for the detailed walk-through @manucorporat .
On designing for zero breaking changes, I see that is also a core value at Go. However, how did you actually apply it to software design and architecture? Got any resources to share here? Did you had to put more effort on other projects not running on Go to keep it also free from breaking changes?
I'm mainly building tooling in other runtimes like Rust and TS, and I'm interested to hear your take on it.
Classic talk that still influences my design decisions today.
physicles 11 hours ago [-]
Congrats on the traction you’ve got with this project. We used Gin back in 2016 for a while. I honestly don’t understand those Go devs who claim that the standard library is sufficient for building a serious API — there’s still so much boilerplate, and you end up writing your own mini-framework anyway.
The main reason we don’t use it anymore is that the default handlers don’t return the error type, which means error handling and HTTP status tracking get tricky and non-idiomatic as soon as your handlers start calling functions that can fail. It’s essentially a function coloring problem.
One could argue that HTTP status is a totally separate thing from normal errors, and I get that perspective, but that’s a significant ergonomic hit to take for the sake of philosophical purity.
tomconnors 15 hours ago [-]
> You write the same plumbing for route params, request parsing, validation, and responses in handler after handler. None of it is hard. Enough of it becomes noise.
As a human, I would have written something like:
> You write the same plumbing for route params, request parsing, validation, and responses in handler after handler. None of it is hard, but it makes the code noisy.
Whether or not an LLM wrote this, it's a writing style that sounds like a politician or a sophist, and it sucks.
15 hours ago [-]
khurs 16 hours ago [-]
Cool! I used gin once on a company project.
peterpost2 16 hours ago [-]
I'm not sure if I could use a framework that shares the name with an alcoholic drink in a professional setting.
Plenty of people who struggle with alcohol and who would benefit of not being reminded of it at work too.
idle_zealot 16 hours ago [-]
Part of reaching maturity is an ability to tell when your jokes or behavior make others uncomfortable, even when you don't think they should, and moderating yourself to enable others to feel comfortable with your presence. Part of maturity is also knowing when the things that cause you discomfort are unreasonable and recommending they be avoided is disruptive and antisocial. I think "all references to alcohol" falls pretty far under that latter category. Part of getting over alcoholism in our society is gaining the ability to hear references to it without suffering emotional distress, and while it's good to help people on that journey erasing reference to their object of dependence is both unworkable and ultimately harmful to those ends.
Graziano_M 16 hours ago [-]
If seeing a word written down is traumatizing, you need more help, and you’re not suited for the professional world. If coddling people like that would make you select away from a project for something beyond its technical merit, then I question your ability act as a professional.
add-sub-mul-div 16 hours ago [-]
I don't agree with the original take but this response is worse. Always choose curiosity about someone else's mindset rather than use it as an imaginary platform to build yourself up and pretend to be higher than them. Find another way to gain confidence.
sokitsip 13 hours ago [-]
Worst response ever!
manucorporat 16 hours ago [-]
Truth be told, I came up with this name when I was 12 years younger. The other big framework back then was called Martini. And Gin pretended to be the idiomatic version for Go. Go -> Gin
tommica 14 hours ago [-]
Its a great name
gchamonlive 16 hours ago [-]
This is important, but let's think it in different light. If society treated alcohol responsibly, without hammering the population with direct advertisement in ads, or indirectly with movies and cultural production, would a package name like this be offensive? I really doubt, so the problem isn't the package naming, but the entire cultural production that incentivises and rewards alcohol abuse.
tptacek 16 hours ago [-]
You do you, but it's tough out there for that position, given Homebrew, Flask, Absinthe, Wine, &c.
kitd 13 hours ago [-]
"Gin" is also an abbreviation for "engine", as applied to various machines during the industrial revolution. Eg, cotton gin. In that sense, it's quite a good name.
slillibri 13 hours ago [-]
As someone who has been sober for 10+ years and still avoids events where alcohol is served, the word Gin doesn't cause me any stress. Just one point of anecdata.
> Fyve faded. Gin kept going.
> the honest version of web programming: no magic, explicit control flow, and a handler shape you can hold in your head.
> keep the request path explicit, run no reflection there, and put the boring work behind one object you can inspect: the Context.
> None of it is hard. Enough of it becomes noise.
> we didn’t rename ours — we made gin.Context satisfy the standard interface, adding full compatibility
> Params land in a small slice, the matched handler is already sitting on the final node, and the request path avoids reflection.
LLMs tend to write in this style full of short sentences or phrases separated by commas.
It's actually hard to understand what the point is at times:
> The work follows the length of the URL, not the number of routes registered in the app.
> That is the kind of performance work I trust: fewer operations on the hot path, and fewer concepts in the programmer’s head.
> The quiet goal was zero breaking changes.
Adjectives such as "honest" and "quiet" are LLM tells.
Great to see you here :D
I'm mainly building tooling in other runtimes like Rust and TS, and I'm interested to hear your take on it.
Classic talk that still influences my design decisions today.
The main reason we don’t use it anymore is that the default handlers don’t return the error type, which means error handling and HTTP status tracking get tricky and non-idiomatic as soon as your handlers start calling functions that can fail. It’s essentially a function coloring problem.
One could argue that HTTP status is a totally separate thing from normal errors, and I get that perspective, but that’s a significant ergonomic hit to take for the sake of philosophical purity.
As a human, I would have written something like: > You write the same plumbing for route params, request parsing, validation, and responses in handler after handler. None of it is hard, but it makes the code noisy.
Whether or not an LLM wrote this, it's a writing style that sounds like a politician or a sophist, and it sucks.
Plenty of people who struggle with alcohol and who would benefit of not being reminded of it at work too.