frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

HMAS Canberra accidentally blocks wireless internet in New Zealand

https://www.abc.net.au/news/2025-06-07/australian-ship-navigation-radar-new-zealand-internet/105388702
2•kepair•1m ago•0 comments

Apple WWDC 2025 Preview: iOS 26, macOS 26, New AI Features, iPadOS 26

https://www.bloomberg.com/news/articles/2025-06-06/apple-wwdc-2025-preview-ios-26-macos-26-new-ai-features-ipados-26-redesigns
1•rcarmo•1m ago•0 comments

£127M wasted on failed UK nuclear cleanup plan

https://www.theregister.com/2025/06/07/mps_find_127_million_wasted_sellafield/
2•penda•3m ago•0 comments

Web Proxy Sites 2025

https://github.com/proxyorb/awesome-web-proxy-sites
2•proxy2047•9m ago•0 comments

How AI is impacting jobs

1•dnsharma•9m ago•0 comments

Show HN: Coredns-gslb – A GSLB plugin for CoreDNS (non-Kubernetes, self-hosted)

https://github.com/dmachard/coredns-gslb
1•dmachard•10m ago•0 comments

Dood

1•bextrene•10m ago•0 comments

Arguing point-by-point considered harmful

https://www.seangoedecke.com/point-by-point-considered-harmful/
1•alexharri•12m ago•0 comments

Why Nvidia Can't Just Quit China

https://www.wsj.com/tech/ai/why-nvidia-cant-just-quit-china-18e494f0
1•bookofjoe•13m ago•1 comments

2025 is a great time to be a pen tester

https://www.jimgumbley.com/blog/great-time-pen-tester.html
1•LeonigMig•13m ago•0 comments

Team Topologies after 5 years – Panel

https://www.youtube.com/watch?v=nO-4HWLuO4c
1•mcp_•13m ago•0 comments

Sipeed NanoCluster fits 7-node Pi cluster in 6cm

https://www.jeffgeerling.com/blog/2025/sipeed-nanocluster-fits-7-node-pi-cluster-6cm
1•rbanffy•15m ago•0 comments

Qualcomm Snapdragon X1 Elite GCC vs. LLVM Clang Compiler Performance

https://www.phoronix.com/review/snapdragon-x1-gcc-clang#google_vignette
1•rbanffy•24m ago•0 comments

Modify Video – AI Video Editing: Restyle, Retexture, and World Swapping

https://modifyvideo.org/
1•MxcAlex•25m ago•0 comments

Qualcomm Snapdragon X1 Elite GCC vs. LLVM Clang Compiler Performance

https://www.phoronix.com/review/snapdragon-x1-gcc-clang
1•rbanffy•31m ago•0 comments

Large scale analysis of 100s of cache clusters at Twitter [pdf]

https://www.usenix.org/system/files/osdi20-yang.pdf
1•emrah•32m ago•0 comments

Endangered classic Mac plastic color returns as 3D-printer filament

https://arstechnica.com/apple/2025/06/new-filament-lets-you-3d-print-parts-in-authentic-1980s-apple-computer-color/
1•rcarmo•33m ago•0 comments

Can Florida Eliminate Property Taxes?

https://thedailyeconomy.org/article/can-florida-eliminate-property-taxes/
1•Ozarkian•33m ago•0 comments

Java at 30: Still brewing success or evaporating?

https://www.developer-tech.com/news/java-at-30-still-brewing-success-or-evaporating/
1•babushkaboi•36m ago•0 comments

Schneier tries to rip the rose-colored AI glasses from the eyes of Congress

https://www.theregister.com/2025/06/06/schneier_doge_risks/
4•mdp2021•37m ago•1 comments

Thousands of Instagram accounts suspended for unclear reasons

https://koreajoongangdaily.joins.com/news/2025-06-06/business/industry/Thousands-of-Instagram-accounts-suspended-for-unclear-reasons/2324424
2•me4502•38m ago•0 comments

SDMAs: Be playing browser games at work

https://ajmoon.com/posts/sdmas-why-you-should-be-playing-browser-games-at-work
1•alex-moon•55m ago•0 comments

A Mathematical Approach to Life: Visualizing Mortality to Optimize Time

https://lifeecalendar.com
2•zemil•57m ago•1 comments

Show HN: I built a live AI simulation of Musk vs. Trump debating current events

https://ai-dialog.theprisma.co/?dialog_uid=musk_vs_trump
1•staticspb•59m ago•0 comments

Ask HN: Recommend a good computer science / programming audiobook?

1•leandot•1h ago•0 comments

The Enforceability of AI Training Opt-Outs

https://katedowninglaw.com/2025/05/28/the-enforceability-of-ai-training-opt-outs/
1•Tomte•1h ago•0 comments

