frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Interop 2025: A Year of Convergence

https://webkit.org/blog/17808/interop-2025-review/
1•alwillis•55s ago•0 comments

Prejudice Against Leprosy

https://text.npr.org/g-s1-108321
1•hi41•1m ago•0 comments

Slint: Cross Platform UI Library

https://slint.dev/
1•Palmik•5m ago•0 comments

AI and Education: Generative AI and the Future of Critical Thinking

https://www.youtube.com/watch?v=k7PvscqGD24
1•nyc111•5m ago•0 comments

Maple Mono: Smooth your coding flow

https://font.subf.dev/en/
1•signa11•6m ago•0 comments

Moltbook isn't real but it can still hurt you

https://12gramsofcarbon.com/p/tech-things-moltbook-isnt-real-but
1•theahura•10m ago•0 comments

Take Back the Em Dash–and Your Voice

https://spin.atomicobject.com/take-back-em-dash/
1•ingve•11m ago•0 comments

Show HN: 289x speedup over MLP using Spectral Graphs

https://zenodo.org/login/?next=%2Fme%2Fuploads%3Fq%3D%26f%3Dshared_with_me%25253Afalse%26l%3Dlist...
1•andrespi•12m ago•0 comments

Teaching Mathematics

https://www.karlin.mff.cuni.cz/~spurny/doc/articles/arnold.htm
1•samuel246•14m ago•0 comments

3D Printed Microfluidic Multiplexing [video]

https://www.youtube.com/watch?v=VZ2ZcOzLnGg
2•downboots•14m ago•0 comments

Abstractions Are in the Eye of the Beholder

https://software.rajivprab.com/2019/08/29/abstractions-are-in-the-eye-of-the-beholder/
2•whack•15m ago•0 comments

Show HN: Routed Attention – 75-99% savings by routing between O(N) and O(N²)

https://zenodo.org/records/18518956
1•MikeBee•15m ago•0 comments

We didn't ask for this internet – Ezra Klein show [video]

https://www.youtube.com/shorts/ve02F0gyfjY
1•softwaredoug•16m ago•0 comments

The Real AI Talent War Is for Plumbers and Electricians

https://www.wired.com/story/why-there-arent-enough-electricians-and-plumbers-to-build-ai-data-cen...
2•geox•18m ago•0 comments

Show HN: MimiClaw, OpenClaw(Clawdbot)on $5 Chips

https://github.com/memovai/mimiclaw
1•ssslvky1•19m ago•0 comments

I Maintain My Blog in the Age of Agents

https://www.jerpint.io/blog/2026-02-07-how-i-maintain-my-blog-in-the-age-of-agents/
3•jerpint•19m ago•0 comments

The Fall of the Nerds

https://www.noahpinion.blog/p/the-fall-of-the-nerds
1•otoolep•21m ago•0 comments

I'm 15 and built a free tool for reading Greek/Latin texts. Would love feedback

https://the-lexicon-project.netlify.app/
2•breadwithjam•24m ago•1 comments

How close is AI to taking my job?

https://epoch.ai/gradient-updates/how-close-is-ai-to-taking-my-job
1•cjbarber•24m ago•0 comments

You are the reason I am not reviewing this PR

https://github.com/NixOS/nixpkgs/pull/479442
2•midzer•26m ago•1 comments

Show HN: FamilyMemories.video – Turn static old photos into 5s AI videos

https://familymemories.video
1•tareq_•27m ago•0 comments

How Meta Made Linux a Planet-Scale Load Balancer

https://softwarefrontier.substack.com/p/how-meta-turned-the-linux-kernel
1•CortexFlow•27m ago•0 comments

A Turing Test for AI Coding

https://t-cadet.github.io/programming-wisdom/#2026-02-06-a-turing-test-for-ai-coding
2•phi-system•27m ago•0 comments

How to Identify and Eliminate Unused AWS Resources

