msarnoff

Joined 16 years ago

Karma
742
Submissions
146
Member since
Nov 24
f"{firstname[0:4]}{lastname}@proton.me"

@[email protected] @msarnoff.bsky.social

Old twitter: http://twitter.com/txsector (Inactive since 2022)

http://youtube.com/user/74hc595

http://github.com/74hc595

View on Hacker News

Recent submissions

Comment · 11 days ago
Orange dot-matrix gas plasma displays were used on pinball machines for over 2 decades before the manufacturers switched to colour LCD screens. Now instead of clever pixel art and high legibility we have cheesy CGI and so much information on screen that I have no idea what to shoot for…
Comment · 1 month ago
Comment · 2 months ago
See also “Your DietBet Destroyed the World” https://laprade.blog/your-dietbet-destroyed-the-world

One of my favourite short stories, it’s always stuck with me since it was posted to HN a few years ago.

Comment · 2 months ago
Every time I see my article reposted, I get nostalgic for the 30” Apple Cinema Display I used in the photos. Maybe the best monitor of all time… the thing was MASSIVE and was peak Apple design perfection. I kept it until 2016-ish, and by then the backlight was giving out, and the ecosystem had moved on from DVI and Mini DisplayPort. Your subpixels are sadly missed. ;-(
Comment · 3 months ago
You’re not wrong. They work very similar to binary arithmetic: basically the only operations they can do is increment, decrement, and shift left/right (but by 10)

But multiplication is just repeated addition, and division is just repeated subtraction. Some of the highest-end units could do square roots! Check out CuriousMarc’s videos.

Comment · 3 months ago
Comment · 5 months ago
I met Steve Bourne a while back and asked him why he chose to write sh with all those ALGOL-like macros. His answer was terse—he just wanted to use the syntax he was most familiar with.
Comment · 5 months ago
Busybox is where I learned the multi-call technique of using argv[0] to simulate multiple commands in a single binary.

It works great for Rust binaries, which can get quite large. I had to rewrite some Python utilities (software updater, Wi-Fi network config, etc.) for a very constrained embedded system (64MB RAM) that couldn’t handle Python. So I built them all in a single multi-call binary. I believe `clap` has built-in support for it.

Also, Busybox has a lot of stuff built in that you’d never think of. It has a little vi built in. It has the full suite of ‘runit’ process supervisor utilities. And plenty more. It has a Kconfig system (like the kernel) where you can tune exactly which utilities you need and what features you need. Don’t need full output in ps? Turn it off. Don’t need tab completion? Pretty sure you can turn that off too. Always typing ‘dc’ instead of ‘cd’? Just don’t include dc.

Comment · 5 months ago
This was a class assignment in the 15-213 class at Carnegie Mellon. The staff had set up a test suite and an online leaderboard to rank the speed of each student's malloc implementation.

I figured out that the test cases allocated a disproportionate amount of X-byte blocks. I was able to get to the top by hardcoding a specific freelist just for X-byte blocks.

Learned a lesson about easily it is to game a benchmark :)

Comment · 6 months ago
I think this is me. I was diagnosed with “regular” ADHD a few years ago, but I’ve had issues with rejection sensitive dysphoria my whole life. As a kid I would have a lot of meltdowns when I couldn’t get something right on the first try or made any kind of mistake.

The meltdowns stopped, but I still have issues spiralling into thoughts of failure and being a horrible person when I feel like I’ve disappointed family or friends.

Guanfacine has helped though. Tried a bunch of medications and this is the only one that seems to have made an impact.

Comment · 7 months ago
Originally read the URL as “D-Bus Hell dot com” and was like… yup.
Comment · 8 months ago
On early bit-paired keyboards with parallel 7-bit outputs, possibly going back to mechanical teletypes, I think holding Control literally tied the upper two bits to zero. (citation needed)

Also explains why there is no difference between Ctrl-x and Ctrl-Shift-x.

Comment · 8 months ago
Retro Game Mechanics Explained has a video about how the Asteroids vector generator worked and was coded for:

https://youtu.be/smStEPSRKBs?si=k_0u3NKCxCqZBc6w

Battlezone and later 3D games used different circuitry that generated vectors with analog circuitry and used a “math box” coprocessor based on Am2901 bit slice ALUs to help with the 3D math.

Comment · 9 months ago
The ancestor of the RCX was the "programmable brick" project out of the MIT Media Lab in the mid-1990s

http://archive.pbrick.info/The%20MIT%20Programmable%20Brick%...

https://web.archive.org/web/20011212030110/http://fredm.www....

Growing up in New England at the time, I was very lucky that they ran a pilot project at my elementary school. We programmed our "sketches" (though we didn't use this term) in LogoWriter on Mac LC IIs and flashed them using a weird dongle that connected to the brick via RJ11 cable.

I owe a lot to my teachers and Fred Martin's group. I don't think I'd be a developer today without that experience.

Comment · 11 months ago
I was very surprised that GCC could optimize NEON SIMD intrinsics. After spending hours trying to optimize my vector code, trying to get the spacing between register dependencies right to reduce stalls, breaking long reduction operations into intermediate results, messing with LLVM-MCA, etc., I realized that I just couldn’t beat the compiler. It was doing its best to allocate registers and reorder instructions to keep the pipeline filled.

I don’t think it always did the best job and saw a bunch of register spills I thought were unnecessary, but I couldn’t justify the time and effort to do it in assembly…

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton