But her emails!
After White House national security adviser Michael Waltz’s idiotic misadventure of texting top secret war plans to reporters, I don’t ever, ever want to hear another word about Hilary Clinton’s email server. Not a whisper.
AG Bonta reminds 23andMe customers of right to delete data
AG Bonta reminds 23andMe customers of right to delete data:
California Attorney General Rob Bonta issued a consumer alert Friday urgently warning the public that 23andMe is in financial distress and instructing customers on how to delete their data.
That’s good enough for me. I used 23andMe when it launched and love the promise of gaining medical insights from my own genetic data. That’s a powerful vision I still support. But given the lack of federal privacy protections on this most sensitive and personal of all data, I’d rather delete it than let some creep buy it in a fire sale.
Unboxing the DM42n
I didn’t need a new calculator. I have an HP 50g on my desk I hardly use. I work on a full-sized computer capable of unimaginably fast and intricate math. And yet, from the moment I saw a SwissMicros DM42, I had to have one. Then they recently released the updated DM42n version, which clinched it. I ordered.
It arrived today.
When I opened the small, heavy parcel, an owl greeted me. I don’t know why. It’s a fine-looking owl, though.
Beneath the owl, there’s a meticulous little cardboard box. Ah, we’re so close now!
Nope! Inside that box is another wrapper, with directions on how to open it.
An Easter egg: behind the inner wrapper, there’s a nice picture of the Matterhorn.
The inner wrapper is also persnickety in all the right ways. I followed the diagram to carefully pull apart the sine wave-shaped flaps without tearing them.
Now we’re down to the textured leather-like case.
And inside that is the beautiful little tool I’ve been drooling over for many months. That stainless steel obelisk is surprisingly heavy for its size. This isn’t a plasticky TI.
For completeness, the back. It feels “soft” in a way I wouldn’t expect a steel case to, it’s assembled with beefy screws, and it has large rubber feet.
It’s a beautiful device, luxuriously wrapped like a piece of jewelry, but with the heart and mind of one of HP’s best-ever RPN calculators, except improved. This is a happy day.
I am “hurt my back playing video games” years old.
Some friends and I got a pack of Orbic mobile hotspots so we can install the EFF’s Rayhunter software on them to detect “StingRay” IMSI-catchers. This is what one looks like.
RIP Mark Klein
In Memoriam: Mark Klein, AT&T Whistleblower Who Revealed NSA Mass Spying
I moved in down the block from Mark when we first came to the Bay Area. One day he saw me getting out of my car and noticed my EFF hat. He asked if I worked for them, and I said I’m just a happy supporter. He told me they once helped him out of a bind and said I should look him up.
Mark was a super nice guy. He also had the world’s most aggressive golden retrievers that would bark at me as I walked down the block. One day I found a “sewer cleaning” van parked on the parallel street behind his house, but to this day I wonder what it really was. They drove off right after I took a picture of it.
Of the security stuff I do for friends, nothing less excites me than financial compliance. If the task has “PCI” anywhere near it, you owe me a nice dinner.
I bought a case for my Meshtastic radio. It came with a couple of buttons and switches that reminded me that I’m only so-so at soldering. I still like how it came out, and everything works like it’s supposed to.
Happy Day of the Dude on this first day of Carpet Diem.
May you mark all strikes, no gutters.
We just finished “Shogun”, and it’s going to take me a day or two to decide what I think about that ending.
A Case for Turning Tulsa Into the Next Big Tech Hub | WIRED
Requirements OK will never meet:
- Better politics. Techies are largely for individual rights. The Midwest largely isn’t.
- Better worker protections. Great tech jobs aren’t usually in right to work states.
- Employees own their ideas. In CA, for example, you can launch your own startup while still working for someone else. In the places in the Midwest I’ve lived, your employer generally owns things you create while working for them.
If you don’t build those, they won’t come.
I bought a 50MB (yes, megs) HD from an acquaintance. It was freaking slow connected to my Amiga, like 20-30KB per second. It also made a horrible high-pitched whine.
Figuring I had nothing to lose, I turned it over and squirted some 3-in-1 oil on the motor spindle. The whine started increasing in pitch as it quietened, and slowly the HD benchmark program started creeping up toward a more reasonable 1MB/s or so. I didn’t use that drive afterward, and just copied the, ahem, public domain apps and games off it and then threw it away.
I have not before or since sped up a computer by oiling it.
Golden Gate Bridge as seen from the Presidio.
AWS WAF now uses /64s instead of /128s for IPv6 rate-limit bucketing. That’s a huge and welcome improvement!
June Bug, the new kitty, is mad at me for flinging her off the bed last night. By extension, so is my wife. But here’s how it went at 2AM:
Cat sees my ankle under the blanket, watches it, then pounces on it and bites it. I laugh and say stop that, kitty. I go back to sleep.
Cat sees my knee under the blanket, watches it, then pounces on it and bites it. I laugh and say stop that, kitty. I go back to sleep.
Cat sees my middle under the blanket, watches it, then pounces on it and 🐈🪽💨.
June Bug is starting to relax into her new home.
Girl Scout outside the grocery: Sir, would you like to buy some cookies?
Me: I’ll catch you on the way out.
Scout: We’re about to leave.
Me: OK, you talked me into it. My wife told me I’m not allowed to bring a bunch of these home, though.
Scout: What kind does she like? Get some of those and then she won’t mind!
And that’s how they got me.
We wrote a pretty powerful AWS infra tool in Python, and haven’t done much with it in a couple years except to update its dependencies.
I’m kinda thinking about porting it to Rust to get some extra type constraints (it’s already mypy-clean, but…) and make it a single executable deployment.
Today I learned you can’t just go adopt a cat. I figured you’d show up, find one you get along with, and then they’d put it in a bag or whatever for you and you’d take it home. Nope. There’s a lot more to it than that.
That feels a little counterproductive. Sure, you don’t want any weirdo to come in and leave with a living animal. At the same time, I’d think it would be a little easier and not require multiple visits and interviews. It’s a cat, not an infant.
I'm coming around to AI-assisted programming
I’m working on a personal project where I saved some initial programming time by hardcoding a lot of configuration, like:
let board_menu = Menu {
name: "Board".to_string(),
help_suffix: "B".to_string(),
commands: vec![
Command {
arg: "B".to_string(),
help: "Board list".to_string(),
pattern: make_pattern("b"),
available: available_always,
func: board::board_lister,
},
Command {
arg: "Bn".to_string(),
help: "Enter board #n".to_string(),
pattern: make_pattern(r"b\s*(\d+)"),
available: available_always,
func: board::board_enter,
},
...
],
};
I wanted to turn that into a config file so that other users could tweak it without editing code or having to recompile. I opened a new file in my editor which I had connected to GitHub’s Copilot free tier, saved it as “config.json”, and pasted the Rust code into the file so the AI would have something to look at. I started typing:
{
"menus": {
"board": {
Then I paused for a second. Copilot came up with this autocompletion:
{
"menus": {
"board": {
"name": "Board",
"help_suffix": "B",
"commands": [
{
"arg": "B",
"help": "Board list",
"pattern": "b",
"available": "available_always",
"func": "board::board_lister"
},
{
"arg": "Bn",
"help": "Enter board #n",
"pattern": "b\\s*(\\d+)",
"available": "available_always",
"func": "board::board_enter"
},
...
]
}
}
}
Now, I’m perfectly capable of hand-editing my original code to a new format. I’ve done that roughly a zillion times in my career. I know how to do it. But that would’ve taken several minutes of drudgery (unless I wrote a macro or something to automate it, in which case it would’ve only taken a couple of hours). Copilot’s suggestion was exactly, to the letter, what I would have written manually, in a fraction of the time.
I have no interest in letting AI write code for me. I tell people that writing software is my favorite thing in the world, and they laugh, but I’m not joking. I wouldn’t let a computer take over my hobby any more than I’d let it play my piano for me, or feed my cat for me, or write my journal for me. I like doing those things. However, if it wants to take care of the mechanical grunt work like this while I concentrate on the more interesting bits, I’m happy to let it try.