Silent bugs matter: a study of compiler-introduced security bugs

https://www.usenix.org/conference/usenixsecurity23/presentation/xu-jianhao
1•fanf2•1h ago•0 comments

A tool for burning visible pictures on a compact disc surface

https://github.com/arduinocelentano/cdimage
1•carlesfe•1h ago•0 comments

Film Packaging Archive

https://fp-archive.com/
1•dekuNukem•1h ago•0 comments

Prophet: Automatic Forecasting Procedure (2023)

https://github.com/facebook/prophet
1•mmarian•1h ago•0 comments
Open in hackernews

Smalltalk, Haskell and Lisp

https://storytotell.org/smalltalk-haskell-and-lisp
80•todsacerdoti•12h ago

Comments

throwaway81523•11h ago
2011
transfire•11h ago
IDK. They all look a little atrocious to me.

But readability has a lot to do with what you are used to.

The only exception might be FORTH. A very well written FORTH implementation (and I mean very well written) probably would be fairly readable to anyone — at least at the higher levels of abstraction.

TruffleLabs•7h ago
And Forth was invented by Charles Moore while at NRAO!

https://en.wikipedia.org/wiki/Charles_H._Moore?wprov=sfti1#E...

"In 1968, while employed at the United States National Radio Astronomy Observatory (NRAO), Moore invented the initial version of the Forth language to help control radio telescopes."

macintux•6h ago
W. Richard Stevens wrote a Forth manual for Kitt Peak in the 70s. Now I’m curious how many observatories used the language.
xelxebar•6h ago
I'll bite. Are you able to share any FORTH code/repos that hit that aesthetic spot for you?
inkyoto•1h ago
That FORTH cannot muster the decency to include a simple «U» in its name rather scuppers any hope of an aesthetic parley before the tea’s even been poured.

Joking aside, FORTH’s reliance on the stack as virtually its only data structure – along with its insistence on applying it to everything and everyone – is simply too impractical outside a few niche areas, such as low-level hardware programming or document rendering (hello, PostScript!). I have no doubt a JSON parser in FORTH will emerge as part of Advent of Code 2038, but I can’t imagine it will inspire hesitating potential converts to embrace the language with open arms.

anthk•45m ago
Forth user here (Eforth Subleq/PFE). Scheme is not that bad. Haskell, OTOH, and any ML language, looks very difficult to me.
readthenotes1•11h ago
Smalltalk used to have left arrow for assignment like I see in the Haskell here.

It's a lot prettier than :=

bitwize•11h ago
Smalltalk's left arrow is actually _. Before ASCII was fully standardized to what we know today, ^ was ↑ and _ was ←. This is visible in some later character sets, like PETSCII and the fonts used for Smalltalk. In Smalltalk, you can still type 'a _ foo' and it will assign foo to a.
igouy•10h ago
In Cuis Smalltalk, you can still type

    b _ 5
and see

    b ← 5
and copy / paste here and see

    b := 5
https://cuis.st/
wk_end•10h ago
There's a lot in this article that I really identify with: the preference for a functional style (even if I'm just not smart enough to do the whole ultra-abstract symbol soup Haskell thing); the comfort I feel leaning on the compiler; "it also always feels like I’m tricking Lisp into doing what I want, rather than simply expressing what I want" feels like it came right from my brain.

God, Lisp...the core language isn't exactly that interesting in this day-and-age. Dynamic typing, garbage collection, anonymous functions, this has been the bread-and-butter of Python, JS, Ruby, etc. developers for like 20 years now. It's got some really powerful features like conditions and CLOS. But then the bulk of the language and library built on top is such a mess: it's missing so much basic functionality, but also has so many niche functions that can be configured every which way with niche keyword arguments, and they all turned out to be evolutionary dead-ends and much worse than what the rest of the world settled on (actually CLOS probably falls into this category too). I think it's this, more than anything, that makes programming in Lisp feel like an act of trickery rather than clear thinking.

But I'll also say that I've been hobby programming in Lisp a bit recently and, despite that, I've been finding it immensely pleasurable, the first time I've really enjoyed working with a computer in years. The highly interactive, image-based workflow is just so much smoother than my day job, where I'm constantly jumping between VSCode and Chrome and a console and manually rebuilding and sitting around waiting...

Macros may be a double-edged sword - they encourage monstrosities like LOOP, rather than building more powerful/regular/comprehensible language features like iterators or comprehensions. BUT when paired with that interactive development experience, it really feels like you're in a dialogue with the computer, building out a little computational universe.

troad•9h ago
I learned Common Lisp during the life of this HN account, and there's an amusing trajectory in my comments, from "I hear Lisp is beautiful and I'd love to learn it", through "Wait, Common Lisp is kind of a horrendous mess", to "OK, I get this, this is very cool".

