frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

We Mourn Our Craft

https://nolanlawson.com/2026/02/07/we-mourn-our-craft/
64•ColinWright•58m ago•31 comments

Speed up responses with fast mode

https://code.claude.com/docs/en/fast-mode
18•surprisetalk•1h ago•15 comments

Hoot: Scheme on WebAssembly

https://www.spritely.institute/hoot/
120•AlexeyBrin•7h ago•24 comments

U.S. Jobs Disappear at Fastest January Pace Since Great Recession

https://www.forbes.com/sites/mikestunson/2026/02/05/us-jobs-disappear-at-fastest-january-pace-sin...
96•alephnerd•1h ago•45 comments

OpenCiv3: Open-source, cross-platform reimagining of Civilization III

https://openciv3.org/
823•klaussilveira•21h ago•248 comments

Stories from 25 Years of Software Development

https://susam.net/twenty-five-years-of-computing.html
55•vinhnx•4h ago•7 comments

Al Lowe on model trains, funny deaths and working with Disney

https://spillhistorie.no/2026/02/06/interview-with-sierra-veteran-al-lowe/
53•thelok•3h ago•6 comments

The AI boom is causing shortages everywhere else

https://www.washingtonpost.com/technology/2026/02/07/ai-spending-economy-shortages/
103•1vuio0pswjnm7•8h ago•118 comments

The Waymo World Model

https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simula...
1057•xnx•1d ago•608 comments

Reinforcement Learning from Human Feedback

https://rlhfbook.com/
75•onurkanbkrc•6h ago•5 comments

Start all of your commands with a comma (2009)

https://rhodesmill.org/brandon/2009/commands-with-comma/
478•theblazehen•2d ago•175 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
202•jesperordrup•11h ago•69 comments

France's homegrown open source online office suite

https://github.com/suitenumerique
546•nar001•5h ago•252 comments

Coding agents have replaced every framework I used

https://blog.alaindichiappari.dev/p/software-engineering-is-back
213•alainrk•6h ago•332 comments

Selection Rather Than Prediction

https://voratiq.com/blog/selection-rather-than-prediction/
8•languid-photic•3d ago•1 comments

A Fresh Look at IBM 3270 Information Display System

https://www.rs-online.com/designspark/a-fresh-look-at-ibm-3270-information-display-system
34•rbanffy•4d ago•7 comments

72M Points of Interest

https://tech.marksblogg.com/overture-places-pois.html
27•marklit•5d ago•2 comments

Unseen Footage of Atari Battlezone Arcade Cabinet Production

https://arcadeblogger.com/2026/02/02/unseen-footage-of-atari-battlezone-cabinet-production/
113•videotopia•4d ago•30 comments

Where did all the starships go?

https://www.datawrapper.de/blog/science-fiction-decline
73•speckx•4d ago•74 comments

Software factories and the agentic moment

https://factory.strongdm.ai/
68•mellosouls•4h ago•73 comments

Show HN: Look Ma, No Linux: Shell, App Installer, Vi, Cc on ESP32-S3 / BreezyBox

https://github.com/valdanylchuk/breezydemo
273•isitcontent•21h ago•37 comments

Learning from context is harder than we thought

https://hy.tencent.com/research/100025?langVersion=en
199•limoce•4d ago•111 comments

Monty: A minimal, secure Python interpreter written in Rust for use by AI

https://github.com/pydantic/monty
285•dmpetrov•22h ago•153 comments

Show HN: Kappal – CLI to Run Docker Compose YML on Kubernetes for Local Dev

https://github.com/sandys/kappal
21•sandGorgon•2d ago•11 comments

Making geo joins faster with H3 indexes

https://floedb.ai/blog/how-we-made-geo-joins-400-faster-with-h3-indexes
155•matheusalmeida•2d ago•48 comments

Ga68, a GNU Algol 68 Compiler

https://fosdem.org/2026/schedule/event/PEXRTN-ga68-intro/
43•matt_d•4d ago•18 comments

Hackers (1995) Animated Experience

https://hackers-1995.vercel.app/
555•todsacerdoti•1d ago•268 comments

Sheldon Brown's Bicycle Technical Info

