Hacker Newsnew | past | comments | ask | show | jobs | submit | halfcat's commentslogin

> Probably because AI appears to work, more or less

All nondeterministic AI is a demo. They only vary in the duration until you realize it’s a demo.

AI makes a hell of a demo. And management eats up slick demos. And some demos are so good it takes months before you find out how that particular demo gets stuck and can’t really do the enterprise thing it claimed to do reliably.

But also some demos are useful.


> Surely that revenue is coming from people using the services to generate code? Right?

Yes. And all code is tech debt. Now generated faster than ever.


Hmm maybe that’s a bit reductive? I’ve used claud to help with some really great refactoring sessions tbh.

> So why do people still design declarative languages?

Cost.

If money were no object, you would only hire people who can troubleshoot the entire stack, from React and SQL all the way down to machine code and using an oscilloscope to test network and power cabling.

Or put another way, it would be nice for the employer if your data analyst who knows SQL also knew C and how to compile Postgres from scratch, so they could fully debug why their query doesn’t do what they expect. But that’s a more expensive luxury.

Good software has declarative and imperative parts. It’s an eternal tradeoff whether you want the convenience of those parts being in the same codebase, which makes it easier to troubleshoot more of the stack, but that leads to hacks that break the separation. So sometimes you want a firm boundary, so people don’t do workarounds, and because then you can hire cheaper people who only need to know SQL or React or CSS or whatever, instead of all of them.


Yes, the RealOrangeOne repo was the working repo before it got merged into Django. It’s the same thing the article is talking about.

Has it been merged into the GitHub repo? I wasn't aware of that and I don't see it here: https://github.com/django/django/tree/main/django/tasks/back...

It sounds like the need you’re describing is not event-driven, but more like orchestration where the orchestrator is aware of dependencies between tasks and runs them in the right order (it builds a DAG, a directed acyclic graph). Tools like Airflow do this.

Static analysis will never be fully robust in Python. As a simple example, you can define a function that only exists at runtime, so even in principle it wouldn’t be possible to type check that statically, or even know what the call path of the functions is, without actually running the code in trace/profiler mode.

You probably want something like pydantic’s @validate_call decorator.


> you can define a function that only exists at runtime, so even in principle it wouldn’t be possible to type check that statically

Can you say more, maybe with with an example, about a function which can't be typed? Are you talking about generating bytecode at runtime, defining functions with lambda expressions, or something else?


> scripts that hook into Django's models and ORM

Django has management commands for that [1].

When you use Django over time, you experience this pleasant surprise over and over when you need something, “oh, Django already has that”

[1] https://docs.djangoproject.com/en/5.2/howto/custom-managemen...


VS Code (with neovim, btw).

I ask ChatGPT questions.

Most problems I work on are some form of building a declarative graph and then defining orchestrated operations on that graph. My understanding of how to structure and interact with that graph is usually the constraint. I have not found agents to help with improving the speed or quality of my understanding.


> a little forethought and consideration about the best or safest way to do a thing is a great way to shrink the blast area of any surprise bombs that go off

I don’t think I agree with this at all. Screwing up is, by far, the most impactful thing that can minimize the future blast radius.

Common sense, wisdom, and pain cannot be communicated very well. Much more effective if experienced. Like trying to explain “white as snow” to someone who’s never seen snow. You might say “white as coconut” but that doesn’t help them know about snow. Understanding this opens up a lot more grace and patience with kids.

Most often when we tell our kids, ”you know better”, it’s not true. We know better, only because we screwed it up 100 times before and felt the pain.

No amount of “think about the consequences of your actions” is going to prevent them from slipping on the ice, when they’ve never walked on the ice before.


> We need to:

> Build a dependency graph (which jobs need which other jobs)

> Execute jobs in topological order (respecting dependencies)

For what it’s worth, Python has graphlib.TopologicalSorter in the standard library that can do this, including grouping tasks that can be run in parallel:

https://docs.python.org/3/library/graphlib.html


One of the best real "batteries" added in recent years.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: