HNHacker News
TopNewBestAskShowJobs

don-code

1,806 karma · joined September 13, 2020

President, Boston DevOps Network

https://hardwarehacks.org

submissionscomments
don-code··on Why video game doors are so hard to get right [video]
Ah, the Crooked Cartridge trick! I haven't heard this mentioned since the 2000s. Zelda: OoT was (and still is) one of my favorite games of all time, and I was devastated to have bricked my cartridge this way - along with my nearly-fully-finished game (IIRC it was just the Golden Skulltula sidequest remaining).

To be fair, it was _saving_ after having performed the glitch that persisted glitched data to the save RAM, but I only figured that out seven years later.

don-code··on Ode to the Clamshell iBook G3 – a.k.a. “The Toiletseat”
I got to liquidate a broken stack of these back in the late 2000s. For some reason I couldn't get one of them to power off, so I pulled the power cable and waited. Then I went to class.

Four hours later, I came back home, and the thing was still running.

You could argue that it was just sitting at the folder-question-mark icon and doing nothing useful, but I'm assuming that it also meant no power saving features were enabled by the kernel (at least, that's how it works in the PC world - I was quickly disparaged of the notion that running DOS instead of Windows 98 just for my text editor would give me better battery life).

don-code··on Predictions for September 2031
My hope is that the author, 10 years from now, will reflect on _why_ he thought these things, and gain some profound enlightenment from them.

I can identify many beliefs about the state of the present (now the past), and the state of the future (now the present), that I held around that same age, and that I'm now embarrassed by. I had no fully-formed idea of what success looked like, save for the meager success I'd enjoyed up to that point. Yet somehow, I felt qualified to hold those beliefs anyway.

Case in point: I at 24 (roughly the same age as the author, minus one year) was having a talk with a 37-year-old colleague, where he brought up a statistic he'd read: $27 million was self-sustaining - that, due to diminishing returns, you'd be living the same lifestyle solely off the interest proceeds, if you didn't work another day in your life. My first thought was, "that's not fully out of the realm of possibility - that's maybe even doable!" That was back when I was in the exponential growth phase of my career - I'd just graduated college, and had the word "Junior" dropped from my title shortly thereafter. I now know that's ridiculous, and I look back at 24-year-old me with some contempt for having thought it.

don-code··on Terraform is currently not reviewing community pull requests
I do this. I wish I didn't.

First of all, building a provider isn't straightforward. The best way I've found to do this is to wrap `terraform init`, and have it `docker run` a build process for a plugin version that never existed - then dumping the built provider into the `.terraform` directory for the project. It's prone to failure; new users of the Terraform project complain that the build eats 8GB of RAM and takes many minutes.

Second, providers are constantly changing, and it's not always possible to cleanly rebase a set of community changes on top of master. Part of the trouble with letting PRs wither on the vine is that they themselves become stale - in one case, the code still compiles, but the end result is completely wrong.

For what it's worth: my use case was needing to use Terraform with some more "unusual" features of CloudFront and ALBs. The 80% use case for support is great. There's a remaining 15% that's well implemented by unmerged PRs, and another 5% entirely that's completely unsuppored. I've kept it IaC by using the `null_resource` provisioner to shell out to the AWS CLI where absolutely necessary.

don-code··on I Have Decided to Stop Supporting My Family's Non-Linux Devices
> UI changes

This, but I'd argue it's not limited to Ubuntu, or even to Linux.

For the desktop environment, I've been using Cinnamon with my family, since it's ostensibly most similar in the UI metaphor to Windows. That's luckily been a nonissue.

