HN user

paulrpotts

538 karma

http://thepottshouse.org

Posts0
Comments268
View on HN
No posts found.

I have a 2008 Mac Pro that was my daily driver for video and audio production for 16 years before I had to give up on it. The only real reason I had to give up on it was that I couldn't upgrade the software and all the certs were expiring. I was using it for a network music server as well, until Apple broke iTunes home sharing functionality. It's sitting in the hall in my basement. The hardware still functions perfectly. It had four hard drives in it, and I've got all that stuff on a Synology now. It remains the most reliable computer I have ever owned. It literally only was ever off when there was a power outage. I might wind up installing Linux on it for my kids but we already have several little i5 NUCs that are far faster and quieter and easier on our electric bill, so I'm not sure there's much point to that.

Location: Southeast Michigan

Remote: Yes (available for remote work only)

Willing to relocate: No

Technologies: ARM Cortex-M, Agile, Bootloaders, C, C++, Device Drivers, Embedded Systems, FreeRTOS, GNU/Linux, Microcontrollers, Microsoft Windows, Python, QEMU, Tech Writing, Test Automation, Testing

Résumé/CV: https://thepottshouse.org/paul/portfolio/Complete_Resume.htm...

Email: paul@thepottshouse.org

I am seeking fully remote work in low-level embedded or related software development, ideally working with a team in Central, Mountain or Pacific time zones. I would prefer to be a full-time direct hire, but will also consider hourly contract work full-time or part-time.

I have decades of professional experience designing, implementing, testing, debugging, documenting, and maintaining software projects in a variety of languages, on a variety of platforms. Since 2000, I have specialized in embedded development. I also have experience writing documentation and training materials, leading small teams and projects, and mentoring junior engineers.

I will not forget Argo AI trying to convince me that if I stayed with the company for four years, by then my equity would be worth an estimated $700,000. I made it just over a year in stressful, high-pressure environment, with a toxic manager; I knew it was time for my weekly one-on-one because my heart rate monitor would start giving me warnings. He loved to humiliate individual employees in our scrum team meetings; at one point I called him out on it and demanded that he apologize for his unprofessional bullying. He actually did, but our working relationship was never good after that.

Anyway, my enormous efforts and long hours got me a "meets expectations" review. The company imploded just after I completed that first year, and so my equity was worth nothing. Good times!

Location: Michigan

Remote: Yes (available for remote work only)

Willing to relocate: No

Technologies: ARM Cortex-M, Agile, Bootloaders, C, C++, Device Drivers, Embedded Systems, FreeRTOS, GNU/Linux, Microcontrollers, Microsoft Windows, Python, QEMU, Tech Writing, Test Automation, Testing

Résumé/CV: https://thepottshouse.org/paul/portfolio/Complete_Resume.htm...

Email: paul@thepottshouse.org

I am seeking fully remote work in low-level embedded or related software development, ideally working with a team in Mountain or Pacific time zones. I would prefer to be a full-time direct hire, but will also consider hourly contract work.

I have over 30 years of professional experience designing, implementing, testing, debugging, documenting, and maintaining software projects in a variety of languages, on a variety of platforms. I have developed software for platforms ranging from the Apple Macintosh, to Microsoft Windows, to Linux, to the Apple Newton, to embedded devices. Since 2000, I have specialized in embedded development. I also have experience writing documentation and training materials, leading small teams and projects, and mentoring junior engineers.

Let's say by "didn't need money" you mean I have an income that is enough to fully support my family and keep my home in good repair and even make home improvements (we need some big repairs to gutters and fascia, deck, HVAC, etc.) That's not a small number especially factoring in health care... but let's assume it's taken care of and all our needs are taken care of, and I even have a little disposable income for IT, music stuff, books, etc. I could continue with the things I've done in my limited free time for decades:

- writing non-fiction and fiction - making original music and podcasts - developing educational hardware/software projects - developing my own programming languages - continuing to refine and catalog our large home library - gardening and transitioning towards growing more of our own food.

I'd spend much more time involved with my kids since my wife and I already homeschool, but I can't put very much time into it now.

It's a funny dunk on the language but I was hoping for some actual root cause analysis. It sounds like the change actually uncovered a pre-existing bug which was not (yet) causing a crash (but may have been silently overwriting memory). In that case, the root cause was the existing code's failure to use memory safely. There's not much point blaming a 50-year-old language, which was never designed with modern type safety but instead has features that allow deliberately throwing away safety to make low-level systems programming possible, for not having modern type safety. The generation of programmers who learned to use it as safely as possible (which I belong to) are getting old and cranky. We're now inclined to say that the person who wrote the pre-existing bug needed more experience. We'd all love to use Rust for new code but there's an awful lot of legacy C code that needs fixing.