https://www.sheldonbrown.com/
424•ostacke•1d ago•110 comments

An Update on Heroku

https://www.heroku.com/blog/an-update-on-heroku/
472•lstoll•1d ago•312 comments

Show HN: If you lose your memory, how to regain access to your computer?

https://eljojo.github.io/rememory/
348•eljojo•1d ago•215 comments
Open in hackernews

Chibi Izumi: Phased dependency injection for TypeScript

https://github.com/7mind/izumi-chibi-ts
26•pshirshov•3mo ago

Comments

pshirshov•3mo ago
A bit surprised (and delighted) to see this on the front page.

Essentially, this is a greatly simplified port of distage (my library implementing phased DI for Scala).

Most of the job was done by Claude, the primary point was to showcase phased DI for Typescript, which has many annoyances and limitations, especially when it comes to reflection.

My contributions here were

(a) the approach itself: first we turn functions and constructors into runtime-inspectable entities called Functoids, then we trace binding dependencies from requested roots, do conflict resolution and build a DAG of operations, then we produce instances by traversing the graph in topological order.

(b) a bit unconventional approach to Typescript reflection, which is manual but comes with compile-time validation.

There are many benefits of phased approach to DI, one of the most important benefits is that you can have "configurable apps" (think use-flags for your applications) which are sound, free of logical conflicts and validated early (in case of Scala we even do it at compile time).