https://medium.com/@vkelk/how-to-identify-and-eliminate-unused-aws-resources-b0e2040b4de8
3•vkelk•28m ago•0 comments

A2CDVI – HDMI output from from the Apple IIc's digital video output connector

https://github.com/MrTechGadget/A2C_DVI_SMD
2•mmoogle•29m ago•0 comments

CLI for Common Playwright Actions

https://github.com/microsoft/playwright-cli
3•saikatsg•30m ago•0 comments

Would you use an e-commerce platform that shares transaction fees with users?

https://moondala.one/
1•HamoodBahzar•31m ago•1 comments

Show HN: SafeClaw – a way to manage multiple Claude Code instances in containers

https://github.com/ykdojo/safeclaw
3•ykdojo•35m ago•0 comments

The Future of the Global Open-Source AI Ecosystem: From DeepSeek to AI+

https://huggingface.co/blog/huggingface/one-year-since-the-deepseek-moment-blog-3
3•gmays•35m ago•0 comments

The Evolution of the Interface

https://www.asktog.com/columns/038MacUITrends.html
2•dhruv3006•37m ago•1 comments
Open in hackernews

The original ABC language, Python's predecessor (1991)

https://github.com/gvanrossum/abc-unix
133•tony•2mo ago

Comments

dvdkon•2mo ago
Nice find. This looks like the best introduction to the language in the repo: https://raw.githubusercontent.com/gvanrossum/abc-unix/refs/h...
nuancebydefault•2mo ago
Wow 2 * 1000 without rounding errors, 40 years ago this must have been super impressive, since I find that quite a feat of today's python.
nick__m•2mo ago
2 * 1000 is 2000 ;)

I think you meant 2**1000

the syntax for formatting ate your star https://news.ycombinator.com/formatdoc

nuancebydefault•2mo ago
Oh that's why i did not get any upvotes /i
swores•2mo ago
For anyone else who, like me a moment ago, doesn't know the meaning of ** but is curious: it's how many (but not all) programming languages express "to the power of", aka 2**1000 = 2^1000
pansa2•2mo ago
> 2**1000 = 2^1000

The reason for using `**` is that `^` is widely used for bitwise exclusive-or. So commonly `2**1000 != 2^1000`!

kragen•2mo ago
I think Fortran used ** because EBCDIC didn't have ^ or uparrow. ABC and Python followed Fortran rather than C on this point. units(1) supports both.
shawn_w•2mo ago
C uses ^ for bitwise xor and a function for exponentiation, though.
vanderZwan•2mo ago
He's explaining that C was not the reason for picking * over ^
kragen•2mo ago
No, C does not have an exponentiation operator! Possibly you meant "and not a function for exponentiation".

I should have said "followed Fortran rather than BASIC".

shawn_w•2mo ago
I meant exactly what I said. C uses a function for exponentiation. Nothing that uses ^ for powers follows C's lead.

https://en.cppreference.com/w/c/numeric/math/pow.html

kragen•2mo ago
Oh, I interpreted "a function for exponentiation" as being part of a list of things C uses ^ for. It didn't even occur to me that the sentence had an alternative parsing where it was part of a list of things C uses. C does indeed use a function for exponentiation. And time flies like an arrow!
vincent-manis•2mo ago
BCD, actually, given that Fortran dates from the mid-1950s. EBCDIC only appeared more or less around Fortran IV, in the early 1960s. Many printers in those days had a 48-character chain/train. After upper-case letters, digits, and a few essential punctuation marks (like . and ,), you weren't left with many options. The 60-character set of PL/I was a luxury back then, let alone lower case.
kragen•2mo ago
Hmm, I guess you're right. Also EBCDIC does have ^ apparently, though not ↑: https://en.wikipedia.org/wiki/EBCDIC#Code_page_layout

But IBM's BCD character sets, including the 48-character ones you allude to, didn't: https://en.wikipedia.org/wiki/BCD_(character_encoding)#Examp... (though Honeywell's did)

