HNHacker News
TopNewBestAskShowJobs

9dev

9,726 karma · joined June 23, 2018

Head of Engineering @ matchory.com

<first letter of my company name> at 9dev.de

[ my public key: https://keybase.io/radiergummi; my proof: https://keybase.io/radiergummi/sigs/_bPlsZ-Tii8Qag-Ne5n2bNSqVB8CDqke1kLgzTytb-s ]

submissionscomments
9dev··on Devtools must be open source
I don't know; I've been rebasing huge branches in really mean divergent states with Claude Code, and it handled it flawlessly pretty much every single time. So I don't think the actor is as unreliable as you think.
9dev··on 'Crush this lady': how eBay harassment campaign led to $56M payout
Exactly. It is societal norm to not harass other people, whether you do it online or offline. Do you realise how incoherent you are?
9dev··on Karpathy’s Pelican
Ha, that's fun! I've built half your product for myself as a personal, native MacOS app, with a slightly different direction, but the same core idea. I might go do a little scavenging for ideas in your docs :-)
9dev··on I don't recommend Tailwind CSS
Note that we're talking about an edge case for an authoring error - applying two conflicting styles to an element does not make sense, it has no defined behaviour, and is correctly flagged by linting tools as such.

Should Tailwind really go out of its way to pay a compile time tax, just to make this case resolve predictably? Or should people rather use code editors that point out invalid duplicated styles, which are always added in error?

9dev··on I don't recommend Tailwind CSS
What kind of design drift do you mean? You set `--color-surface` in your theme once, then all surfaces in the app use the same color with `bg-surface`, regardless of the theme authoring parts of it. I don't know how you could enforce more consistency to CSS authors than Tailwind does.
9dev··on I don't recommend Tailwind CSS
I would even say the answer is... however round "large rounded" should be. Tailwind doesn't force arbitrary opinions on these things upon you - it's a set of utilities to enforce your design system. If rounded means 6rem, so be it.

There is, as you said, a single place to configure your design system (a CSS file, fwiw), which is objectively better than "well for these card-like containers we usually use 5px everywhere."

Besides, I'm really wondering what sad jokes some people use to edit code that don't even offer tooltips for the styles getting applied by Tailwind classes.

9dev··on I don't recommend Tailwind CSS
Interesting, I didn't know that project yet! I'll give it a thorough read.
9dev··on I don't recommend Tailwind CSS
they do work… for any value of work. I have been in the industry for a while, and I've never seen a project which doesn't slowly devolve into fights with the cascade over time - arbitrary abstraction layers, ad-hoc organization patterns, developer-specific conventions, inconsistent naming, and so on. All of this usually creeps in the more a project grows. At some point, someone adds postcss or scss or another preprocessor and starts splitting files, and then a whole new set of new, made-as-you-go conventions comes in: Files per component or per view? Or rather per architecture concern? Usually a mix of them. As files are split, the class naming gets even more inconsistent.

And at that point, onboarding a new developer always means wasted time on understanding this whole organically grown set of bespoke conventions, class names, patterns, hierarchies, and so on.

Tailwind does not really have this pattern of deterioration growing along both time and complexity, it stays consistent on both axes. So it's definitely an argument IMHO.

9dev··on I don't recommend Tailwind CSS
That is kind of my point, though—you don't need tailwind-merge, really. There are two cases it solves:

One, adding classes from the outside to an encapsulated component with its own, internal classes, to make sure the outside-applied classes take priority. Either use the !important modifier on them (`ms-auto!`), put the components into a container div with the classes for layout concerns, or even better: Figure out why you need to make styling changes to a component that cannot be expressed via props. I would generally recommend components to not have outside-element styling like margins in them anyway, which most often fights with positioning later.

Two, merging prop-derived styling with base styles - for example for a `size: 'sm'|'lg'` prop. It's tempting to just use tailwind-merge here:

  const classList = tailwindMerge(
    'p-4',
    size == 'sm' && 'p-2',
    size == 'lg' && 'p-6',
  );
But that isn't necessary at all: The better alternative would be to use data attributes for visual concerns and built-in or aria attributes for interaction states. There are almost always element attributes that can represent what you want to have correctly, and data- where there are not. Then, you can just add a class accordingly:

  <span 
    class="p-4 data-[size=sm]:p-2 data-[size=lg]:p-6 data-active:font-bold"
    data-size={size}
    data-active={active}
  />