Also this approach is extremely easy to comprehend and reproduce (even Claude can do it with some guidance and interventions; I've done ports to several other languages, some with LLM assistance, some manually). While most DIs (especially single-phased ones) are hard to comprehend, maintain and port to other languages/runtimes, for this approach you need to have just one concept implemented - Functoid. The DAG-forming logic fits in 200-300 lines of code and would look the same in any language.

traspler•3mo ago
What's the "Non-invasive" metric? How is it less invasive than TSyringe or just as non-invasive as Awilix?
pshirshov•3mo ago
> What's the "Non-invasive" metric?

You can use it with code you can't modify (decorators are just convenience helpers, you can do same through bindings DSL with bit less type safety).

TSyringe depends on reflect-metadata and, if my understanding is correct, forces you to use its decorators.

The comparison table is completely subjective and made with just several glances at the readmes of the mentioned libraries. The point was to showcase phased DI for Typescript.

tyleo•3mo ago
I don’t think I’ll ever understand the affinity for DI libraries. I write a lot of tested code but it’s always just plain old interfaces and constructor arguments for me.

Other parts of our org use a DI framework and I feel like it causes a new class of dependency ordering bugs or missing dependencies. These just don’t exist when everything is passed in the ctor.

pshirshov•3mo ago
> I’ll ever understand the affinity for DI libraries

DI addresses/can address/affects more than 10 different aspects of application lifecycle. We've described our reasoning in several talks linked at https://github.com/7mind/izumi?tab=readme-ov-file#docs

> I feel like it causes a new class of dependency ordering bugs or missing dependencies

That's precisely where phased approach shines.

tyleo•3mo ago
I looked at the link you shared but it’s just a page of additional links.

Can you provide specific examples here instead?

What I think is most useful in cases like this is before-and-after code snippets showing how the library adds value.

pshirshov•3mo ago
There are docs and examples here: https://izumi.7mind.io/distage/

Not in before-after form though, but there was that "I'll eat my hat" discussion exactly in this form: https://www.reddit.com/r/hascalator/comments/aigfux/comment/...?

ricardobeat•3mo ago
I assume the top comment was made in relation to TypeScript, not DI in general. A lot of this content explains how it improves on problems compared to Spring, and statements like 'there was no good way to create configurable apps' or avoiding use of Java reflections, which do not seem relevant to TypeScript/JS.
tyleo•3mo ago
I meant my comment to be general but maybe Java is uniquely bad.

I’ve worked in C++, C#, rust, and TypeScript personally so I really can’t comment on Java.

mrkeen•3mo ago
Agreed. Modern Spring brags about not requiring pages of external XML files like it did in the old days. But plain constructors is still an improvement on both.
pshirshov•3mo ago
Configurable apps (see "axis" and "role" concepts in distage) are prohibitevely hard to setup and maintain, dual test with sound opt-in memoization are, probably, practically impossible.
tyleo•3mo ago
So I looked at the examples and it just seems like a lot for a little.

https://izumi.7mind.io/distage/basics.html#activation-axis

I feel like all you need there is a ctor param that takes a greeter and pass in whichever you want.

Those params can be cached as necessary or part of larger config POD objects if they are often passed with other dependencies.

pshirshov•3mo ago
No, you need much more because you want to switch multiple implementations at once, you want to avoid logical conflicts and you want to avoid specifying flags which are redundant in a particular configuration.

Also you want to be able to make sure that your application will start without actually running it. In Scala implementation we do it at compile time for all the possible paths.

oweiler•3mo ago
It just gets rid of the boilerplate. Never had a problem with ctor injection in Spring.
jauntywundrkind•3mo ago
That's something DI does sure, but Spring for example is a fully managed way of talking about stuff in your app. It exposes universal APIs to talk about all the things, and the ways of making things, and config for things. It lets you see what stuff is made.

I've found there to be something radically compelling about all the hooks Spring allows into it's runtime. The sub-interfaces of Aware offer all sorts of ways to see what is in your runtime, see things getting constructed, see other parts of the lifetime of things.

Asking the container for a thing is the most well known use case, but there's so so much we can learn about our environment at runtime by having these managed containers. Programming used to hint at "Meta-Object Protocols", more expansive forms of objects, and Spring for example delivered us something like that: a higher level better modeled object (and factory and other pieces) than what the runtimes gave us.

mininao•3mo ago
Does anyone have resources or ideas to share on the merits of dependency injection in js/ts ? To me it almost always feels clunky and antithetical to the spcriptey nature of JS/TS.
tantalor•3mo ago
Why would the choice of programming language matter at all with respect to DI?
pshirshov•3mo ago
It shouldn't. DI as a set of patterns and approaches can be implemented anywhere. The language and the runtime can help you or be a hindrance, but the principles are generic.
pshirshov•3mo ago
We described our reasoning behind flavor of DI (dependency graph solvers) in several talks which are listed here https://github.com/7mind/izumi?tab=readme-ov-file#docs

Most of the benefits do not depend on any particular language/runtime/stack.

agos•3mo ago
is there anything more concise than "several talks"?
pshirshov•3mo ago
Yeah, docs and examples here: https://izumi.7mind.io/distage/
nkohari•3mo ago
I feel like DI frameworks for JavaScript/TypeScript are always too complex, and rely too heavily on decorators to make up for the lack of RTTI. You'd be surprised how far you can get with using string identifiers for dependencies:

https://github.com/nkohari/forge

(For context: many years ago, I wrote Ninject, one of the more popular DI frameworks for .NET)

pshirshov•3mo ago
In this particular case decorators are completely optional, you don't have to use them. You can provide metadata at binding DSL level.
ambicapter•3mo ago
> The port was done by guiding Claude with partial manual reviews.

> At this point the project is not battle-tested. Expect dragons, landmines and varying mileage.

Exciting.

pshirshov•3mo ago
Indeed it is. The mere fact that with Claude I got reasonably good prototype in less than 4 hours while manual port to C# took me a week until working prototype is definitely exciting.
AlexErrant•3mo ago
What does "phased" mean here? My googlefu is failing to turn up meaningful results for "phased dependency injection", and the readme is unhelpful (and probably AI-generated: "distage follows distage's architecture", lol.)

The only 2 occurrences of "phase" are comments: `// Plan phase: analyze dependencies, detect errors` and `// Produce phase: create instances`. I'm mostly familiar with DI in C#, and SimpleInjector in particular.

Does "phased" mean "we iterate the dep graph to detect lifecycle/circular dep errors"? Similar to how `.verify()` works in SimpleInjector?

https://docs.simpleinjector.org/en/latest/howto.html#verify-...

pshirshov•3mo ago
Generative progamming. The problem is solved in phases (or stages) - at first a DAG (effectively a script in a simple DSL) is produced, then it's interpreted (and there may be different ways to interpret, e.g. you may produce a graphviz file or compute some complexity metrics or validate or whatever).