HNHacker News
TopNewBestAskShowJobs

whichdan

1,260 karma · joined February 3, 2011

(They/Them) Director of Engineering in Boston
submissionscomments
whichdan··on No Man's Sky Cosmos
I kinda feel the same way. I loved slowly going through the main story and probably put 50hr into the game, but the sandbox alone (amazing as it is) just doesn't do it for me.
whichdan··on Stacked PRs are now live on GitHub
The issue I have with stacked PRs isn't merging, but rather, when I change branch A, and I'm working on branch C, I then need to merge A into B and then B into C just to continue working. Collapsing/merging them at the end is the easy part.
whichdan··on Road to Elm 1.0
I agree that the stability is quite nice. But there are plenty of areas where the language could use some improvement - for instance, the ergonomics around writing nested Single Page Apps is pretty cumbersome.
whichdan··on Road to Elm 1.0
There's a lot to love about Elm, and I've written quite a bit of production code with it starting around 0.18.0. But in 2026 I'm not sure why a company would newly choose a language that hasn't otherwise been updated in nearly 7 years.
whichdan··on Show HN: Number Gacha, a gacha game distilled to its essence
Honestly the feedback loop of "do math to roll more" would make this an excellent game for kids IMO
whichdan··on Frontier AI has broken the open CTF format
Yeah I agree. I grew up in a very blue-collar town, and anything I wanted to learn (outside of public schooling) either came from emaciated websites or whatever books I could find at the library. Having YouTube and Khan Academy and everything else would have made such a huge difference for me.
whichdan··on Simplify your code: Functional core, imperative shell
The nice thing with the Elixir example is that you can easily `tap()` to inspect how the data looks at any point in the pipeline. You can also easily insert steps into the pipeline, or reuse pipeline steps. And due to the way modules are usually organized, it would more realistically read like this, if we were in a BulkEmails module:

  Users.all()
  |> Enum.filter(&Users.is_expired?(&1, Date.utc_today()))
  |> Enum.map(&generate_expiry_email/1)
  |> tap(&IO.inspect(label: "Expiry Email"))
  |> Enum.reject(&is_nil/1)
  |> bulk_send()
The nice thing here is that we can easily log to the console, and also filter out nil expiry emails. In production code, `generate_expiry_email/1` would likely return a Result (a tuple of `{:ok, email}` or `{:error, reason}`), so we could complicate this a bit further and collect the errors to send to a logger, or to update some flag in the db.

It just becomes so easy to incrementally add functionality here.

---

Quick syntax reference for anyone reading:

- Pipelines apply the previous result as the first argument of the next function

- The `/1` after a function name indicates the arity, since Elixir supports multiple dispatch

- `&fun/1` expands to `fn arg -> fun(arg) end`

- `&fun(&1, "something")` expands to `fn arg -> fun(arg, "something") end`

whichdan··on iPhone Air
I wonder if the thinner profile will make it more comfortable in smaller hands (both in terms of reach and center-of-gravity), but I'm skeptical.
whichdan··on How I Experience Web Today (2021)
Oh, don't forget, if you click "Allow (current location)" it will also reload the page.
whichdan··on VanillaJSX.com
Elm works a lot like this and it's quite nice.
whichdan··on Putting the "J" in the RPG, Part 3: Playing Final Fantasy VII
Totally agree; I started replaying 13 somewhat recently, and just felt worn down after playing for a few hours. The nonstop battles with no real break between them just isn't fun, despite the game having amazing aesthetics.
whichdan··on iPhone 15 and iPhone 15 Plus
I'm really bummed there isn't a Mini - I'd be happy with getting one every third generation, even. For the size of my hands, the center-of-gravity is too high in the 6.1" phones, so I can't comfortably hold it with one hand.
whichdan··on Reddit just auto removed my comment with a link to Lemmy.ml
I got a 500 on first load, and intermittent issues on subsequent loads, so it's not just you!
whichdan··on Rails Cheat Sheet
Without compile-time type checking, every single line of code needs to be evaluated with a unit test to ensure there won't be any runtime syntax errors.
whichdan··on Rails Cheat Sheet
I think Rails is a victim of its own success: many of the hot new Rails codebases from that time are now 10 year old monoliths. And those monoliths need incredible amounts of tests to compensate for the lack of compile-time type checking, Rails version upgrades are multi-month nightmares, and the object-oriented statefulness of the language means that complex load-bearing code can be extremely tricky to untangle.

