HNHacker News
TopNewBestAskShowJobs

tetraodonpuffer

1,923 karma · joined October 19, 2014

How to set up a linux / virtualbox / pfSense system where all networking runs over pfSense and apps are run in Virtualbox VMs, each firewalled by pfSense separately, with some i3 monitoring of the VMs

http://www.woodensquares.net/posts/rationale.html

Set up a Kubernetes cluster from scratch on a set of CoreOS Xen guests, with flannel, RBAC, TLS etc.

http://www.woodensquares.net/posts/xen-1.html

submissionscomments
tetraodonpuffer··on Claude Haiku 5.5
with claude -p seemingly now using api credits I guess this approach will have to change unfortunately :/ I wonder what will be the best cmdline way to do things like these
tetraodonpuffer··on Vibecoding isn't as fun as writing code by hand
I also have been coding for over 40 years now, and I am going to take your example and expand it a bit: wiggling a baton and hearing nice music come out is fun in its own way, all the years of training allowed you to develop the "ear" so you know what sounds good, and to a certain extent to recognize errors the player you are directing is doing, and isn't it nice to be able to just wave your hands and music comes out without having to work on scales, or embochure, or finger dexterity and so on.

The downside is that of course the further you stay away from actually playing your instrument, the rustier you will get; this might or might not be an issue, but it is a significant downside, also being away from the technique side means that as the years go by, you might not be able anymore to have an intuitive understanding of "this sounds wrong" and why it does.

I don't want to stretch the metaphor too far, but it does feel that agentic coding is a bit like building skill tech debt, the more you do it, the more you'll have to work later to bring back the skills you lost. The meta could be that models will get so good so that only a small percentage of developers will ever need to sully their eyes again with looking at code (same as while when we started most people had at least a passing familiarity with assembly, nowadays nearly nobody does), jury's out on that.

Either way, what before needed a full orchestra of developers, now could be doable by a good conductor and maybe a couple of soloists: how many orchestras will be needed? and what will the section musicians not good enough to be soloists and that don't have an interest in becoming a conductor will do? and how are new conductors going to develop their technical chops if there are no more orchestral jobs?

tetraodonpuffer··on JetBrains reported a net financial loss first time in its tracked history
I disagree on to do nothing is also to die, I'd love to continue paying if they prioritized bugfixing, speed, remote/container editing and having an open AI ecosystem, as well as supporting any new language features without degenerating into an "always online" editor like vs.code.

I could not care less about "new paradigm" editors, UI reworks and AI lock-in offerings, the only AI I want is let me bring my own local model, or interface with claude / codex / ...

tetraodonpuffer··on Show HN: Ledge.sh – Runnable Markdown Notes
cool idea, do you have any plans to integrate command generation with the shell completion / aliases / functions? Say I have tons of muscle memory on using ctrl-r fzf to get things from history, or on pressing tab to autocomplete pod names etc. so I would never write out a full kubectl command to execute by hand
tetraodonpuffer··on AI needs $6T in annual revenue to justify data centre boom
I think it's more, let's layoff 20% of the people, give the rest some of the money saved in tokens, deliver features a lot faster (or at least expect them to). Jury's out how long this can continue before the "nobody understands the code anymore" chickens come home to roost.
tetraodonpuffer··on JetBrains Air: A System of Products for Agentic Software Development
thanks for the reply, last time I tried this in goland if you blocked the IDE from networking via little snitch/opensnitch, it did not seem to work or keep working, there seemed to be some sort of call home to enable the AI plugin / keep AI working. If this has changed I will retry and see.

Note https://youtrack.jetbrains.com/projects/LLM/issues/LLM-17450... is still open although https://youtrack.jetbrains.com/issue/LLM-16479/Be-able-to-ac... appears to be closed as completed now

