< | >

Hacker's Diary

A rough account of what I did with Emacs recently.

January 31
Funny moment in tonight's Blacklist episode where I'd swear the framed picture of a church hanging on a wall was one where a grand-aunt of mine was married in the early 1900's. Thing is, her church was in Chicago, and this church was mar dhea in Detroit, so who knows.

January 30
I just noticed that tonight's Blacklist featured a guy creating pregnancies for a scam whose name was Hatcher. Sigh. Try harder, script room.

January 29
Our robot vacuum appears to have gotten slightly confused with the minor rearrangements of things in the course of moving stuff for painters. Everything is back more or less the way it was, but the robot's location function seemed unable to figure things out, which caused a variety of questionable behaviour from climbing all over its own recharge station to deciding the whole house needed to be remapped. Eventually I put it down in the middle of the kitchen - least likely to have even tiny changes - and it accepted that it did in fact recognise its environs.

You can't just point at things and say they're files. Or maybe you can. This honestly feels a bit like the whole "everything is a file" thing was extrapolated to an extended joke in Bell Labs and the people who were supposed to be pranked took it seriously.

January 28
More house-reordering. Finally back to some semblance of normality, although my home office is more of a mess than usual. Of course, all this activity meant that once again I've not tried to automate the LetsEncrypt thing. More interestingly, the Server application didn't like my PKCS12 file this time around and I wound up having to import certs and key manually.

January 27
We spent most of the day trying to put some order on the house after all the disorder from painting during the week. An almost perfect score achieved on "reassemble the cabling behind the TV". During the course of the painting we discovered that the bracket holding the TV to the wall is, shall we say, a little overwhelmed: someone - names unnamed, but it very much was not me - figured that it was ok to attach the mounting bracket onto the plasterboard using rawlplugs and screws that only pentrated said plasterboard, rather than the previous installation where the mounting screws went right through and were anchored in the wall behind. So I guess now I need a handyman because if I do this myself I'll likely cause structural damage and smash the TV.

This is a fascinating write-up on REST. The really interesting bit here is effectively returning callbacks to the client for synchronous calls; this allows the server to vary the nature of the callback with no work on the client side other than to invoke the callback as provided. So the server could e.g. send back a callback with a smaller fetch size or a longer delay between calls in order to shed load.

January 26
Well, that was an excellent if short season of Vera; I am also enjoying the books, but the "season" there is even shorter, since the series writers have extrapolated the characters and their environs from 10 - soon to be 11 - books into about 50 TV episodes.

January 25
One of those days... a thing wasn't working for me and I'd been assuming various reasons and then eventually actually looked at it. Four typos in about ten lines of code, all in places that syntax checking wouldn't catch. Pfft.

January 24
The painting is almost done (well, except for the bit where someone has to find and fix a leak first) and it's been totally worth the disruption: the guys have done an excellent job.

I am childishly pleased that I managed to do some simple scripting in OpenHAB of the "if this item changes, update that item using this computation" type. Granted, it seems harder than it should have been, but still.

January 23
I have some LetsEncrypt certs due for renewal and the main reason I've still not done it is that I keep telling myself I'll finally figure out how to do the last step of hands-off cert renewal and incorporation into the Server app on an old macOS box. The truth is that at some point I had it mostly working and the final piece was something to do with ACLs on the cert, and it was annoying to debug and I eventually gave up on it, and every three months I tell myself I'll have a look this time around, and eventually with a day or two on the clock I use the script that fetches the cert and exports it to a PEM file which I drag and drop into the Server app. Again.

Painting continues. For a task that involves applying wet adhesive stuff to the house, there's sure a heck of a lot of dry non-adhesive dust covering pretty much everything.

January 22
Painting going on in the chez today. Which means, of course, that everything is everywhere and we were only able to watch The Blacklist through me rooting out some cables and bodging things together sufficiently. The show has gotten distinctly soggy: they've never made much of Elisabeth's supposed ability as a profiler, but not noticing who her neighbour is when said neighbour is dropping double-entendre hints throughout their every conversation is ... eye-rolling.

January 21
Things previously mentioned: the OpeHAB install seems to have stablised, although I'm still considering buying a bigger boat Raspberry Pi to run it on, and I'm using LSP-Mode both at home and at work with mostly good experiences (there's some breakaage in the office version related to my Emacs version which I mentioned previously, but it's mostly more of an annoyance than a showstopper).

Of course as soon as I write that the OpenHAB install throws a fit and locks me out of the Pi. Great.

January 20
The current season of Vera is really good and I've been chewing through the books as well. The book character is a lot less sympathetic, because you get her internal monologue and, well, it's not always the nicest.

