frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

France's homegrown open source online office suite

https://github.com/suitenumerique
202•nar001•2h ago•110 comments

Start all of your commands with a comma (2009)

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

Hoot: Scheme on WebAssembly

https://www.spritely.institute/hoot/
65•AlexeyBrin•3h ago•12 comments

Reinforcement Learning from Human Feedback

https://arxiv.org/abs/2504.12501
40•onurkanbkrc•3h ago•2 comments

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

https://openciv3.org/
749•klaussilveira•18h ago•234 comments

Coding agents have replaced every framework I used

https://blog.alaindichiappari.dev/p/software-engineering-is-back
108•alainrk•2h ago•116 comments

The Waymo World Model

https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simula...
1001•xnx•23h ago•569 comments

Show HN: One-click AI employee with its own cloud desktop

https://cloudbot-ai.com
7•fainir•1h ago•1 comments

First Proof

https://arxiv.org/abs/2602.05192
11•samasblack•32m ago•4 comments

Stories from 25 Years of Software Development

https://susam.net/twenty-five-years-of-computing.html
6•vinhnx•1h ago•1 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
132•jesperordrup•8h ago•55 comments

Unseen Footage of Atari Battlezone Arcade Cabinet Production

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

Ga68, a GNU Algol 68 Compiler

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

Making geo joins faster with H3 indexes

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

Reputation Scores for GitHub Accounts

https://shkspr.mobi/blog/2026/02/reputation-scores-for-github-accounts/
6•edent•2h ago•0 comments

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

https://github.com/valdanylchuk/breezydemo
253•isitcontent•18h ago•27 comments

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

https://github.com/pydantic/monty
266•dmpetrov•18h ago•142 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
6•rbanffy•3d ago•0 comments

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

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

Hackers (1995) Animated Experience

https://hackers-1995.vercel.app/
530•todsacerdoti•1d ago•257 comments

Sheldon Brown's Bicycle Technical Info

https://www.sheldonbrown.com/
409•ostacke•1d ago•105 comments

Show HN: I spent 4 years building a UI design tool with only the features I use

https://vecti.com
353•vecti•20h ago•159 comments

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

https://eljojo.github.io/rememory/
321•eljojo•21h ago•198 comments

An Update on Heroku

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

What Is Ruliology?

https://writings.stephenwolfram.com/2026/01/what-is-ruliology/
54•helloplanets•4d ago•54 comments

Cross-Region MSK Replication: K2K vs. MirrorMaker2

https://medium.com/lensesio/cross-region-msk-replication-a-comprehensive-performance-comparison-o...
6•andmarios•4d ago•1 comments

Microsoft open-sources LiteBox, a security-focused library OS

https://github.com/microsoft/litebox
365•aktau•1d ago•190 comments

How to effectively write quality code with AI

https://heidenstedt.org/posts/2026/how-to-effectively-write-quality-code-with-ai/
292•i5heu•21h ago•246 comments

Dark Alley Mathematics

https://blog.szczepan.org/blog/three-points/
103•quibono•5d ago•29 comments

Female Asian Elephant Calf Born at the Smithsonian National Zoo

https://www.si.edu/newsdesk/releases/female-asian-elephant-calf-born-smithsonians-national-zoo-an...
53•gmays•13h ago•22 comments
Open in hackernews

Is Odin just a more boring C?

https://dayvster.com/blog/is-odin-just-a-more-boring-c/
57•birdculture•3mo ago

Comments

lifthrasiir•3mo ago
I believe Odin's `^` syntax is a direct nod to Pascal. I for example had a prior experience with Delphi so it wasn't not too obscure.
vram22•3mo ago
!!
hmry•3mo ago
That's true, but the keyboard issue is real. ` ^ ~ are dead keys on many keyboard layouts, requiring two keypresses to type.

I think they should be avoided for common operations in newly designed programming languages.