tetraodonpuffer··on JetBrains Air: A System of Products for Agentic Software Development
same here, but this will probably be my last year, their AI strategy where it seems impossible to use it with local models without it "calling home" really soured things for me, if I wanted an always connected spying on me IDE I would use vs.code, I paid for jetbrains because I wanted to use all functionality (including AI, pointed to my llama.cpp) with networking blocked in little snitch save quick unblocks for the occasional license check if needed.
tetraodonpuffer··on Show HN: Macros with a Behringer FCB1010 MIDI Pedalboard in macOS
I have something like this in linux using a novation launchcontrol, it's quite straightforward using aseqdump, say I use the buttons to switch desktops, I have this launched as part of my session and always in background. While developing this I just printed $line to see what aseqdump sent to figure out the regexes

    while IFS=' ' read -r line; do
      if [[ "$line" == *"client"*"Launch Control"\* ]]; then
        device=$(echo "$line" | cut -d' ' -f2)
      fi
    done < <(aconnect -i)

    aseqdump -p ${device::-1} | while IFS=' ' read -r line; do
        if [[ "$line" == *"Note on"* ]]; then
            note=$(echo "$line" | grep -o "note [0-9]*" | cut -d' ' -f2)
            if [ "$note" == "9" ]; then
                wmctrl -s 8
            fi
        elif [[ "$line" == *"Control change"*"127" ]]; then
            note=$(echo "$line" | grep -o "controller [0-9]*" | cut -d' ' -f2)
            if [ "$note" == "114" ]; then
                # some macro
            fi
        fi
    done
tetraodonpuffer··on 1,000+ shoes reviewed and cut in half
these days it seems after 6 months manufacturers are just going to manufacture next year's model anyways: it's so annoying, you find a shoe that works well for you and you have a year and then the new model changes the cushioning or the dimensions or whatever.

To me this is the most important part of these reviews, what changed in terms of dimensions and fit, bonus would be if they gave them to some 100-120mpw runners to get a durability test and a re-review a month later to see how they're holding up, but don't think I see any site doing that.

tetraodonpuffer··on The AI job market in 2026
how do you interview for those? I think interviewing has not kept up with how things are, leetcode rounds seem to make even less sense nowadays and feel even more of a hazing ritual.

Personally seeing an "AI engineer" job posting I would not even apply, despite having many years experience in general, and experimenting/running models on my own hardware and being responsible at work for several skills, mcp and so on, it just feels that that kind of job is looking for some ex-openai/anthropic/ai-lab kind of skillset, which is not something a lot of people have; if this is what you are looking for of course it is what it is.

I think these days being "AI conversant" should be expected for senior/staff positions, it can also be listed a requirement, but not sure putting it as a job title, it feels more like having "IDE staff software engineer" which is not something anybody outside of jetbrains/vs.code would do.

tetraodonpuffer··on No Juniors Today, No Seniors in 2031
> The new thing is on the supply side. Companies are already reporting staff+ vacancies that take 66 days on average to fill ... The shortage is already, in 2026, exclusive to senior-level roles.

I am not sure I agree with this being caused by lack of candidates. I have 25+ years of experience, I was caught in an office closure layoff in early 2025 for the second time in my career (the last was in the mid 2010s, where it took me a few weeks to easily find a new position), took the spring off, spent the summer preparing for the leetcode hazing ritual and interviewed a lot in the fall: despite having very up-to-date skills (I always keep up-to-date personally, also my last position was all k8s, llm integration, you name it) and long stints in my resume, interviewers did not care.

In the positions where I managed to pass the automatic resume screening (which was probably 10% of the time it felt), the interviewers just did their typical 5-rounds-sudden-death interview loops, with sudden death happening if the solution was not optimal. Sometimes sudden death was "oh I see you have experience in cloud 1 and cloud 2, but we run on cloud 3, sorry", other times it was a friday afternoon slot where the interviewer obviously just wanted to be done with the week.