And you'll end up with easier to maintain components that derive their styles from the CSS cascade alone.
9dev··on I don't recommend Tailwind CSS
This is such a bikeshedding debate. While you don't recommend it, projects with Tailwind work. Over years. You can onboard new developers to it, able to contribute productively immediately. Likewise, you can pick up work after months or years and don't have to remember or rediscover how your styling layer works.

The conventions and class names come really naturally fast, and you can always look it up. It's just not as a big of a problem people make it.

But the most ridiculous part of the article I found the cascade complaint:

  <p class="text-red-500 text-green-500">I am some text</p>
Yes, this does not work. Why should it?! There is not a single use case where this is a good idea! In classic CSS, you might want to override something based on modifier classes, but that is just not a thing with Tailwind! If you end up programmatically layering class names, you're looking at a code smell. Instead, you want to use attribute or state modifiers, like `aria-hidden:opacity-0`.
9dev··on Australia's social media ban has failed
I've got news for you - this is how we've protected teenagers since forever in the real world! What do you think age restrictions on movies, casinos, or porn are for? Why do you think children have to be home before a certain time in the evening? Why do we not let them roam anywhere alone until they are old enough?
9dev··on Show HN: Yap – OSS on-device voice dictation for macOS with no model to download
Amazing! This is something I wanted to look into too.

The Apple Foundation models SDKs are surprisingly cool. I recently started working on a personal productivity app that tries to keep track of all the projects I work on, and the ideas and initiatives within these. It does so by creating a graph of events, fed by Claude transcripts and the git and browser history, then letting FM summarize and describe all events; that in turn feeds a semantic search index in an SQLite database.

What I have now is an app that shows me where all my projects stand, what I last worked on, where I left forks behind (like deciding for one idea and doing something else "later"), and how to get back into something I wasn’t working on for a while. It also has a built-in MCP server, so I can ask Claude code about any past event or decision or roughly-similar keyword, and it’ll get sensible answers back!

Called the thing Pensieve :-)

However, one thing still missing is actually being able to ask it directly, or talk to it, so Yap looks like a great opportunity to learn!

9dev··on AI companies are shredding rare books
We manage to do this for endangered wildlife too without anyone counting every single specimen; why shouldn’t we be able to estimate how rare a book is?
9dev··on Ruff v0.16.0 – Significant new updates – 413 default rules up from 59
Pretty much all tools developers use to write code format code to some extent while editing, but often with individual configuration knobs or default settings that are different between all ICs.

Having a single tool that runs before committing, ideally as a git hook, ensures a single, uniform style across all files touched.

9dev··on Ruff v0.16.0 – Significant new updates – 413 default rules up from 59
You will find that pretty much every rule we have in any possible context will have some exceptions that are justified under some conditions.

Taking that as a reason to not have those rules in the first place seems like a logical fallacy that intelligent people should not make.

9dev··on Ruff v0.16.0 – Significant new updates – 413 default rules up from 59
I can - in fact, I have to, a lot more than I'd like - when someone makes changes with different code style settings in their IDE or tooling, and that affects unrelated parts of the code, and suddenly the PR contains tons of code that just looks subtly different but still does the same thing.

If sieving the spam from ham in code reviews is your thing, go have fun.

I personally prefer code that is automatically and unconditionally kept in the exact same shape, preserving only the intended changes to stop the team from wasting time on formatting or reviewing.

9dev··on Show HN: Bribes.fyi – Know before you go. New feature added
Good lord, that this is necessary is so depressing.
9dev··on Don't Take the Black Pill [video]
Yeah, maybe - but you know what one of the perks of not working for FAANG is?

Not working for FAANG.

Some people prefer having a spine over selling their integrity. There’s heaps of opportunity for doing interesting work in a less toxic environment in places other than Silicon Valley, if you accept a little less pay.

9dev··on Claude Opus 5
Then again, looking back, that’s the way history is made. Modern democracies in the west are built on foundations of slavery and colonialism; yet we cherish them as to all the greatness they have brought as well. We need some amount of tolerance to ambiguity, and LLMs are undoubtedly both extremely cool but also extremely concerning.