Common Lisp genuinely expanded my thinking about programming, so I find this article's poetry analogy very apt. But part of this growth was clarifying my own preferences about programming, and some of CL's greatest strengths - extremely clever runtime meta-programming, CLOS, etc - are not actually things I want to work with in a code base at scale.

I also think the UX for CL, outside the commercial Lisps, is pretty grim. CL would greatly benefit from a rustup-cargo-like system with good dep management and sane beginner defaults, like wrapping the SBCL REPL in rlwrap. Haskell is more beginner friendly than CL right now, and that's quite the indictment.

netbioserror•9h ago
Give Janet a try, it's a breath of fresh air with well-realized primitives and a solid standard library. For a decade now I've been immersed in the worlds of Clojure and Nim, where macros often get abused to no end. I've written 0 Nim macros, and a number of Lisp macros I could count on one hand.
mark_l_watson•7h ago
I agree on macros: I have been using Common Lisp since 1982 and I almost never write macros. To be fair, I like my Common Lisp code to be readable (to me) and don't care as much about conciseness.

In any case, I think every developer should have a few languages that they really enjoy using.

BoingBoomTschak•8h ago
>God, Lisp...the core language isn't exactly that interesting in this day-and-age. Dynamic typing, garbage collection, anonymous functions, this has been the bread-and-butter of Python, JS, Ruby, etc.

CL still got symbols, the reader (and its macros), gradual typing and user available runtime compilation (compile and compile-file).

