frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

We Mourn Our Craft

https://nolanlawson.com/2026/02/07/we-mourn-our-craft/
177•ColinWright•1h ago•163 comments

I Write Games in C (yes, C)

https://jonathanwhiting.com/writing/blog/games_in_c/
22•valyala•2h ago•7 comments

Hoot: Scheme on WebAssembly

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

SectorC: A C Compiler in 512 bytes

https://xorvoid.com/sectorc.html
17•valyala•2h ago•1 comments

Stories from 25 Years of Software Development

https://susam.net/twenty-five-years-of-computing.html
65•vinhnx•5h ago•9 comments

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

https://openciv3.org/
831•klaussilveira•22h ago•250 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...
153•alephnerd•2h ago•105 comments

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

https://spillhistorie.no/2026/02/06/interview-with-sierra-veteran-al-lowe/
57•thelok•4h ago•8 comments

The AI boom is causing shortages everywhere else

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

The Waymo World Model

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

Reinforcement Learning from Human Feedback

https://rlhfbook.com/
79•onurkanbkrc•7h ago•5 comments

Brookhaven Lab's RHIC Concludes 25-Year Run with Final Collisions

https://www.hpcwire.com/off-the-wire/brookhaven-labs-rhic-concludes-25-year-run-with-final-collis...
4•gnufx•56m ago•1 comments

Start all of your commands with a comma (2009)

https://rhodesmill.org/brandon/2009/commands-with-comma/
487•theblazehen•3d ago•177 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
212•jesperordrup•12h ago•72 comments

France's homegrown open source online office suite

https://github.com/suitenumerique
567•nar001•6h ago•259 comments

Coding agents have replaced every framework I used

https://blog.alaindichiappari.dev/p/software-engineering-is-back
226•alainrk•6h ago•354 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
40•rbanffy•4d ago•7 comments

Show HN: I saw this cool navigation reveal, so I made a simple HTML+CSS version

https://github.com/Momciloo/fun-with-clip-path
9•momciloo•2h ago•0 comments

History and Timeline of the Proco Rat Pedal (2021)

https://web.archive.org/web/20211030011207/https://thejhsshow.com/articles/history-and-timeline-o...
19•brudgers•5d ago•4 comments

Selection Rather Than Prediction

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

72M Points of Interest

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

Unseen Footage of Atari Battlezone Arcade Cabinet Production

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

Where did all the starships go?

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

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

https://github.com/valdanylchuk/breezydemo
274•isitcontent•22h ago•38 comments

Learning from context is harder than we thought

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

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

https://github.com/pydantic/monty
287•dmpetrov•22h ago•155 comments

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

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

Hackers (1995) Animated Experience

https://hackers-1995.vercel.app/
557•todsacerdoti•1d ago•269 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

Sheldon Brown's Bicycle Technical Info

https://www.sheldonbrown.com/
427•ostacke•1d ago•111 comments
Open in hackernews

Extending Emacs with Fennel (2024)

https://andreyor.st/posts/2024-12-20-extending-emacs-with-fennel/
146•Bogdanp•6mo ago

Comments

jhoechtl•6mo ago
What makes a modern Lisp? I am aware of Fennel and Jannet. Anyone havng experience with one of those or another one I am not aware of?
xlii•6mo ago
Having experience with many IMO it's all about value added. There might be concurrency, message passing (Janet) od global scope isolation (Fennel). Personally I had difficulty getting into Fennel, but no problems incorporating Janet into my flow even though the author is the same. I'm not a fan of hygienic macros though.

I would add Clojure to the modern Lisps, too, which I find the most feature rich (even though had much more blast writing Janet).

TacticalCoder•6mo ago
> I would add Clojure to the modern Lisps, too, which I find the most feature rich (even though had much more blast writing Janet).

Yup. Clojure may not be the most lispy Lisp but it reaches: it works on top of the JVM (with super easy Java interop), it transpiles to JavaScript and I also use it to write script using Babashka (GraalVM/AOT native Clojure interpreter which starts in milliseconds, avoiding JVM startup time [notoriously slow for regular Clojure programs]).

Being able to share code between Clojure and ClojureScript is really sweet.

Clojure(Script) / Emacs (CIDER) / eglot (LSP client for Emacs): life is good!

neutronicus•6mo ago
I know the homoiconicity purists hate the additional braces in Clojure, but I consider the literal vectors and hash tables a pretty big win over `#()` and the mess that is dealing with hash tables in CL.
foxygen•6mo ago
"homoiconicity purists" is probably the wrong term, as Clojure is homoiconic. Probably "Lisp purists" would fit better.
vindarel•6mo ago
For CL hash-tables I can recommend serapeum's dict:

    (dict :a 1 :b 2)
(it's an 'equal HT)

With toggle-pretty-print-hash-table it will pretty-print its content, readably.