Edit: Note that I am not saying that this is good, or desirable; just that it is. The technology is here know and not going anywhere, with all the flaws of its conception. We can be skeptical and curious at the same time.

9dev··on Self-host your mail server
That is the exact problem that got me to abandon my splendidly working, self-hosted email stack. I had so many instances of mail just not getting delivered, despite doing absolutely everything correctly, that I gave up.
9dev··on Hetzner is working on LLM Inference
It won't. That's the point many people don't seem to get: The people who wanted everything that is happening now don't just go away. There is no guarantee they won't vote for a narcissistic grifter again, and thus any long-term decisions building on mutual trust and stability can't be made. How could you justify investing into a factory that relies on a 20 year ROI window when tariffs could be changing every day? Why would you want to use an AI model that could be restricted to US citizens or taken away entirely without notice?

Big, slow wheels have turned everywhere around the world. They won't turn back so easily.

9dev··on Hetzner is working on LLM Inference
There is no "West" anymore, at least not in the sense it was used in the last 50–70 years. There is now Europe/Canada/Australia on the one side, and the USA as an adversary on the other, and that won't change in the foreseeable time.

What we need is frontier open weight models in the EU, Canada, and Australia.

9dev··on The startup's Postgres survival guide
That's a straw man, obviously: I didn't talk about building your own database, but setting up PostgreSQL and pgBackRest, two well-defined, and thoroughly documented applications. With coding agents available, you don't need to much arcane domain knowledge for the fringe details, so a lot of the old reasons for appliances as a service don't hold anymore.

Other than that, yes! Setting up a Keycloak instance as opposed to handing over login credentials to Octa should be a consideration. Keeping your source code in GitLab over tying your entire development workflow to Microsoft vibe coders with an awful track record is a sensible stance.

> Don't use a lawyer or outsourced HR, if you can't draft legally binding employment agreement in an afternoon you shouldn't be entrusted with hiring people

That's a little ridiculous; there's an overlap between someone setting up a database for a startup and someone programmatically using a database at a startup. The overlap between that person and someone with a legal background is infinitesimally smaller.

9dev··on The startup's Postgres survival guide
We just might—not everyone works in SV. The 6k are a single database out of a vastly bigger pool of expenses, so unless you’re funded with six to seven digits from the start, it’s not nothing. At least in Europe, shelling out 300 grand on an SWE for an early stage company is delusional.
9dev··on The startup's Postgres survival guide
Well yeah, you can apply that to most problems you encounter as a company - there are service providers for pretty much anything you can imagine. That doesn't mean it's smart to spend a huge chunk of your revenue on OpEx, however.
9dev··on The startup's Postgres survival guide
If expending 6k per year on your database alone sounds reasonable to you, we have very different perspectives on a good use of investor funds.

We’re not talking about maintaining your own k8s cluster here mind you, but a basic Postgres setup. If you can’t handle that comfortably in an afternoon, you probably shouldn’t be entrusted with customer data.

9dev··on The startup's Postgres survival guide
That was not quite the point I was making, which is that the equivalent RDS setup would come in at around ten times of that.
9dev··on The startup's Postgres survival guide
It’s really not that hard, especially with an AI agent to help you. Running a Postgres server and a read replica in Hetzner with pgBackRest backing up to their S3 buckets and a cloud volume can be had for under 50€, has HA, PITR, 3-2-1 backups, and will carry you through your series A comfortably, with GDPR compliance built-in.

What does the equivalent RDS setup cost you?

9dev··on Terrence Tao's ChatGPT Conversation about the Jacobian Conjecture Counterexample
That is one clever metaphor. Thank you, I might steal it.
9dev··on OpenAI and Hugging Face address security incident during model evaluation
> I find it fairly easy to distinguish between US model labs and North Korea.

Do you now? Remember the girls school bombing in Iran, of which we still don't know if an AI agent was involved in the target planning?

I do unterstand why a (assuming here) US citizen might sleep all sound and comfy, but to the rest of the world the distinction is neither as clear nor as comforting.

As a European, all I know is that we cannot trust the USA anymore, and being so utterly dependent on them to not fuck up the most important technological revolution in our history so far over greed, cronyism, incompetence... it is terrifying.

← PreviousPage 6 of 34Next →