πŸ‘ Graphics, Intutiveness, Languages, Risotto 🍚

Sunday, May 17, 2020 :: Tagged under: blurb culture pablolife. ⏰ 6 minutes.

🎡 The song for this post is Theme from Rawhide, from the Blues Brothers Soundtrack. 🎡

You may have seen this video circulating, a demo of the new Unreal engine:

On that last note: youth is wasted on the young. I'm never "wishing I could go back," but it's funny how much information you can gather (that follows you forever!) in a single semester class, and how much harder it is when you're not a full-time student receiving dedicated instruction. So many times I've thought "this is when I'll dig down and write a Minix" or "I'll study machine learning techniques so I can make it practical in my projects" and I still fail to get the depth of any of these higher-level classes. I might still! But it is so much harder lol.

"Should be intuitive!"

Nick Heer agrees with Brent Simmons on the idea that "the ideal iPhone app first-run experience is none at all," that it should just be intuitive. There's even Steve Jobs quotes ("iPhone apps should be so easy to use that they don’t need Help.") so you Take It Seriously.

Reading in good faith and honoring pedantry: they don't say anything too challenging. They explicitly specify "iOS apps from the App Store," which is a pretty broad base of explicitly consumer products, and Nick says many "may not truly reach the point where users must not need help, but they ought to be designed with that goal in mind." So what I say next doesn't strictly apply to these two, but:

This thinking drives me absolutely bonkers. No tool, habit, or product that's truly useful takes zero training to learn. I dare you to tell me that I should have dropped this because it's not "intuitive" what to do at this very moment:

Vim homescreen.

I realize this might be a self-own, since it's Spanish-localized nvim, so not the iconic vim homepage effect I was going for, but the point remains: every programming text editor requires you to think or read a little before you can make good use of it.

Think of version control. Think of airline cockpits. If you A/B test an interface so that it's "intuitive" you'll get software that's only certainly good at passing that PM's metrics. It'll be the functionality equivalent of a late Evony ad.

Obviously one shouldn't ship user-hostile software, obviously documentation and user experience are critically important and should be given a lot of love. But stopping something as soon as it requires literally any thought at all then demoting that thing mentally because you can't be bothered to think is exactly how you get smooth-brains running everything.

(also, remember the converse isn't true: if something is hard to learn, that doesn't make it "better" either. this is how you get shitty showboating rituals, and Git)

Prolog

Would you believe that the page that's gotten the most hits on this blog is literally the third post I wrote on it, 11 years ago? I was so excited to learn Unification and Prolog that I wrote up a post about it, and I think it shows up somewhere in some search results that it gets a small number of weekly visitors lol.

Logic programming always scratched an itch for me, but I've never been able to dedicate the time I'd like to it. I followed a comment thread and found these old posts from earlier in the decade, on "what killed Prolog," given that it was pretty hot in the 80s. This one ties it into the grander computing narrative of the time; it's really interesting to read a history where there was an AI "arms race" against Asia for who could do generalizable intelligence first, a theme with China today in that often-wrong book I read. The author suggests that once that "arms race" died for both sides because generalizable intelligence is hard, Prolog lost its biggest project, never to recover. A response post piggybacks on to talk more about the programming model itself. I don't fully agree with either, but got a lot from reading them.

I think about programming language popularity a lot, and the strongest predictor I have is the "killer app" model: almost nothing else about the language matters except "does it have a killer app"? It's a bit cynical, but bear with me: C++ may or may not have offered a lot of things Smalltalk or Lisp didn't in the early 90's, but it was also the only supported way to talk to Windows APIs. In 2008, people may have really wanted the efficiencies of JavaScript with the memory safety of C, but I suspect the real reason Objective-C entered the top 10 languages was because it was the only way to build iOS apps. Ditto Ruby, born in 1995, suddenly becoming popular in 2004 (Rails, "look at all the code I'm not writing."). Elixir would look a lot more like Elm or Clojure if it weren't for Phoenix.

I'm not saying the other things most people actually talk about don't matter or get worked into the narrative, just that it's the most consistent thing I can find when considering "why are people using this?" Hit me with counterexamples, the main one I can think of is Rust, where people really did want the features (a performant, memory-safe language that could viably replace C). They wanted it so bad some of them called Go a "systems language" for a hot 6 months before using it for long enough to be like "oh lol, it's got garbage collection." Go is also a bit of a weird case, I'd chalk that one up to hundreds of millions of dollars of marketing/evangelism investment.

Anyway, "this is the year we move to OCaml" is my "this is the year of the Linux desktop!" πŸ˜„

Cookin'

I'm still cooking. The novelty has worn off a bit but I'm still finding it peaceful. I was hungover this morning, feeling antsy and lonely, but feeling more like a person after putting on some tunes and making eggs, beans, and coffee.

Last week I made a risotto. That… was a lot of stirring! I made one back when I lived in SF; this one seemed to take longer, and while it doesn't look Obviously Appetizing (most of my food is some flavorful slop), I'm really happy with how it came out. I'm condemned to make more too, since we have a ton of arborio rice and bouillon cubes.

Ingredients laid out: uncooked arborio rice, mushrooms, broth, butter, salt, cheese. Click for full size. Cook the mixins first. Click for full size.

Gotta cook the mixins first, weirdly.

Broth and Risotto in two pans. Click for full size.

One shrinks, the other grows, for like, 40 minutes.

Risotto enthickening. Click for full size.

Eventually this gets thick and tasty.

Nearly finished: risotto with mushrooms, cheese, broccoli. Click for full size.

Add back the mixins, add some pepper. Careful with salt, since you'll already have a fair bit from your broth.

Two bowls with risotto, wine. Click for full size.

We made it a date with sparkling blueberry wine. The wine: it tastes like it sounds! The risotto was pretty good πŸ˜„

Thanks for the read! Disagreed? Violent agreement!? Feel free to drop me a line at , or leave a comment below! I'd love to hear from you πŸ˜„