Scaevolus•3mo ago
() are dead keys by that definition on almost every keyboard layout.
casparvitch•3mo ago
LISP in shambles
pcfwik•3mo ago
FWIW --- programmer dvorak lets you type () without "shift" but both ~ and ^ require shift. https://www.kaufmann.no/roland/dvorak/
pdpi•3mo ago
Parentheses are inserted by pressing two keys simultaneously. Diacritics on layouts that use dead keys are inserted by pressing two keys in sequence. Or, often, two keys simultaneously and then a third key in sequence (E.g. Shift-6 then Space for ^)

I'm Portuguese but live in the UK. The Portuguese layout (especially on macs) is dreadful for programming (because a bunch of important characters like brackets require Alt Gr to type), the UK layout sucks for writing Portuguese (because of the diacritics), so I ended up having to get used to US International as the compromise layout. I've gotten kind of used to it over the years, but the exact behaviour for dead keys varies a fair bit by platform, and especially on Linux can get quite aggravating.

skydhash•3mo ago
I think on Linux, I took one of the key I never use (insert) and put it as the compose key. That resolved most of my issues with writing French.
1-more•3mo ago
highly recommend every programmer set up hold/tap for their modifiers, including space cadet style parentheses.
dismalaf•3mo ago
If you're a programmer you should know how to change keyboard layouts. I speak a couple languages that use accents, all my dead keys need to be combined with a compose key first.
JoshTriplett•3mo ago
So is ' for some keyboard layouts, but ' is still useful and evocative in many contexts.

There are not enough good symbols trivially typed on a keyboard to sacrifice half of them to dead keys. Either the dead key or the programming symbol can be mapped to a key combination.

teo_zero•3mo ago
> [dead keys] should be avoided for common operations in newly designed programming languages.

If that's the rationale for choosing which symbols should be allowed, then let's ban {} as they require AltGr+Shift in many layouts. And let's avoid <> (used as parentheses, e.g. for templates or XML tags, not as less-than/greater-than) because in ISO keyboards they loose all their symmetry. And what about shells, with /, one of the most used characters, relegated above 7 in many layouts?