It also did not help that many positions were "remote but only if you live within 50mi of one of our offices", and others were trying their best at downleveling (I have 15 years of my 25+ at principal+ both architect and IC, and some recruiters were pitching me senior positions, as in senior senior, not senior staff / senior principal). Often the hiring mgr would bemoan the fact that so many resumes are fake, and so many candidates just outright lie, but none of this seemed to make a difference when it came to the interview setup.

Ultimately after about 3-4 months of searching (I'd say I applied to ~100ish positions where I thought I'd be a good fit, and had actual interviews in less than 10) I ended up finding a local position for a significant pay cut, it is also the first job where the mandate from high on up is AI-everything, velocity first (like it's mentioned in this article). Given my long time experience I am able to be very productive with claude (because I know what it should be doing) but even with really tight reins it is a daily occurrence for it to prioritize expediency over correctness requiring rework.

I honestly don't know how people starting with AI agents will manage to improve, I have been through the transition of assembly->higher level languages, and the "spec driven agentic is just like using a compiler" rings very superficial to me: nobody would accept a compiler that 5% of the time (being generous here) miscompiled your code.

The current push seems to be "it's fine to have juniors on claude code producing tons of PRs, we'll just put a claude / codex reviewer action in GH so velocity stays up" which will lead to very interesting codebases in a few years. LLMs are a transformative technology, but it feels that management's perennial obsessions with cutting costs is going to use it mostly for that, as opposed to a way to create new products / improve existing ones.

tetraodonpuffer··on Anthropic downgraded cache TTL on March 6th
it does feel something in the hidden system prompt makes it try less hard, so many times in the past several weeks I have found divergences with what was in plan and looking back at the jsonl it's always some variant of "doing it this way would be too complicated, let me take this hardcoded way out". If asked to review the change, it will find it, and it will say also yeah I agree prompt said not to do this, but I did anyways, not sure why.

As others have said, anthropic is between a rock and a hard place, you can't scale compute as quickly, and the influx of new accounts has definitely made things tough for them: I think all the "how is claude this session 1/2/3/4" questions that keep coming up must be part of some a/b on just how far to quantize / lower thinking while still maintaining user satisfaction.

tetraodonpuffer··on Pro Max 5x quota exhausted in 1.5 hours despite moderate usage
just like everybody else I and my colleagues at work have seen major regressions in terms of available usage over the past month, seemingly unrelated to caching/resuming. On an enterprise sub doing the same work I personally went from being able to have several sessions running concurrently without hitting limits, to only having one session at a time and hitting my 5h every day twice a day in 3-4 hours tops (and due to the apparent lower intelligence I have been at the terminal watching what opus is doing like a hawk, so it's not a I went for coffee I have to hit the cache). The first day I ever hit my 5h this year was the day everybody reported it (I think it was the Monday you introduced the 2x promotion after hours? not sure, like 3 weeks ago?)

To avoid 1M issues, this week I have also intentionally used the 256k context model, disabled adaptive thinking and did the same "plans in multiple short steps with /clear in-between" to minimize context usage, and yet nothing helps. It just feels ~2x to ~3x less tokens than before, and a lot less smart than in February.

Nowadays every time I complete a plan I spend several sessions afterwards saying things like "we have done plan X, the changes are uncommitted, can you take a look at what we did" and every time it finds things that were missed or outright (bad) shortcuts/deviations from plan despite my settings.json having a clear "if in doubt ask the user, don't just take the easy way out". As a random data point, just today opus halfway through a session told me to make a change to code inside a pod then rollout restart it to use said change, and when called out on it it of course said that I was right and of course that wouldn't work...

It is understandable that given your incredible growth you are between a rock and a hard place and have to tweak limits, compute does not grow on trees, but the consistent "you are holding it wrong" messaging is not helpful. I am wondering if realistically your only option is to move everybody to metered, with clear token usage displayed, and maybe have pro/max 5/max 20 just be a "your first $x of tokens is 50/75% off". Allow folks to tweak the thinking budget, and change the system prompt to remove things like "try the easy solution first" which anecdotally has been introduced in the past while, and allow users to verify on prompt if the prompt would cause the whole context to be sent or if cache is available.

tetraodonpuffer··on I used AI. It worked. I hated it
you can tell it how to do things, but sometimes it still goes out on its own, I have some variant of "do not deviate from the plan" and yet sometimes if you look while it's coding it will "ah, this is too hard as per the plan, let me take this shortcut" or "this previous test fails, but it's not an issue with my code I just wrote, so let's just 'fix' the test"

For simple scripts and simple self contained problems fully agenting in yolo mostly works, but as soon as it's an existing codebase or plans get more complex I find I have to handhold claude a lot more and if I leave it to its own devices I find things later. I have found also that having it update the plan with what it did AND afterwards review the plan it will find deviations still in the codebase.

Like the other day I had in the plan to refactor something due to data model changes, specifying very clearly this was an intentional breaking change (greenfield project under development), and it left behind all the existing code to preserve backwards compatibility, and actually it had many code contortions to make that happen, so much so I had to redo the whole thing.

Sometimes it does feel that Anthropic turns up/down the intelligence (I always run opus in high reasoning) but sometimes it seems it's just the nature of things, it is not deterministic, and sometimes it will just go off and do what it thinks it's best whether or not you prompt it not to (if you ask it later why it did that it will apologize with some variation of well it made sense at the time)

tetraodonpuffer··on AI is making junior devs useless
I feel the same way, I have many years of experience, and I have gone from writing everything by hand to using claude code all the time (my latest company is very pro doing everything with AI).

Since I have been a software architect for the past 7-8 years it feels in some ways that that experience makes using claude code a lot more productive than for my non-architect colleagues, as I am able to steer it much more effectively whether directly in sessions or via custom skills / mcp.

The big issues right now for me are hiring and manager expectations, I changed positions last fall due to mass layoffs and it took me 3 months to find one: having leetcode interviews in the current climate seems completely useless, even more than it was in the past, and system design interviews are so formulaic it also feels like a crapshoot. Plus every job getting hundreds of AI generated applications makes actually being considered in the first place quite difficult.

Manager expectations are also ridiculously inflated nowadays, it seems most action items that come are claude written with fantastical random statistics (if you add caching you can make your backend 98.3% faster!), and it takes so much time to fight this and unrealistic team velocity expectations.

Interesting times, I do feel lucky I have had a long career, but I very much fear the ladder being pulled up even more than it has been when outsourcing because widespread. I know everybody says "things always change, new opportunities will open up to compensate for the ones that are being lost" but this time it does feel different, and not in a good way.

tetraodonpuffer··on UK accounting body to halt remote exams amid AI cheating
having "homework / coursework" count for the final score is what surprised me the most when learning about schooling in the US, in my university 100% of the score was the final, typically written test first, then oral in front of a blackboard (and usually the oral portion could move the needle of the written only +20%, but could definitely have you fail completely).

The one course that had something similar was microelectronics where during Christmas holidays we were given an optional assignment where we could design IIRC a NAND gate (2um process I think, most people ended up with a 5ft x 5ft sheet of paper at the end) which took a long time, but would give you up to +5% at the final (only one person got the full 5%, due to their creative use of the diffusion layer for interconnects). I don't remember any other course having anything along those lines, although to be honest you could slightly influence the difficulty of the oral final questions depending on how hard you worked / your behavior in class (of course only in years 4-5 where courses had only 20-30 students, no chance in year 1-2 with 400+)

It was extremely high stress, as you can imagine, but basically impossible to cheat. Every year a significant percentage of the students had to drop out, so by the time the 5th year thesis came around I think less than 20% of first years graduated at all. You were allowed to retake course finals if you wanted a different score (available 3x year typically, no guarantee you'd do better tho), but if you failed enough times you had to retake the course from scratch. You also were not allowed to enroll in the next year's courses until you passed all the prerequisites.

tetraodonpuffer··on AMD Ryzen 7 5800X3D sells for more than 9800X3D, enthusiasts flock to AM4 DDR4
world of warcraft has a huge speedup on x3d
tetraodonpuffer··on AMD Ryzen 7 5800X3D sells for more than 9800X3D, enthusiasts flock to AM4 DDR4
5800x3d / 5700x3d are MUCH MUCH MUCH faster than non-x3d in some games that are CPU bound (for some even 2x / 3x faster than non-x3d) so even with a "slower" GPU it can still be a large upgrade
tetraodonpuffer··on Using TypeScript to obtain one of the rarest license plates
phone numbers seem risky, years back I got randomly assigned a "cool" number (I think it ended with 8888 or something) and it seems it was on all possible fax spam lists, constant calls all hours of the day and the night, had to change it asap.
tetraodonpuffer··on Two recently found works of J.S. Bach presented in Leipzig [video]
when it comes to Bach I am surprised more people don't mention pieces like this

https://www.youtube.com/watch?v=tsxP-YjDWlQ (arioso from the cantata 156, here for oboe)

which I think stands up just fine against pretty much any other classical piece baroque or not.

Personally I have a very big soft spot for his organ works, as I play (badly) some organ myself, and among those I don't see the trio sonatas recommended nearly often enough (here is a live recital of all of them, which is super impressive)

https://www.youtube.com/watch?v=eK9irE8LMAU

among those I probably enjoy the most the vivace of BWV 530. Other favorite pieces are the passacaglia and fugue https://www.youtube.com/watch?v=nVoFLM_BDgs the toccata adagio and fugue in C major https://www.youtube.com/watch?v=Klh9GiWMc9U (the adagio especially is super nice), but there's so many. Among organists I often come back to Helmut Walcha, and am always amazed at how he was able to learn everything just by listening, him being blind.

tetraodonpuffer··on Software update bricks some Jeep 4xe hybrids over the weekend
most cars these days have GPS and return location and so on, why can't manufacturer run these updates only at night and when the car is parked at home? There should be no reason for any OTA update to happen while the vehicle is running (or on a trip etc.), downloading the OTA update, sure, but definitely not applying it. Also there should be a documented procedure to restore the previous in case an OTA update fails.
tetraodonpuffer··on Why are so many pedestrians killed by cars in the US?
any time there is a right turn you can still end up in this same situation, whether it's right turn on red or not, if the driver does not look to their right: there have been plenty of times I have been nearly ran over when a car turning right on green did not notice that the same direction pedestrian crossing light was green also and I was about to cross.

Same thing for cars turning right in front of me riding my bike in the bike lane, it's just par for the course, so pedestrians should ALWAYS make eye contact with the driver before crossing, and cyclists should NEVER be side-by-side with a car when approaching an intersection.

tetraodonpuffer··on Preserving Order in Concurrent Go Apps: Three Approaches Compared
Hah not sure about “production”, I am currently in between jobs and am taking advantage of that to work on a docker/k8s/file TUI log viewer.

I am using those techniques respectively for loading backups (I store each container log in a separate file inside a big zip file, which allows concurrent reading without unpacking) and for servicing the various log producing goroutines (which use the docker/k8s apis as well as fsnotify for files) since I allow creating “views” of containers that consequently need to aggregate in order. The TUI itself, using tview, runs in a separate goroutine at configurable fps reading from these buffers.

I have things mostly working, the latest significant refactoring was introducing the btree based reading after noticing the “fix the order” stalls were too bad, and I am planning to do a show hn when I’m finished. It has been a lot of fun going back to solo-dev greenfield stuff after many years of architecture focused work.

I definitely love golang but despite being careful and having access to great tools like rr and dlv in goland, it can get difficult sometimes to debug deadlocks sometimes especially when mixing channels and locks. I have found this library quite useful to chase down deadlocks in some scenarios https://github.com/sasha-s/go-deadlock

tetraodonpuffer··on Preserving Order in Concurrent Go Apps: Three Approaches Compared
Thanks for the write up! In my current application I have a few different scenarios that are a bit different from yours but still require processing aggregated data in order

1. Reading from various files where each file has lines with a unique identifier I can use to process in order: I open all the files and create a min heap reading the first line of each, then process by grabbing the lowest from the min-heap repeatedly, after reading a line from a file, I read another and put it in the min-heap again (the min heap cells contain the opened file descriptor for that file)

2. Aggregating across goroutines that service data generators with different latencies and throughputs. I have a goroutine each that interfaces with them and consider them “producers”. Using a global atomic integer I can quickly assign a unique increasing index to the messages coming in, these can be serviced with a min-heap same as above. There are some considerations about dropping too old messages, so an alternative approach for some cases is to index the min-heap on received time and process only up to time.Now()-some buffering time to allow more time for things to settle before dropping things (trading total latency for this).

3. Similar to the above I have another scenario where throughput ingestion is more important and repeated processing happens in-order but there is no requirement on all messages to have been processed every time, just that they are processed in order (this is the backing for a log viewer). In this case I just slab allocate and dump what I receive without ordering concerns but I also keep a btree with the indexes that I iterate over when it’s time to process. I originally had this buffering like (2) to guarantee mostly ordered insertions in the slabs themselves (which I simply iterated on) but if a stall happened in a goroutine then shifting over the items in the slab when the old items came in became very expensive and could spiral badly.

tetraodonpuffer··on I spent over $31k on Whiteout Survival
I think what would help is that any F2P game was mandated to never cost more than $x/year to be listed in the app store, and possibly have different tiers that a game could decide to be in ($10/$100/$1000) based on the maximum yearly spend. The game also should prominently display the total spend per year, and lifetime, every time it is launched.

Although I do not like F2P for all the dark patterns (which have infiltrated non-F2P as well unfortunately) if it was capped to a reasonable maximum amount a year, with no player to player trading at all, and no multiple accounts for the same store account, it might could be made to not be as predatory while still keeping it financially sustainable for the companies that produce the games.

tetraodonpuffer··on "Privacy preserving age verification" is bullshit
why don't you think this would work? Technically this is basically "the (SP) site trusts another (IDP) site to sign/encrypt a JWT containing some custom assertions". The user would go to the SP, get a signed blob (session nonce / expiry / whatever), take that to the IDP, log in there, IDP creates a JWT with the original blob plus any assertion you allow, you post the JWT back to the SP, SP decrypts the IDP packet, gets its own nonce, ties you to the session, done.

There are also obviously better ways (https://blog.cloudflare.com/privacy-pass-standard/ possibly some variation of zero knowledge proofs) but technically this seems like a solvable problem. Money wise the IDP or in general verifier can charge users for an account and/or generated assertions.

tetraodonpuffer··on A spellchecker used to be a major feat of software engineering (2008)
according to https://en.wikipedia.org/wiki/Ispell ispell (1971) already used Levenshtein Distance (although from the article it is not stated if this already existed in the original version, or if it was added in later years).
tetraodonpuffer··on Qwen-Image: Crafting with native text rendering
I think the fact that, as far as I understand, it takes 40GB of VRAM to run, is probably dampening some of the enthusiasm.

As an aside, I am not sure why for LLM models the technology to spread among multiple cards is quite mature, while for image models, despite also using GGUFs, this has not been the case. Maybe as image models become bigger there will be more of a push to implement it.

tetraodonpuffer··on Piano Keys
having the keyboard the way it is also allows you to more easily orient yourself, you can feel with the sides of your fingers if you are next to E/F or B/C and with the corner of your eye it's also straightforward to figure it out. I don't think it'd be possible (or anyways even more difficult than it is now) to play large jumps accurately if the whole keyboard looked the same
tetraodonpuffer··on Every part on a bicycle is safety critical
this is why if I was a sprinter a the TDF I'd 100% be on a mechanical groupset (assuming the sponsors allowed me to) a missed shift on a sprint means losing 100%
Page 1 of 15Next →