Bob's Red Mill steel cut oats is fantastic. In recent years I've been making it as a savory, not sweet, breakfast - topped with grass-fed butter, a fried egg, and some thyme from our garden, sea salt, and black pepper. Energy for hours!

iTunes was a complex mess with too much functionality in one app, but for many years it worked really well for me. Replacing it with the new apps has been a process of removing functionality I relied on, obfuscating and making less user-friendly existing functionality, and pushing people into using cloud services. Some examples:

- Older versions of iTunes had a great "home sharing" function that allowed sharing the library with devices running iTunes on the LAN. I used this very extensively. iTunes running on my 2008 Mac Pro still runs the server, and there is kinda-sorta client functionality in Apple Music, a bit hidden, but it is not reliable (constantly disconnects mid-song). Also, there was never an iOS client which would stream from this server. There were some half-baked attempts at open-source apps that would do it, but Apple broke them by encrypting the streaming across my own LAN.

- iTunes stored podcast and audiobook files in a simple and transparent way. Now podcasts (accessed using the separate Apple Podcasts app) are stored buried in Library subdirectories with long gibberish filenames. Although they're really just MP3 files with extra tags, it's now very difficult to just grab an episode by filename and save it elsewhere or forward it to a friend.

- iTunes had best-in-class tag editing. Apple Music's tag editing is buggy.

- Don't get me started on the "iTunes Match" debacle. https://www.macrumors.com/2021/08/05/itunes-match-users-repo...

Jobs had a vision of the Mac as a media hub for managing your collection and I liked that vision. Apple even (eventually) removed DRM from iTunes downloads. Forcing me into DRM and subscription services? No thanks. What I've done instead is, gradually, buy many dozens of used CDs and rip them, to replace any lossy iTunes files I purchased years ago. My entire library is now CD + ALAC (lossless) + purchased FLAC files that some vendors offer (and which were never supported on iTunes or Apple Music, but play flawlessly from the Synology). I use rsync to sync my iTunes library to my Synology NAS, and use Synology's free iOS apps to stream the whole library on our iOS devices, or on laptops and desktops, just use the web player. It works great and I can stream to stereo receivers without any difficulty as well using an AudioEngine B-Fi. No streaming services, no monthly bills.

Father of eight kids here. I wouldn't really speak of SUVs and minivans in the same breath. SUVs really aren't very suitable for transporting a bunch of kids. They generally don't have extra side doors so kids will have to climb over seats. And despite being so huge, they often hold a shockingly small amount of cargo, unless you add a cumbersome cargo container to the roof rack. We had a Tahoe with a painfully small third row seat and could not even bring a whole load of groceries home in the space remaining in back. It was not possible to use it for camping unless we brought a second car (a Honda Element) to actually hold the stuff. Older minivans like the (now radically redesigned) Dodge Grand Caravan were far better and had far better visibility. I have really not kept up with current minivans - a lot of the models which would hold more passengers have disappeared - but I do think they are designed with better safety features, not to mention better mileage. It's easy to say "just get a Sprinter," but they are shockingly expensive even on the used market.

I guess? I mean, I would happily consider a Framework mini-PC, but buying literal laptop boards when I don't actually want a laptop, and then having to, what, cobble together a power supply and case, etc? I found it a lot more convenient to buy a barebones NUC, put in some Crucial RAM and an SSD... considerably cheaper too.

This is disappointing - I own four of these. I deliberately bought the older new-old stock units that were on clearance prices. One sits on a shelf in my basement next to my Synology NAS, and is a headless Ubuntu box I use as a very low-end build server for my blogs and writing projects. It mounts a server directory, I VSCode into it and run Makefiles. It works wonderfully... plenty fast. One is a media server machine in our family room, mostly for streaming TV shows. One is currently waiting on a replacement fan. One is a Windows box for those rare times I need to run Windows specific programs for work.

These were the perfect sweet spot for me between abusing low-end laptops and shelling out real money. My kids put them together with me and it was a nice learning experience for them, too.

I was hoping I'd be able to upgrade/replace these piecemeal as needed. I guess I'll have to look into other replacements for when these give out.

Is this authored by ChatGPT?

I see "This context sets the stage for the introduction of the Akai S2000, which we can discuss in the next section, "Development and Release." Would you like me to continue with this section?"