Jokes apart, I like the choice of ^ or any other characters distinct from * for pointer dereference. To be more precise, I despise the use of the same symbol with different meaning. In C the same * is used for multiplication, pointer dereference and takes part in commments, too. You need full context to parse some cases, or you have to play with spaces:

  (a)*(b) // multiplication or casted deref?
  x/ *y // multiplication
  x/*y  // comment start
Same with &

  m&&n  // logical and
  m& &n // masked address
throwaway81523•3mo ago
And is that such a bad thing? C's biggest drawback is its many surprises, I thought. Some boredom would do it good.
Hasnep•3mo ago
That's literally the point of the article:

> Odin kinda feels like a modernized somehow even more boring C but in the best way possible.

scuff3d•3mo ago
He says the end "I'm using the word boring affectionately"
jibal•3mo ago
It helps to read the article before commenting.
msla•3mo ago
> In the code above, make([]proc(msg: string), len(arr)+1) generates a slice of procedure pointers with a length of len(arr)+1. Essentially, it allocates memory on the heap and returns a slice header, which includes a pointer to the allocated memory, along with the length and capacity of the slice.

I guess things get exciting when that allocation fails, given that such a failure is nowhere checked for and the possibility of such failure is nowhere mentioned.

rwbt•3mo ago
Odin supports multiple returns and the `make` proc returns an error value that can be optionally checked.
klardotsh•3mo ago
Optional error checking based on a second return value is just asking for footgunnery, Go made this same (IMO) mistake.
rwbt•3mo ago
One can use `@(require_results)` to force the user to check for error. That paired with `or_return` or `or_else` in Odin mostly take away all foot guns.
billforsternz•3mo ago
I can't decide whether the double spaced code samples in this blog post are intended or a mistake. I kind of hope it's a mistake.
zabzonk•3mo ago
seems to be single-spaced to me, and it is my own favourite code spacing
billforsternz•3mo ago
Do you still like it now that the author has fixed it?
jibal•3mo ago
The whole article is like that ... it's not in fact double spaced, it's the line height.
dayvster•3mo ago
good catch, appreciate it!

it was indeed a mistake on my part, line-height got applied to code blocks as well as the paragraphs

I fixed it now so that codeblocks do not have a very loose line height.

billforsternz•3mo ago
Thanks for fixing the issue, appreciated.
scuff3d•3mo ago
> No package manager

Ginger Bill famously hates package managers, so if the lack of one is a deal breaker for someone they might as well look for a different language.

Ygg2•3mo ago
Not that it stopped people in the past from adding their own. See JS.
scuff3d•3mo ago
Yeah. If it gets popular enough someone will build one, or get it working with an existing manager.
bxparks•3mo ago
Do you happen to know why? A package manager system seems essential for sharing and reusing code with other people.

For example, I don't particularly like Python as a language, but I will use it because it has 677,633 packages in PyPI.

badsectoracula•3mo ago
> 677,633 packages in PyPI.

Chances are 677,634 of those will be broken next week though :-P

The problem with package managers is that they encourage piling on dependencies and creating deep (and thus fragile and often hard to reason about) dependency trees.

I loathe having to install anything more complicated than simple scripts[0] based on Python because unless the developer constantly chases after all their dependencies to keep them in working order, i'll be the one who will have to do that when something inevitably breaks (assuming it wasn't already broken the time i decided to try it - which is sadly something i encountered more than a few times). And once the developer moves on, the bitrot spreads alarmingly fast.

[0] and even that isn't reliable if the scripts rely on more than whatever comes preinstalled with Python

bxparks•3mo ago
I'm not going to write things like Django, flask, requests, urllib3, numpy, scipy, mathplotlib, dateutils, and psycopg2 on my own. That would take multiple lifetimes.

Sure, you can choose to write everything yourself, but you are limiting the size, scope, and complexity of the problems that you can solve. We have to stand upon the shoulders of others to get stuff done.

nemomarx•3mo ago
I think the suggestion here is to take a copy of those that you know works with your software and package in that particular version?

instead of the user having to resolve conflicts or manage the dependencies

dwattttt•3mo ago
Those are properties of Python's package management strategy and language design, they're not inherent to package management.
skydhash•3mo ago
Package managers and libraries are orthogonal. if the language and the libraries are stable, you hardly need a package manager. And without one, I’d say you see much better quality in the wild.
badsectoracula•3mo ago
Nobody said to not use libraries. Hell, even the Odin site's main page links to one.
scuff3d•3mo ago
Meanwhile Ryan Fleury is writing a cross platform debugger almost entirely from scratch in C.
forrestthewoods•3mo ago
He's written about it repeatedly. https://www.gingerbill.org/article/2025/09/08/package-manage...

The short version is: projects should vendor their deps and manually resolve package versions. I don't think he states his argument very clearly. But I do think he's basically correct.

Vendor your damn deps!

MattPalmer1086•3mo ago
Umm... What does "vendor your deps" mean?

I have no idea what using the noun vendor as a verb means. I'm guessing deps is dependencies.

pansa2•3mo ago
https://stackoverflow.com/questions/26217488/what-is-vendori...
jenadine•3mo ago
https://en.wiktionary.org/wiki/vendor

> To bundle third-party dependencies with the source code for one's own program.

MattPalmer1086•3mo ago
Thanks. It's not a particularly clear term. Bundle might have been better!
forrestthewoods•3mo ago
Bundle is both a noun and a verb the same as vendor! So not any better imho.

I hate to say this, but vendor is an extremely common term for this operation. Rust’s cargo has a “vendor” sub command built in.

You’re far from alone in not being familiar with the term. Which is a great travesty because it really should be considered best practice and default behavior!

MattPalmer1086•3mo ago
"Vendor" wasn't actually a verb at all, at least until this usage.

And it doesn't in any way describe the activity of bundling open source libraries that are not even supplied from vendors for the most part! So a poor neologism, in my opinion.

forrestthewoods•3mo ago
Ok
pansa2•3mo ago
> I will use it because it has 677,633 packages in PyPI

Quality over quantity, please

dismalaf•3mo ago
> Do you happen to know why?

Look at Rust and NPM... Insane amounts of dependencies for almost every library.

C and C++ famously don't have package managers, well, at least not blessed ones (although you could argue Linux/Unix is a C package manager).

The idea is to be more informed about the dependencies you're bringing in, to encourage libraries to be more standalone things, and just not to automate dependency hell.

On the plus side, the Odin compiler makes it very, very easy to compile your program with dependencies.

Hell, even in my Ruby journey I've realised that 99% of what's on Rubygems is absolute trash. I basically use Rails, Faraday, RubyLLM, and not much else.

1718627440•3mo ago
> C and C++ famously don't have package managers

> although you could argue Linux/Unix [package managers] [are] C package manager[s]

Exactly. It's just that they don't have the bug, that they only work with programs written in a single language.

skinnymuch•3mo ago
> Hell, even in my Ruby journey I've realised that 99% of what's on Rubygems is absolute trash. I basically use Rails, Faraday, RubyLLM, and not much else.

Is this really the case? I just came back to Ruby and Rails recently. Haven’t explored that much yet beyond established major gems

dismalaf•3mo ago
I mean, trash is subjective. Certainly a lot of abandoned gems. Case in point, for one project, I needed to pull some financial data. So used an unofficial gem for that provider. It was a mess of spaghetti and object patterns for what could have been simply a few helpers, also dependencies that clashed with another gem I was using so I simply replicated the functionality myself in like, 100 lines of code.

Btw, still worth it because Ruby is an amazing language and Rails is great. Just can't blindly trust other people's code.

1718627440•3mo ago
Because pulling in, updating and verifying code is fundamentally a responsibility of the OS. Also language specific package managers are kind of stupid.
sph•3mo ago
I never thought about it, but yeah, the concept of “fetch a repository of packages, resolve dependencies, download a tarball and put it in a special place on disk” is such a common operation that it should have been solved once and reusable across languages or anything else that needs this process (editor plugin, font management, gamedev and audio assets, OS packages, app store, etc.)

Yet any language has to reinvent the wheel and write yet another archive downloader.

1718627440•3mo ago
> Yet any language has to reinvent the wheel and write yet another archive downloader.

No, I don't think they need to do that. They want to do that instead of using the already existing OS packager, breaking and messing up things left and right.

Take for example the ridiculous state in the python ecosystem. It would be entirely eliminated by using the existing tools of make altinstall, the system-package manager and properly using Site files. I don't know when altinstall was introduced, but in this issue from 2013 it is already mentioned: https://bugs.python.org/issue19553 .

The OS package managers already go out of their way (e.g. Debian) and renamed site-packages to dist-packages, so that OS installed and other vendored python packages don't conflict. The Python maintainers provide make altinstall and the python program provides site files. Linux distros have /usr/ vs. /usr/local to avoid programs conflicting with the OS versions. So many problems could never occur by people using their tools correctly instead of adding layers on top, which causes other breakage and is "fixed" by even more layers on top.

scuff3d•3mo ago
According to him, some things shouldn't be automated, and dependency hell is one of them. With package managers developers completely lose track of what code they're depending on, the quality of the code, and vulnerabilities it might have, etc. In addition they are probably pulling a ton of code they don't care about to do one thing, which leads to a lot of bloat.

I think he would say either copy the code you want into your own project, or clone down the repo and control the code yourself.

He hae interviews on Primeagens channel and Developer Voices where he talks about it.

FullGarden_S•3mo ago
and yet it never truly became an issue at all because there is an officially maintained, high quality package collection.

https://pkg.odin-lang.org/

GingerBill and the Odin community put tremendous effort into making sure that the Odin compiler ships with "batteries included". You get base, core and vendor library collection that cover almost everything a developer would need to the point that you can argue that you don't need a package manager for Odin.

Ygg2•3mo ago
That's great. But I need an Aerospike/YAML/JPEGXL/Slint libraries first thing in the morning.

Is it in vendor package yet? No? Then Odin vendor package will be a bottleneck for development.

skydhash•3mo ago
I see binding, so maybe interops with C is trivial. And just like that, you’ll have the thousand existing C libraries.
Ygg2•3mo ago
Binding is one thing, having idiomatic library is another.
FullGarden_S•3mo ago
All the things you demanded require a significant amount of financial support to both create and maintain, and that is where Odin falls short. If you really do need all those libraries first thing in the morning, then forget about the language; it's out of your hands. You will always be at the mercy of the industry, and you will be forced to pick and use whatever language the majority of the industry is using while the industry keeps tailoring the majorly adapted languages to do things the languages weren't designed for in the first place.

Also, all the libraries you demanded have almost nothing to do with the language itself. Odin, as a solo project, lacks both the financial backing and the cult-like obsessive adoption within its community-both of which are essential for breaking into the industry and reaching the mainstream status. It's the industry's adaptability and the community's enthusiasm that determine how many new libraries will emerge for a programming language. Unlike modern languages like Rust and Zig, which have their respective foundation organizations that employ and pay several full-time developers, languages like Odin and C3 that stripped-down complexity and subjectively annoying features got no serious fancy features to market to the target consumers, making it hard for them to gain any exponential momentum. So, give the current state of things, we can certainly say that Odin will not provide any of those libraries any time soon.

Besides, the Odin developers are perfectly fine using libraries written in other languages, whether Rust, C, or anything else. If a library in another language works and will get the job done, re-writing it in Odin is logically pointless for getting the job done. The only people who seem to have an issue with Odin's ecosystem are backend developers. Low-level systems programmers and graphics developers have their needs well met(there are no built-in green threads or fibers but there is support for SIMD and all major graphics API bindings). Networking requires stable, secure maintenance, so unless someone from the community steps up to create and maintain an HTTP/3 or QUIC implementation, there will never be native HTTP/3 support in Odin. The same applies to Aerospike, YAML, JPEG XL, Slint, and everything else. Gotta see how things will turn out.

scuff3d•3mo ago
Seems like a good project. You could develop your own and then work to get them committed back up stream.
scuff3d•3mo ago
I'm aware, I've been following Odin for a few years. I wasn't saying that in judgement. I like Odin and I generally like Ginger Bill's approach to things.

That being said it's way to early to say it "never became an issue". Odin is still small and not well established. If/when it starts to grow in popularity someone is going to develop a solution eventually. It's impossible for the language to offer EVERYTHING people could need, and developers love package managers.

rwbt•3mo ago
I'll add another point i.e. Odin is effectively done from a language point of view unlike Zig or others. The project is currently working on improving the std library and toolchain but the language itself is finished according to it's BDFL.

From my experience so far, Odin is a delightful modern alternative to C.

pyrolistical•3mo ago
What do you mean “unlike zig”?
cfiggers•3mo ago
Zig is still pre-1.0, and the creators have been VERY clear that they're not done breaking stuff on the way to getting things right. It's a fair contrast to draw.
throwawaymaths•3mo ago
to be fair at this point it seems like outside of reenabling async control flow, and eliminating cImport, the remaining major shifts are in the stdlib and not as much the language. they have cancelled the "forcing const f = fn..." plan. i think the interesting thing that andrew hinted at was keeping the "annoying errors that should be warnjngs" (like not using consts and vars) but not letting them prevent the creation of the executable/lib.
jibal•3mo ago
https://github.com/ziglang/zig/issues?q=state%3Aopen%20label...
throwawaymaths•3mo ago
note: not all of these are language changes (affects substantially how you write zig) -- many are features and optimizations, true they could affect how you think about zig (inlining monomorphic function pointers), but most people will not notice. Of the ones that are language changes (requiring parens for ambiguous operator precedence, e.g.) many will be automatable and bundled with zig fmt.
DenisDolya•3mo ago
Hi, are you interested in Zig? Then please check out my port of jsmn to Zig. I wanted to know if people will like it and if there are any downsides others might not.

https://github.com/Ferki-git-creator/jsmn_zig

jibal•3mo ago
He's saying that the Odin language is effectively finished and not subject to change. That is not the case for Zig.
jibal•3mo ago
You mean the language is effectively finished and not subject to change.
teo_zero•3mo ago
Doesn't this code leak memory? I mean, even after adding the deinit procs. The point is that when a new_arr is created, the old one is not deleted.

Besides, the duo make-delete is easy to understand, but I find disturbing that one has to call delete on objects allocated with

  X=map[string][]proc(...){}
I think it breakes the symmetry.