frontpage.
newsnewestaskshowjobs

Open Source @Github

fp.

SMPTE Makes Its Standards Freely Accessible

https://www.smpte.org/blog/smpte-makes-its-standards-freely-accessible-openingstandards-library-t...
109•zdw•3h ago•41 comments

The Wholesale Plagiarism of Obscure Sorrows

https://waxy.org/2026/06/the-wholesale-plagiarism-of-obscure-sorrows/
224•ridesisapis•2h ago•80 comments

UHF X11: X11 Built for VisionOS and Apple Vision Pro

https://www.lispm.net/apps/uhf-x11/
74•zdw•3h ago•9 comments

DOS Game "F-15 Strike Eagle II" reversing project needs DOS test pilots

https://neuviemeporte.github.io/f15-se2/2026/06/20/needyou.html
119•LowLevelMahn•4h ago•30 comments

Bun has an open PR adding shared-memory threads to JavaScriptCore

https://github.com/oven-sh/WebKit/pull/249
61•gr4vityWall•3h ago•68 comments

CSSQuake

https://cssquake.com/
380•msalsas•9h ago•84 comments

Show HN: We post-trained a model that pen tests instead of refusing

https://www.argusred.com/cli
36•dk189•6h ago•16 comments

Show HN: StartupWiki – A Free Alternative to Crunchbase

https://startupwiki.tech/
80•shpran•4h ago•24 comments

PostgresBench: A Reproducible Benchmark for Postgres Services

https://clickhouse.com/blog/postgresbench
12•saisrirampur•1h ago•1 comments

Show HN: Make PDFs look scanned (CLI or in the browser via WASM)

https://github.com/overflowy/make-look-scanned
20•overflowy•1h ago•10 comments

Ember, a native iOS Hacker News reader I built around accessibility

https://github.com/DatanoiseTV/ember-hackernews
63•sylwester•3h ago•13 comments

The rise of South Korea’s weapons business

https://www.politico.com/news/magazine/2026/06/20/south-korea-weapons-dealer-trump-00959559
30•JumpCrisscross•8h ago•9 comments

Why has the pointe shoe been so resistant to change?

https://dancemagazine.com/pointe-shoe-innovation/
26•onemind•18h ago•24 comments

Temporary Cloudflare accounts for AI agents

https://blog.cloudflare.com/temporary-accounts/
99•farhadhf•8h ago•71 comments

Google display wrong flags for world cup 2026

https://swiss-cow.com/blog/google-world-cup-wrong-flags
6•jimseinta•56m ago•1 comments

Show HN: Microcrad – Micrograd Reimplemented in C

https://github.com/oraziorillo/microcrad
42•oraziorillo•3d ago•11 comments

Show HN: Tiny – An interpeted dynamic langauge with inline Go native functions

https://github.com/confh/Tiny
9•confis•1h ago•3 comments

Now You Don't: When Espionage Meets Magic

https://www.politicshome.com/news/article/now-dont-espionage-meets-magic
10•thinkingemote•2d ago•1 comments

Show HN: My Windows XP portfolio with working Game Boy and iPod

https://mitchivin.com/
13•mitchivin•48m ago•8 comments

Vacation With An Artist – Mini-Apprenticeships with Artists in Their Studios

https://vawaa.com/
43•karakoram•5h ago•4 comments

The ability to regrow body parts is dormant in mammals, not lost

https://www.sciencedaily.com/releases/2026/06/260617032207.htm
68•nryoo•2h ago•33 comments

Where to Find the Colors Your Screen Can't Show You

https://moultano.wordpress.com/2026/06/19/where-to-find-the-colors-your-screen-cant-show-you/
391•moultano•16h ago•104 comments

Bootimus – A Self-Contained PXE and HTTP Boot Server

https://bootimus.com
89•car•9h ago•33 comments

Web Browsers on PDAS

https://vale.rocks/posts/pda-browsers
34•robin_reala•5h ago•11 comments

Windows 11 New Media Player Uses 3.5x More RAM, Charges for Popular Video Codecs

https://www.extremetech.com/computing/windows-11s-new-media-player-uses-35x-more-ram-charges-for-...
175•tcp_handshaker•5h ago•89 comments

I Stored a Website in a Favicon

https://www.timwehrle.de/blog/i-stored-a-website-in-a-favicon/
274•theanonymousone•14h ago•94 comments

Mencius (2016)

https://scholarworks.iu.edu/iuswrrest/api/core/bitstreams/265d73a0-6bfa-45df-92ff-4e7d3f8be4b1/co...
20•jruohonen•2d ago•1 comments

From PGP to Mythos: a brief history of export controls that didn't stop anyone

https://techcrunch.com/2026/06/19/encryption-spyware-and-now-mythos-history-shows-why-cyber-expor...
121•Brajeshwar•6h ago•59 comments

