• 0 Posts
  • 40 Comments
Joined 1 year ago
cake
Cake day: June 11th, 2023

help-circle
  • There were breaking changes between C and C++ (and some divergent evolution since the initial split) as well as breaking changes between different releases of C++ itself. I am not saying these never happened, but the powers that be controlling the standard have worked hard to minimize these for better or worse.

    If I took one of my earliest ANSI C programs from the 80s and ran it through a C++23 compiler, I would probably need to remove a bunch of register statements and maybe check if an assumption of 16-bit int is going to land me in some trouble, but otherwise, I think it would build as long as it’s not linking in any 3rd party libraries.


  • I think the thing with C++ is they have tried to maintain backward compatibility from Day 1. You can take a C++ program from the 80s (or heck, even a straight up C program), and there’s a good chance it will compile as-is, which is rather astonishing considering modern C++ feels like a different language.

    But I think this is what leads to a lot of the complexity as it stands? By contrast, I started Python in the Python 2 era, and when they switched to 3, I was like “Wow, did they just break hello world?” It’s a different philosophy and has its trade-offs. By reinventing itself, it can get rid of the legacy cruft that never worked well or required hacky workarounds, but old code will not simply run under the new interpreter. You have to hope your migration tools are up to the task.


  • I’m a musician. I can’t afford top tier sound!

    Tbh I can live with what I’ve got at home. A garden variety setup today still sounds better than something high-end did when I was growing up. Just give me some decent channel separation and I can zone out.

    Where there is still significant room for improvement is in stage sound. Why do monitors always have to sound like sh*t? It’s like bands spend all their budget on amps and PAs and whatever dregs are left over go to the monitors. And house sound. Don’t even get me started. Maybe their gear was good once (probably not) but it’s invariably seen one beer spill too many.



  • Ah that makes sense.

    I think another thing that might be uniquely Canadian is when you’re paying at a drivethru and you see the machine emerge from the pickup window taped to the end of a hockey stick. That was a big thing during the pandemic for social distancing. I guess more recently, they’ve been moving to less improvised solutions, which is a shame. I really liked the hockey stick!


  • The cash I have on hand comes exclusively from playing pub gigs in a band. That is still very much a cash-driven economy where I am. When I accumulate enough, I usually wind up spending it on music gear, so I don’t think this hobby of mine is major wealth-builder. But while many businesses are moving away from cash, it seems music stores are used to people like me and still allow fairly hefty cash transactions.

    The other day I was settling my tab at the pub and the guy hands me a machine. I say, I’ll pay by cash thanks. He says really?!? Dude, you literally just handed me cash for the gig tonight. Oh yeah…







  • One time I was in Mexico with my wife while our daughter was still a baby and the lady at the front desk of the hotel where we were staying offered us a crib we could borrow. It was a kind gesture, but I was a little concerned because the crib seemed wobbly. I realized there were some screws loose but though I had a multitool on me, the holes were stripped.

    So later, I was talking with a local and he’s like “I can fix that.” He comes over and pulls a pack of toothpicks out of his pocket. He sticks one into each hole and breaks it off so that it’s not sticking out anymore. Then he drives the screw back in. I shook the crib after that and it was rock solid!

    Now I always keep some toothpicks handy. Fast-forward to just this year. My daughter is now an adult living in a condo, and was complaining the screw popped out of a kitchen cabinet door when her roommate yanked on it too hard. “I can fix that.”


  • The thing about the MPW Shell is it was sort of the only game in town if you actually wanted a command line with the classic Mac OS. (There’s an awesome little emulator called SheepShaver if you ever want to explore it btw.) Well, I suppose there was A/UX. I thought it was a miracle when that came out. You have to realize in those early days a good chunk of the operating system itself was actually baked in to ROM. (You had to do desperate things to squeeze a GUI out of such limited resources as existed back then!) So to this day I have no idea how they managed to spin off a 'nix despite that.

    Anyways. I wonder, if you made some sort of template format today, to what extent you could write some sort of conversion tool that would scrape a man page or whatever to rough it in and then you could tweak it to get what you want? man pages aren’t super standardized in their format I guess, so it’s probably more trouble than it’s worth. I like to use Python’s argparse when rolling out scripts myself, and its --help format is pretty rigid given that it’s algorithmically generated. Might be more plausible with something like that? I had a quick look just now to see if you can drill down into the argparse.ArgumentParser class itself to pull out the info more directly, but it seems a rather opaque thing that doesn’t expose public APIs for that. Oh well…


  • This reminds me of something from my ancient past. Back in the early-ish days of Apple, there was a development system called MPW (Macintosh Programmer’s Workshop) which included its own little kludgy shell.

    The weird thing about it though was while you could enter commands on the command line like in any shell, you could prefix them with the word commando (presumably a portmanteau of “command” and “window”) and this window would pop up showing various buttons, checkboxes, etc. correponding to command line options. When you ok’d the window, it would generate the command line for you.

    I’m rather hazy about how all this worked, but I think there was some sort of template language to define the window layout if you wanted to add commando support for your own tool? And presumeably, as you say, you could restrict what’s possible with the window interface as you deemed fit?


  • I started in C and switch to C++. It’s easy to think that the latter sort of picked up where the former left off, and that since the advent of C++11, it’s unfathomably further ahead. But C continues to develop and occasionally gets some new feature of its own. One example I can think of is the restrict key word that allows for certain optimizations. Afaik it’s not included in the C++ standard to date, though most compilers support it some non-standard way because of its usefulness. (With Rust, the language design itself obviates the need for such a key word, which is pretty cool.)

    Another feature added to C was the ability to initialize a struct with something like FooBar fb = {.foo=1, .bar=2};. I’ve seen modern C code that gives you something close to key word args like in Python using structs. As of C++20, they sort of added this but with the restriction that the named fields have to come in the same order as they were originally defined in the struct, which is a bit annoying.

    Over all though, C++ is way ahead of C in almost every respect.

    If you want to see something really trippy, though, have a look at all the crazy stuff that’s happened to FORTRAN. Yes, it’s still around and had a major revision in 2018.



  • I’m with you on this one. There are lyrics on almost every single track for crying out loud. Throw us instrumental lovers a bone won’t you? Songs that are lyrically driven but are otherwise super-repetitive instrumentally tend to put me to sleep.

    What I love about concerts is when the band goes off script and just starts jamming. Even a 5-minute drum solo will have me grinning ear to ear, and that’s what I’ll be remembering on the way home.



  • In terms of consoles, I got the most enjoyment out of Super Nintendo. I think that’s in part because my kids were still young at the time and we played a lot of coop mode games on it before they got older and their tastes started diverging from mine.

    It was the golden age of platformers I guess, and the focus was still solidly on game mechanics over production. I especially liked Bomberman. The gameplay was just perfect the way the challenge scaled naturally even as you got upgrades or added a 2nd player. Literally a blast!