Then, later, "For the next section, "Impact and Influence," we can explore how the Akai S2000 influenced music production and discuss notable artists or albums that used the Akai S2000. Would you like me to proceed with this?"

At least the sources cited seem to actually exist...

I do think there are a few legitimate uses in straight C code, usually in a multiple error exit condition with cleanup situation, or to break out of multiple levels of nested loop without adding flags. I myself was indoctrinated hard into structured programming early on and so I cannot bring myself to use it but reading other people's code, I don't mind it if it is used in one of these cases and the flow is clear.

Actually I do mind - I'd like to see C with some additional control structures. I wrote a bit about this in a blog post a few years ago: https://thepottshouse.org/paul/the_books_that_wrote_me_blog/...

Also, I feel like many developers never learned do/while and continue, or the variations that are possible in a for loop other than just incrementing and testing a single variable, and their code can often be simplified using these things while removing goto.

It doesn't seem like it is at all idiomatic in C++ so I'd be curious to see what you're doing. As another poster mentioned it would certainly interact poorly with RAII, but not all code needs or uses RAII in all functions.

I used to hear what my Model 1 was up to by putting a little transistor radio next to it and tuning it until I could hear the screeching RF noise it put out. It would give me a sense of whether my code was still running, stuck in a loop, how tight the loop was, etc.

My stepfather hated the fact that whenever I was working on it, he couldn't get clear radio reception for his classical music listening.

I have a personal web site with almost 1500 pages containing blog posts, newsletters, reviews, and articles going back to the late eighties. I've been slowly consolidating all my writing on this site. For years I had kind of assume that if I build it, (eventually) it will be discoverable via organic search. I recently determined that I had to put a Google ID on it and a sitemap file. So I've found scripts, imperfect thought they are, to crawl everything and make a sitemap. Google has indexed some of it, but seems to be stalled out, with the bulk of the pages stuck in the "Discovered, currently not indexed" state, and now I'm not sure if some of the best content will _ever_ be searchable via Google. Really disappointing.

This is so context-sensitive. I have a large family and I've had some rough employment years. Our basic expenses are high. We took a huge loss on a house. My retirement savings are in terrible shape. I've had to cash out three different 401K accounts over the years to pay the mortgages. That's of course a terrible thing to do, you lose a lot, but it's also sometimes the only realistic option. If I had been able to leave those accounts untouched, I'm not saying I'd be all set for retirement, returns have been very uneven for decades, but I'd have 2-3x the retirement savings I actually have today.

For a while I was working for a self-driving car startup; I had an equity arrangement that, if everything went _just right_, would supposedly be worth about 700K after 4 years of employment. I knew this was a long shot, but I was working hard for that, harder than I might have otherwise been willing to work. What actually happened is I hit the one year mark, 1/4 vested, and shortly after that the company shut down, so that extra work and stress only ultimately harm, not help me, although I did learn a bit, though not as much as I was hoping to.

So, a windfall of enough money to pay off my mortgage or significantly improve my positioning for retirement. $700K had my attention. I know that's just a theoretical number and I'd have to sell the equity and take various hits on that, but I could fantasize about retiring early, shifting to part-time, etc.

A smaller amount like $100K would allow me to make a huge payment on our house, which would drastically reduce the interest I have to pay over the life of the loan, so that also could be life-changing, but not as dramatically.

$50K would bring back most of what I blew from savings after having to cash out the last 401K. I think $75K would about make up for everything I lost because of that last job loss.

$10K would probably immediately go into projects, like repairing bathroom ceiling, replacing a dishwasher, getting some more shelving, a couple more desks for my kids, upgrading some ancient laptops, etc. Or, we might be able to repair a car that's been sitting around for months waiting on money to repair it. Not really life-changing but life-improving.

$600 is about week's food expenses for our family of nine and I wouldn't say no to that - it would allow me to increase our savings a little bit.

$100 is pizza and wings for the family.

Yes, sort of. Having programmed since I was ten years old as a hobby, having taught myself a couple versions of BASIC, some Z-80 assembly, some 6510 assembly, and some Pascal, I went to college planning to be a Computer Science major.

I quickly discovered that I was really ill-prepared in math. I took geometry and Algebra 1 and 2 in high school, with some pretty awful teachers. My school didn't offer AP classes. I had taken about everything my high school had to offer including chemistry and physics, but I failed the math placement exam and was in classes with 17-year-olds who had 3 semesters of AP calculus or IB classes. So, I had to take remedial algebra and an elementary functions class before I got to Calculus 111. That class was heavily oriented towards math majors (prove everything). Some of my fellow CS students realized this and started taking math requirements over the summer at other schools that taught them a little easier. A CS major would have required more calculus, discrete math, abstract algebra, linear algebra and probably some other classes that I have forgotten; it was basically a math major + programming.

