frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Local-first software: You own your data, in spite of the cloud

https://www.inkandswitch.com/essay/local-first/
329•gasull•4h ago•76 comments

Local-First Software Is Easier to Scale

https://elijahpotter.dev/articles/local-first_software_is_easier_to_scale
82•chilipepperhott•3h ago•27 comments

Europe's first geostationary sounder satellite is launched

https://www.eumetsat.int/europes-first-geostationary-sounder-satellite-launched
116•diggan•4h ago•21 comments

Speeding up PostgreSQL dump/restore snapshots

https://xata.io/blog/behind-the-scenes-speeding-up-pgstream-snapshots-for-postgresql
19•tudorg•2h ago•0 comments

X-Clacks-Overhead

https://xclacksoverhead.org/home/about
147•weinzierl•3d ago•26 comments

'Positive review only': Researchers hide AI prompts in papers

https://asia.nikkei.com/Business/Technology/Artificial-intelligence/Positive-review-only-Researchers-hide-AI-prompts-in-papers
120•ohjeez•3h ago•64 comments

Being too ambitious is a clever form of self-sabotage

https://maalvika.substack.com/p/being-too-ambitious-is-a-clever-form
570•alihm•21h ago•170 comments

Seine reopens to Paris swimmers after century-long ban

https://www.lemonde.fr/en/france/article/2025/07/05/seine-reopens-to-paris-swimmers-after-century-long-ban_6743058_7.html
26•divbzero•1h ago•7 comments

Optimizing typography of insect labels using free fonts and free software (2012) [pdf]

https://www.akentsoc.org/doc/Bowser_ML_2012.pdf
16•exvi•3d ago•0 comments

The Moat of Low Status

https://usefulfictions.substack.com/p/learn-to-love-the-moat-of-low-status
283•jger15•3d ago•111 comments

Gecode is an open source C++ toolkit for developing constraint-based systems

https://www.gecode.org/
48•gjvc•10h ago•11 comments

Mini NASes marry NVMe to Intel's efficient chip

https://www.jeffgeerling.com/blog/2025/mini-nases-marry-nvme-intels-efficient-chip
412•ingve•1d ago•202 comments

Heart attacks aren't as fatal as they used to be

https://www.vox.com/future-perfect/418849/heart-attack-deaths-cardiovascular-disease-progress-medicine
44•lr0•3h ago•41 comments

Just Ask for Generalization

https://evjang.com/2021/10/23/generalization.html
15•jxmorris12•1d ago•1 comments

Happy Birthday, GamingOnLinux – 16 years today

https://www.gamingonlinux.com/2025/07/happy-birthday-gamingonlinux-16-years-today/
64•diggan•4h ago•5 comments

Haskell, Reverse Polish Notation, and Parsing

https://mattwills.bearblog.dev/haskell-postfix/
9•mw_1•3d ago•1 comments

Build Systems à la Carte (2018) [pdf]

https://www.microsoft.com/en-us/research/wp-content/uploads/2018/03/build-systems.pdf
48•djoldman•3d ago•11 comments

Numerical Electromagnics Code (NEM)

https://www.nec2.org/
13•hyperific•2d ago•5 comments

Problems the AI industry is not addressing adequately

https://www.thealgorithmicbridge.com/p/im-losing-all-trust-in-the-ai-industry
121•baylearn•8h ago•130 comments

QSBS Limits Raised

https://www.mintz.com/insights-center/viewpoints/2906/2025-06-25-qsbs-benefits-expanded-under-senate-finance-proposal
31•tomasreimers•7h ago•11 comments

The History of Electronic Music in 476 Tracks (1937–2001)

https://www.openculture.com/2025/06/the-history-of-electronic-music-in-476-tracks.html
95•bookofjoe•2d ago•27 comments

Why I left my tech job to work on chronic pain

https://sailhealth.substack.com/p/why-i-left-my-tech-job-to-work-on
348•glasscannon•1d ago•215 comments

Incapacitating Google Tag Manager (2022)

https://backlit.neocities.org/incapacitate-google-tag-manager
202•fsflover•1d ago•137 comments

Telli (YC F24) Is Hiring Engineers [On-Site Berlin]

https://hi.telli.com/join-us
1•sebselassie•12h ago

EverQuest

https://www.filfre.net/2025/07/everquest/
253•dmazin•1d ago•142 comments

macOS Icon History

