BURGERFEST we have lost count

Jul. 27th, 2025 10:06 pm
cz_unit: (Default)
[personal profile] cz_unit
Greetings fine folk,

Please mark your calendars for the grillfest of the season - that's right Burgerfest looms on the horizon! Please join us Saturday, August 30th from 5 pm onward for Burgerfest at the Boo household.

Bring yourself, bring a friend, bring food and drink to share if you'd like -- but that is totally optional. We'll have lots to grill, lots to nosh, and good times to be had. Reminder - we have no on-street parking, and limited spaces on our driveway, but people can park on the court across the street, or on the crossroad near the intersection, and walk past a few houses to reach us. Drop us a line if you think you can make it!

Grins,
The love boos!

Troubleshooting.

Jul. 25th, 2025 04:30 pm
hannah: (Fuck art let's dance - mimesere)
[personal profile] hannah
At my Brooklyn gig yesterday, I set up my client's new internet router. It'd come in the mail tidy and neat, all the parts included and clear, straightforward directions provided. However, the directions began with the instructions to download the phone company's app, which my client thought was necessary. Knowing better than to argue about it, I read on and got to the part where it said if you couldn't download the app, instructions for how to perform the necessary tasks were on the next page.

It's fairly unpleasant that the app's the default, and it's made more unpleasant that it's framed as the mandatory option. The instructions were basically to unplug the old router and plug in the new one. There's no need for an app in that kind of situation. I'm struggling to figure out why it's included in the instructions at all and "making it every customer's default option" is all I've got, which adds to the discomfort about apps in general. The instructions on the page after "download the app" included diagrams and illustrations, and given the text size my client needs on her phone to read messages, it wouldn't have been easy to read them there. But paper was fine.

At this point, I'm trying to be thankful they included printed directions. In any case, I got it set up in about fifteen minutes and absolutely delighted her with my tech-savvy capabilities. Also that I read the instructions.

wisdom, perhaps

Jul. 24th, 2025 09:17 am
jazzfish: Jazz Fish: beret, sunglasses, saxophone (Default)
[personal profile] jazzfish
The morning has brought wisdom from a couple of friends in Boston.

Joe R--: "Time. Space. Money. Three fundamental resources; exchange rates fluctuate."

Eric B--: "The internet is an infinite storage facility for all the things you don't want in your home right now. You just don't know what the storage cost will be until you try to get something back out."

(Eric is also responsible for "The chief cause of problems is solutions," which I appreciate a great deal.)

everybody needs a hobby

Jul. 21st, 2025 05:08 pm
jazzfish: five different colors of Icehouse pyramids (iCehouse)
[personal profile] jazzfish
It's Noel's fault.

Noel came over weekend before last to try out a wargame he'd picked up, and while he was over he remarked on my copy of Ogre Designer's Edition (one Very Large Box, one somewhat more normal-sized box for the expansion, and a bunch of extra unpunched countersheets and neoprene map playmats). "Yeah, I've got the Pocket Edition," he said. (This is a mostly straight reprint of the original 1977 wargame: the counters are on slightly better cardboard and punch-out instead of cut-yourself, but pretty much the same otherwise. Same price, too: $2.95.) "I'd be happy to play the big version sometime, though."

Apparently this was all the incentive I needed. I spent much of the last week going through my Ogre stuff, punching and sorting and bagging, and researching to figure out exactly what it is I have. (Looks like it's just about everything, save a couple of neoprene map playmats that I missed out on. One of which I'd really like to have. Alas.)

Now. Ogre is a wargame which, in its original conception, was a small conventional if futuristic armor force of tanks, artillery, infantry, and oh yeah hovercraft, struggling to hold off a single gigantic cybertank (the eponymous Ogre). For the Designer's Edition, Steve Jackson went all out: huge and very pretty (and very readable) counters for most of the units, and even huger heavy-cardboard models for the various Ogres and structures (buildings, laser towers, etc). This all looks very impressive and honestly adds to the fun. It does take up an awful lot of storage space, though. More importantly: some of the models don't stay together very well.

The obvious solution is to put a drop of glue at each joint. Okay, sure, I'm not doing anything else for the foreseeable, I may as well do that.

But then I got to poking around, and discovered that a number of folks have gone over the edges of their models with Sharpies (or, in one case, acrylic paint). Makes them look a lot classier than the brown cardboard. This is, of course, much easier to do before you put them together. But if I'm taking them apart to glue them anyway...

Long story short, I just got back from a Michaels run wherein I acquired a pack of multicolour Sharpies (standard and wide-tip) and a thing of craft glue. Also some wax paper (I already have toothpicks) so I don't glue them to my nice table.

I blame Noel.

Honestly, my hope is that I will get really going on this and then in the middle of it suddenly get a job, so I'll have to leave it half undone indefinitely. Why yes I am trying to game Murphy's Law. I'll let you know how that works out for me.
graydon2: (Default)
[personal profile] graydon2
A long time ago I wrote on twitter (now erased): "surprising how much computer stuff makes sense viewed as tragic deprivation of sum types".

Sum types (a.k.a. disjoint unions a.k.a. tagged unions a.k.a. safe variant types) are of course wonderful and nice and everyone should have them. ML and Haskell have them, and now Rust has them, as does Swift, and Scala with case classes, and C++ kinda with std::variant, and .. lots of modern languages are growing them. Great, hurrah.

But there is just a little bit of subtlety to doing them right. The subtlety is that you have to build the language to couple together two pieces of data -- a tag (or "discriminant") and an unsafe union -- with mandatory syntactic constructs (switch or match expressions) so that you only get to access the unsafe union elements when you've already checked the tag, and the type system and name resolution systems know you're in a given case-block, and so only let you access to the union-fields (properly typed) corresponding to the tag case. It's not a hugely complex thing to get right, but you have to get it right.

There are three main degenerate ways you can fail to get it right.

  1. You can give users syntactically unguarded access to union members, say by using container.field syntax, in which case all you can do if the tag doesn't match that field at runtime is to raise a runtime error, which you can at least do systematically, but the ergonomics are lousy: it's inefficient (you wind up checking twice) and it doesn't help the user avoid the runtime error by statically forcing cases to be handled.

  2. You can do #1 but then also fail to even raise a runtime error when the tag is wrong. At which point the tag is basically "advisory", so then...

  3. You can even go a step further than #2 and not even require users to declare a tag. Just let the user "know the right case" using some unspecified method, an invariant they have to track themselves. They can use a tag if they like, or some bits hidden somewhere else, who knows.


Ok so .. Casey Muratori gave a great recent talk on the origin of, well, certain OOP-y habits of encapsulation, which is mostly about Entity-Component-System organization, but .. also a bit about sum types. He spent a lot of time digging in the PL literature and reconstructing the history of idea transmission. I just watched it, and it's a great talk and you should go watch it, it's here:



One of the things he discusses in here is that safe and correctly-designed disjoint unions aren't just an ML thing, they were around in the early 60s at least. Wikipedia thinks Algol 68. Muratori places their origin in Doug Ross and/or Tony Hoare talking about amendments to Algol 60, linking to this Tony Hoare paper but of course Hoare references PL/I there and I'm honestly not sure about the exact origin, it's somewhere around there. Point being it predates ML by probably a decade.

But another thing Muratori points out is that is that Dahl and Nygaard copied the feature in safe working form into Simula, and Stroustrup knew about it and intentionally dropped it from C++, thinking it inferior to the encapsulation you get from inheritance. This is funny! Because of course C already had case #3 above -- completely unchecked/unsafe unions, they only showed up in 1976 C, goodness knows why they decided on that -- and the safe(ish) std::variant type has taken forever to regrow in C++.

I was happy to hear this, because it mirrors to some extent another funny story I have reconstructed from my own digging in the literature. Namely about the language Mesa, a Butler Lampson project from PARC, very far ahead of its time too. There's far too much to discuss about Mesa to get into here -- separate compilation, interface/implementation splits, etc. -- but it did also have safe variant types (along with a degenerate form called "computed" which is unsafe). Presumably it picked them up from Algol 68, or Simula 67, or one of probably dozens of languges in the late 60s / early 70s it emerged from. No big deal.

Where that relatively unremarkable fact turns into a funny story is during a "technology transfer" event that happened during Mesa's life: Niklaus Wirth took a sabbatical to PARC, and became quite enamoured with Mesa, and went back home to work on what became Modula and eventually Modula 2. But Modula 2 had only degenerate variant types! He copied them not from Mesa, but in the same busted form they existed in Pascal, completely missing that Mesa did them correctly. Modula 2 variants are degenerate case #1 above (if you turn on a special checking compilation mode) otherwise case #2: tags declared but no checking at all! He even writes it up in the report on Modula 2 and Oberon, criticizing its lack of safety while simultaneously citing all the ways Mesa influenced his design. Evidently not enough.

Anyway, all this is to say: language features are easily broken, mis-copied, forgotten or intentionally omitted due to the designer's pet beliefs. Progress is very circuitous, if it exists at all!

Hurry home to you.

Jul. 15th, 2025 09:15 pm
hannah: (Travel - fooish_icons)
[personal profile] hannah
I went across town to gather the last of my pay this morning; I'd gotten a text a couple hours earlier telling me that the main receptionist was doing fine and didn't need additional support, so all I had left to do was get paid. I ended up deciding to take that vacation opportunity, with plans to come back fairly early Friday to make the evening showtime.

Worth noting is packing's not nearly the stressor it used to be. Especially not for just a couple of days. Not even music for the trip or what to bring in my backpack. There's no getting around the nervousness that comes from waiting for a train - especially with the downpour earlier this week, which tends to mess with schedules - or trying to fall asleep the night before. But there's a predictability to that, which makes accepting it easier.
graydon2: (Default)
[personal profile] graydon2
somewhat contrary to the previous post: another pet peeve is people (some classic libertarians, others paleoconservatives) saying that "there is no free lunch".

there are certainly zero-sum, no-win situations that occur in life sometimes. and the phrase is often also used in some fatalistic, eschatological, broad heat-death-of-the-universe sense. sure sure, second law.

but as the great MC hawking put it: the earth's not a closed system, it's powered by the sun. there's an effectively unlimited massive fusion reactor in space we literally all live off of, and for all practical purposes we always have and always will. it is very much a free lunch! concretely: every lunch you have ever eaten and will ever eat is a free lunch given to earth by the sun.

also like .. any technological improvement that increases efficiency of some work is a metaphorical free lunch. if there were no free lunches to be had from R&D we may as well be banging rocks together as using any later developments.

also any positive-sum games or interactions, social relationships, political organization, economic cooperation .. the list of free lunches goes on and on.

enjoy your free lunches!

flywheels, again

Jul. 13th, 2025 10:01 pm
graydon2: (Default)
[personal profile] graydon2
reading some technology reporting today and they're using the term flywheel, a pet peeve of mine. I have written about this before on some ephemeral social media, but I am moved now to repeat my objection in a place of greater posterity.

the word "flywheel" seems to have entered the business-writing lexicon with a book about amazon called "good to great". I have not read this and have no intention of reading it. perhaps the metaphor was used sensibly there. it is no longer used sensibly. here are a couple representative samples I just found via google of the way it is used nowadays (emphasis mine):

By definition, a flywheel is a heavy revolving wheel that is used in a machine to increase momentum and therefore provide greater stability to the machine. Given its weight, the flywheel is difficult to push from a standstill, but once it starts moving it gradually builds momentum, which eventually enables the wheel to turn by itself and create even more of its own momentum through a self-reinforcing loop.

or:

A flywheel is a massive metal disk, or wheel, that often weighs over 2,000 kgs. It takes a lot of effort to get it started, but once it starts to turn there are counterweights around the outside of the wheel that start to take effect and it starts to build momentum almost by itself. From that point, the same effort can be placed on the flywheel and it will start to turn faster and faster.

this is characteristic of the way people use the term now. they talk about "getting the flywheel going" on their business, because once you're over some kind of threshold the flywheel will somehow magically start spinning faster and faster on its own.

that is not what a flywheel is or what it does at all.

a flywheel is a kinetic battery. you put angular momentum into it when you have a surplus and you can take some back out when you have a deficit (assuming friction hasn't lost it all yet). other metaphors that have a similar effect are account balances, or warehouse inventory, or queues. or taking an average of something noisy over time. take your pick.

a wheel that somehow went faster of its own volition would be a perpetual motion machine. a fantastical solution to all the world's energy needs. but also fairly prohibited by .. physics. there is no such thing.

people using the metaphor this way seem to be getting it confused with positive feedback phenomena. which do exist! even in business! here is a classic one: sales volume up => unit production cost down => sale price down => customer demand up => sales volume further up. a.k.a. "economies of scale". great stuff, bravo capitalism. it has some other positive feedback loops that are not so great like "overproduction crisis" or "market panic" but we need not dwell on those.

there are also lots of other non-capitalism examples of positive feedback phenomena. population growth, cytokine storms, even the digital flip-flop circuits storing this post are positive feedback systems.

but: a flywheel is not a positive feedback system. not at all. please, I beg you: for pity sake stop using it as a muddled metaphor for one.

Profile

greenstorm: (Default)
greenstorm

July 2025

S M T W T F S
  12 345
6 789 1011 12
131415161718 19
20 2122232425 26
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2025 04:13 am
Powered by Dreamwidth Studios