So, I had to make a shift - I decided to major in English (my other love) and take a Computer Science minor. I took every programming class my schedule allowed (operating systems, assembly language, 2 semesters of Pascal+data structures, a programming languages class, an algorithms class, audited a computer architecture class) and taught myself C and Macintosh GUI programming on the side, and started developing HyperCard XMDs and XFCNs and working on instructional multimedia for faculty. I've worked as a software developer/engineer more or less since graduation in 1989 with a B.A. degree, doing all kinds of programming, including >20 years spent specializing in embedded and DSP programming (yes, of course I use math constantly, mostly algebra, but some calculus concepts such as PID and digital filters, a practical rather than whiteboard approach), but with an English degree, just teaching myself as much as I could on the side, and I never went back to school.

So, I kind of love Computer Science, I definitely love programming, I definitely love math despite still being relatively bad at it, but I really don't like academia.

Nicholson's eyes don't just graze the camera or sweep past it - he's clearly been directed to pause (even for a tiny moment) looking directly at the lens. It's the opposite of what film actors are trained to do, which is avoid looking directly at the lens. In a typical dramatic film a shot where an actor looked directly at the lens would be a ruined take.

I think the writer's point is that Kubrick has been analyzed _to death_ on social media. It's true - there's a huge ecosystem of YouTube explainer videos, listicles, in-depth articles about his shooting style, camera tricks, editing, symbolism in his films, etc. So, I don't think he's actually wrong. In previous decades there was an ecosystem of books and magazines about films (for example I have books on the making of Dune, the making of Blade Runner, the making of Star Trek, books of essays on X-Files, Serenity, and Cinefex magazines that go into amazing detail on how the visual effects for Lord of the Rings were made). But most of this sort of thing seems to have shifted to online.

I was hoping for some decent advice for teams that are trying to do get-togethers with remote employees. What I found instead was an article bragging about an in-person, not remote, team junket. So, the title misled me completely I found it pretty startling that while 10K Americans are still dying a month from COVID, there was not one word about COVID precautions. I hope this little junket hasn't cost anyone the long-term disability of long COVID. You don't want it.

I have used a number of tools for this: RCS, CVS, commercial tools like ClearCase, Visual SourceSafe, and Voodoo, as well as Subversion and Git.

Some of them had huge weaknesses evident from the start - for example CVS had little support for maintaining directory structures. The upside of CVS is that when things got screwed up, which they did often, I could go in and fix up the hidden files, since they were more or less human-readable.

Git seems to have the edge because it is reliable - I've never seen it crash - and because it can do just about anything I've ever wanted to diagram out. It's also very good about being able to roll back mistakes.

My beef with Git is the user interface. It's often still very hard to figure out exactly which command I need and the structure of commands, and their options, are often very non-orthogonal. Using checkout to branch is pretty much the simplest example I can think of. The fact that so many git commands have output that tells you what to do to fix the inevitable problem you're going to run into next is kind of a tell that the functionality is badly structured into commands. I have two "front ends" to Git - TortoiseGit if I'm on Windows, and Stack Overflow if I'm not.

If you've never heard of Voodoo, it was a commercial product for Mac and worked really well, with its concept of "orthogonal version management." I think this concept is still interesting: https://link.springer.com/chapter/10.1007/3-540-60578-9_4 It also had a feature I miss frequently, which is meaningful support for non-text files. Back when I was doing Mac programming I used this a lot.

The other one that I think has things worth studying is darcs. The Haskell source is quite amazing, although it has not really become popular in part because, at least when I last tested it, it was pretty slow. http://darcs.net/

I think Git's ties to GitHub are problematic. I know it's not required to use it with GitHub, there's the GitLab alternative, but it's the infrastructure that's been presented to me at my last few gigs. It has a lot of nice features but it encourages so much ceremony about the most minimal code change that it adds a lot of friction and it's easy to mistake activity for progress.

Hmmm... well, I got into it a bit earlier and so when I got to the Mac, I already had some programming experience in BASIC, Pascal, and assembly. So I used HyperCard, but I also learned how to write XFCN and XCMD code resources to add functionality to HyperCard. I used PostScript in the first LaserWriter, but also figured out how to connect it to a terminal and give it PostScript commands directly. I was motivated to teach myself as much as I could... probably in no small part because I was bored with my regular class material.