January 19
Oh dear, someone thought Blacklist needed an AI/Singularity episode. Almost, but not quite, as ridiculous as the assassination by beetle episode.

Kill Bill Vol. 2 (last watched January 16, 2005) kinda makes me feel the whole Cult of Tarantino is/was exactly that: I'm sure there's all sorts of homages and sly references I'm missing because I don't have the same movie-watching background as our Quentin, but without those references the movie isn't actually great.

The final episode of Reacher season 2 felt a little hum-drum. I mean, there was only so many ways it could pan out, and the main question was whether or not any of Reacher's team would be sacrificed in the name of George R. R. Mar... the story; I did laugh out loud at a few things but at the end it was kinda so-so. I am reminded that Warren Ellis wrote a piece about the source material some time back, which my approximate recall of was that the stories are like clockwork pieces - cleverly assembled and so on but you know from the start more or less how it's going to work, and all the stories work more or less the same way.

January 18
We fought bravely with the audio settings. Play the recording. Interrupt it by pressing the "OK" button on the control, but em not when the scrub-bar is showing. From the menu that appears, find the A/V prefs. Select audio. From the list of soundtracks - "unknown soundtrack" and "unknown soundtrack", select the one that isn't already selected.

January 17
Non-nerd tech gets on my nerves: watching a recording of The Blacklist (do the kids still call them recordings?) and for some reason audio description was enabled. Could we figure out how to turn it off? No, we could not, or at least we weren't willing to spend more than ten minutes trying before just watching the damn thing anyway.

January 16
A little more fiddling and frankly I've no idea what's going on. I've managed to verify that the client can connect and query and whatnot, but it seems now that Django is having trouble with it. Hmm. I have had a thought... yaaaaas. The problem was that I had tested at some point while I still had the pre-raspberrypi OpenHAB DB still up and running, verified it worked, then went off and did other things, then dropped the old DB, and never got around to updating the toy I'm using to look at the new DB. So when I thuoght it was working against the new DB, it was in fact working against the old one but using the REST API from the new installation. That is now fixed, and I can stop worrying about weird client behaviour, and go back to figuring out other things.

January 15
Last night's adventures did produce a working mysqlclient but... it claims there are no databases on the server I'm connecting to. I'm assuming this is some sort of weird security quirk whereby I can't see the databases unless I successfully connect with TLS or some such. Weird and annoying, though.

January 14
Reinstalling some things and I once again find myself banging my head against mysqlclient. It appears that some combination of the offical install and this Python package results in a build that's missing some critical runtime info that allows it to actually work. Several people have asked the maintainer of mysqlclient about this; for all the threads I found asking he was an unhelpful ass in responding. It seems like if there's a consistent problem with a thing you "vend" (provide, maintain, or are otherwise responsible for), there's some value to adding at minimum a note about that common error to your docs. Even if it's to just collect all your pithy wisdom about how people should learn how dynamic linkers work and how to use a search engine. Who knows, someone may actually contribute a solution.

In the meantime, I am poking this with sticks myself to figure it out. I have one approach that works (set DYLD_LIBRARY_PATH to point to or include the directory where your actual MySQL libraries are), and I think I got something working with install_name_tool (similar to what I described here but updated for paths and versions), but I'm trying to find something a bit more definitive that either fits the MYSQLCLIENT_LDFLAGS or otherwise into the build so I can repeat it for every virtualenv using MySQL.

