HN user

hakunin

2,211 karma

https://max.engineer, mastodon:ruby.social/@maxim, x.com/hakunin, bsky.app/profile/max.engineer

meet.hn/city/43.1009031,-75.2326641/City-of-Utica

---

Posts47
Comments417
View on HN
status.1password.com 3mo ago

1Password Is Down (Resolved)

hakunin
5pts4
gist.github.com 5mo ago

AI Orchestrators Decision Table

hakunin
2pts1
max.engineer 7mo ago

Don't Build a General Purpose API to Power Your Own Front End (4 Years Later)

hakunin
1pts0
max.engineer 7mo ago

Don't Build a General Purpose API (4 Years Later)

hakunin
2pts0
max.engineer 7mo ago

Don't Build a General Purpose API (4 Years Later)

hakunin
1pts1
commento.io 7mo ago

Commento.io Has Been Down

hakunin
2pts2
github.com 8mo ago

OCRmyPDF-AppleOCR plugin now supports LiveText

hakunin
2pts0
www.youtube.com 10mo ago

Rails, Omarchy, Geo Proxy: Rails World Opening Keynote [video]

hakunin
2pts0
max.engineer 11mo ago

Won't AI always need human backup?

hakunin
2pts0
max.engineer 11mo ago

Failover to Human Intelligence

hakunin
6pts3
github.com 1y ago

Show HN: TinyMCP – Write MCP tools in Ruby and serve them

hakunin
4pts0
max.engineer 1y ago

Getting Answers from a Big PDF with RubyLLM

hakunin
2pts0
news.ycombinator.com 1y ago

Ask HN: Quality ad-free audio content for kids?

hakunin
2pts3
why-upgrade.depesz.com 2y ago

Why Upgrade PostgreSQL

hakunin
1pts0
www.theguardian.com 2y ago

John Oliver offers to pay Clarence Thomas $1M a year if he quits Supreme Court

hakunin
16pts12
www.wired.com 2y ago

US School Shooter Emergency Plans Exposed in a Highly Sensitive Database Leak

hakunin
3pts0
max.engineer 2y ago

Long Term Refactors

hakunin
2pts0
max.engineer 2y ago

Long Term Refactors

hakunin
1pts0
max.engineer 2y ago

Long Term Refactors

hakunin
2pts0
notes.max.engineer 2y ago

Reliable communication allows for simpler interfaces

hakunin
2pts0
max.engineer 3y ago

Adventures in Ruby-esque type enforcement

hakunin
2pts2
9to5mac.com 3y ago

Smart home company Eve bought by multibillion-dollar automation giant ABB

hakunin
4pts0
max.engineer 3y ago

Adventures in Ruby-esque type enforcement

hakunin
2pts0
max.engineer 3y ago

Adventures in Ruby-esque type enforcement

hakunin
4pts0
max.engineer 3y ago

Rails – narrative vs. model centric approach

hakunin
1pts0
max.engineer 3y ago

Good Engineering is not Premature Optimization

hakunin
2pts1
max.engineer 3y ago

It's Not Premature Optimization

hakunin
1pts0
max.engineer 3y ago

It's Not Premature Optimization

hakunin
2pts0
github.com 3y ago

I Love Ruby: 65LOC for Neat Atlassian Document Format

hakunin
1pts0
github.com 4y ago

Sshfs Is Orphaned

hakunin
191pts98

There was a phase, which I also got sucked into at the time, that comments are bad. Problem is, to make your code be so self-explanatory that it conveys business decisions, background stories for how you've arrived here, research-based choices made, you would have to name your variables and functions in a batshit_insane_way_that_obfuscates_behavior_among_the_names. It doesn't make anything better.

Use short names where they're contextually clear. Use long names where they're contextually weird/non-belonging. Use comments to explain the "whys" of your code.

I have been on a quest to get AI to code like me, using pi harness, and any model that it can support. I'm mostly a Ruby programmer, so here's my journey so far.

1. Created a "coding" skill with every practice I posted on my blog website, as well as a bunch I had in the queue to blog about but never got a chance, summarized into "do this" kind of language. This is more or less good for any PL, but a bit Ruby-slanted.

2. Created a "rails" skill because that's my framework, where similarly I explained my approach to architecting Rails apps.

