HNHacker News
TopNewBestAskShowJobs

smcameron

1,988 karma · joined December 1, 2014

Author of Word War vi, Space Nerds in Space, and gaseous-giganticus
submissionscomments
smcameron··on Path Isn't Real on Linux
> The shell, not the Linux kernel, is responsible for searching for executables in PATH!

I mean, no shit, Sherlock? the exec family of system calls requires a path to a file, not a filename with an implicit path from the environment, of course the PATH is handled by the shell.

smcameron··on How a 20 year old bug in GTA San Andreas surfaced in Windows 11 24H2
Surprised to see the return value of sscanf being ignored, that seems like a pretty rookie mistake, and this bug would never have made it out of the original programmer's system if they had bothered to check it.
smcameron··on MinC Is Not Cygwin
Which is weird, because the stated purpose of MinC is: "MinC was written to help children at vocational education learn Linux without the hassle of virtualization." And it does this by running OpenBSD on Windows? That's really strange. Why not just run linux if the goal is to teach/learn linux? Perhaps the actual goal is not well stated, or I misinterpret what is really meant by those words.
smcameron··on A 1980s toy robot arm inspired modern robotics
This video shows the innards of the thing: https://www.youtube.com/watch?v=aMdmkONa7qs
smcameron··on UML diagram for the DDD example in Evans' book
Wait until you discover IGML (intergalactic modeling language)[1]. The entire user interface of a space game I'm working on -- including menus, buttons, sliders, even text rendering -- is literally implemented via a form of IGML. It's a very old language. Games like Asteroids and Battlezone have used it since forever.

[1] https://wiki.c2.com/?InterGalacticModelingLanguage

smcameron··on A 1980s toy robot arm inspired modern robotics
The shock when you opened up the Armatron expecting a series of electronically controlled motors and found out it contained instead only a single motor that ran continuously and an incredibly ingenious and entirely mechanical train of linkages and gears to implement shoulder (rotating and bending), elbow, wrist (rotating and bending), and gripper, with no electronics at all is almost indescribable. It was simultaneously somehow slightly disappointing (I was hoping to hijack the imagined electronics to modify the thing to be computer controlled) and also just astonishing that such a thing could be designed. You expected electronics but instead got something from the mind of a modern day Da Vinci.
smcameron··on Passing planes and other whoosh sounds
Hm, I suppose that's why a flanger[1] (guitar effect pedal) can sound a little like a jet plane.

[1] https://en.wikipedia.org/wiki/Flanging

smcameron··on Philip K. Dick: Stanisław Lem Is a Communist Committee (2015)
There's an interesting book[1] by Douglas Hofstadter about translation in general and also about translating his most famous book[2] (which by its nature was particularly difficult to translate) into many different languages.

[1] https://en.wikipedia.org/wiki/Le_Ton_beau_de_Marot [2] https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach

smcameron··on Why is there a “small house” in IBM's Code page 437?
I am pretty sure IBM's "DisplayWriter" word processor used the "small house" char for some kind of an indicator in the status line, maybe something to do with tabs. Here's a screenshot I found of DisplayWriter using that char: https://darrengoossens.wordpress.com/wp-content/uploads/2020...

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

smcameron··on Warner Bros Completes Worldwide Sale of 'Coyote vs Acme'
The premise of this movie reminds me of one time when I was working at McDonnell Douglas in the early 1990s on a project that was a test facility for space station related stuff. There was a database and you could enter issues for various problems that testing found. As test data, I added a bunch of issues filed by a certain "Mr. W. E. Coyote", complaining about various defects in rocket powered roller skates and other such nonsense. Somebody in management found it, and I got called on the carpet and told to delete it all. Jeez. No sense of humor at all.
smcameron··on Take this on-call rotation and shove it
The (in)offensiveness of the sound has little to do with it. For quite a few years after I left my job as an SRE at google, this gentle little tune called "morning flower"[1] which I used as my pager alarm sound would give me a little jolt of adrenaline. Even now, it's a bit startling, but it's old enough now that at least I do not hear it in the wild anymore.