There are a lot of decisions in Fortran that stem from the absence of useful characters. .LT., .LE., .EQ., .NE., .GT., and .GE. is another.

swores•2mo ago
Interesting, thanks!
fainpul•2mo ago
And != means ≠
Lucasoato•2mo ago
Wow, I didn't know that you could write

  like
    this
      for
        code
          blocks
jockm•2mo ago
It’s been around since at least occam, maybe longer
doug-moen•2mo ago
Lisp has had arbitrary precision arithmetic since the early 1970s. So did dc on Unix, also in the early 1970s. ABC didn't arrive until 1987.
aidenn0•2mo ago

    Python 3.11.13 (main, Jun  3 2025, 18:38:25) [GCC 14.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 2**1000
    10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
    >>> _/2**999
    2.0
mpweiher•2mo ago
That was kind of par-for-the-course back then.

LISP had it, Smalltalk had it, Unix dc/bc had it.

ahartmetz•2mo ago
Interesting, seems like Python is a strict improvement over ABC though many things are very similar. The PUT ... IN ... and INSERT ... IN ... syntax looks quite clunky and un-composable, at least the examples never do more than one (high-level) operation per line. Also, I guess GvR's English wasn't that good at the time - it should be have been INTO, right?
zahlman•2mo ago
"in" vs "into" is often just a matter of how casually you're speaking.

The same sort of syntax was used in HyperTalk (with "into"): https://en.wikipedia.org/wiki/HyperTalk#Description I wouldn't be surprised to hear of it in AppleScript, either, although I can't recall.

aebtebeten•2mo ago
not a strict improvement: didn't ABC have persistent variables?
zahlman•2mo ago
Extremely cool. Thanks, GvR.

For my own language design I've wanted to introduce some of this ABC syntax back into Python. Mainly for unpacking data and doing index/slice assignments; a lot of beginners seem to get tripped up because assignments in Python use the same syntax as mutations, so maybe it's better to write e.g. `a['b'] = c` like `set b = c in a`, or `update a with {'b': c}`, or ... who knows, exactly.

eru•2mo ago
I agree that Python would benefit from separating mutation and assignment.

Especially when you are dealing with nested functions. You'd get around the whole need for 'global' and 'nonlocal' declarations. (Though your linter might still ask you for them for clarity.)

As a minimal syntax change, I would propose using perhaps = for introduction of a variable (the common case) and := for an explicit mutation of an existing variable.

But you could also use `let . = ..` and `. = ..` like Rust does.

perrohunter•2mo ago
Where is the GIL in this?
eru•2mo ago
You only need the GIL in the first place, when you are doing multi-threading.

Python only got its own GIL in version 1.5 of CPython.

dec0dedab0de•2mo ago
The year says 91, but it looks like it was recently pushed to github, which is a notable event on its own.
layer8•2mo ago
The use of “HOW TO” for defining subroutines is kinda neat. Though “HOW TO RETURN” for functions doesn’t quite hit the mark. “HOW TO OBTAIN” or “HOW TO SUPPLY” would work with the same number of characters.
nurettin•2mo ago
It actually looks surprisingly usable https://homepages.cwi.nl/~steven/abc/types.html
mg•2mo ago
The first example in the lanuage introduction (https://homepages.cwi.nl/~steven/abc/):

   HOW TO RETURN words document:
      PUT {} IN collection
      FOR line IN document:
         FOR word IN split line:
            IF word not.in collection:
               INSERT word IN collection
      RETURN collection
In Python it would be:

    def words(document):
       collection = set()
       for line in document:
          for word in line.split():
             if word not in collection:
                collection.add(word)
       return collection
I kept the splitting by line and "if word not in collection:" in there even though they don't have an impact on the outcome. I have the feeling that even in the original example they have only been put there to show the language constructs, not to do anything useful. If one wanted to optimize it, it could all be collapsed to just "return set(text.split())", but that would not show off the language features.

ABC uses 225 chars, Python 218 chars. 3% less.

So one could say Python is 3% more efficient than ABC.

volemo•2mo ago
“HOW TO RETURN” for something as common as “def” is crazy!
mg•2mo ago
Well, not as bad as something like

    public static function words(string $document): array {
which some languages these days are coming up with.
volemo•2mo ago
While I agree, at least here every word, though is verbose, at least means something, whereas “HOW TO RETURN” carries no more meaning than “def”.
mg•2mo ago
As I understand it, "RETURN" means that the function will return something. And that when you define a function that returns nothing, but only does something, you just use "HOW TO".
tim333•2mo ago
I guess it's a shortening of "here's how to return the words in a document".

I think def is good though. I guess with new fangled prompt engineering you could use the english version.

amypetrik8•2mo ago
> public static function words(string $document): array {

>, though is verbose, at least means something

I disagree, it is hardly verbose. there can be further detailing of the input and return value of the function beyond a simple type. Java didn't go far enough, not by a long shot - we need hardcore painstaking, completely brutal typing. Such typing will be highly beneficial for software reliability - you're not against reliability are you?

az09mugen•2mo ago
Reminds me if tabloid language, were the translation would be :

DISCOVER HOW TO words WITH document

mg•2mo ago

    DISCOVER THE SHOCKING TRUTH ABOUT HOW TO hello WITH name:
        PRINT "hello " + name
tim333•2mo ago
I think:

    DISCOVER THE SHOCKING TRUTH ABOUT HOW TO hello WITH name:
        YOU WON'T WANT TO MISS "hello " + name
boutell•2mo ago
I love programming in listicle:

HERE ARE THE TOP 10 fibbonacci_numbers:

YOU WON'T BELIEVE n := 6

kristopolous•2mo ago
I swear I remember using this. I even remember the syntax. I was able to compile it and just start writing in it. I have no idea how I know this syntax.

Did early linux have this? Maybe netbsd?

I actually found it. It was on simtel: https://archive.org/details/Simtel20_Sept92

I must have gotten it from there. I would routinely get any thing Walnut Creek would make.

I also realized a couple years ago I could navigate EDLIN without help and knew how to use masm. Somehow I had forgotten what I know but my fingers did not.

teruakohatu•2mo ago
Can you tell me about "Simtel"? I have never used a BBS but from looking at that ISO it was a collection of software downloaded from BBS' ?
msla•2mo ago
FTP server, not BBS. You had to be on the Internet to access it.

https://en.wikipedia.org/wiki/Simtel

It was called SIMTEL20 for a while because it was hosted on a PDP-10 mainframe running the TOPS-20 operating system, but apparently it was hosted on a PDP-10 running ITS first:

> The archive was hosted initially on the MIT-MC PDP-10 running the Incompatible Timesharing System,[1] then TOPS-20, then FreeBSD servers

teruakohatu•2mo ago
That is an interesting piece of internet history, thank you for sharing.
cbdevidal•2mo ago
Fun story: As a kid with only a DOS 3.3 box and no BBS to download another and not much money to buy one, no magazine subscription etc., I accidentally erased our word processor software. I literally only had EDLIN for writing anything. So, that’s what I used. Got so good I was able to write multi-page book reports with it.
mcv•2mo ago
I encountered it on an open day on the university. The only thing I still remember is that functions were called HowTo, because they described how to do something.
sureglymop•2mo ago
Wasn't python for a while just a REPL to query and call C functions from shared objects with dlsym and probably an equivalent to libffi?

Maybe I am remembering this wrong...

bobsh•2mo ago
There's even a book. I have it (and have had it for a loooong time). I tried to do some larger things with ABC back in the day. It was nice. Then Python arrived. I think I still have the muscle-memory for the editor.