2023-07-31

Vicarious Endings

Shortly after we moved into our present dwelling we started sending my then two year old daughter to a local preschool. That was nearly four years ago and today was her very last day there. I've managed not to think too hard about it for the last few week, but driving over to pick her up today is all hit me like a ton of bittersweet bricks. We're talking Time Stands Still playing in a loop in my head and flashbacks to my own transitions through the years.

Yikes!

The funniest part of it is that we've been scaffolding this change for her for more than a year. I just somehow forgot to scaffold it for myself.

2023-07-24

Experimental

The other day I happened upon Heb Sutter's closing talk from CppCon 2022, about cppfront, his experimental attempt to provide a new syntax and set of defaults for C++.

Intriguing, I thought. If only I had a not very important project to try that out on. Well, that and some time, of course.

I've also been reading—but not working—Crafting Interpreters by Robert Nystrom.1 Up to a point not working it was going just fine because this is not my first exposure to the art of compilers and I could see what he was doing because I understood why.2 But last week, around section 25.1, I started to feel that I was losing the thread in pretty significant ways.

A marriage made in ... well, some other plane of existance, I'm sure.

I give you cpp2lox. Or at least the raw beginnings of it.

Observation: It's easy to forget how many nice things a good development environment does for you until you have to do without. Right now I have no auto-formatting and no syntax highlighting for cpp2, much less IDE support behaviors like completions, on-the-fly static analysis, etc. And it shows in the condition of the code. Well, you've been warned.

Observation the second: It's also surprisingly hard to notice violations of expectations in the experimental syntax that I'd have noticed pretty quickly in the official syntax. Trying to populate a std::vector of a user defined type was throwing some very unclear and mysterious errors that kept me confused for far longer than it should have given that the problem was simply that I hadn't defined a copy constructor for the type.


1 I highly recomend the book which is available for free online (and you should read part of it that way to get a sense of the book's mixture on technical clarity and humor), but I recommend buying it if your financial circumstances allow. It goes through two complete builds, line-by-line. The first is implemented in Java, and parses the source to an abstract-syntax-tree the walks the tree to interpret the source. The second one is done is plain ol' C and eschews the AST in favor of generating a bytecode for a custom stack machine, which it implments to run the bytecode. I'm not done with the second half yet, and still have the closure implementation and the garbage collector ahead of me. The interesting thing to me is that despitre the title the book gives you all the skills to build a source-to-metal compiler if you are so inclined.

2 Mind you my main prior exposure was working through Jack Crenshaw's series of articles Let's Build a Compiler which does a single-pass, immediate-code-generation, recursive-descent job on a Pascal-like language targets at m68k assembly.

2023-07-17

Vicarious success

Smiles and selfies after the committee introduces the new doctor.

I was thrilled to be invited to attend a former student's dissertation defense last weekend. Even better, another colleague from those heady days showed up as well, so it was reunion and memories all 'round as we celebrated. I'd like to say that the talk itself was enlightening, but honestly it was magnetohydrodynamics so I was hopelessly lost from the first moment. But at least she got a really nice seminar room for the talk.

Seeing someone develop from a bright but untrained newb into a compentent young professional is one of the best parts of teaching at the colege level. Getting to peak in on their further success is icing on the cake. I know I've been grinning a lot when the subjct comes up and can only hope I've managed to avoid being insufferable.

Even better I know of another former student also moving through the pipeline. You know who you are. And I am definitely angling for a invitation to that defense as well.

2023-07-04

More registration bullshit

I ordered something online last month (hardly an uncommon occurance). The vender shipped it and gave me a tracking link which I've been checking periodically. As of July 22nd, the tracking website lists it's status as

Shipment Received, Package Acceptance Pending [name of my town]
and it claims it will be delieverd by the very next 7pm. Every time I look it's coming by the next 7pm. For nearly two weeks, now.

Now, I have to say that "Acceptance Pending" is mildly worrying,1 but the ongoing lack of progress is a bigger deal. A few of days ago (when the status hadn't changed2 for eight days) I ran out a patience and decided to get a human being involved. I don't think that's unreasonable, do you?

Anyway, you might expect there to be some kind of link or button explcitly for escalating a case to a person. There isn't. Presumably that's a behavior engineering thing: if you make it too easy to escalate, people will avail themselves of the option enough to cost you real money. Disappointing but not terribly surprising.

So try drilling down both from the tracking page and from the home page.

The tracking pop-up does offer to let me log into the system so that I can see my "full shipment progress",3 but I have to give them lots of personal data to do that. Why? Why is knowing my name and where I'm recieving package not enough, huh?

The "Contact Us" part of the home page has a varienty of toll-free numebrs to use t oget put in a queue to talk to one of their call centers, which I suppose is what I'm going to have to do.


1 Did they lose the package between pulling it off the truck and sorting it for local delivery? Is the box more dmaged them they're comfortable with? Something else?

2 Except for updating the project deliever date every day to keep it at the next 7pm, of course.

3 That offer is on the "Shippment Progress" tab of the tracking pop-up. I guess it's really a Partial Shipping Progress tab. Or something.