The problem has been Web browsers - looking specifically at Firefox. My mom and my grandmother had pretty big upsets when Firefox released Australis, and Photon knocked my grandmother off the Internet completely (she suffers from dementia and isn't able to comprehend changes in her environment anymore).

It doesn't have to be that way. My dad is still using SeaMonkey, and has almost completely avoided this problem - the UI has been largely consistent since the Netscape 4 days.

don-code··on I Have Decided to Stop Supporting My Family's Non-Linux Devices
For about 20 years I've been "the IT guy" for my friends and family. I also stopped using Windows during the Windows 7 era, and I've never used Windows 8+ on my own hardware.

Reliance happens because you demonstrate both the willingness and knowledge to fix something. I'm still willing, but I'm utterly lost in front of a Windows 10 PC. That is what now makes people less likely to reach out to me for help.

don-code··on My love-hate affair with technology
This encapsulates something the article misses: those with technical know-how can typically still thrive with others while living a tech-ascetic lifestyle, but the facade is broken as soon as non-technical friends and family come into the picture.

My most-used means of file transfer is "e-mailed zip file", and generally this works well - until, of course, someone can't open a zip file on their phone. Which I'd assume is most phone users. The phone doesn't need an unzip utility, because a phone user expects a link to some cloud service (Google Photos, etc.) to achieve the same thing. The content doesn't live on the device; it's just a dumb terminal.

Taken to its extreme, I recently had to downmix several HD videos taken on a phone onto a DVD, and _physically mail it overseas_, because even the cloud option wasn't open to the user.

don-code··on The Dual-Drive IDE Hell
> One thing I didn't see mentioned in TFA was that the 'master' (drive 0) MUST be located at the end of the cable.

If that's not proof that Stack Overflow has helped me learn arcana, I don't know what is. In fifteen-plus years of working with IDE drives, I never figured out this pattern and typically just fumbled jumpers into some combination of master, slave, or cable select until all of the drives worked.

don-code··on How I Experience Web Today
It's seemingly becoming harder to have an "experience" on the Web, and I find myself turning away from progressively more sources as a result.

In the 2000s, running with an ad blocker was a near surefire way to speed up loading a page without any functional issues cropping up - the ad blocking tech even then was _good_.

Then came paywalls - pay for this content, or you won't see it. I suppose, then, I won't see the content.

Then came JavaScript frameworks in the 2010s - ads weren't assets anymore, they were actually part of the content. But for the most part, the Web still worked without JavaScript, and many sites (for what reason, I still don't totally understand) would gracefully fall back to presenting "just the content" if JavaScript was disabled. So I traded an ad blocker for NoScript, turning the lot of it off instead. Some sites need a minimal amount of JS to function, which I'll allow (first-party and CDNs like `jsdelivr`). But if you require JS from stripe.com, I suppose I also won't see then content.

But eventually those JavaScript frameworks became bold - displaying partial content, or no content at all, became the fallback. I count the "Continue reading" button among these (and I get why - tracking who actually read the article must be vastly more lucrative than counting pageviews), though some pages are so bold as to display _nothing_ but the "You need to enable JavaScript" text itself.

Most recently, I've noticed a new tactic: setting a CSS "opacity: 0;" on the page, then removing it with JS, even when JS is not required to load the page. Removing the rule with dev tools shows the entire page. I can only assume this is a way to make sure the page doesn't become visible until all of the content is loaded, but again, the content includes the ads, upsells, and otherwise.

Thankfully I've logged into Hacker News and posted this comment without JavaScript enabled. I wonder how long I'll be able to do that.

don-code··on DeepfakeHTTP – Your 100% static dynamic back end
This could be great for mocks.

At one point I was trying to automate against an internal tool that had a (useless, for my purposes) dependency on AWS. Rather than give my pipeline access to AWS, I strapped VCR (https://github.com/vcr/vcr) onto it, ran it on my laptop with my own AWS permissions, and then just ran the automation with VCR in front of it from there on out.

don-code··on 1997: Netscape Crossware vs. the Windows Web
My understanding is that this and many other codebases that Sun acquired (Forte/4GL, for instance) ultimately ended up merged into what is today NetBeans - itself a Sun acquisition.
don-code··on The Rich Don't Penny Pinch
I've noticed a bathtub curve in cost of ownership on many things. Typically, I do save a good bit of money up front by buying used, and then try hard to repair rather than replace. Eventually, though, a failure mode of all gadgets seems to be an increasing-at-an-increasing-rate amount of spend needed on upkeep.

Admittedly, I've been notoriously bad at realizing that I've entered that phase. On three high-profile occasions (two computers and a car) I've exceeded the saleable value of the thing in upkeep costs, in the span of just a few months - it would've been cheaper to divest and replace.

Determining that you've crossed that inflection point is, I assume, a skill.

don-code··on The Rich Don't Penny Pinch
It's difficult for me to sympathize with coworkers who have trouble making rent, knowing that they make the same amount of money I do, but have wildly different spending patterns. Juxtaposing $200k+ of student debt with $100+ bar tabs, multiple nights per week (to be fair, the company we were at was on a death march at the time) doesn't seem like taking an opportunity, to use the article's phrasing - it seems frivolous.
don-code··on Ask HN: Senior Software Engineer to Engineering Manager
If you're transitioning inside the same company, you have the added benefit of knowing the people you'll be managing ahead of time. This isn't always necessarily a positive thing for the same-company argument. You'll definitely be more aware of the "people problems" that will now become "your problem".

If you're OK taking on those problems, go for it. If not, you're essentially rolling the dice - you may end up with a situation that's better or worse.

don-code··on A woman who rifles through New York’s garbage, exposing the city’s excesses
The article talks about, but seems to conflate, what I see as two different problems. One problem is that retail outlets destroy and throw out unsold inventory; the other is that individuals throw out unwanted, post-used goods. The latter of these problems seems like it could be much more manageable, but if we lump it together with the former, we risk minimizing some solutions.

I've gotten the lion's share of my furniture either from individuals or from Craigslist. Right now, I'm sitting in my kitchen eating lunch, on chairs that I did buy new, and looking around: my "decor" are plants, empty espresso roast cans, mason jars salvaged from sauces, and empty craft beer cans from various local breweries (we're lucky to have three or four per town, and they all have super-creative labels). This is after just getting home in a used luxury car, earlier today having woken up to a 70s Realistic clock radio, typing this post on an off-lease (but rock solid) ThinkPad, and so on.

