You can think of Matzo as something like Tracery (tracery.io) but with more of a "programming language" structure. Here is one example that contrasts a Tracery program with the equivalent Matzo program: github.com/aisamanra/matz…
None of the things described here are "new", just old ideas put together in a particular way. Still: I generally feel like no existing language has "solved" error-handling: they've just found rough local maxima. This is trying to push the design space a bit.
For example, here's a custom earring tree I made for my partner @rhiannonstone, inspired by several others that weren't quite what she wanted. (Stained birch plywood—neither she nor I like the look of untreated laser-cut wood; I think it looks tacky.)
One thing I did in 2021 was finally buy myself a home laser-cutter. I've definitely gotten more jaded about tech over time, but it's pretty magical to be able to start with a drawing or a snippet of code and quickly turn it into a physical object.
I was thinking of this today because of this talk where my cartoonist avatar makes a guest appearance, but I've been told by several people they've used the cartoon in their own talks: christine.website/talks/nixos-pa…
@ntcomplete The shared infrastructure thing was great. I built a pretty expansive zipline network over near Mountain Knot City, and it was weirdly satisfying whenever I got a notification about other people using those ziplines.
@ntcomplete It was my first exposure to a Kojima game: pop culture osmosis told me it would have tons of cutscenes, but I had no idea how solid and effective all the actual mechanics would be. Planning and executing deliveries was just so engaging and interesting all the way through for me.
@Ptival I've only lightly skimmed Seven Sketches in Compositionality—I should definitely go back and actually read it. That said, I do think that what I'm doing here is probably more of an aesthetic effort than actually, like, trying to do much analysis or anything of the graphs.
@rngcntr I'm going to be rewriting it entirely—it's currently Haskell, which is a language that bit-rots pretty aggressively, and I want to rewrite it in something that's less of a moving target—but my unfinished prototype of the input language is on Github: github.com/aisamanra/apic…
A good consequence of this was making me realize which projects I'm most excited to return to. I think top of the list is Apicius, my sadly-neglected recipe graph effort, so I've already started dusting off its code.
@cmarshl It's also nice 'cause it's helping me remember which ones I'm more excited about returning to. I've already written some of these posts and thought, "Wait, why haven't I been working on this lately, this rules."
These posts are just short overviews of things I've started and want to finish some day. Most—about ⅔ of the planned list—are software, but some are tabletop games or video games I'd like to write, as well.
What with [gestures at the state of the world] I've had a hard time focusing on projects lately. So instead, every day this month I'm writing about a different unfinished project I'd like to return to some day: journal.librarianofalexandria.com/backburner-mon…
@aaronmblevin I switched schools when I was 7. I made that choice mid-summer, so it wasn't announced at my old school or anything. Years later, I started at a middle school with a lot of classmates from that old school, and one of them walked up to me and shouted, "Getty! I thought you died!"
It's honestly not the best video—the first part is marred by an unfortunate windshield bug, and the timing of the trip means you can't even see Portland at the end because it's too dark—but it was still fun to put together.
Also, I should include this in the post itself: all the relevant source code is online, including source that isn't directly included in the post! I've collected it in this repo here: github.com/aisamanra/post…
After this, I plan to write a few more technical posts focusing on generating vector images, and then write at least one more post about abstract strategies and approaches I've used to make generative artwork.
@BowToChris There's a fun blog post about the ligature features in fonts which uses them to create a novelty font, and it describes a different way of achieving the same effect which could in theory be more programmatic, as well: pixelambacht.nl/2015/sans-bull…
@BowToChris Because there were a lot of diacritic forms, I actually used a little Python script to create the first version of them (by modifying the XML structure of the SVG files) and then adjusted the size and position manually for each one.
@BowToChris I'd be happy to write up something more thorough if you want the full steps, but the short form is 1. draw glyphs in Inkscape 2. import into FontForge and adjust sizing 3. use FontForge's GSUB interface (usually for font-specific ligatures) to replace glyphs with joined versions.
@alexbiehl_@kowainik I think that's a good idea. I've added a redirect note to the README and archived the repository. If you've got other places I should redirect to and/or other notes I should include, I'd be happy to do so: just let me know!
On a very different note, I recently recorded an actual play session of Ex Novo, a solo city-building tabletop game, if "watch someone roll dice to invent a city for an hour" happens to be your jam: youtube.com/watch?v=6t_sl3…
This post is inspired by William Cook's "On Understanding Data Abstraction, Revisited", a useful definitional reference. I figure I cite it regularly enough that I might as well have a convenient post I can point at!
@mjsottile I used it on a Python project recently and it was mostly pretty nice. My one piece of advice is to use `check-untyped-defs`: without that option, MyPy won't type-check the bodies of functions that don't themselves have declared argument types, which is… surprising.
@mjsottile Have you tried an external type-checker like MyPy? It of course won't address performance, but it might help with the correctness parts. At the very least, it does give you a proper type-checked optional type.
@josecalderon@johnregehr The most popular Haskell JSON library is named after Jason's father Aeson, who depending on the source either was killed and subsequently resurrected by his daughter-in-law (Ovid's Metamorphoses) or died from drinking bull's blood (the Bibliotheca of Pseudo-Apollodorus).
@josecalderon Coming soon: the Tantalus theorem prover, which should start yielding fruitful results any day now. It can be installed with an associated build tool, Sisyphus, on a rolling release schedule.
@microliza You know how everyone cares deeply about Rust error-handling because it's a shallow but important interface they have to deal with all day, so they write their own error-handling crate which is 90% bikeshedding and 10% making slightly different tradeoffs than the others?
@josecalderon People are working on various other ActivityPub-compatible tools, as well, and I think the conjunction of those can win people over in a way that Mastodon by itself won't. I love Mastodon, but to many people it's just "like Twitter but with fewer people and less discoverability."
@josecalderon One thing that I've considered is that more people might move to Mastodon as more and more interesting things become available via ActivityPub. For example: what about a paper-discussion blog (sort of like LtU) but with commenting done entirely via your ActivityPub account?
I've realized that the phrasing here makes it sound like this is a solo project, which isn't true! Parts of this were also written by @moltarx, whom I have somehow tricked into writing Python for this. (Typed Python, but still.)
N.b. that I'm not much of a web programmer, and LC is not a terribly serious project! I'm building it for me, maybe some friends. I'd be happy if other people end up using it, but to borrow Robin Sloan's metaphor, LC is a home-cooked meal: robinsloan.com/notes/home-coo…
This is also the first post I've written with my newly-migrated blog—I've switched from a homebrew blog to WriteFreely, which means you can also follow and interact with it via Mastodon or other ActivityPub-enabled systems.
@SlackHQ Is there any way to switch back to the old UI? I've got half a decade's worth of muscle memory that's useless with the new one (since e.g. you moved the @ button) and the new UI has lots of useless clutter which takes up valuable screen space on my smaller laptop screen.
@thingskatedid@sw17ch If you go from C to NewSqueak (the Rob Pike one—"A language for communicating with mice"—not the SmallTalk one) to Limbo to Go you can see a clear gradual syntactic evolution, which is fun.
@thejonanshow I live in Portland and work on the @sorbet_ruby project—if you're interested in a talk on that topic (whether at the next event, or to keep in your pocket for another event) I'd be happy to give one!
@thumphriees I keep thinking about writing my "I-used-to-write-Haskell-now-I'm-employed-writing-C++-and-Ruby" post, and haven't more out of laziness than out of smoke-aversion. I mean, I survived both "GEB is overrated" and "QuickCheck uses typeclasses badly"; I think I can survive this one.
@jckarter@munificentbob@jseakle Oh, you're absolutely right! Well, there we go: 4.1.2 in the C89 standard and 7.1.3 in the C99 standard both dictate that naming functions `toilet` is undefined behavior.
@jckarter@munificentbob@jseakle I haven't dug deeper than just a quick perusal, but it looks like in C89 reserved identifiers were reserved regardless of includes, but in C99 they're usually reserved "…in the same name space if any of its associated headers is included."
@SlackHQ Is there an option to turn off the new WYSIWYG editor? It takes up more screen space, is clunkier and more awkward to use for editing, and is in general a significant step back in usability from the previous system.
@ChadScherrer 'Pidgin' is absolutely not a term for informal communication: a pidgin is specifically a language that results from contact between speakers of two or more languages that combines grammar and vocabulary from those languages into a simplified language for common communication.
@thumphriees One of my blogs I've already moved to writefreely, which is written in Go using a fork of blackfriday but by default doesn't turn on footnotes. I think the underlying library does, though; I might enable it in my build and see how it works out.
@thumphriees I've found Markdown implementations that feature footnotes in both Rust and Go, and I've considered rewriting my blog to one of those. Even a modicum more stability than I get from GHC/Haskell packages would be a weight off my mind.
@johnregehr@johnwvilk@overfull_hitbox@dril The Fifth Element was heavily inspired by the style of French scifi comics in general and The Incal in particular (to the degree that the publishers tried to sue Lec Besson.) So if you've seen that, you definitely know the French Scifi Comics Look.
@johnregehr@johnwvilk@overfull_hitbox@dril The first one—The Incal—was inspired by the pre-work Jodo and Moebius did for Dune, so big parts of it are Dune With The Serial Numbers Filed Off. I like them, but they're not to everyone's taste. Quintessential 80's-Heavy-Metal-magazine comics, with all that that implies.
@johnregehr@overfull_hitbox@dril Bill told me that he'd finally watched the Jodorowsky's Dune documentary, so I showed up at Galois a few weeks ago and with basically no explanation handed him a stack of Jodorowsky comics. (I don't know what I could have explained. "Hey, you're gonna have a weird time"?)
@johnregehr@overfull_hitbox@dril He's bizarre. (He did a Kickstarter a few years back for his movie Poesía Sin Fin, and one backer reward was "poetic money": bills he made that feature his own face and some of his poetry. I really should remember where I put mine so I can frame and display them.)
@overfull_hitbox@dril I love the corny ridiculous choice to make everyone refer to contemporary things as "paleo-whatever" so that everyone swears by "Paleo-Christ." I forget whether it's in Metabarons or The Incal that there's an offhand comment about "…the economic theories of Paleo-Marx."
(It's a rough homemade reproduction of Funranium Labs' Black Blood of the Earth, but made via repeated coffee infusions instead of via cold distillation. Back-of-the-envelope calculations suggest they have comparable caffeine strengths, a level scientists call "hooboy".)
This is my cynical money-making idea for every tech company that tries to unilaterally foist redesigns on users: pay to avoid the redesigns. $1/mo to avoid the algorithmic timeline, $2/mo to get square avatars and stars back.
@SlackHQ In general, I find many recent Slack changes (such as this intrusive message, or the way channels with unsent messages are reordered) make the experience of using Slack significantly worse, and I don't see why these can't be easily and trivially disabled via configuration.
@SlackHQ I understand displaying the local time/notification status for DMs is useful in some contexts, but I'd really like the ability to turn this off. Can you please offer this as a configuration option?
@markwvh It's super cool! I haven't looked at the code in depth, but I poked at it a bit. (Also coincidentally, the author is also a coworker of mine at the new job, albeit on a different team than mine, which is funny.)
@microliza@aaronmblevin They both are—darcs is the original one, and pijul builds on a category-theoretic refomulation of the theory of patches, but having fixed the fact that darcs sometimes had exponential merges in the worst cases.
@SlackHQ As of recently, Slack will move channels to a "Drafts" section when they contain typed-but-unsent messages. I find this VERY frustrating: I'd prefer channels stay in a single fixed place in the sidebar. Is there any chance we can get an option to disable it?
@morabbin All these changes—and more I haven't entirely described—can in aggregate produce accents, which over time can become different dialects, and over a larger time-scale even result in different languages!
@morabbin But again, because these changes can act in contradictory ways (adding sounds or removing them, changing them in one direction or another) they can naturally result in two communities producing different or even opposite changes.
@morabbin (It also could get reinforced negatively: if you really hate the people who say "jus'", you might deliberately pronounce it clearly to distinguish yourself from them. Think of explicitly-cultivated posh accents here!)
@morabbin This gets reinforced by social processes: if you spend time around the people who say "jus'", then you might adopt that pronunciation. If you were born in that community, you might learn the language with those pronunciations!
@morabbin But changes like those can add up over time, and then be reinforced socially: if several people in the same speaker community produce the same sound changes, then it becomes a social norm in that group that "just" is always said as "jus'".
@morabbin I phrased those changes as pursuing goals ('make it easier to say') but these usually happen without us thinking about them. If I'm talking quickly to a friend, in doing so I might unconsciously drop a few sounds from the words I'm saying.
@morabbin On the other hand, you might also streamline the pronunciation of a word by dropping sounds and making words shorter, like pronouncing "just" as "jus'" or "going to" as "gonna". So: some changes can lengthen words, other can shorten them!
@morabbin Sometimes, we add sounds to a word to make it easier or clearer to pronounce: e.g. some dialects pronounce "athlete" or "film" with extra vowels, because consonant clusters like "thl" and "lm" are tricky to both say and hear!
@morabbin That's a pretty big question, but to handwave a lot: lots of abstract forces act on how we pronounce words, sometimes acting in contradictory ways or producing different results, and those forces applied en masse can result in accents.
@overfull_hitbox@johnregehr (Incidentally, I'd definitely avoid the BBC adaptation of The City & The City. I felt like it pretty heavily missed the point of the book, and the graphic design—where it tried to make text look 'foreign' by sprinkling random diacritics throughout English text—was infuriating.)
@johnregehr@overfull_hitbox OTOH, I can also see arguments for The City & The City (which is really approachable: basically just crime fiction in a slightly odd setting) and Embassytown (which is my hands-down favorite Miéville, and is a scifi book with a lot of interesting—if farfetched—language stuff.)
@johnregehr@overfull_hitbox My first was The Scar, 'cause I didn't realize there was an ordering to those books (to whatever degree it matters) and it was good first Miéville, I think. That whole series is corny and overstuffed in a way that (at least mostly) works.
@markwvh I'm glad you enjoyed it! I wrote it in part because I wanted to understand it more clearly myself, and writing an explanation is a great way of clarifying your own thinking, so I'm happy it's comprehensible to others, too!
@thepelicanpoems@TheZoneCast That's awesome! I'm glad it went well. If you do end up playing again, I'm always open to feedback or tweaks, but the fact that it's fun is I think the most important thing!
@johnregehr I think I woke up shortly before we passed through Green River! I was disappointed that the timing wasn't right to get good views of western Utah. There were still some beautiful views from the train, but it was too dark to see anything from Elko NV through to Helper UT.
@thepelicanpoems@TheZoneCast Awesome! Let me know how it goes! I haven't done any playtesting at all yet, so I'd be interested to know what works and what doesn't, or whether there were any adjustments needed to make it flow or unclear spots in the rules.
To weigh in on @josecalderon's thread about Galois internships: I worked there for six (very enjoyable!) years, during which I wrote Haskell, C, C++, Python, Scala, OCaml, Rust, and assembly. Galois is definitely not just Haskell! twitter.com/josecalderon/s…
@josecalderon@ChariseeChiw A few years ago, there was a weekend where they had to do weekend power maintenance at the Commonwealth Building, which meant we had a semi-mandatory Galois ice cream party in order to eat all the Klondike bars so they wouldn't melt over the weekend. It was a good party.
@theg5prank the new trendy thing among silicon valley designers is "microdosing notifications", where you make notifications that so subtle they unobtrusively enter your unconscious mind instead of derailing your train of thought by notifying you
It's a long shot, but please let me know if anyone makes a browser extension or whatnot to change @SlackHQ's favicons back to the old style. The new activity notifications are annoyingly subtle and difficult to see.
[cw: alcohol] (When I use Cointreau instead of Cherry Heering, I also swap the amaro for Hiver Amer—an amazing cinnamon-and-bitter-orange amaro—which is strong enough that I reduce its proportion and balance it with demerera syrup. I call this one a "Nakatomi Christmas".)
[cw: alcohol] The actual cocktail which inspired the Hans Gruber uses Amaro Albano, but I usually use Amaro Lucano (along with High West Double Rye and Oban for the whiskeys.)twitter.com/silentbicycle/…IesYDYi0
@paul_pearce@xexd …I don't know why it's coming up more now, but it's definitely one of those subjects that people—especially Haskell programmers—don't totally understand but nonetheless like to propose as a universal solution to every problem. (See also: category theory.)
@paul_pearce@xexd Sequent calculus (as well as proof theory in general) shows up prominently in branches of programming language theory, in part because sequent calculus is a useful formalism for describing type systems. (It showed up a lot for me during grad school.)
If you're interested in creating custom playbooks, you should also be able to easily modify those documents: they're still a tiny bit finicky, but they are mostly written in terms of high-level macros suitable to any DW playbook.
I'm doing some Dungeon World hacking, so I now have (syntax-highlighted!) LaTeX versions of all the core playbooks. I put them up here, in case anyone would find that useful: github.com/aisamanra/dw-p…
@blingdomepiece It didn't give me that option today—or if it did, I couldn't find it after a minute of poking around—so I figured I might as well get rid of them once and for all. (Or, at least, until Twitter changes their CSS again.)
@silentbicycle@josecalderon I've used Linux consistently for the past decade and haven't had videoconferencing problems since 2011 or so, at least if I was willing to use Chrome for it. (For a while, Hangouts didn't support Firefox, and its current FF support is still a bit buggier.)
Proposal: encode John Wilkins' Real Character in Unicode, and treat ZWJ-joined sequences of these code points as having emoji presentation. Now we can have emoji for any concept that Wilkins could express.
@cmrdpm And prepositions often change their meaning based on the case of the noun that follows them, so the preposition 'in' when used with a noun in the ablative form means "in, at, among": the ablative form of 'regnum' is 'regno'.
@cmrdpm The unmarked subject form is the 'nominative', and it's used as both subject and object of the verb esse 'to be' (sort of like the English "It is I!") So 'caper' and 'ingeniator' are both nominative nouns.
@cmrdpm Most of the forms above are the 'genitive', which is like a possessive. So 'regnum' means 'kingdom', but 'regni' means 'of [the] kingdom'; 'firmitas' means 'reliability', but 'firmitatis' means 'of reliability'. (There's no 'the' in Latin, so it's just inferred from context.)
@cmrdpm Latin has a system called "noun case" where the way the way that nouns work grammatically is encoded in the ending of the noun. English does this for pronouns ('he' versus 'him' versus 'his') but Latin does this for every noun, in several predictable ways.
@cmrdpm There's a neuter ending in Latin which is often -um, so I wondered if there was precedent for using 'caprum' as a gender-neutral variant, but I haven't found an example yet, and 'caprum' is also an accusative variant of the masculine form 'caper', so I should keep looking.
@cmrdpm I should double-check when I'm home with my books, though, just to see! There might be better translations of some of the words that have a more accurate, general sense that I'm also not thinking of now.
@cmrdpm My first pass would be 'caper ingeniator firmitatis situs regni animalium est' but I'm not a huge fan of this because of its branching ambiguity: "engineer of the reliability of the site of the kingdom of the animals" could mean a lot of ambiguous things!
@cmrdpm The animal kingdom is 'regnum animalium' (kingdom of the animals), and goat is either 'caper' or 'capra', which differ by gender, so I'm going to do the shitty classical thing and default to male for this translation.
@cmrdpm It's worth noting, however, that 'ingeniator' has a somewhat more restrictive meaning than the more generic 'engineer': it's more of an architect. There's not a great general translation: alternatives might be 'architectus' and 'machinator'.
@cmrdpm So, my instinct is that SRE would be 'ingeniator firmitatis situs', although I should note that 'ingeniator' is, IIRC, a Medieval Latin word and doesn't show up in classical sources. This is something like 'engineer of the durability/reliability of the site'.
Thus young Getty learned an important lesson: don't pursue aesthetics and novelty at the cost of clarity. He promptly forgot that lesson and got really into constructed languages and functional programming.
My On-Brand Childhood Story is probably that I taught myself cursive in 1st grade and then tried to use it exclusively, and my teacher then patiently explained that it didn't matter how pretty my cursive was, none of my classmates could read cursive yet.
@overfull_hitbox (I'm also unsure about "shit", but I know that an earlier draft of Quenya—when it was still "Qenya"—used the word 'muk' for 'feces', so that's a starting point from which I could do some semi-motivated etymological handwaving.)
@sclv@acfoltzer But that's my point: it's not that trying to draw these connections together is a bad idea, or that he was wrong for trying. It's admirable and inspiring that he tried, but I still think it's important to point out where it didn't succeed, and how it could still be done better!
@sclv@acfoltzer …where Hofstadter starts to talk about whether an alien would appreciate the music of Bach or Cage more. If he had stopped and listened to what Cage was trying to say, I think he would have come to a different conclusion about the subjectivity of aesthetics and culture.
@sclv@acfoltzer But I think the places where it falls down are illustrative, because of the way that they weaken the whole book around them. I didn't get into it in the post, but his misunderstanding of John Cage, in my mind, completely undermines part of the following section…
@sclv@acfoltzer Part of the reason I wanted to be critical here is because I admire what it's trying to do, which is why I wish it landed more often. I think there's an intellectual and emotional core to the book that's both ambitious and worthwhile.
@chrisamaphone And there's absolutely a place in the world for the kind of book that you can age or mature out of, because those books are often about introducing things that get people inspired, and the greatest thing about GEB is just how inspiring it is and has been to people.
@chrisamaphone I hope I didn't come across as too negative about the book overall, because there is still a lot to like in and about it! I think had I read it about a year before it would have hit me much more positively, because it does cover a lot of topics I love.
But I also rarely see criticism of it, and so I wanted to lay out fairly and cogently the problems I think the book has. I hope I didn't come across too harsh: I tried to emphasize that the book has strengths as well as weaknesses.
As with many of my posts, this is a personal opinion, and one that I don't necessarily expect others to share! I understand the book is widely loved, and I don't want to imply that people are "wrong" for liking it.
@aaronmblevin@NaleagDeco I've fallen out of being an active contributor (as I switched jobs and therefore don't use Matterhorn at work any longer) but I'm still pretty familiar with most of the codebase and would be happy to help out with whatever you're looking at!
I still endorse the overall thrust of the post, but when read in light of current conversations, I think it reads too much like a lamentation. I still love the Rust language and community, and the proposals under discussion—even as I dislike them—don't "ruin" Rust.
I don't know that I'm going to edit the post, but after thinking about this all day I think I hit the wrong tone. I had an earlier draft that tried to be even-handed that I felt was lackluster, but I think I went too far in the other direction. twitter.com/aisamanra/stat…
@tsion All of these are absolutely motivated changes, and I think I'd have advocated for them in the language team's position! They also all complicate reasoning in the large in order to make it faster to program in the small.
@tsion (That latter example actually came up at my last job when I was teaching someone Rust: lifetime elision let them write some simple pieces of code they wanted, but then confused them when they had to internalize both lifetimes and what Rust was doing when it let you omit them.)
@tsion Or even making lifetime elision smarter and smarter: again, a change that's motivated and does make programming in Rust easier, but also a change that complicates the overall mental model that's required of Rust's semantics.
@tsion Which is to say, you can have two identical binding sites in two functions that bind variables with different types and may or may not move the name, because you need to have a larger contextual view of the match in question to know whether it's using auto-`ref` or not.
@tsion Another thing I removed was the recent changes to `match` semantics to automatically include `ref` and deref. I think this is overall a good change, but I admit I was conflicted about it for very similar reasons: it requires more contextual knowledge from a programmer.
@tsion And so I tried to be a bit forceful in how I stated things, because I was afraid that walking back the point too much would result in the wrong takeaway, but I do agree that there's some not-useful doomsday-saying and I definitely drifted that way in my rhetoric here.
@tsion A lot of the early feedback I got was that it felt too scattered and didn't end up addressing either point I was trying to make in a really robust way, so I removed it and rephrased things in a clearer but less nuanced way.
@tsion I actually had an earlier version of this draft where I had several paragraphs at the end pointing to the recent "Listening and Trust" post and talking about how this is a difference of priorities, and not a lack of faith in the core team or the language in general.
…I know this is My Own Fault for being an Insufferable Stodgy Luddite, but it's still annoying to learn I can't use my insurance's roadside assistance because they text you a URL and my dumbphone cannot open URLs.
I've written far too many posts in the past where I would accidentally introduce errors into code snippets as I tried to rename variables or refactor pieces for readability. This tool makes it easier to find those problems!
@GentlyPress (This tangentially reminds me of the Lojban language, an invented "logical" language based on predicate calculus, which has a hilariously fiddly system for representing emotions using 39 root emotions modified by 8 optional levels of acuity and 6 optional domains.)
@GentlyPress (It seems especially weird because that game is heavily concerned with the notion of "opposite" emotions in a kind of boiled-down simplified way, so e.g. Sad and Powerful are treated as opposites: the more Sad you are, the less Powerful you are, and vice versa.)
@GentlyPress There's a tabletop game that I know of that uses an emotion wheel (namely, The Veil, the cyberpunk PbtA game) and it has six points which go Mad-Peaceful-Sad-Joyful-Scared-Powerful. Its wheel doesn't seem right to me, but it's interesting as a point of comparison.
@cattheory It turns out that @d_christiansen remembered my joke when he was starting his postdoc and asked me if he could use it, so the fact that the prover is named Pudding is in fact directly because of that tweet!
Some Sunday afternoon yak-shaving: a quick-and-dirty `dmenu` application launcher using XDG Desktop Entries instead of using stuff from $PATH: github.com/aisamanra/dmes… (written hastily, largely untested, requires Python 3.6 or later)
@hikikomorphism (And the former notion is a lot more interesting to me as a concept to explore than the latter, although I guess maybe it would have been harder to emphasize on TV and would have had fewer opportunities for angsty voiceovers.)
@hikikomorphism (Maybe I'm misremembering, but I felt like the book painted the city split as a culturally ingrained consensus that the citizens only faintly thought about, and this adaptation plays it as a sinister draconian split with scary posters everywhere warning about "Bréach".)
@hikikomorphism I love the book, but this adaptation makes a bunch of changes that feel weird and unnecessary to me while not really capturing much of what I liked about the book. I've only seen the first episode and I'm gonna keep watching out of curiosity, but I'm not a fan so far.
I have many complaints so far about the TV adaptation of The City & The City, but I absolutely cannot stand how they use random accents to make English text look 'foreign'. One poster in the background says, I quote, "Áre wé mén ör lémönšž?"
@itblumenfeld …I didn't realize until I presented mine at Galois that I actually failed to put a mistake in one of the equations. It turns out, it's actually very hard to force yourself to put mistakes into stuff you know very well, much less egregious mistakes!
…it strikes me that the only reason I've drawn commutative diagrams for the past three years or so was to make incorrect parodies of them. I can't recall now the last time I've drawn a category-theoretic diagram that properly commuted.
I had hoped to surreptitiously replace Einstein at night without telling people, but I procrastinated, and only just brought it in last week as a parting gift. Anyway—that's the story of my mediocre, ridiculous parody painting.
I wanted to lampoon this painting, so I did what any reasonable person would do: I painted my own snarky parody of it, complete with incorrect equations, but instead of depicting Einstein, it depicted Galois co-founder and Haskell Committee member John Launchbury.
It also was covered in equations—because science means equations, right?—many of which were of dubious relevance to Einstein, incorrect, or both. For a while, my coworkers had post-it notes with corrections all over the print.
Silly story: a few years back, we at Galois got some new wall art, including a print of a painting of Einstein. I wasn't a huge fan of this painting! It was corny and kitschy, and I dislike that reductive "Einstein = generic smart guy" symbolism in general.
my plan is to photoshop a scooby-doo screencap so that someone pulls the mask off of a commutative diagram and underneath it's UML, and then haskell programmers will begin throwing medium-to-large-sized pebbles at me in public
(To be fair, if you think `charter` is bad and unnecessary, you should see the other thing I just put on Github: a program that adds `new-` to certain arguments and then execs into `cabal`, because I am a lazy, lazy human being.)
Many caveats: it has some weird personal assumptions, is written in a not-super-robust way, is missing several useful features, and is basically a less-flexible `hi`. I'm happy to expand on it if people'd find it useful, though!
This is a Hacky Personal Tool that I mostly created for my own use, but in case others are interested, I've put `charter`, my home-grown command-line `cabal init` replacement, on Github: github.com/aisamanra/char…
my four-year-old son Grungpbo wouldn't switch to Haskell because he wanted to keep programming in Scheme and when I bribed him with type safety he said "Would you rather have type safety or be happy" and turned back to his editor
Delve is a more granular, tactics-focused hack of Hero Kids, a classic-D&D-style RPG designed for a very young target audience which consequently has some robust, elegant, lightweight rules for that sort of game: herokidsrpg.blogspot.com
I haven't been posting much about my personal non-technical stuff lately, but right now I'm hacking together a lightweight grid-maps-and-dice-rolling tabletop game I'm calling Delve, and I'm pretty happy with how the materials look so far.
Yesterday I tried using psutils to put together a booklet, and found that the version of psnup that ships with most distros has had a blatant argument-handling logic bug that looks like it's been there since 1995.
@shelfuu (I don't remember if you had my Jalapeño Cream Sauce while you were in PDX, but it's a sauce I make that's a variation on a cheddar-and-jack Mornay, using cream and sour cream instead of just milk for richness and flavor, and adding diced jalapeños and other spices for a kick.)
@shelfuu (If you add the cheese while the sauce is on the burner, the cheese tends to turn stringier. This also applies when making a Mornay sauce—that is, a Béchamel with cheese—which would be a workable Alfredo substitute, but still taste and feel qualitatively different.)
@shelfuu "Fettuccine all'Alfredo" was originally just pasta tossed with parmesan and melted butter, but lots of places started adding cream to make it richer: a modern preparation can be made by melting butter, adding cream, stirring, then removing from heat & adding grated parmesan.
@shelfuu Tedious pedant here! The phrase "white sauce" usually refers to a béchamel sauce, which is milk thickened with roux, whereas "Alfredo sauce" (as it's understood in most commercial contexts) is usually cream thickened with butter and parmesan.
"Ah!" said the doctor. "I know just the thing to cheer you up. Go into town tonight and see Death, Destroyer of Worlds, come here for the destruction of these men." "But Doctor," protested Oppenheimer,
@n1nj4@ffee_machine Docs is good at the collaborative editing part, but it's merely alright at the brainstorming part. Wave would let you start basically with a chat conversation and seamlessly switch to document editing, whereas "chatting" in a Google Doc is… awkward.
Tonight's project was to try to create random sky images in the style of Steven Universe's backgrounds. I'm still fiddling and want to introduce more striking colors, but I'm already happy with the direction. (Rust+Cairo.)
@mkawia @RustDevLuke @Dropbox I can't speak to Dropbox Paper, which I haven't used, but w/r/t Google Docs, it can do this but doesn't encourage the same smooth workflow. It's great for the collaborative editing part, but it doesn't have the same affordances to make the brainstorming part smooth.
…but as far as I can tell, all of the developers positioned it as "Email But Better!", which it wasn't, and that (coupled with, y'know, Google) meant that it could never grow into the useful and worthwhile tool it could have been.
@theg5prank This got an early, semi-nonsensical quote-tweet from some kind of accelerationist cosplay account, which I assume was what led them all here. I've been giving Twitter's block feature a pretty good workout today.
@vrika I looked on their issue tracker, and someone had brought this up last year. The devs did some complaining about how "people are too sensitive" and how "slavery is over, get over it", and pretty quickly closed the issue. I'm not sure it'd be worth trying to reopen it.
I really thought Godot looked interesting, but the fact that a decision like this didn't get shut down right away speaks so ill of their developer community that now I don't want to have anything to do with it.
@Blaisorblade There's a bit more detail here, down under the "inheritances" section, and it also describes the third way to use them, where you combine functions that might fail in order to get a definition-by-cases-ish syntax: brej.org/blog/?p=238
@Blaisorblade Almost like a union, except changes to the original unions will also reflect in the "inheritances" created with that union. In that sense, it works sort of like inheritance of fields in OO languages, but exposed as an operator instead of a feature on class definitions.
@Blaisorblade I only posted one-third of the possible uses for "inheritances", and one of the others makes more sense with the name: if you use the `|` operator on hash maps, you get a hash-map-like object that inherits its keys and values from the constituent hash maps.
@raudelmil I mean, to be totally fair to the language, it's not intended for structured programs that are bigger than one file of a hundred or so lines at most, so including a feature that's useful in small limited circumstances might not be inherently a bad idea?
@tsion When I started reading your tweet, I had immediately started thinking of docs.perl6.org/type/Junction, which are yet another way of combining several dynamic values into a single value. Apparently Perl 6 likes those a lot.
@psygnisfive Apparently when you do it with hash maps, it's literally a union; when you do it with functions, it will call the first one, and if it fails, call the second, &c, for a sort of dynamic definition-by-cases mechanism.
I learned today that 1. Plymouth—the software for showing graphical loading animations while a Linux system boots—has its own custom scripting language, and 2. that scripting language has some ideas that are… uh, well…
w/r/t my recent comments about wanting the proposed throw/catch for Rust to be macros: @withoutboats pointed out to me that `catch` wouldn't work as a macro because it needs to work on the AST after all other macros have expanded twitter.com/withoutboats/s…
@withoutboats To a first approximation, I'd argue that pervasive features should be syntax, and convenient-but-not-as-widespread features should be macros if possible. A major factor in my opinion here is that I'm not yet sold that throw/catch sugar would be as pervasive as if/else or even ?.
@withoutboats I don't think macros are inherently better, either: there are trade-offs between the two. Rather, I think a feature like this should be, if possible, at least prototyped as a macro or compiler plugin, even if it doesn't live as one forever.
@withoutboats I don't disagree, but I also think the reason that ? was so well-received was BECAUSE it was a macro first. With try!, people could discover in practice 1. why the operation was useful and 2. why it was too heavyweight as a macro and needed a better syntax.
I said this in tweet form last week, but I tried to expand out my thoughts about why I'd be more comfortable with the Rust try/catch pre-RFC if it were macro-like instead of using new syntax: internals.rust-lang.org/t/pre-rfc-catc…
@ijks_w …and I think I'd be more comfortable if those were included to look at their practical use, and if they turn out to still have major ergonomic issues, to scrap them in favor of syntax, instead of going straight for new built-in syntax.
@ijks_w I think `?` was definitely a step up, but it also made me happy that it was only created after the problems with `try!` became apparent. I'm less convinced that e.g. `throw!` or `#[catch]` would have the same problems…
The fact that try/catch don't introduce "magic", but rather just desugar to plain Rust, is exactly why I think they shouldn't be new language features. Unlike many languages, Rust has a good macro system. I wish they'd use it for this.
OCaml's syntax (like all syntaxes) has some corners I don't really care for; Reason cleans those up and introduces some of its own. I think it might be an improvement overall, but I don't feel strongly about it.
Today I wrote a small OCaml program and then ported it to Reason. (I have OCaml experience, none with Reason.) My overall verdict is that they're both good and I have no strong preference between them.
@mrkgrnao@plt_dril (Oh, no defense needed! I know exactly what you mean—I've done it a few times myself! e.g. this one twitter.com/aisamanra/stat… There's both fun and art in figuring out how to repurpose the phrasing and context while keeping it recognizably "a dril tweet".)
On a somewhat related tangent: my favorite chengyu, or Chinese four-character idiom, is 畫蛇添足 (huà shé tiān zú), which means "draw a snake and add legs," and refers to ruining something by adding too much to it.
(This came up because she didn't cook any of the dishes at dinner, and then claimed that her lack of contribution was the best part of the dinner and therefore "…just like the Emperor's new clothes", and offered the previous explanation when we asked what she meant.)
@Jyrinx Or sometimes even more benefit: I didn't go into it, but the briefly-mentioned Hedgehog gives you test-case shrinking "for free" in part by not trying to have a one-size-fits-all generator for a type, but rather relying on extra data passed into generation functions.
@Jyrinx This makes sense, but even then, sometimes I prefer using explicit functions or dictionaries. I could write a generator for a new data structure with `Arbitrary a => Gen (Foo a)`, but I could just as easily use `Gen a -> Gen (Foo a)` and get similar benefit.
I emphasize in the post, but I should emphasize here: this is meant to be descriptive and not prescriptive. I want to explain my thinking and principles, but I also don't for a moment think mine is the One True Style.
tiny brain: cross-compilers galaxy brain: using a custom kernel to automatically execute ARM binaries using QEMU in Docker containers universe brain: tricking Docker build with an sh shim to execute ARM binaries using QEMU in Docker containers
@acfoltzer@shelfuu I've got cans of tomato paste from two brands in my cupboard right now, and it doesn't look like either has added sugar, but OTOH, they both have the word "organic" on the label, so probably a notch above Hunts.
(In theory, light-hearted software is great, but in practice, that light-heartedness is either put there by marketing departments, or by programmers—two of the groups I trust least to be entertaining.)
The bad Firefox advertizing thing brings up my two biggest software pet peeves: I never want software to do something without my explicit intention, and I never want my tools to entertain me or otherwise introduce unnecessary levity.
@ndm_haskell@Blaisorblade@jtdaugherty Which is why the question on my mind wasn't, "Can we make HLint hints more universal?"—which is a very good goal!—but rather, "Can we somehow prevent this unnecessary maintenance work by somehow emphasizing that not everyone is going to appreciate the same hints?"
@ndm_haskell@Blaisorblade@jtdaugherty FWIW, this entire thread started because another library maintainer I know was complaining about having to close "drive-by PRs" where people would blindly apply HLint suggestions and try to contribute them back.
@jtdaugherty@Blaisorblade@ndm_haskell That is: all hints should be opt-in by default, and the tool can (upon first use) explicitly ask the user about whether they want all hints on, even contentious ones, or some subset thereof.
@jtdaugherty@Blaisorblade@ndm_haskell I think there's a reasonable assumption when coming to a linter-like tool that the defaults are going to reflect some standard consensus. If that's not the case, then maybe hlint should fail without an explicit configuration step.
@dackerman@mrkgrnao I don't know what "devil's steelvocate" is supposed to mean here, but I don't agree that it's "simpler" for values of "simple" that I care about, regardless of how familiar arrows are.
@mrkgrnao This is true, and also I'm being a little bit snarky by tying my two comments above together—my real problem with Arrow-the-typeclass is that it's too big and tries to abstract too many things, and not that any one operation it exposes is necessarily bad.
@d_christiansen (Estas lerte, ke Unicode reprezentas flagemoĝiojn kun sekvoj de alfabetaj signoj konforme laŭ regionaj normoj kiel ISO-3166—ekzemple, la signo 🇺🇸 estas 🇺+🇸—sed tiu ĉi elekto estas problema por flagoj kiel la Esperanto-flago, kio ne estas flago de lando!)
"The committee, formed at the '87 FPCA conference, was tasked with creating an open standard for a non-strict, purely functional language. This has made a lot of people very angry and been widely regarded as a bad move."
@iximeow At one point, I considered naming a twitter client after the one featured in this game mockup, but that seemed perhaps a tiny bit tacky. (…also, I never actually wrote the Twitter client so it was a moot point anyway.) twitter.com/bonerman_inc/s…
@d_christiansen Mi ne nun lernas malnovnordlandan, sed mi volas fari ĝin. Mi legis iomete malnovnordlandan gramatikon kaj estas tradukinta malgrandajn tekstojn—kiel mi estis faranta, kiam mi trovis 'fámennr'—sed mi ne akiris la konvenajn librojn aŭ rimedojn por ĝin lerni.
@d_christiansen Estas stulta ŝercaĵo: mi trovis la vorton 'fámennr' en vortaro kun la angla traduko 'having few followers', kaj mi estis iomete amuzata, ke la angla traduko povas havi du sencojn je tvitera kunteksto. (Mi pensas, ke nek senco estas komplete vera por mi.)
@mcclure111 From quick experiments, it looks like Ruby treats it not as whitespace but as an identifier character. GHC does treat it as whitespace, and it looks especially great given that Haskell is indentation-sensitive:
Oedipus then approached the Sphinx, who posed her infamous riddle: "What is that which walks on one leg in the morning, two legs in the afternoon, two legs in the evening, and one vertical and one horizontal leg at night?"
@Blaisorblade @trannosaurusma @pigworker For what it's worth, as I am the author of the post in question: I am pretty sure I deeply agree with Conor on these topics, and only really disagree on how to talk about said topics. I'd definitely never want to throw out Curry-Howard!
@DanielRecker@tsion@TheZoneCast I've seen people use @TheZoneCast's items in their own campaign before, but I don't know if they had official stance on that. My guess is that, as long as it's your own campaign and not, like, an adventure you're selling, you're probably fine?
I've pushed a new version of my INI-parsing library with a new bidirectional API. With this API, you can parse a file to a value, modify the value, then reserialize to INI retaining existing comments/whitespace/structure/&c for minimal diffs: hackage.haskell.org/package/config…
I'm using the tweet I criticized here as a jumping-off point, but I want to be clear that what I take issue with is the broader rhetorical tendency, not just a few specific tweets: twitter.com/aisamanra/stat…