tmtvl•6mo ago
Common Lisp, which I would consider the most modern, has convenience features which most other languages (even other Lisps) lack. CLOS, macro expansion, and, of course, the condition system.
terminalbraid•6mo ago
Which lisps lack a macro expansion system?
tmtvl•6mo ago
R7RS (small, at least) doesn't seem to have macro-expand. R6RS also doesn't appear to have it.
kryptiskt•6mo ago
R6RS has syntax-case macros which is superior to Common Lisp macros in every respect, they're both hygienic and can be used to implement a sloppy macro system if one so wishes.
tmtvl•6mo ago
I think we're talking past each other. I mean something like:

  (macroexpand '(when-let (foo (frob bar))
      (jib foo)))
  ;; (let ((foo (frob bar)))
  ;;   (when foo
  ;;     (jib foo)))
ashton314•6mo ago
`syntax-rules` is very good and you can do a whole lot with them. However, you are limited to template -> pattern transformations, and there are plenty of macros that you cannot write this way. (E.g. anything requiring a predicate on the source syntax that you can't express in the template language, etc.) For that, you need the full power of procedural macros.

Racket improves on Scheme: its macros are fully hygienic whilst not being limited to template -> pattern transforms. See https://docs.racket-lang.org/guide/macro-transformers.html

EDIT: syntax-case -> syntax-rules; R6RS specifies the latter—I believe the former is a Racket construct equivalent in power to `syntax-rules`.

Straw•6mo ago
I think the parent meant that R6RS has `syntax-rules`, which has enough power to implement CL `defmacro` as well as `syntax-case`.
ashton314•6mo ago
My mistake: R6RS has `syntax-rules`, not `syntax-case` as far as I can tell. However, `syntax-rules` and `syntax-case` are equivalent in power. [1]

It does not have the same power as `defmacro`: you cannot define general procedural macros with `syntax-rules`, as you are limited to the pattern-matching language to compute over and construct syntax objects.

[1]: https://docs.racket-lang.org/reference/stx-patterns.html#%28...

shawn_w•6mo ago
I think you got your wires crossed. R5 and R7 only have `syntax-rules` macros. R6 has both (`syntax-rule` can be trivially defined as a `syntax-case` macro).

R6 having `syntax-case` macros is one of the more controversial things about it; a surprising number of implementers don't care for them.

ashton314•6mo ago
I found the relevant documentation and you are absolutely correct and I was mistaken. Thank you for setting me straight.

https://www.scheme.com/tspl4/syntax.html#./syntax:h3

terminalbraid•6mo ago
So the modern scheme specs. (I'd argue putting small in there is unfair considering its intent and the actual implementations of r6rs do offer expansion, e.g. chez, guile, racket)
soegaard•6mo ago
The name `macro-expand` is from Common Lisp.

Scheme R5RS, R6RS and R7RS all have macro systems. In R5RS has a pattern/template based system (syntax-rules). In R6RS the system has both patterns, templates and procedural macros.

The most modern system is Racket though. See `syntax-parse`.

ashton314•6mo ago
+1 for `syntax-parse`—it's thoroughly the most powerful (and yet somehow also the most ergonomic) way to write macros in any language thus far.

Wait, r6rs has proc macros? Where is that in the spec? I've only seen the `syntax-rules` bit.

soegaard•6mo ago
/u/ashton314

Look for `define-syntax`.

https://www.r6rs.org/final/html/r6rs/r6rs-Z-H-14.html#node_i... https://www.r6rs.org/final/html/r6rs/r6rs-Z-H-13.html

setopt•6mo ago
Do you consider Common Lisp more "modern" than say Scheme or Racket?

As far as I know, the CL spec hasn’t been updated for 30+ years, and most of its design is far older.

tmtvl•6mo ago
Don't know much about Racket, but CL has type dispatch:

  (defmethod join ((a String) (b String))
    (concatenate 'String a b))
  ;; example: (join "abc" "def") => "abcdef"

  (defmethod join ((a Integer) (b Integer))
    (parse-integer (format nil "~D~D" a b)))
  ;; example: (join 123 456) => 123456
And rudimentary support for ADTs:

  (deftype Low-Score ()
    '(Integer 0 20))

  (deftype Normal-Score ()
    '(Integer 21 79))

  (deftype High-Score ()
    '(Integer 80 100))

  (deftype Score ()
    '(or Low-Score Normal-Score High-Score))
(But note that deftypes aren't allowed to recurse.)

CL also has first-class support for debugging with things like describe, step, and trace built-in.

EDIT: Yeah, the CL spec dates from 1994 and a bunch of things which we would expect nowadays (networking, POSIX,...) are provided by external libraries rather than being part of the spec, but in various ways CL is way ahead of its time.

pjmlp•6mo ago
And yet we're still catching up on having features from Allegro Common Lisp and LispWorks more widespread across mainstream languages, where Java and .NET ecosystems are the closests in terms of IDE capabilities, graphical debugging, runtime introspection, JIT and AOT on the same package,.....

Which goes to show how many lessons the industry failed to learn on those 30+ years.

spauldo•6mo ago
I wouldn't consider a "moderness" comparison between CL and Scheme to be useful. They're too different in intent and capabilities.

CL has a more-or-less frozen standard, in the sense that it's unlikely to have an update. Scheme gets updated standards, but they seem to focus on refining Scheme rather than adding "modern" features. Both are very extensible and people do add modern features as implementation extras or libraries.

I can't comment about Racket. As an outsider, it appears to be a playground for hardcore CS types to experiment with different programming language features, which suggests it's the most "modern." That's just the impression I get, though - feel free to correct me on that.

radiator•6mo ago
Janet (with one l) is modern because it is, well, new. It doesn't need to carry the historical baggage of Common Lisp. It has many data structures, a concurrency model, it is suitable for functional programming and for object-oriented programming. It has libraries for common tasks and is well documented.
ritenuto•6mo ago
> Janet (with one l)

Typo, it should be: “with one n” (as the earlier commenter wrote “Jannet”). It took me a while to parse this, I was searching for the nonexistent “l” embarrassingly long.

giraffe_lady•6mo ago
I've used both they're both good. I use fennel more because I have to write a lot of lua and don't really like it. Fennel drops in easily, can share tables and functions both ways, and fixes a lot of lua's (non-tooling related) warts.

Janet is also very good, I like it a lot I just don't have a ton of use for it. It's good as a high level scripting or glue language, but then so also are ruby, python, node, elixir, raku, and so on you probably already know several so it's hard to justify learning another. It's pleasant though.

I think janet is actually an extremely strong lua competitor for embedding, it takes the best parts of lua's design on that front but also includes excellent tools for implementing parsers and DSLs (PEG lib in the language core! and macros) which is most of the time what you're embedding lua for in the first place.

So basically janet is good to replace lua, and fennel is good when you can't replace lua.

Re: lisp. I think the main thing about "modern" lisps is that they don't use a cons cell or linked list as the main data structure, though they still use it for code structure. These two (and also clojure) use hashmaps and arrays a lot more, and have lispy ways of interacting with them. Some nerds will say it's not really a lisp for this reason and to them I say "ok."

psychoslave•6mo ago
Sorry, but what is Fennel?
Lyngbakr•6mo ago
Fennel[0] is a Lisp-like language that transpiles to Lua. It was originally developed by Calvin Rose (author of Janet[1]), but is now maintained by Phil Hagelberg (author of Leiningen[2]).

[0]https://fennel-lang.org

[1]https://janet-lang.org/

[2]https://codeberg.org/leiningen/leiningen

ethan_smith•6mo ago
Fennel is a lisp-like programming language that compiles to Lua, offering a more concise syntax while maintaining full compatibility with the Lua runtime.
tmountain•6mo ago
Fennel absolutely rocks for creating games. It integrates with TIC-80 (open source fantasy console) and also Love (game engine) and PICO-8. Lots of blog articles on getting started. Check it out!
Kexoth•6mo ago
If so can you reccomend (link here) some of the resources which got you started?

FWIW there are blog posts from the same author of the Emacs setup: https://andreyor.st/tags/game1/

3036e4•6mo ago
I use this for playing with Löve2D: https://sr.ht/~benthor/absolutely-minimal-love2d-fennel/

Can't say I made anything worth mentioning. There are some bigger templates available that I am sure do more useful things, but I prefer something small enough that I can see what is going on.

Worked fine even for getting things to run in LoveDOS, a port of some older Love2D version to MS-DOS. In practice compilation was a bit too slow for comfort, so a better way was to pre-compile the fennel-scripts to Lua and just run those.

I installed some LSP server for fennel that comes with optional built-in code completion for both Love2D and TIC-80. Works well in emacs.

adastra22•6mo ago
TIL you can configure Emacs with Brainfuck. This is so appropriate and I can’t think of a better language to use.
rayiner•6mo ago
This joke landed better before folks unleashed the horrors that are XML config files.
campak•6mo ago
came thinking somehow fennel the seed extended Emacs
anthk•6mo ago
Emacs has cl-lib. If you come from Common Lisp you will be 90% at home, minus closures and a few rough edges. Still, PAIP code has been ported to Elisp:

https://github.com/yfuna/paip-el

The original one:

https://github.com/norvig/paip-lisp

Paradigms of AI Programming:

https://upload.wikimedia.org/wikipedia/commons/d/d4/Peter_No...

Quitschquat•6mo ago
I thought we had closures now with lexical scope being added in the last few releases
anthk•6mo ago
Then paip-el should be updated for the latest cl-lib compatibility standards. For sure it would be far less boilerplate code, except for the strings formats of course.
3036e4•6mo ago
Fun project, but I wonder how difficult it would have been to get Fennel to run in Guile-Lua? The article did not get into any details or even mention if it was seriously attempted. Fennel supposedly supports "Lua 5.1, 5.2, 5.3, 5.4, or LuaJIT" so a Lua implementation that is "in the realm somewhere between Lua 5.1 and 5.2" is not obviously not supported?

https://fennel-lang.org/setup