The picture I'm trying to paint there will differ depending on your own attitudes towards the "waste" stream. Most people around me have commented positively on it - the furniture is "nice", from old-money brownstones in downtown; the beer can collection is a great conversation starter. But of course, there are still some (and luckily, seemingly, a minority) who can only see it as trash, a sign that I've "opted out" of basic economics, or at worst, that I just don't care enough about my appearance.

don-code··on Life before smartphones (2020)
Common in restaurants as well. It's downright bizarre to think about now, but I remember as a child, at family restaurants like Friendly's and Howard Johnson's (which itself is an anachronism), being asked by a cheery-faced hostess whether we wanted "smoking or non-smoking".
don-code··on Life before smartphones (2020)
Much like living outside the Matrix, would you really want to go back, knowing what you know?

Yes, you can use a paper atlas. I have an 8-year-old car with GPS, and a 34-year-old car without. I bought a map book for the 34-year-old car, thinking it'd be a "period accurate" way of driving it; it's anachronistic at best, and frustrating at worst - can you read the street signs, and did you drop your compass under the seat? In the 8-year-old car, I can hit a button, say "Navigate to (an address)" _while driving_, and it figures it out.

Some of these I do on principle (only pay with cash, avoid loyalty cards, etc.), and I accept a compromised UX as a result. Your mileage may vary, depending on how much you get out of these things, but the immediate impact of them seem generally negative.

don-code··on Ask HN: Is Linus Torvalds a Great Man of History?
This seems prescient. There were cutting-edge products being delivered on non-commercial BSDs well through the 90s - Hotmail, for instance. But most of those solutions were being delivered on commodity off-the-shelf hardware.

Linux's "killer feature" for adoption may just have been the copyleft license. If device manufacturers had delivered today's generations of single-board computers, networked cameras, Android phones, and who-knows-what else on a permissively-licensed OS like BSD, each of these device trees would have had no mandate to make source available - and as such, I'd bet that any one entity (Samsung, LG, HTC, etc.) maintaining a device tree wouldn't have seen fit to open-source their "trade secrets" in the ARM ecosystem. Which, I'd also bet, would have led to fewer manufacturers adopting noncommercial BSD to begin with, as the "core" distribution would have been less ready to take on new platforms.

don-code··on Amazon Kindles with 3G will start to lose cellular network access in December
This still seems better than BMW's model - cars were shipping with 3G modems all the way through 2014, and up through 2015, when the whole fleet went 4G. But, since most everything is subscription-based, BMW just stopped renewing subscription contracts for 3G-only cars in 2017. More confusingly, some models are eligible for a new radio (which I assume is a lot of money), and some aren't, even though it seems to vary more by model than year of manufacture.
don-code··on Reprogramming a Sennheiser Microphone
Depending on what device you're reverse-engineering, the random integers can be:

* Hard-coded encryption keys

* Hard-coded IP addresses (remember, IPv4 addresses are 32 bits long, which is convenient for many embedded CPUs and even some MCUs)