https://basicappleguy.com/basicappleblog/macos-icon-history
4•ksec•3h ago•0 comments

A 37-year-old wanting to learn computer science

https://initcoder.com/posts/37-year-old-learning-cs/
112•chbkall•10h ago•106 comments

OBBB signed: Reinstates immediate expensing for U.S.-based R&D

https://www.kbkg.com/feature/house-passes-tax-bill-sending-to-president-for-signature
371•tareqak•18h ago•298 comments

How to not pay your taxes legally, apparently

https://mrsteinberg.com/how-to-not-pay-your-taxes-legally-apparently/
3•jimhi•49m ago•1 comments

N-Back – A Minimal, Adaptive Dual N-Back Game for Brain Training

https://n-back.net
70•gregzeng95•2d ago•19 comments
Open in hackernews

Go, PET, Let Hen - Curious adventures in (Commodore) BASIC tokenizing

https://www.masswerk.at/nowgobang/2025/go-pet-let-hen
19•masswerk•8h ago

Comments

OhMeadhbh•5h ago
This takes me back a few years. I spent HOURS writing BASIC programs to analyze other BASIC programs as a kid. My favourite PET trick was to hide the basic source by putting a comment (REM statement) at the beginning and end of the program. Then POKEing the address of the ending comment in the "next line" link in the first line. It turns out that when the interpreter was running the program, it didn't use the "next line" link, it just assumed the bytes following the current line were the beginning of the next line. But the LIST command //did// use the link. So you could get a program to run perfectly fine, but when someone did a LIST, the only thing they saw were the two comments.

I can't remember if this worked on the C64, but it worked on the 4016 and 4032's in our high school's computer lab.

jim_lawless•3h ago
You could do similar things on a C64 and other computers. You might try this out on a C64 emulator such as VICE.

10 REM NOTHING TO SEE HERE

20 PRINT "HELLO!"

POKE 2049,1

Run it. You'll see HELLO! LIST it and you'll continuously see line 10. If you try to LIST 20 the machine pretty much locks up.

Screen image is here:

https://jimlawless.net/images/remtrick.gif

(note that in the above image, you'll see two RUN lines ... it appears that I captured the screen as it was in mid-scroll... )

LocalH•1h ago
At least on the C64, you could also put a line containing REM shift-L in the program, and the LIST command would crash out when encountering it.
masswerk•1h ago
The problem being that the LIST routine should handle a comment like a string (which is how it is parsed and stored: a comment is essentially an unquoted string extending to the end of the line), but doesn't bail out of keyword expansion, whenever it encounters a REM token.

[Edit]

Coincidentally, a shifted "L" is PETSCII code 0xCC. Which is just one after the highest available token in Commodore BASIC 2.0 / V.2. (The last one being 0xCB, `GO`.) Therefor, a lookup into the keyword list will yield the terminating zero-byte, which probably causes the problem. (E.g., by defeating what was intended to be an unconditional branch instruction.)

(In BASIC 4.0 for the 40xx/80xx PETs, this is actually a valid token, namely `CONCAT`, which is expanded by LIST without further issues. Meaning, this kind of LIST protection can be broken by simply loading the program on one of the later PETs.)

jklowden•3h ago
Why do I remember that every C64 BASIC keyword was a 2-byte integer? A typing shortcut was to enter the first letter, followed by a "shifted" high-bit character. Every keyword was represented that way.

Variables were also 2-bytes, but ASCII. The user could enter a longer name, but only the first two characters were significant.

masswerk•2h ago
Yes, variable names are 2 bytes, in their stored memory location in RAM. As these must be 7-bit ASCII bytes, the sign-bits and their distribution over these two bytes is used to encode the type. And all simple variables take 7 bytes of memory in total, regardless, whether the remaining 5 bytes are actually needed to store the data or not.

  sign-bits   type (payload)

  0   0   ... floating point number (1 byte exponent, 4 bytes mantissa)
  1   1   ... integer (2 bytes)
  0   1   ... string (1 byte length, 2-bytes pointer to location)
  1   0   ... FN function (2 bytes pointer to BASIC, 2 bytes pointer to parameter variable)
In a program (the BASIC text), though, variables names are stored in full and in plain ASCII, at whatever length of characters.
LocalH•1h ago
Not every keyword could be abbreviated with only two characters. The linked article actually discusses this mechanism. Once tokenized, the keywords only took up a single byte.