[1] https://www.youtube.com/watch?v=4hr8lhO3k5o

smcameron··on Teaching a new way to prevent outages at Google
> "The class itself is very well structured. I've heard about STPA in past years, but this was the first time I saw it explained with concrete examples. The Google example at the end was also really helpful."

But the article itself contains no concrete examples.

smcameron··on The Collective Ambition Behind Odysseus, a Game-Changing Sci-Fi Larp
Don't forget (my own) Space Nerds in Space: https://spacenerdsinspace.com (discussed here previously: https://news.ycombinator.com/item?id=28343941)
smcameron··on Breaking Up with On-Call
Been a few years since I worked at Google as an SRE, but I did not find "There’s no incentive in big tech to write software with no bugs" to be particularly true. Perhaps because I was an SRE for a few of the of the older, intrinsic, core products. A lot of the pages we got were for things outside our control (e.g. some fiber optic cables got broken (we found out later), so we've got to drain some cluster because nothing's getting through there, or something's getting overloaded because it's the superbowl today, so throw more machines/memory at it, or other weird external things.) I don't remember a lot of pages due to outright bugs in the code... though it's been enough years now that I might have forgotten.
smcameron··on Robust Wavefront OBJ model parsing in C
Heh. I feel that I might be somewhat responsible for the existence of this article. Perhaps merely a coincidence, but this happened a few days ago: https://old.reddit.com/r/C_Programming/comments/1itrhd9/blat... in which the author schools me on the topic of American Fuzzy Lop which he applied to my home made OBJ parser.
smcameron··on XOR
An algorithm I've heard of in multiplayer game programming, in which massive state must be transmitted to many clients ... xor the previous game state with the new game state on the server ... most of the result will be zeros because most of the new state is the same as the old state. Then compress it. All those zeros compress really really well which is great for network traffic. Then transmit the compressed xor'ed state, client decompresses and xors with current state to get new state. Don't remember where I first heard of this but it was probably 15 or 20 years ago.

Really clever. Never tried to implement such a thing though. Sounds fiddly and hard to debug.

smcameron··on Ross Ulbricht granted a full pardon
I also wasn't at all confused.
smcameron··on Debugging: Indispensable rules for finding even the most elusive problems (2004)
Back in the 1990s, while debugging some network configuration issue a wiser older colleague taught me the more general concept that lies behind git bisect, which is "compare the broken system to a working system and systematically eliminate differences to find the fault." This can apply to things other than software or computer hardware. Back in the 90s my friend and I had identical jet-skis on a trailer we shared. When working on one of them, it was nice to have its twin right there to compare it to.
smcameron··on All clocks are 30 seconds late
Just sitting here with my mechanical automatic watch like some kind of renaissance fair re-enactor. Probably off by a few seconds, but probably less than 30.
smcameron··on The Invention of Battlezone (2022)
A couple years ago I wrote a battlezone clone in C using fixed point math on an rp2040 for a computer security conference badge[1]. Then I noticed I could compile C to webassembly and SDL2 was supported, so I extracted the battlezone code from the badge code, ported it to use SDL2 and made it work (mostly) in the browser[2]

[1] https://www.youtube.com/watch?v=KWZriUMNpLc

[2] https://github.com/smcameron/browzer-tanx

smcameron··on If I Could Wave a Magic Wand
Working on linux storage drivers for a decade or so taught me how to write code iteratively, slowly and methodically morphing it towards my goal, with each step along the way functioning, and an improvement over the previous step. You basically were forced to do things gradually. Upstream generally wouldn't accept a patch that just changed things wholesale, or even a patch that didn't make one "logical" change. Tools emerged to make such a workflow easier, easy, even. First Andrew Morton's patch scripts[1], then quilt[2], and then stgit[3], which I still use to this day on my own projects.

