thelittlenag

Joined 10 years ago

Karma
336
Submissions
118
Member since
Sep 2
Engineer.
View on Hacker News

Recent submissions

Comment · 1 month ago
Maybe I'm being naive, but the policies needed here feel quite simple.

First, since data centers likely need some kind of treated (i.e. demineralized) water, and they want to use local municipal supplies, then they can do so only if they pay full market rate for that water. I would push for them to pay 1% to 5% above market rate to help offset other costs, but market rate at minimum. At no point should homeowners and/or residential customers subsidize this usage.

Second, commercial users (including data centers) should only get water produced by treatment plants in excess of residential needs. Plants can only treat so much, pipes can only carry so much, and priority goes to residential first.

Third, ground water is off limits for any commercial/industrial evaporative cooling uses. If data centers want to cool that way, then they need a different source of water.

Did I miss anything?

Comment · 3 months ago
I really hate lighting in modern offices. If there was one thing that folks actively worked to improve I would choose lighting. Having lights with a broader spectrum would go a long way in reducing eye strain and general fatigue, while likely allowing the lights to actually be brighter. Unfortunately I don't see this changing anytime soon.
Comment · 4 months ago
Bummer the link is broken. I read via UnfitFootprint's link.

This feels both like a good write-up, but an argument for why you often need to reach for multiple solutions when creating distributed system. Sure a fallback can have issues, but in the example given (website -> cache -> db) I can't help but feel that a circuit breaker pattern should also have been in play to catch other types of failures.

Distributed systems are dynamic systems and rarely will one type of solution or pattern cover the entire space of possible failures.

Comment · 4 months ago
The only place where the work I did was performative was government contracting. Not technically waste, but certainly useless.
Comment · 4 months ago
Precisely! And this is true not just for managers but also higher-level ICs. Its ok for Senior and below to be team focused, but moving to the next level means broadening scope and that means talking with people, regularly!, outside your immediate team.
Comment · 5 months ago

    Location: Minneapolis, Minnesota, United States
    Remote: Yes (10+ years working remote) (or hybrid/on-site in Minneapolis or St Paul)
    Willing to relocate: No
    Technologies: Scala, Java, Typescript (Effect TS), Python, C/C++, PostgreSQL, AWS, HLS, Real-time ABR
    Resume: https://drive.google.com/file/d/19O9A3zMulkPWb61Ng9FsSZbCPHZms_Qy/view?usp=sharing
    Email: [email protected]
Comment · 6 months ago
And if you are that kind of person, why would you want to be an FDE? (Not rhetorical, btw, I'm literally interviewing for an FDE role tomorrow.)
Comment · 6 months ago
Same. I worked on an in-house product many years ago now where lineage and provenance were the entire point. Really cool to see this!
Comment · 6 months ago
I used to work for the company that owned and operated GovDeals. That was a really interesting experience. I remember one of their many companies host the listing for and processed the sale of an oil refinery (or something similar) just like something random on ebay, except this sale was many 10's of millions of dollars.
Comment · 8 months ago
I don't really like this article. There isn't anything particularly noteworthy to noticing that some computations have outcomes that allow some form of recovery, and other outcomes do not.

But there are some obvious follow up questions that I do think need better answers:

Why is recovery made so hard in so many languages?

Error recovery really feels like an afterthought. Sometimes that's acceptable, what with "scripting" languages, but the poor ergonomics and design of recovery systems is just a baffling omission. We deserve better options for this type of control flow.

Also, why do so many languages make it so hard to enumerate the possible outcomes of a computation?

Java tried to ensure every method would have in its signature how it could either succeed or fail. That went so poorly we simply put everything under RuntimeException and gave up. Yet resilient production grade software still needs to know how things can fail, and which failures indicate a recoverable situation vs a process crash+restart.

Languages seem to want to treat all failures as categorically similar, yet they clearly are not. Recovery/retry, logging, and accumulation all appear in the code paths production code needs to express when errors occur.

Following programming language development the only major advancements I've noticed myself have been the push to put more of the outcomes into the values of a computation and then further use a type system to constrain those values. That has helped with the enumeration aspect, leaving exceptions to mainly just crash a system.

The other advancement has been in Algebraic Effects. I feel like this is the first real advancement I've observed. Yet this feature is decried as too academic and/or complex. Yes, error handling is complex and writing crappy software is easy.

Maybe AI will help us get past the crabs at the bottom of the bucket called error handling.

Comment · 10 months ago
My father is a data point in this. He was a farmer all his life and ultimately it was Parkinson's that did him in. While we took some precautions, I have no doubt that the herbicides we used should have been handled more carefully.
Comment · 1 year ago
I've really liked interviews where I either present a personal project I've worked on, or get to interview someone about their own personal projects. It's just more fun.

Their major complaint of the project approach is not getting signal on adaptability to new codebases. That has never been a first concern at any company I've worked at, and frankly if engineers are touching a new codebase every month then I'm getting a bit worried.

Comment · 1 year ago
I've now done probably close to 100 system design interviews. One of the main things I've looked for in candidates is their ability to identify, communicate, and discuss trade-offs. The next thing on my checklist is their ability to move forward, pick an option, and defend that option. Really nimble candidates will pivot, recognizing when to change approaches because requirements have changed.

The goal here is to see if the candidate understands the domain (generic distributed systems) well enough on their own. For more senior roles I look to make sure they can then communicate that understanding to a team, and then drive consensus around some approach.

Comment · 1 year ago
I'm old enough to recall when boost first came out, and when it matured into a very nice library. What's happened in the last 15 years that boost is no longer something I would want to reach for?
Comment · 1 year ago
Jon has addressed this elsewhere, but the gist of the argument, as I understand it, is that he hasn't worked professionally in any other ecosystem or language. So leaving Scala is tantamount to abandoning his entirely professional experience (20+ years!), skill set, and all open source contributions, and then restarting from scratch in a new ecosystem. All without any guarantee that the allegations around him won't just follow him. Its a really tough position to be in.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton