HN user

simmons

1,127 karma

I'm a software engineer specializing in low-level system software such as device drivers, network protocols, graphics, and video. My current work interest is software platforms for consumer electronics in the television industry, however I often get diverted into other corners of the software development world. I'm based in Colorado, but work for clients located in a variety of locales.

Blog: Caffeinated Bitstream http://cafbit.com/ Mail: hackernews@tmp.davidsimmons.com

[ my public key: https://keybase.io/simmons; my proof: https://keybase.io/simmons/sigs/weZqDeRNgd2oiqXxOmCpqpLp87PpnhYnNdAHqnbBJOc ]

Posts3
Comments302
View on HN

Yes, I remember feeling pride in the stability of my systems when I saw a large uptime. I had a server that had 1000 days of uptime, once. Now when I see a large uptime, I'm terrified of what security patches the kernel may be missing!

A Sam's Club in my area has started selling fresh squeezed orange juice. It's quite delicious. (And yes, it's pricey.) I've looked around at many other stores (including places like Whole Foods) and nobody else seems to be doing this.

Yes, the latest chips were very expensive back then, and out of reach for most people who would continue buying new computers with older chips. (As opposed to how most people today buy an iPhone or a Mac or whatever with the latest semiconductor technology.) I got my 25MHz 386 in 1991, over two years after the 486 was announced, and I had one of the fastest computers of anybody in school... for a short time.

I was excited earlier this year to discover that Micron (Crucial) was manufacturing 64GB DDR5 "laptop memory" modules, allowing me to pick up a couple in early September to build an ASUS NUC VM server with 128GB of RAM. It was a little hard to get even then, but I found a vendor selling it at a reasonable price.

It worked out so well that I decided to get some more. Needless to say, it went from unavailable to being available for double the price. Now, I guess it won't be available at all in the future. :(

When you become good at using Palm graffiti, it's not too bad. I remember playing through all of the _Hitchhiker's Guide to the Galaxy_ game on a Palm IIIx while commuting on the bus between Boulder and Denver back in 1999 or so, and being amazed that I could play an actual computer game on a handheld device.

I was in this same situation earlier this year with one machine that was using a license attached to my Microsoft account. From what I read online, I thought I was freeing up the license by running "slmgr /upk" and "slmgr /cpky" on the old machine, but I guess not. I was eventually able to get the license transferred to the new machine, but only after a very painful morning of working with an MS support person.

I learned that there are two ways of buying a Windows 11 license. One way results in getting a traditional license key that can be reliably transferred, and the other way (tying the license to your Microsoft account) risks losing your license. :( I'm very careful to only buy licenses the former way, now.

I would love to hear your other theories!

I don't think it would exactly be "create a fork of this repo", but if a developer invests significant time and effort solving hard problems where the solutions are implemented in the released source, once an LLM model is trained on it, then someone else could quickly and easily have the LLM generate a new program that implements the novel solutions. Whether this is a problem or not may depend on the motivations of the developer, but this potential for IP laundering may very well begin influencing the licenses and methods of distribution that people choose.

(Of course, I suppose at some point AI will be able to analyze and learn from binary executables or obfuscated source...)

Very cool! I had an MC-10 when I was a little kid. It was my first computer, and I didn't know anyone else who had one. I didn't have the book with this Arctic Adventure program, but I had another book with an adventure game you could type in. [1] I stayed up past my bedtime and spent significant time typing it in. However, after typing in much of the program, I encountered my very first "out of memory" error. I was astonished that 4KB of RAM wouldn't be enough, and that I was going to need a better computer!

I clearly had the wrong book for that computer. ;)

[1] https://www.retroprogrammez.fr/listings/aventure/cia/

Neat! I sometimes play around with the idea of reverse engineering and transcompiling a tiny game that I think was probably written in Turbo Pascal 4.0. Maybe 4.0 supported optimizations, but this program seems to have been compiled in a debug mode. (At least, it seems to have no optimization, and has the default {$S+} stack overflow checking at the start of every function.) The lack of optimization makes it (and perhaps other programs written in Turbo Pascal) a really attractive artifact to experiment with transcompiling. When I realized that only the first segment was the actual game, and the other three segments corresponded to standard units used for I/O (etc.), which could be harder to analyze, I realized I could just omit those segments and replace them with new functions suitable for the transcompilation target. Maybe some day I'll get around to finishing it.

Good luck!

In high school, we had a Netware 3.12 environment, and the Guest account was enabled, albeit with very limited privileges. But for some reason, Guest could still use NET SEND, which popped up a little message in the bottom row of the destination machine's display. ...Nobody noticed that these messages came from GUEST

You mention Netware, but as I recall the Netware function you describe was just "SEND" and "NET SEND" was a Microsoft networking thing. (But maybe there was some integration between the two after my experience with Netware, who knows.)

I mainly wanted to say, as someone who used/abused a Netware network in high school, I disassembled the SEND program and discovered that the username included in the message is not authenticated at all -- the IPX (or NETX, I forget which) software interrupt just took a string, and the SEND executable formatted the username into this string. So by crafting your own SEND program that used the software interrupt directly, you could easily forge any username you wanted. So you could very easily send a message from "ADMIN". :)

This should not be construed as a confession of any network shenanigans that may or may not have occurred at my high school. ;) :D :)

Wow, the mention of SLS takes me back. SLS was the first Linux distribution I ever used. (Not counting the very early days of manually extracting tar archives of userspace binaries to make a system...) I remember passing around the precious shoebox of SLS floppies from person to person in high school. :)

I thought I was the only one who preferred David Lynch's Dune. I'm glad to find out I'm not alone. I explain to people that it depends on if you're a bigger David Lynch fan or a Frank Herbert fan. I have nothing against Herbert, but I guess there's something about Lynch's work that speaks to me, even a movie like Dune that he himself hated.

Even outside of gaming, people's needs are going to vary a great deal. Some people are sensitive to refresh rates, some people really need great color reproduction, etc.

But since you asked what I optimize for... I'm cheap, and tend to opt for inexpensive, no-frills, but reliable 4K monitors. I have several Philips 278E 27-inch 4K monitors. I don't see these on Amazon any more, so maybe this model has been discontinued, but they ran about $250 USD or so. I use a couple on my main workstation for coding, my wife has a couple (that are secondary to an Apple Studio Display), and I have a floating one for the workbench. I find this model to be a sweet spot for my needs. They aren't as beautiful as an Apple display, but they're sufficient.

Potential cons include no camera (I have a separate camera on top, although it sometimes obscures some of the display due to narrow bezels), lousy speakers (I use headsets), and they seem oddly sensitive to electrical fields in the environment (for example, they'll turn off momentarily if I static shock myself on something nearby).

It's not completely clear to be that the original poster did anything nefarious. (Although the Stack Overflow post has been deleted, so I don't know what was mentioned there.) It seems to me that section 10.3 could cover termination due to a mundane administrative detail via "You cease being an authorized developer".

For example, my developer profile is slated for removal in a few weeks because I haven't provided a verified phone number and email address that can be publicly available for the world to see. (And I don't care to, since I haven't used this developer account in years, and I'm not actively doing Android development.) Does this mean I'll be barred for life?

I've been doing this for years, as well. I've also found that the majority of companies I give an email address to are actually surprisingly good stewards of that information. However, I have found a number of email leaks. It looks like my block list is up to 31 addresses. Most of those are leaks that led to spam. (Although one was a smoothie chain that insisted on sending me email every single day, and their unsubscribe page always seemed to be "malfunctioning".)

I don't think all or most of these companies on the list are intentionally selling my address to spammers. I suspect most of these leaks are due to poor handling of the data or server compromises. (Surely Adobe, for example, isn't so desperate that they would sell my address to spammers.) But whether by malice or incompetence, I can easily block them.

The idea of cars being driven remotely by someone on the other side of the world was mentioned in Charles Stross's 2007 science fiction novel Halting State. I think about it sometimes, but I always come to the conclusion that the latency would be too high. A 100ms latency might make the difference between a near-miss and a collision.

I'm a long-time user of apt-cacher-ng, but reading this reminds me of some of the pain points I regularly experience. Maybe others have some thoughts.

It would be nice if my Docker image builds, which may include apt-get steps, could benefit from the cache. I know Docker build will cache layers itself, but this doesn't check the upstream for fresher packages in the same way that could be done with HTTP caching. I know I could simply set the Acquire::http::Proxy in the Dockerfile, but then I've mixed local infrastructure concerns into a Dockerfile that should be generically usable by anyone, anywhere. It would be great if there were some way to inject these site-specific configurations into the image without tampering with the Dockerfile. This could be tricky, since the base image of any random Docker image isn't even guaranteed to be Debian. (Although I could imagine a very generic Bourne shell script that consumes /etc/os-release, if present, and performs any distro-specific customization.) This would also solve the similar problem of needing to inject site-specific trusted enterprise CA certificates into images.

Another pain point is the lack of HTTPS caching, which the author mentions. I'm not sure that dropping down to plain HTTP is the solution. I sometimes wonder if there could be a MitM proxy approach, where the cache presents a certificate for the remote hostname that is trusted by a CA certificate installed on the client. (In other words, something similar to what a Zscaler does to intercept HTTPS.)