There are certainly new compelling projects like Sorbet to add type checking, and the ecosystem itself is very mature, it's just that the average codebase is not going to live up the experience you might have with a brand new one.

whichdan··on I got a job as a Waffle House server that pays $2.92 an hour
Basically we'd need laws enforcing a minimum wage for waitstaff, otherwise restaurants that allow tipping will always have an advantage over more expensive ones that don't. And no, you're not required to tip, but that only ends up hurting the waitstaff, not the restaurant.
whichdan··on Spotify introduce personalised AI DJ
Ugh, yeah. I used to adore Spotify's "radio" algorithm, but depending on the genre - namely indie rock - I constantly hear repeats now.
whichdan··on The Toll of Layoff Anxiety
Okay, so people who had historically high-paying jobs, who were at a high-paying company with above-average severance, didn't have anxiety around layoffs. You can't say anxiety around layoffs is purely about mental health without looking at the financial aspect of it.
whichdan··on Digital Gardening in Obsidian
Tiny suggestion - instead of

  .map(g => { return { key: g.key, rows: g.rows.map(r => r[1]) }})
you can write

  .map(g => ({ key: g.key, rows: g.rows.map(r => r[1]) }))
whichdan··on Htmx in a Nutshell
https://htmx.org/docs/#parameters

Simple doesn't mean "I should be able to intuitively understand this with under a minute of reading"...

whichdan··on What if you delete the “Program Files” folder in Windows? [video]
My gut reaction was "wow that sounds boring" but then I reread it and realized I would have absolutely been excited about this in high school.
whichdan··on EVGA terminates Nvidia partnership [video]
I know they don't have plans to work with AMD but I'd consider switching to AMD for my next card if EVGA was manufacturing it. They fixed an old card of mine way out of warranty so I have some brand loyalty here.
whichdan··on Ask HN: Which Auth Service for SaaS?
If you're just building an MVP I think doing "magic link" auth is underrated. It's super easy to set up, relatively secure, doesn't need any of the complexity of passwords/sso, and is easy to migrate to a different system in the future.

Auth0 is complete overkill if you don't need their advanced features IMO.

whichdan··on Apple Introduces Apple Watch Ultra
I forgot where I read it, but there's a rumor that Apple is only planning to release a Mini phone every other year.
whichdan··on Ask HN: Books Like Building Git?
Ruby Under a Microscope - https://patshaughnessy.net/ruby-under-a-microscope
whichdan··on The downfall of smart TVs: From promises of seamless viewing to ad tool
I have an LG C1, which is an amazing TV, but even after disabling every single ad-related option, I'll still occasionally get a pop-up ad when the TV turns on.
whichdan··on The layoffs at Klarna
Employers cover a majority of the cost of insurance. In Boston, I pay maybe $70 every 2 weeks for health insurance, but on the private market I'd be paying 5-10x as much for worse coverage.
whichdan··on Does my data fit in RAM?
MySQL has a MEMORY[0] storage engine which might be of interest?

[0] https://dev.mysql.com/doc/refman/8.0/en/memory-storage-engin...

whichdan··on EasyRPG
So many fond memories of playing weird DBZ games on BYOND!
whichdan··on A clip from Stray got me banned from Twitter
Sure, but getting hundreds or thousands of people to join your Mastodon instance or whatever is a huge barrier when Twitter works fine /most/ of the time.
Page 1 of 24Next →