* Hard-coded (instead of random) hash salts

...and generally all manner of things that shouldn't have been hard-coded. That's not to say all constants are bad, but I can see 0xFF000000 and know it's probably just an uninteresting bitmask, then see 0x22C1211E, and maybe with some training (I can't do it by sight alone, for sure) see that it's an IP address in AWS address space.

don-code··on Why does man print “gimme gimme gimme” at 00:30? (2017)
I've been learning to recognize when I've been presented with a solution, rather than a need. Often times the solution answers the need, but lacks knowledge of either side effects, implementation time needed, holes in leaky abstractions, or something else that makes it less than ideal. Walking back to the need helps in proposing a better solution.
don-code··on 5 Habits of Highly Ineffective Remote Workers
https://www.animalz.co/blog/bottom-line-up-front/ is the blog post that I can most credit with changing my written communication style. Knowing what's expected of me prior to engaging in a full-fledged conversation helps me triage, and also helps me prime the discussion when I context switch over to it.
don-code··on 5 Habits of Highly Ineffective Remote Workers
One behavior that I desperately wish had been called out: individuals who, seeing a back-and-forth over Slack, fail to realize that the communication is effective, and post a single message containing a Zoom link. In spite of this sounding like a pointy-haired boss type behavior, I've seen all sorts of engineers do it.

The intent is obvious: stop everything else that you are doing and join, so that it's the only thing that you are doing.

don-code··on I had to give a wrong answer to get the job (2017)
Late but, for the record, I did get positive feedback from that interview, and the interviewer admitted his mental model was wrong.
don-code··on How to split a string into an array in Bash? (2012)
This whole class of problems, where there's no general consensus about how to achieve something, makes it incredibly difficult to train juniors who still have a one-correct-answer mindset. It makes me wonder how any of us got past it in the Java world, where there were no fewer than three commonly-accepted ways just to represent time.

Declarative languages, like SQL or (dare I say) Terraform, seem to be good teaching tools in that regard.

don-code··on Windows 96
Funny.. my least favorite part of floppy installs of Debian is that it had exactly the opposite problem: reading floppies was hit-or-miss until _after_ disk 2 or 3.
don-code··on Why we don't dole out many compliments, but should
My experience has been almost the exact opposite - I feel that I _receive_ too many compliments, and as such they always come across as trite, even if genuine, which in turn is discomforting rather than empowering.

Who's given the compliment is, of course, a key factor. If it's a critical coworker, I'll be empowered by that. If it's a yes-person coworker, it's likely trite. If it's a friend who I've just power-sanded a deck for, it's appreciated. If it's a family member complimenting me on a sandwich (it happened recently!), it's uncomfortable.

don-code··on Digitize MiniDV Tapes with Linux
Something I learned from floppies is that different drives (or decks, in this case) have different read characteristics, so the "bad" segments of tape are different depending on what you're playing it back with. I once was able to use that random fact to restore some data off an old floppy - it took three drives/PCs, but I was able to get a clean read of each block, and piece them together.

Extending that to DV tapes: the DV format is interesting in that every frame is a keyframe, and encodes an entire image. That's in contrast to H.264 and friends, where frames can be predicted, and/or just the difference between a prior and future frame can be encoded. DV also encodes a timecode into each frame. So if you had multiple DV decks and were able to get a bunch of unclean imports, it seems like it'd be trivial to write a small tool that grabs all of the clean frames from each and stitches them together over the gaps in others, according to that timecode.

(Disclaimer: I've never done that, this is a pure spitball.)

don-code··on I had to give a wrong answer to get the job (2017)
I was once in this position, but decided to continue through with the "right" answer anyway. Even though the interviewer was adamant that he was right (as, of course, was I), we briefly stopped the interview and made some Google searches to get to the truth.

I could ostensibly argue that I got the job not by telling the interviewer what he wanted to hear, but by doubling down on the right answer and showing that I had the capacity to prove it.

don-code··on The database ruins all good ideas
Former (recovering?) Exadata user here. I'll go as far as to say that configuring a best-practices RAC cluster is easier than configuring a best-practices MySQL cluster. RAC solves some additional problems, like discovery and load balancing, that MySQL kicks out to the user (e.g. you have to manage DNS and run a tool like ProxySQL separately).
← PreviousPage 10 of 12Next →