VPN ban update for UK households as government looks at 'age-gate'

https://www.birminghammail.co.uk/news/midlands-news/vpn-ban-update-uk-households-34141063
241•iamnothere•5h ago•253 comments

Can you see three trees?

https://www.not-ship.com/can-you-see-three-trees/
288•Pamar•2d ago•134 comments
Open in hackernews

Show HN: Microcrad – Micrograd Reimplemented in C

https://github.com/oraziorillo/microcrad
41•oraziorillo•3d ago

Comments

oraziorillo•3d ago
Hey HN, I'm Orazio. I built microcrad (with a 'c'), a tiny scalar-valued automatic differentiation engine, with a small multi-layer perceptron implementation on top. It's reimplementation of Andrej Karpathy's micrograd in C. For me, this was a learning project to revisit backpropagation from first principles, with the additional difficulties that come with programming in C.

The basic idea is the same as micrograd: each number is a `Value` node in a computation graph, ops connect nodes, and the `backward` function topologically sorts the graph before applying the chain rule in reverse. The C-specific parts are memory management and two simple data structures I needed to implement backprop: sets and vectors.

The source code is about 1,350 lines, MIT licensed, and well documented. Dependencies are just the standard library and libm. In addition, the repo contains two examples to showcase how the engine works: a toy regression and an MNIST task.

What this is not: a framework to build and train neural networks in production. Being scalar-valued makes it slow, and it wasn't built for numerical robustness or large datasets. There's no commercial aim here; it's a learning project.

If you read through it, I'd like to hear thoughts, both on the ML engineering aspect and on anything that reads as un-idiomatic C.

TituxDev•2d ago
I did a similar project, but my approach to the topology definition was declaring perceptron structs with inputs as pointer arrays and output as a regular variable. With this scheme, perceptrons can reference directly to the outputs from other perceptrons — or even their own output (I haven't implemented that yet).
smasher164•2h ago
Is there a reason you didn't go with something like Boehm for a library gc, instead of writing your reference counting implementation?
dgellow•2h ago
Learning, I presume?
toxik•2h ago
Also refcounting is not a very difficult thing to implement
smasher164•2h ago
I guess I interpreted this part of their README as implying that the author found RC too fragile

> Reference counting buys correctness and composability, but at a cost.

> Disadvantage #1: you must balance every reference. Each value_create, value_retain, and each operation's implicit retain of its operands has to be matched by a value_release. Forget one and you leak; do one too many and you free memory that is still in use. The training examples in examples/ are verbose precisely because they are scrupulous about this in their error paths; that verbosity is the price of leak-free C.

oraziorillo•40m ago
In general yes, but not if you are disciplined.

I’d put it this way: though the idea of ref counting felt very natural at the beginning for my use case, at some point I realized there were probably better techniques to achieve the same goal. I found myself multiple times writing nonsense like:

sum = value_add(v1, v2) mul = value_mul(sum, v3) [...] value_release(sum) value_release(mul)

so that later I could release the sum. When you only have one intermediate value it’s still acceptable, but at 3-4 it starts getting cumbersome.

After asking for feedback, someone rightfully pointed out that the better and faster approach for an autograd engine is using an arena allocator. My reason for saying “rightfully” is that arenas are ideal when you have many “objects” that have the same lifespan, such as the values involved in the forward/backward pass. RC is better when you have a lot of “objects” with independent lifespans.

uecker•55m ago
Two things stick out as un-idiomatic for C. First, the casts before malloc are unnecessary. This you do in C++ but not in C. Second, names with beginning underscore are reserved, and the underscore + capital letter is specifically problematic.

The rest looks fairly nice but there are a couple of things I would do differently: I would not have the tests for NULL, use signed integers for indices and dimensions, use a flexible array member to integrate the data into the vector type directly, and omit the capacity field (as long as benchmarking does not show it is really needed). I would also use variably modified types for bounds checking, and with C23 the include guards become largely unnecessary.

valleyer•29m ago
Names beginning with double underbar (or single underbar + capital letter) are reserved. Single underbar + lowercase is not. C23 §6.4.2.1.
megadragon9•31m ago
Interesting project. Do you think manual memory management help understand computational graph lifecycle better, or does it distract from backprop itself?

btw, I went down the micrograd path with numpy-primitives all the way to building a PyTorch clone that can pre-train and post-train LLMs (https://github.com/workofart/ml-by-hand). My learning focus was on the math/calculus <-> high-level APIs, instead of efficiency. I'm glad to see more people tackling this problem from different angles.

oraziorillo•1h ago
Mainly did it for learning, as dgellow correctly presumed, but also there’s something intrinsically beautiful in writing code with zero dependencies