3. Created a "writing" skill where I literally fed it my entire blog, and tried to get it to write more like me (mixed success, weaker models did better for some reason, but I haven't tried the GPT-5.6 series yet).

4. Next, I really wanted it to format code exactly like I would, even things like "let's make this `if` into a ternary, let's split these assignment groups with a line break, let's vertically align here, but not there", but with GPT-5.5 (my primary driver up until yesterday) there's almost no way to make a skill of reasonable size that will be consistently applied. So instead I instructed the agent to write me a Rubocop cop for every single situation I ever encounter where I would've formatted code slightly differently. This was quite powerful, because I usually thought of linters as enforcers of objective consistency decisions in the codebase, but this was me going full format nazi on the agent. And the nice part is that these cops can contain some non-autocorrectable feedback, which AI will follow.

5. I'm working on a review loop where the most easily missed parts above get double checked. This is the first thing I'm doing with pi subagents. (I feel like I'm getting better results if I don't use subagents for code exploration, other tool calls). The idea here is that I want reviews to be in the implementation loop. I always read/review code in the end, but so want it to have gone through the review loop before it gets to me. Since implementation is already context-heavy, I want to be able to orchestrate this loop without adding to the implementation context.

6. I'm also adjusting all of the above for GPT-5.6, because it requires less guidance, so I'm carefully trimming the verbiage to save tokens.

So far the results have been surprisingly good. I want to experiment with GLM-5.2 running under these constraints.

One invariant in all of this: I read the code. My end product is not working software, it's good code (which also incidentally produces working software).

I think this is not quite right.

There are news, and there's entertainment (opinions and punditry).

News actually have journalistic standards. They try to stay truthful and retract errors.

But what most people follow are shows/personalities that aren't even allowed to be officially called news, and independent media online influencers who are much more easily and directly corruptible and audience captured by much less money, with basically zero accountability.

The truth is, mainstream news (the actual news) are still good. But it's so easy nowadays to get on a platform and discredit everyone with almost no evidence, and have thousands of people believe you. And then sell your sponsors to that audience, because you sound trustworthy. It's so much easier to discredit everyone else than to build your own true credibility.

The goal is not to make you believe that "we are better than them". The goal is to make you believe that "everyone is equally bad, everyone is lying to you". It's like when phone scammers tell you that the other phone scammers are real scammers to appear more trustworthy.

I think the problem is with independent media and "opinions" replacing news. If everyone yells bullshit for personal gain at the top of their lungs and creates cults (as I agree these become), that's basically not free speech anymore.

I think the author is right.

There are many peripheral nice-to-haves you can get from a code review. Bugs, security, performance, correctness issues are all possible bonus findings you may get sometimes.

But there is only one _must_ in reviews: another person reading and understanding the code, possibly suggesting architectural improvements, or asking questions that should be answered by rephrasing the code for clarity, or by adding code comments. In other words: maintainability. That's the one thing that's not a bonus point, and is a constant for all code reviews.

Be careful what you’re centering yourself between. If one side is trying to build decent policy with a small fringe that has almost no political power, and the other side’s fringe has cemented itself as the new mainstream and fights classic liberalism, institutions, and science, you’re now in a very different center.

Yeah. We love the comfort of "getting it", but most of the easy problems have been solved, and we're only left with the hard ones.

People are pleasure-seekers, not truth-seekers. People demand what they can understand and feel good about, even if wrong. There's plenty of supply too. Radical free speech allows anyone to spread lies for huge financial upside, and we don't have any check on this particular type of weapon which is mass-destroying society.

Agree, mostly. On the internet, I like to be selective about only addressing new substantial claims.

In person, at work, etc, it makes sense to spend more energy, be more patient to get on the same page, and you get more benefit if you succeed.

That's how claims work. Why would I argue against nobody? Happy to engage if you disagree with the claim.

I only somewhat disagree with the post in the second part, with reasons enough to start the conversation.

One of the most cancerous developments of our generation is a bunch of people isolating themselves from everyone else, and having their perfect unchallenged audience captured views spread far and wide.

On a more personal level, the reason people are frustrated about arguing is because they can’t fully articulate their reasons. They don’t realize it themselves. The older you get and the more practiced you get at arguing, the less contentious it becomes, as you can simply say what underpins what you’re saying in an easily understandable way, and then if that didn’t convince the other side, you did all you could.

Not the commenter, but the reason is the same as the choice to use direct db driver vs ORM - you get to take full advantage of special features and intricacies of one system, rather than trying to maintain a lowest common denominator of functionality between multiple ones.

You can always build multiple clients however. It could be one thorough integration with one API, and a simpler backup via RubyLLM.

Unless of course RubyLLM supports all of the above, but even then, are they going to be able to keep up as much as a native client in the long term?

The answer is almost always that a native client for a more critical integration is the right call. You can always add another if you need it.

Yeah, for perfect positioning/overlaying I would be much stricter with my requirements. For that type of OCR I used Apple’s own LiveText framework that comes with MacOS. But in this use case I only care about standalone plain text and descriptive text to store in the database, not overlay over original content, so never tested Mistral on that front.

Yeah, for me it was all about not letting mail and kids schoolwork pile up. I like to scan ads that local businesses leave in my mailbox, so that I can ask "show me lawn care services near me". A lot of them don't really have any other online presence.

Btw, I tried to keep the Mistral part modular, so that another OCR could be integrated.

A SQLite based sweeper of all the scans, notes, PDFs and images I have on my filesystem, that stores their paths and allows searching their OCR’ed descriptions and text, as provided by Mistral OCR. I can ask things like “when does my car need maintenance” or “find me that picture my kid drew for Mother’s Day”. I use pi-based bash executable to launch a doc chat like that. https://github.com/maxim/ringbinder

Your point 3 is a non sequitur. If air travel is magical and valuable, that doesn’t automatically mean it needs subsidizing. We sometimes allow magical and valuable things to go away if we find them not to be popular enough to garner widespread political support.

My statement is correcting a fact (descriptive) not proposing what to do about it (I.e. not prescriptive).

It’s very hard to imagine what the world would look like without subsidized air travel. I have to think long and hard to figure out if subsidies would actually be sensible for something like this. I can be convinced either way right now, but it would take a lot of good historical data on something very similar, perhaps has to be specifically air travel in countries that do and don’t subsidize it, and their economic outcomes, controlled for other factors.

But saying that air travel is somehow the same in kind as other kinds of travel is incredibly shallow and reductive. We get to travel orders of magnitude faster and to places we wouldn’t even be able to reach otherwise.

No, all I’m saying is that air travel is so different than any other kind of travel, that it is very special, and borderline magical. Saying something like “nothing magical about air travel, things and people would still travel around the globe” is very reductive. I’m not giving my opinion on subsidies.

I’m responding to a claim that there’s nothing “magical” about air travel. It literally enables things otherwise impossible.

When something is that drastically different, it becomes different in kind. For example, if you have high network latency, you cannot jam (play live music) with friends remotely. If you have low latency, you can. Just because the difference is in a single value (I.e. net speed) doesn’t mean it doesn’t change the fundamental nature of what’s possible. Air travel makes the kind of business, shipping, and attendance possible that wouldn’t have been possible otherwise, because our collective lifetimes and risk tolerances are limited.

Growing up in the 90s in Moscow wasn't all cakewalk (immigrated to US soon after), but I fondly remember watching the show and reading Russian-translated X-Files books. I don't know why the books were so fascinating to me. Imagined my life in America as something akin to Fox Mulder: suit, nice hair, car, hotel, official business. The lifestyle was all foreign to me, and also the coolest ever.

Zed 1.0 3 months ago

Yeah, and Sublime has both: vim mode and multiple cursors.

Zed 1.0 3 months ago

I used TextMate prior to Sublime, but then I became into vim mode, which TM never got I believe.

Zed 1.0 3 months ago

I'm also sticking with Sublime for many years, and at this point it feels like it is some kind of old man stubbornness (like George R.R. Martin using WordStar 4.0 type thing). I don't know why its ergonomics for me have been just unbeatable. I gave others (VSCode and Zed) good weeks and months of configuring them to my liking and using them exlusively, and always returned to Sublime. All the AI stuff just runs on the side in the terminal (iTerm2 for me, but checking in on Ghostty sometimes too, waiting on them to figure out their minimal text brightness feature).