I've been in a lot of different work situations over my career, including occasionally working part-time. Most of my part-time situations have tended to be very small, well-defined projects, or situations where I may be able to provide some unique and valuable skill that makes up for the reduced coding throughput.

I think a part-time coding job would be fantastic, but such jobs don't seem to be abundant or stable. It's my experience that very few people need just a little software engineering. If someone needs software engineering at all, they usually need a lot of it. Also, the structure and management of most teams don't seem to be compatible with part-time work. Many companies aren't sure how to deal with someone who can't attend all the meetings.

That said, if you managed to do this for a decade, you likely have more experience with how to pull this off than the rest of us here. I'm not sure what may have changed since mid-2021, other than the general tech slump.

I'm not the poster who mentioned this, but I assume they're thinking about tax brackets. If you make a year's worth of income in a year, then take a year off starting in January, some of that income may be taxed in a higher bracket. If you take a year off starting in June, then you make 1/2 year income in one year and 1/2 year income in the next year, so there's a better chance that all the income will be taxed in lower brackets.

I think it mostly depends on the particular engineer and the engineering culture of the team/company. I was hanging out in a coffee shop a while back, and some software engineers who looked extremely young happened to sit at a nearby table. I couldn't help but overhear them excitedly sharing their fun terminal/shell customizations with each other.

I don't think a willingness to engage in such things is a prerequisite to being a great software engineer, but it somehow warmed my heart to see that the younger generation could still find joy in such things.

I love job control! And as usual, Julia Evans explains it in a clear and straightforward fashion.

I would add that as a shortcut, you can just type % (without fg) to foreground the current job, or % and a number to foreground a particular job. (In Bash, anyway.)

I use tmux, but I often use job control as an extra dimension, having several jobs in any given tmux window. (Yes, this leads to the inevitable "There are stopped jobs." warning when I attempt to exit a shell/window, which makes cleanup slightly more tedious.)

if someone who didn't hear you says, "what", or "can you say that again?", don't just repeat the last three words you said.

My pet peeve about asking people to repeat isn't that they won't repeat enough, but that they'll repeat in exact the same volume and enunciation as they originally spoke. I'm not sure why they expect to do the same thing again and get different results. The only thing that I've found that works is to tell them what it sounds like they said, no matter how crazy ("Did you say, 'the elephant is painting the room'?") and only then will they speak loud and clear. (Which I'm sure is annoying for the other person, but what else am I to do?)

Thank you for the name of this disorder and link! I've also had this my whole life, and I knew it was a thing that wasn't terribly rare (based on reading comments from others in the past, here on HN and elsewhere), but I think this is the first time I've seen a name for this condition.

The Wikipedia page seems to really describe my condition, except for the potential overlap with ADHD. For example, the "difficulty following oral instructions". I can read something and retain it forever, but if someone speaks to me, it will often go in one ear and out the other.

I sometimes wonder if this could be a result of being a very introverted child who started reading at around 3 or 4 years old. (Because reading is so awesome, why bother listening to people -- and improving your auditory neurology -- after that?)

I think I've probably just adapted to the condition. It doesn't seem like any sort of problem or disability. But I suspect others around me find it much more annoying than I do. ;)

Thanks to the OP for writing this up. I'd love to see mail be rebooted.

A few thoughts:

1. I don't know if HTTPS is the best analogy, since it took 20 years for it to really become widely used (vs. non-secure HTTP). I think a better analogy might be the transition from HTTP/1.1 to HTTP/2 (or HTTP/3?).

2. I don't think we can rely on large providers (e.g. GMail) to quickly adopt a new system and even issue switchover ultimatums. A simpler mail system may not be in their best interest. Aiming for slower, organic growth could be more realistic. Even if a next-generation mail system never becomes dominant, it could still provide value. (Maybe Mastodon/ActivityPub is the analogy here?)

3. In any sort of reboot, I think a modern encryption system (something like Signal protocol?) would be a must.

4. Can we have a system where senders need to hold tokens to authorize them to send a message to a recipient? The whole "anyone on earth should be able to send you an unsolicited message" idea is ultimately the source of the spam problem. Messaging systems that rely on bidirectional agreement have much less of a spam problem. (Obviously this raises a slew of other technical and UX questions...)

I know that making too many changes is a risk. But I think that there is also a risk in making too few changes. (If the value proposition isn't sufficiently bold, this may hurt adoption.)

I personally think that I only get worse at programming when I drink even a little, and quickly stop caring.

On an unrelated note, some folks started a distillery in Lakewood, Colorado, and they named it Ballmer Peak after the XKCD. :)