Ok, so it turns out that setting MYSQLCLIENT_* has no effect if your path includes mysql_config because that'll override whatever settings you want. Weirdly, adding the mysql lib dir using -rpath causes other libraries to not load, presumably because they don't have the @rpath prefix. There's a reasonable chance I'm actually being bitten by a Homebrew install here (which I've been trying to get rid of for exactly this sort of reason).

Right, this works:

If I can, I'll get rid of the Homebrew install and see if that improves the situation any.

Late-breaking discovery: this may not affect the 2.x version of the library, which is nice? Guess I need to upgrade a whole bunch of scripts.

Sadly, no, the 2.x version breaks differently. I think I've had enough of this for one evening.

January 13
Ugh, Powerline devices did the "drop connection on floor" thing again (previously). I hope this isn't a new trend for 2024. At least this time I figured out what was wrong without rebooting any servers.

1917 is very much a "futiliity of war" sort of movie. You forget about the technical stunt - the constant eye of the camera arranged as a single take - and get caught up in the story, but honestly there was a bit of eyerolling when the whole thing took a compassionate pause in the middle of a ruined, occupied village. I wasn't sure how it was going to wrap up, either, so was a little surprised at the ending they chose. It was ok, but I'd probably not watch it again.

January 12
We recorded (!) Vera S13E1 last week and only got around to watching it now. Some of the "surprises" had already been spoilered to death online before the episode was even aired, but it was excellent both in terms of story and visually. I suspect at this point "Tourism North of England" are pouring money into the series in exchange for drone shots of random scenery with a battered Landrover Discovery driving through them.

January 11
Barely have my new mac set up and there's an OS update. Typical.

January 10
Mac hackery proceeds.

We wrapped Season 6 of The Blacklist yesterday and planned on starting Season 7 today except... Season 7 isn't available on PrimeVideo right now. GRR. I could've sworn they opened up all the remaining seasons. Anyway, as fortune would have it I'd snagged the entire season on the DVR box at some point, so we have it available modulo dealing with, ugh, adverts.

January 9
New laptop setup has been a bit lumpy so far. Migration Assistant completed, except for a couple of files of no particular significance that it failed to copy, and now a few things are failing due to the change in platform (x86 -> M2) but ... they're all failing differently. Trying to get some minimal set of toys up and running at least.

The absence of /usr/bin/python is troubling.

January 8
New toy... after more than a decade I've finally sprung for a new laptop. Having picked it up on a workday, of course, I have limited time in which to set it up, so right now it's running Migration Assistant.

Things are coming to a head nicely on Blacklist Season 6, except having "solved" Reddington's identity they are of course throwing it into doubt again.

January 7
Plugged in a Z-Wave inductive electrical meter that I've had for ages and hooked it up to OpenHAB: it seems it's not reporting much, or anything, and I have no idea why. Toggling the reset button got it to report a voltage but that's about it. I have plans for this, if I can make it work, but probably I should put them to one side in favour of stabilising the OpenHAB setup itself. I did go so far as to identify the platform I'm running on because one RaspPi looks the same as another: I'm running on a Pi3 with something like 870MB of RAM, which I assume is 1GB with a few slices reserved for hardware or something. The OpenHAB process is consistently occupying 50% of this, which I presume is why everything goes kaput when anything mildly memory-hungry comes along.

January 6
Good morning, said the Raspberry Pi hosting OpenHAB, or rather, it didn't: it seems it's not responding to the network right now. This might be something to do with the eeros having upgraded themselves last night (and in doing so rebooting the WiFi network), or it might be that the damn thing is indeed not muscly enough to do the job, as I suspected when I set it up last week. Further investigation required.

(interestingly, the eero app claims it's online.)

Powercycled it to get at it. Looks like OpenHAB got resource-starved and restarted at around 7am, but no immediately obvious reason for the system being off-network.

As an initial bandaid I'm pulling all the graphical stuff off this as it was initially set up as a graphical desktop. No point running an X server, etc. if it's not being used.

Every Which Way But Loose was kinda par for the Clint movies of its time: random bar fights, very lightweight plot, a bunch of slapstick gags, that kinda thing. No deep thoughts required.

January 5
The Pigeon Tunnel is an odd sort of thing. Ostensibly it's an interview with John le Carré that runs to 90 minutes, but it's intercut with clips from the movies made from his books and various other media. It's interesting, certainly, but could have done with a little less of the artsy shots of the eponymous pigeons as punctuation.

January 4
A few hundred km in the EV, during the course of which ABRP initially worked really well, then the live SoC updates first got spotty and then stopped outright, meaning the app was counting down from an incorrect value by itself. I've checked the bubblegum and sticky tape that gets the data into the API and it all looked ok, so I don't really know what the problem was.

Also the car pranked me at one point by claiming after a rest stop that I didn't have the keys. That was fun... not.

January 2
Throws me for a loop every time: param: Optional[...] doesn't mean that param is optional, it means it's None-able. To make it optional, you want param: Optional[...] = None.

Caught git doing its amnesiac routine again. Worryingly it seems to be showing me log entries for a file with the same name bit a different path; that really looks like some sort of hashing collision or other weird data overflow issue.

January 1
Happy 2024!

OpenHAB seems to have survived the night running happily by itself on the RaspPi, so it's time to start cleaning things up. First job is to recover the two ZWave TRVs which fell off the network. For this I had to build the ozwcp app because it seems the precise sequence of steps isn't possible on OpenHAB itself, something I'd like to dig into further at some point.


Oh except one minor detail: I accidentally picked the wrong physical devices to re-init (swapped, basically), so that left two of my devices literally wrongheaded. Rather than redo the recovery process I just swapped the heads around and now everything seems happy.

previous month | current month| next month

two oh two four