I find the core language itself near perfect (mostly the historic stuff like threads/atomics/unicode missing, the whole divide between normal CL and CLOS and lack of recursive and parametric typing") but the standard library quite baroque and lacking; still infinitely more serviceable than C's, though.

auggierose•1h ago
> CL still got symbols, the reader (and its macros), gradual typing and user available runtime compilation (compile and compile-file).

TypeScript has all of these, too.

neilv•10h ago
It looks OK to me:

    (define (time-to-move from-pos to-pos)
      ;; Calculates the total time to move between two positions,
      ;; assuming rotation and ascension can occur simultaneously.
      (max (time-to-rotate (position-azimuth   from-pos)
                           (position-azimuth   to-pos))
           (time-to-ascend (position-elevation from-pos)
                           (position-elevation to-pos))))
netbioserror•9h ago
Yeah, I was going to say. The simplicity and readability of Lisp code is inversely proportional to the use of macros.
bhk•7h ago
Yet the author injects needless complexity with macros and claims "I think it’s possible to write clearer Lisp code, I just don’t know how." I don't get it.
90s_dev•9h ago
> I got to see first-hand that notions like function calling, sequential processing, and boolean logic are not intuitive

It was a very long time since I first learned programming.

It was QBasic first I think.

It was a very slow process that I had mostly forgotten.

It took me a very long time to grasp what's now very basic control flow.

But I was like 7 or 10.

I remember feeling like "this is pure magic!" so many times so very early on.

Part of what I want to do is rekindle that like pico8 did for me. Somehow.

kazinator•8h ago
The problem with using objects and structs in Common Lisp is the verbosity of access, or of setting up shorter access using with-slots and with-accessors.

I fixed that in TXR Lisp:

  (defun time-to-move (from-pos to-pos)
     (max (time-to-rotate from-pos.azimuth to-pos.azimuth)
          (time-to-ascend from-pos.elevation to-pos.elevation)))
The remaining issues are self-inflicted verbose naming. I would make it

  ;; time to move
  (defun ttm (p0 p1)
    (max (ttr p0.az p1.az)
         (tta p0.el p1.el)))

If the entire program fits on a few pages, you can remember a few abbreviations.

The dot notation is a syntactic sugar for certain S-exps:

  a.b.(c x y).d   ->   (qref a b (c x y) d)

  .a.b.c          ->   (uref a b c)
there exist macros by these names which take care of the rest.

Starting in TXR 300, there can be whitespace after the dot. So while you cannot write in in the popular way:

  obj
  .(meth arg)
  .(next-meth 42)
you can do it like this:

  obj.
  (meth arg).
  (next-meth 42)
this has a lot do with Lisp already having a consing dot.

Lisp doesn't mean being against all syntactic sugars; e.g. we mostly write 'X rather than (quote 'X).

But note that even if we don't have this notation, how the author has tripped over himself to create verbosity. After two nestings of with-accessors he ends up with:

  (time-to-rotate from-az to-az) (time-to-ascend from-el to-el)
Here from-az is not a whole lot shorter than (az from)! If he used shorter names like el and az, he would have:

  (defun time-to-move (from to)
    (max (time-to-rotate (az p0) (az p1))
         (time-to-ascend (el p0) (el l1))))
Don't make names for yourself that you then have to shorten with clumsy macros that make the function longer overall.

Another thing is, why does time-to-move take two objects? But time-to-rotate and time-to-ascend work with destructured azimuths and elevations?

  (defun time-to-move (from to)
    (max (time-to-rotate from to)
         (time-to-ascend from to)))
Time to rote and time to ascend could be inseparable. If the device is mounted on an incline, the time to ascend may depend on the azimuth. It may be better to rotate it first than elevate or vice versa, or execute some optimal combined motion.

The moment of inertia of the thing may depend on its elevation; it may be easier to rotate in a high elevation. So just time-to-rotate alone needs the whole object.

xelxebar•6h ago
Oooo, such pretty solutions here. What do people think of this APL option?

    (destEl-sourceEl)⌈destAz-sourceAz
Honestly, though, we don't really know what any of the reference implementations do. The core structure structure is just (max (f x y) (g z w)), and we have to simply guess at the meaning of f and g by their names. The above APL takes a similar liberty, but instead of a fiat declaring, we just a fiat declare that our data is sufficiently normalized.

Here's my take on performScan, too:

    Log⍪←onSourceTime+slewTime
BoiledCabbage•1h ago
> The above APL takes a similar liberty, but instead of a fiat declaring, we just a fiat declare that our data is sufficiently normalized.

Why would you make an assumption like this and try to compare code? If the sample code were simply subtraction then OP would've written subtraction. What use is demonstrating APL code that solves a different problem? If you're gonna do that, instead of removing part of the problem you might as well remove most of the problem and just say the solution is:

⌈/dest-source

And then write some sentence about saying how that's valid because you declare they are normalized even further.

> Here's my take on performScan, too: > Log⍪←onSourceTime+slewTime

How is this valid if you don't actually do any work to calculate onSourceTime or slewTime? You took the last line of performScan and implemented it. You do need to also implement the other lines in the function.

Maybe I'm just completely missing something here.

geocar•1h ago
can you normalise harder?

2d is bigger than 1d, but sometimes it is smaller too:

    ⌈/dest-source
aidenn0•6h ago
> This almost doesn’t look like code to me. I would expect any programmer to be able to at least get some sense of what’s going on here, even without knowing Haskell. I don’t think I could say the same thing about this piece of Lisp:

I only understand the Haskell code as well as I do because the comment describes what it does (much more clearly than the docstring on the lisp function). Others have already posted about how unnecessarily verbose the lisp function is, so I won't rehash that part here.

ninetyninenine•5h ago
The epiphany I had with haskell was understanding why it was so modular. It goes beyond just understanding haskell though and towards understanding the fundamental nature of modularity.

Think about it. What is the smallest most primitive computation that is modular?

If you have a method that mutates things, then that method is tied to the thing it mutates and everything else that mutates it. You can't move a setter away from the entity it mutates without moving the entity with it. It's not modular.

What about an IO function? Well for an IO function to work it must be tied to the IO. Is it a SQL database? A chat client? If you want to move the IO function you have to move the IO it is intrinsically tied with.

So what is the fundamental unit of computation? The pure function. A function that takes an input and returns an output deterministically. You can move that thing anywhere and it is also the smallest computation possible in a computer.

The reason why haskell is so modular is it forces you to segregate away IO and purity. The type system automatically forces you to make the code using the most modular primitives possible. It's almost like how rust forces you to code in a way that prevents certain errors.

Your code in haskell will be made entirely of "pure" functions with things touching IO being segregated away via the IO monad. There is no greater form of modularity and decoupling.

In fact any other computing primitive you use in your program will inevitably be LESS modular then a pure function. That's why when you're programming with OOP or imperative or any other style of programming you'll always hit more points where modularity is broken then you would say haskell. That is not to say perfect modularity is the end goal, but if it was the path there is functional programming.

felineflock•3h ago
I honestly expected the article to start like

Smalltalk, Haskell, and Lisp

...walk into a bar.

Smalltalk: “Bartender, please send an instance of Martini to me - selector withOlive: set to true.”

Haskell: “I’ll take beer >>= chill, but only if it’s defined for all inputs and returns IO ().”

Lisp: “(drink ’(ale (temperature cold))) .”

The bartender mutters, “Great ... an object, a functor, and a list.”

Then a janitor walks by sweeping the closures that they left.

digitalsankhara•1h ago
Then a FORTH person walks into the same bar...

"cold temperature ale drink"

to which the bartender replies "go you here". The janitor smiles as no sweeping required on a clean stack.

v9v•1h ago
Alternatively:

to which the bartender replies "ok"