I will say it does help when slowly morphing code that it was all C code. C is very malleable, like clay. I've found code in some other languages I won't name to be less malleable, more crystalline, more necessary to smash to atoms to effect the desired change.

[1] https://lore.kernel.org/lkml/3DB30283.5CEEE032@digeo.com/

[2] https://savannah.nongnu.org/projects/quilt/

[3] https://stacked-git.github.io/

smcameron··on The Headlight Brightness Wars
Almost all LED taillights strobe, but too fast for most people to see the strobing due to persistence of vision. But if you move your eyes side to side while taillights are in your field of view you can catch a glimpse of the strobing.
smcameron··on A Music Map of every genre and subgenre
From the description of Thrash Metal:

> Besides aggressive, low-frequency riffs (which are sometimes fittingly described as “shredding”),

That's definitely not what "shredding" means. An example of "shredding": https://www.youtube.com/watch?v=MG1qLxCGLMA

smcameron··on David Chang on the long, hard, stupid way
It's a 2 michelin star restaurant. Insanity is the point.
smcameron··on Is My Blue Your Blue?
I expected this to be about qualia. It's not. What I percieve to be red might be what you perceive to be blue, but we have no way to know this, because we will both call it by the same name. We have almost no insight into the qualia of others. Colorblindness is a chink in this armor. Not that I consider this a novel insight, it's something I thought of while a 10th grader back in 1984, and subsequently read about in books predating my own thoughts, such as Douglas Hofstadter's Metamagical Themas or Godel, Escher, Bach, or some other book I can't recall, though it seems quite obvious in any case.
smcameron··on The upstream cause of the youth mental health crisis is the loss of community
50% of heterosexual couples meeting online is not the same as 50% of customers of dating sites entering a relationship.

It could be the case that say, only 10% of dating site customers end up in a relationship, and this 10% amounts to 50% of the total couples, and the math would work out.

E.g.: suppose the total population is 1000 people, 500 of which are on a dating site, and the total number of couples is 20, 10 of which were formed via the dating site and 10 of which were formed by other means, and 960 people are out of luck.

smcameron··on CrowdStrike will be liable for damages in France, based on the OVH precedent
Kind of looks like they had no canaries. https://securityboulevard.com/2024/07/crowdstrike-pir-canary...
smcameron··on Deconstructing the Role-Playing Video Game
> Ultima III had top-down tiled dungeons in '83.

That's not what I remember, Ultima III had crude 3D dungeons similar to Wizardry's dungeons. The maps of the dungeon levels were 2D and tiled. Google image search for "ultima iii dungeon" confirms my memory.

smcameron··on The Linux desktop is self-destructive
I'm glad it's niche. Prevents idiots from ruining it with their "improvements".
smcameron··on Ask HN: Programmable Lasers?
There's openlase https://github.com/marcan/openlase with which you can use the audio output through amplifiers to control galvos of a laser projector.

About 10 years ago a buddy of mine built a home-made RGB laser projector, using a red, green and blue lasers, and dichroic mirrors, and managed to drive it with MAME to run battlezone and some other vector games. The laser projector itself is quite dangerous, and we're probably lucky we didn't end up blind, so I wouldn't really advise doing this.

Battlezone: https://www.youtube.com/watch?v=S2JKr-Vkz8A

SEGA Star Trek: https://www.youtube.com/watch?v=VBALyh1hw5Y

Short clip of the home-made laser projector: https://www.youtube.com/watch?v=-aV0RRmO4gI

Simple rotating cubes demo: https://www.youtube.com/watch?v=OHbsrLW-iag

Running Word War vi via the laser projector: https://www.youtube.com/watch?v=cek1QaNc0Kk

If you look in the Word War vi source, here: https://github.com/smcameron/wordwarvi/blob/master/wordwarvi... and search for "openlase", you can see how it uses the open lase library.

Here's a fork of MAME hacked up to use the laser projector:https://github.com/jv4779/openlase-mame

← PreviousPage 3 of 18Next →