Here are a selected number of my posts from the now-defunct blogging platform and social media website https://cohost.org. They're poorly converted to markdown and I don't plan on doing much with them except host them for personal posterity. A few will appear in my main feed, most will not.

splint release: autocorrection bby

Big feature: Safety and Autocorrection

Every rule has been marked as safe or unsafe. Safe rules don't generate false positives and any suggested alternatives can be used directly. Unsafe rules may generate false positives or their suggested alternatives may contain errors.

Rules that are safe may also perform autocorrection, which is tracked in defrule with :autocorrect. Rules may only perform autocorrection if they're safe.


Continue reading →

@noahtheduke posted:

i'm glad my kids are growing up, i don't want them to be this age forever. however, i wish i could hold them when they were so very tiny again.

Continue reading →

@tsiro posted:

it's awesome how in "whole wheat" both words start with "wh", but "whole" takes the sound of the "h" and "wheat", "w". hole weat

Continue reading →

Uncharted 2: Among Thieves Remastered Review
★★★★★
★★★★★

Completed

on

PlayStation 4

A perfectly fine way to spend some evenings. The action/adventure sequences are fun, the set pieces are still beautiful, the occasional funny quip, but the rest is forgettable.

Mushy controls, worse combat, threadbare stealth, along with another Nathan Drake story that didn't hold much weight. I played it on easy because I don't think this is worth any effort especially if you've played The Last of Us which is better in almost every way. (I will say that Nathan Drake sucks less than Joel, the worst human alive.)

I love Elena tho, she's my ride or die.

Reviewed on Aug 25, 2024

made with @nex3's Backloggd formatter

me when i have a job: i think i'm just naturally happy. i don't get sad often or for long periods and i easily roll with the punches of day to day life.

me when i don't have a job: maybe i should kill myself.


Ocaml wishlist

On twitter, someone asked: "But seriously, what changes would you make to OCaml which would worth it to break backward compatibility?"

I replied with: "Borrow from Clojure! 1) Make (=) / polymorphic equality work on values (not structure). 2) Make "functional updates" of records nicer. 3) Change ref to work like clj atoms, add swap! as a built-in function. 4) Remove the mutable keyword, make ref the only mutating interface."

Our very own @prophet responded ([1], [2], [3], [4]):


Continue reading →

idk if i'll ever be as disappointed by an album as i was with glitch mob's love death immortality

after drink the sea (nearly perfect), i went in with such high hopes and yet even 10 years later, love death immortality just fucking sucks dude. not a single good song, almost none of the things that made me love drink the sea, just a complete abdication of their sound and style.


Splint v1.16.0

The --only cli flag is one I've been meaning to implement for a while but just hadn't gotten around to. It's really only helpful when you're zeroing in on a problem rule, but there will always be uses.

The rule lint/duplicate-case-test is already checked by case's expansion, but I think it's good for static analysis tools to verify that stuff too. And lint/locking-object should help uncover subtle bugs, especially in concurrent situations.

Honestly, having been fired, I just don't have the strong drive to work on this like I did. I no longer have a 140k sloc project to test against, so there's less for me to look at and find inspiration from. I'm trying to keep up with it tho, it's helpful to not get rusty.


Continue reading →

@noahtheduke posted:

i only started learning Ocaml on Wednesday, but i'm already opening PRs to help improve the documentation on the ocaml.org site: https://github.com/ocaml/ocaml.org/pull/2613

contributing to open source just feels good, what can i say?

it is moderately funny and fucked up that until now, there's not one droplet of information about comments on the ocaml website.


Continue reading →

learning a new programming language is like walking into a world where your mom's house is mirrored


Continue reading →

funny thing has been happening with reviews i've seen of Animal Well: people have been missing small but critical parts of the game in their playground because it's deliberately obtuse and designed to be discovered through play. this has soured some folks on it (such as my brother) who spend 2-5 hours at some part of the game just running around not knowing what to do until someone tells them "you missed x" and then they beat the game shortly after and are like "that was a waste of time" turning a 9/10 to a 6/10.

however, that has repeatedly been my experience of elden ring. i have consistently missed sign posts, quest lines, critical paths because i'm just playing the game and then i'm wandering around like "what do i do now?" it's not exactly unpleasant but it does kill the enthusiasm and fun while it's happening, and then i'm annoyed when i post in my group chat and someone says "you missed x." but none of the reviews for elden ring i saw mentioned this or were like "it's deeply unpleasant to play without a guide or friend who has already played it."

i'm not gonna say double standard, but it seems people are more lenient about dumb bullshit in a fromsoft game than an indie game.


Lacuna - A Sci Fi Noir Adventure

I played and beat Lacuna this week. Incredible little game. I guessed the big revelation during the prologue so that didn't hit so hard, but the rest was a delight. The way the cases and sheets are filled out was at first really hard and then much easier and more fun as the game went on. I thought i'd gotten everything right and then learned that I missed whole branches because i'd some early mistakes. Feels pretty great, especially for such a short and punchy game.

Excellent music and soundtrack, beautiful pixel art, compelling universe. I was sad to finish the game, I want to spend more time here.


i dropped my iphone nearly a week ago, busted the screen just enough that it no longer registers touches. so i swapped the sim into a flip phone and have been living an offline life.

lemme tell you what, it's a pretty sick life. i'm slowly losing the sense of "i'm bored for 2 seconds, lemme look at my phone" which has been the bane of my adhd-riddled existence for 15 years.

the flip phone uses KaiOS which is based on the firefox os lol, so it has no good apps and runs like shit, but honestly, having more friction means that i can't/won't load it up with a bunch of stuff. all i do is text my wife and make calls to places, which is ideal.


Continue reading →

Clojure: Enterprise Edition reply

@chreke posted:

“Records” in dynamically typed languages keeps being a source of vexation for me. For example, I really like the idea of Lisp systems, but the fact that Clojure (and several other dynamically typed programming languages) default to representing domain objects as maps freaks me out a little bit.

To be fair, I’ve never worked in a big Lisp code base—my experience is only limited to experiments—but I have worked in large Erlang code bases with lots of business logic, where I would often run into issues with the lack of types for domain objects.

To illustrate my point, consider the following example—you’re asked to extend the following pseudocode to send an email after a user has finished their registration:

(def register-user [user]
  (if (valid-password? (:password user)
      (save-to-db user)
  ...)

The question is, what is user? It looks like it will be a map that contains a :password key, but does it also have an email address? If so, is it under the key :email or :email-address? Is the email a string or is it some kind of “email object”? If there is an email address, is it mandatory? Has it been validated in a previous step or do we need to go back and add validation somewhere?

Clojure / Lisp devs, how do you deal with this? spec? Docs? I know "the Lisp way" is to do interactive and iterative development, but at some point I would assume you end up in a situation where you can't look at what's inside the user variable. (Or maybe this isn't a real problem and I'm just too ML-pilled)


Continue reading →

i am so into my wife, dude

idk how to write it. i'm not a poet, i was raised by a writer but words don't come easily to me so when i feel these feelings, all i come up with is stuff like "she's so fucking hot" which is true but also shallow.

it's like...

every texture of her body is built to electrify me. each line, each curve, each shadow pulls me in. i feel suffocated by her, like she enters the room and my lungs fill with cotton. i want every square inch of her body in my mouth at once. i see her and it makes me lose my train of thought, i can't focus on anything else. i want to be enveloped by her, smothered and wrapped up and ensconced. i try to alight on a solid fantasy but they merge and meld and flow into the next too fast to hold for more than a moment.


Continue reading →

@noahtheduke posted:

if you are part of any decision making process that forbids trees and/or grass from playgrounds, i hope you fucking [violates facebook community standards]

if you are part of any litigation against owners of playgrounds related to the presence of trees at a playground (a kid got hurt climbing a tree etc), i hope you fucking [violates facebook community standards]

if you think that barren playgrounds, fully exposed to the sun and covered in heat absorbing plastic, are enjoyable for children, i hope you fucking [violates facebook community standards]

having children has changed my opinion on many things but not this. i've hated treeless playgrounds since I was a child and it's only intensified as perfectly good playgrounds have been ruined for the sake of "safety".


Continue reading →

if you are part of any decision making process that forbids trees and/or grass from playgrounds, i hope you fucking [violates facebook community standards]

if you are part of any litigation against owners of playgrounds related to the presence of trees at a playground (a kid got hurt climbing a tree etc), i hope you fucking [violates facebook community standards]

if you think that barren playgrounds, fully exposed to the sun and covered in heat absorbing plastic, are enjoyable for children, i hope you fucking [violates facebook community standards]


Continue reading →

only through repetition do we grow

you know those cooking shows where they travel to some remote countryside place and interview a woman who's been making a certain bread for 50 years and is now old and frail but she's still got it, by god.

and they're like "what's your secret?" and she's like "i've been making this bread every day for fifty years" and they're like "there you have it, folks, the secret is the kind of flour she uses."


@ninecoffees posted:

I think I learn/memorize programming a lot better when I understand *why* the language is written that way. Like, I remember asking someone a few days ago if src stood for 'source' and they just shrugged.

"It's just what you type," was the answer.

Obviously, I googled it afterwards, but even then I saw that most teaching websites don't actually list out or explain what you're actually typing within the elements. Just an expected brute force memorization to it all.1

I know a lot of people told me that I don't need to understand everything when programming--certainly some of my friends would laugh and say 'beats me' when asked how their code works--but I feel like it's a lot easier this way? Like, understandably, it's obvious to me that this part needs an href since it's a hypertext reference for an anchor, but then, why is it called an anchor?

If I understand it, I'll retain it immediately. If not, I'll forever be asking why it's called an anchor.

I do wonder if this 'insistence' on understanding everything will bite me in the ass though.


@ninecoffees posted:

I think I severely stunted my learning for multiple days by trying to understand everything. Often times, a tutorial will just present you with a new element and tell you this is how it's done, and then I'll try and look the entire thing up to try and 'properly' wrap my head around it with all its silly intricacies.

Don't.

Much like how the default advice for people trying to write a story is that they shouldn't spend months studying the latest creative writing book or try and read Save The Cat! to find the next best Hollywood formula and instead they should just write and finish a story and expand their media literacy outside of IMDB's top 100, this is the same.

I think I was simply too caught up with old study habits. I don't even know why I approached this as an exam and tried to memorize everything from the beginning. When I was young, there was a famous story that went around trying to counteract the Asian rote learning education style that basically went:

Albert Einstein1 was confronted and laughed at by another mathematician. The mathematician says, "Why do you always look up reference books, Einstein! Shouldn't a smart man like you have all that memorized by now?" And Einstein's reply was, "I don't need to memorize them precisely because they're written in books. I can free my mind to understand other things."

Now that I think back, @NireBryce (thank you for all your help:eggbug-heart-sob:) even told me I was too focused on the specific details of language and understanding comes naturally through execution. It's not that I wasn't listening, it's that I forgot about this piece of advice after I went to bed that night. :unyeah:

Also I highly recommend you don't learn coding while listening to Satori by Etienne Jaumet. I didn't understand why I was so stressed until I realized the music sounded like a countdown for a timebomb and I kept feeling like I was stuck in my uni finals. Jesus Christ.

GOOD SONG THOUGH.


@noahtheduke posted:

I think I severely stunted my learning for multiple days by trying to understand everything.

What's a couple days? No, really, what's a couple of days? Things take a very very long time to learn, even the simplest things take time. Every day, my 2 year old puts on his shoes and every day he fucks it up in some small way and sometimes he gets it and sometimes he doesn't, but every day he's trying. He's better now than he was a week ago, but day to day the changes are so small as to be imperceptible among the regression to the mean.

I read Learn Haskell Fast and Hard shortly after it came out because I spent a lot of time on /r/programming and The Orange Website. At the time I was a hobby python programmer and common lisp dabbler. The haskell tutorial blew my mind and I spent hours trying to figure it out, unable to handle eta-reduction and the "functional style". I walked away from it after multiple evenings defeated and forlorn, hopeless that I would ever understand it.

Years later I got a job as a python developer and then went back to the tutorial on a whim and blew through most of it until I hit the section on monads. I took another break, and years later I was working in clojure and had dabbled in rust, so when I tried again, it all clicked. I don't think I like Haskell, but now I have the capabilities to understand what's happening and enough experience to map the new stuff to things i've encountered.

This is all a lot of words to say, "What's a couple days?" The road to learning is incredibly long, the paths circuitous and winding, and everything you read or try (even when you "fail") informs and interconnects with everything else you read or try. What is impossible now may in time become easy or understandable, merely through the weight of "I've seen this now 40 times, I still don't really get it but I have a felt sense of what it's doing and what I can do with it."

Congrats on getting this far.


  1. that being said, there's a possibility I'm just missing critical information since I'm trying to self-teach without knowing CS or something


wife: i'm putting this away because you keep doing what i've asked you to not do. your actions have consequences, [daughter]. 4 year old: no! they! don't!!!!!!


splint v1.15.0 - custom rules support!

I've been sitting on this release for a little while now, trying to find the right way to approach to supporting custom rules.

The way the rules work currently, when a file with defrule is evaluated, the defrule macro adds the generated rule to a global atom. This simplifies a lot of stuff in the codebase, and makes adding new rules to splint pretty easy: make a new file, require it in the entrypoint for the library. However, users can't access that entrypoint from the cli, and while I've not exactly hidden the code, I don't think people should have to write their own entrypoint wrappers merely to include their own rules.

Inspired by RuboCop YET AGAIN, I've added a new option, settable in the config file or by passing the relevant flag at the cli, to call load-file on a given set of files which will presumably call their custom defrule invocations. Because I'm relying on Clojure's built-in behavior, there is no extra code necessary for me to parse or validate the paths myself; I pass them to load-file in a loop and print any exceptions that are thrown.


Continue reading →

open source maintenance

i am the maintainer of the vim syntax highlighting file for just, vim-just, and while i did the heavy lifting to write up the initial version back in 2021, i haven't cared much about keeping up with the latest changes and have let others make changes as they do.

last year, someone offered to help out so i added them to the repo. i suspect it's their first time being a "contributor" on an open source project cuz they've spent the last year absolutely dedicated to the task of improving both the syntax highlighting and the bespoke syntax test runner we have that's written in rust. the project isn't that exciting and doesn't require that much effort but they've stayed up to date (to the day) of new syntaxes added to just and have been poking and prodding the test runner to make it faster and more idiomatic, including writing their own custom version of vim's built-in :ToHtml as it was removed in neovim. today, they mentioned "but we don't want code like this in production" which cracked me up because there's no "production" to be had here! doesn't matter, they give a shit and so i give a shit with them.

there's no real point here, it's just fun to see someone really dive in and own something. i know open source maintenance is a touchy subject after the xz/liblzma stuff, but i still think it's worthwhile to give people a chance to make their mark and spend their effort on cool things.


my wife and i just played rock paper scissors to decide who has to run out for oreos and we tied 4 rounds in a row: scissors rock scissors rock


@Maxx posted:


Continue reading →

sometimes when my wife chastises our kids, i feel the embarrassment i felt when a friend's mom would chastise them in front of me lol


Continue reading →

my wife is experiencing a miscarriage right now. all either of us can do when we're alone together is hug and cry.

be at peace, baby, and be gone


4 y/o: it's sticky in the hospital
me: oh yeah? is it your breath in the mask?
her: no, i farted


4 y/o comes into the bathroom while i'm pooping, says "it smells bad in here, yuck" then tries to turn the light off when she leaves


Continue reading →

Mental Math Pseudo Random Number Generation

> given a large prime p, a multiplier m, and a seed number x_0, a Lehmer PRNG can be defined by the recursive function x_{n+1} = m \cdot x_n \mod p.

> One pair choice is p=59, m=6. Because 60 \equiv 1 \mod 59, each iteration is a simple matter of multiplying the ones digit by 6 and adding the tens digit. To illustrate, a sequence starting from 17 would continue 43, 22, 14, 25, 32, 15, 31, 9, 54, 29, ..., and taking just the unit's digit, that turns into 3, 2, 4, 5, 2, 5, 1, 9, 4, 9, which looks pretty random.

> Next up is p=101, m=50. Because p=101, this construction has the advantage that the sequence goes from 1 to 100, making the distribution of the output stream uniform over 1 to 10 and providing a longer period. The choice of multiplier also simplifies computation: if the current state x_i is even, the next number x_{i+1} = 101 - \frac{2}, and if odd, x_{i+1} = 50 - \frac{2}. Not as nice as the previous example, but still not bad.


Continue reading →

4 y/o: papa, can we get [toy on tv]?
Me: No. 4 y/o: momma, don’t listen to papa. Can we get [toy on tv]?


@noahtheduke posted:

I’ve been sitting on the seed of a blog post for a minute that goes something like “modern civil rights activists/sjws hurt their messaging by trying to redefine the word “racism” to mean systemic racism instead of the colloquial definition of interpersonal race-based prejudice.” Because I’m not a writer i don’t have a lot else to say about it yet lol but it’s been bouncing around in my brain for like 3 years.

i’m mostly writing this now to incentivize writing more later. tired of merely thinking this


Continue reading →

my wife: are you a pretty boy? yes yes 2 y/o: no, i hanome hucky
her: you're a handsome hunky?
him: yeah!!!!!!


Happy day in our house: Wish has come to Disney+

4 year old girl with brown hair faces a tv playing Wish wearing an oversized Asha’s purple dress


I picked up Going Under again, a good little podcast game

Going Under Review

NoahTheDuke

reviewed Going Under

★★★★★
★★★★★

Completed

on

Nintendo Switch

I cranked up the accessibility features cuz I already put 20 hours in and never got close to finishing it, and I certainly haven’t gotten better in the intervening years lol.

This game is pretty good. Cute writing, fairly obvious and funny commentary on start ups and VC culture. The “corporate art” style is killer, imo. Really pops, gives everything a sense of place. The soundtrack is a lot of fun too.

I’m playing on the Switch and I must say that it’s fairly choppy/framey. Not unsurprising given the hardware’s age, but it still struggles to show a fight with a handful of enemies and some fire effects without stuttering.

Reviewed on Apr 03, 2024

made with @nex3's Backloggd formatter

oops meant to post about this here

@JuniperTheory posted:


Continue reading →

Taken from stimslack

Jnet chat, both players say gg. P2 says “i have some instructions for you. do you own a shovel?” P1: “i do not” P2: “well, bare hands are fine. go to your yard. dig a deep hole. put this in there, for the good of the game.”


My 2 y/o was STRESSED last night

Things he shouted out at various points of his sleep:

  • lala stop it!!! (lala is what he calls his sister)
  • bubbles empty 😤😩😤😩
  • bus come back!!!

https://github.com/mtgred/netrunner/pull/7346

this shit is another hefty one. i rewrote the primary data structure for costs. will be much simpler to track costs, add modifiers later, keep normal and additional costs distinct, and intelligently handle stealth costs.

once this is done, i'm gonna implement system-wide additional cost checking, allowing you to reject paying for any and all additional costs.


Continue reading →

Legal meth

It’s weird to use adderall/vyvanse/mixed methamphetamine salts and see immediate results. I’ve been without my drugs for a month due to the shortage but found my stash of old prescription that was too high, and decided to start taking it because I really like being productive.

Turns out, when I take medication, I’m really fucking productive! That’s annoying! Why can’t I just be productive like this normally?

Anyway, I stayed up until nearly 1 am last night working on jnet so at least it wasn’t purely for my job’s benefit.


Ruminations on technical debt in jnet (sent from my iPhone)

<jinteki.net> has a lot of problems, some which are easy to solve and some which are not. There’s a difference between bugs and tech debt. Bugs are things like “misplaced parameters”, or “forgot to check an additional predicate”. Technical debt is “the core system is built on callbacks” or “there is no game loop”.

I had a wonderful conversation with someone who is attempting to implement the Netrunner rules as strictly as possible. (She’s gone so far as to implement Netrunner’s R&D location system instead of using a simple vector!) In our many back and forths, I am confident she learned nothing from me lol but I learned a lot from her, both about Netrunner and about how to structure a game engine for Netrunner.

jinteki.net is not a good game engine. It works, in part due to the incredible amount of work we’ve all put in over the years, but (to be slightly rude) it has no right to work as well as it should. It’s full of cludges, ad-hoc systems, layers of ideas half implemented on top of each other like dirt strata.


Continue reading →

Edit of The Rock wearing a turtleneck but with edits to give him fish ear and blue skin and eye camera

Palisade 41 is really good


Me (internally) to my kid when she does something so infuriating I feel like my head is going to explode: hell yeah, parents are cops, APAB


Continue reading →

@noahtheduke posted:

i'm not doing a good job and we can't see an occupational therapist until july.

my 4 year old probably has sensory processing disorder and adhd, she's self-confident and precocious but lacking in any real world experiences, and she triggers me nearly every day like i'm living at home with my dad. (that's another story for another day.)


Continue reading →

how do you be a good parent to a kid with a touch of the 'tism when you also have a touch of the 'tism

i'm not doing a good job and we can't see an occupational therapist until july.

my 4 year old probably has sensory processing disorder and adhd, she's self-confident and precocious but lacking in any real world experiences, and she triggers me nearly every day like i'm living at home with my dad. (that's another story for another day.)


Looks bad, tastes great

@noahtheduke posted: Cookbook open to recipe titled Peanutty pork noodles with crunchy celery

Counter covered in prepared ingredients


Continue reading →

I think a lot about that conversation at the dinner party near the start of Cryptonomicon by Neal Stephenson where the stuffy academic is like “We have the information superhighway, but what about the information ghettos that lay beneath?” and Randy is like, “you’re so fucking dumb, that’s not how the internet works” and yet 25 years later it’s exactly how the internet works.


jinteki.net has full implementation of Rebellion Without Rehearsal

Full release notes:

  • Prevent format filter dropdown from closing when toggling formats by butzopower
  • pass ice events should still trigger even when ice is swapped during the pass by butzopower
  • Fix :tag-or-bad-pub cost always resolving to remove tag when tag available by butzopower
  • Ensure Rebirth options are only Runner IDs by butzopower
  • Ack toasts explicitly and prevent toast cycles by butzopower
  • fix threat function causing an infinite loop by francescopellegrini
  • RWR patch by NBKelly
  • Allow /undo-click to go back multiple clicks by butzopower
  • Allow rejoining password protected games by re-entering password by butzopower

and while it says "RWR patch by nbkelly", this was a joint effort between nbkelly, Francesco Pellegrini, and butzopower. nbkelly has kept the playtest server updated as NSG developed the set, and buztopower and francesco did a lot of QA and engine work and test writing to ensure things are as good as they can be today. they're all champions and i'm very proud of them/glad for them to pick up the torch since I no longer have time to work on jnet.


On our way to target Me: i miss community spaces.
My wife : you don’t think target is a community spa- hahaha


May thy knife chip and shatter, dickwad


Continue reading →

Reread the second half of Dune in preparation to see DUNC 2 in theaters

This book is fucking sick and it’s honestly disappointing to see how little of the machinations and politicking of included in the movies. We’ll see how much that changes in D2 but DUNC felt like the barest smatterings of dialogue and context so we could have some beautiful visuals.

Which is like fine? But it means that all of the characters are flat, cardboard cutouts of their book selves, that’s basically no compelling reason to care what happens to anyone. My wife, who’s never read the books or seen previous adaptions said, “I can’t pick a favorite character because I don’t know any I’d these characters. Even Paul has no personality, no texture. The movie was one long fight that felt like a prologue to the second film.” I couldn’t disagree with that assessment.


"The main goal of this project was to create a sequence of inputs that beats [Pokemon FireRed] with an 100% chance of success."

https://www.youtube.com/watch?v=6gjsAA_5Agk

i love when someone spends a year to do something insane.


more reign 2e thoughts: there's no gm chapter

okay, so i just skimmed the rules book again and there's no GM chapter. i glanced through the realms book and there's no GM chapter there either. There's a chapter with 3 example scenarios, but no thoughts or ideas about how to run a game, no "enemies and adversaries", no "how to build a campaign", no "gm principles", no agenda, no vibes, nothing.

i know it's from a different era (first edition published in 2008), but i'm really surprised that 2e doesn't include anything. even the ampersand game does this! they've got whole books dedicated to it (varying quality, depending on the edition).

i'll be honest, this has tempered my enthusiasm quite a bit.


Continue reading →

https://www.youtube.com/watch?v=dDVDi4avnwk

in case you didn't know, vanessa carlton (of "a thousand miles" fame) has continued to release music. her fifth album "Love Is An Art" contains "Companion Star", this beautiful brooding meditation on growth and staying grounded. in the bridge, she repeats "who i want to become, and to whom i always will belong" set to a deep organ. it's my favorite part of the song, a distillation of the whole. i find it satisfying and contemplative, like being wrapped in a warm blanket in the dead of winter.

i played it for my wife back when it came out, describing these feelings to her, and she said that the whole song and specifically the bridge left her feeling anxious and sad. wild how different people can experience music.


hot take: spellcheck is bad

i tried to use the word "immiserate" earlier and firefox's spellchecker yelled at me. this is not a technical or archaic word. and yet it doesn't appear in the "top x words" dictionary that's included by default in firefox.

my iphone knows the word, notion doesn't know the word, google docs knows it, neovim doesn't know it.

why are we reliant on these things to tell us which words are "real"? shit's dumb. there will be people out there who read or hear a word and think "that's a word" and then go to use it in one of these apps, and it will chastise them, saying "that's not a real word". unless they have the temerity to check a real dictionary, they'll just go "i guess i was wrong" and now their chosen speech is worse and the world is less textured than it was before.


Continue reading →

@noahtheduke posted:

I read some of the Reigns setting book and i forgot how fun and weird it is, but this shit is laid out like ass. There’s no “brief overview of the world and peoples”, it’s just immediately multi-page chapters about each nation state, very little by way of “here’s where they are in relation to each other geographically” or “here’s a historical overview”.

Like opening a book titled “United States of America” and it opens with a mapless description of Alabama, then the next chapter is about Wisconsin, followed by New Hampshire. What the hell.


Continue reading →

I hope I never forget laying in bed after a long day, seeing that @jdq had released the theme song for Palisade, putting it on, and feeling swept away overcome completely immersed in the poignancy and delicate tension. I knew then that the season was going to be something special, even after so many bangers, and every single episode has met that high mark.


Reign 2e

I got my copy of Reign 2e and Reign: Realms. I read through the core book, will read Realms tomorrow. Gonna copy my thoughts from pms I sent my friend:

Okay, i read it. I skipped the details on the advanced combat and the minutiae of the advantages/powers/magic, but read all the core rules and the company stuff.

It’s the most traditional game I’ve read in a long time. It’s fun! I love the ORE, i don’t like binary dice mechanics, i love love love Greg Stolze’s writing voice, i like that the text spends some time to say “gm, don’t just run players through a plot” and “players, don’t just sit around waiting for plot to fall from heaven”. I like that a whole chapter is a “table of contents” of the various subsystems, explicitly saying “choose only the roles you want to make the kind of game you want, please don’t pick everything”


Continue reading →

"Yuki's Vacation" and a call for help from chinese speakers

There's an abandoned freeware game made by James Silva (Ska Studios, The Dishwasher, Salt and Sanctuary) in 2002 called Yuki's Vacation. He made it in Visual Basic 6 after Zombie Smasher X as a way of showing how he made games. I was already obsessed with Zombie Smasher X (just look at this gloriousness), so getting access to the source code was a revelation.

I spent hours playing around with it, editing the bmps, changing the level design, doing really basic programming (I didn't really know what I was doing) back in 2002 and 2003. It was foundational for me seeing programming as something I could do and not just "magic by people smarter than me".

Every so often, I search for the code online and can't find it (because who the hell would keep freeware visual basic code for 20+ years), but I think I've come across it here. The site is in Chinese and even with Google Translate, I can't get the system to allow me to create an account so I can download this. I hope it doesn't cost money to download, but I'm willing to pay $20 if you can help me out here. It's really meaningful to me.


If Daylight Saving Time has million haters, then I'm one of them.
If Daylight Saving Time has one hater, then that’s me.
If Daylight Saving Time has no haters, then I’m dead.
If the world is for Daylight Saving Time, then I am against the world.
Till my last breath, I’ll hate Daylight Saving Time.


buying digital music

i buy almost all of my music through bandcamp, but there are a lot of artists (mostly those signed with big name labels) that don't have their music on it. for the other music i want, i have to use qobuz.

qobuz, for those who don't know, is a streaming service and digital music store that sells FLAC/etc versions of music from big labels. It's quite comprehensive and boasts the best per-track streaming payout for artists ($0.04 per track listened).

Alongside that, it's significantly more expensive than bandcamp. For example, At the Walls by Enforced is $8 on Bandcamp. Kill Grid (released by Century Media) is $15 for mp3, $18 for FLAC. (I know that At the Walls is cheaper on Qobuz, I'm talking about big label releases rn.)


Continue reading →

Name ideas

Fidget
Lakeside
Barrier
Conifer
Silicone
Harken
Methodical
Presently


eggs bene gesserit


Continue reading →

What is this data structure?

I re-discovered a data structure I used many years ago from a game engine. It’s like a queue but is well built for recursive or nested work. The name I know it as is the Pipeline.

The data structure is { processed: queue, added: queue }. It has the methods enqueue(…args: any[]): pipeline, peek(): any, and pop(): pipeline.

When you call enqueue, you pass in any number of items, which are added to the back of the added internal queue. Like a classic queue, if enqueue is called multiple times in a row, each set of items is added at the end.


Continue reading →

Just pushed my 4 year old off the swing. AMA


Continue reading →

You ever start shredding cheese for some small portion and then kind of zone out in the simple pleasure of the movement and watching the block in your hand shrink and then you snap to to see the cheese practically poking out of the top of the shredder?

Me either


To be a pedant

I hate that “dad joke” has become a cultural thing, specifically being used to refer to puns. Puns are great, but dad jokes as I understood them are about deliberate misunderstandings for comedic effect. They can use puns to find or create the misunderstanding, but the fun comes from the parallel conversation and the moment of realization.


Preganté

Did some big cummies!!!!!!!!!!!


The Oldest House

@noahtheduke posted:

Been playing Control on my steam deck. This game fucks. Amazing atmosphere of dread and anxiety without ever getting too scary for me. I’m dumped all of my ability points into telekinesis, because it’s satisfying. Nothing beats it yet except those flying turds.

Idk what’s going on, i barely understand the story, there’s a lot of mystery and very little explanation and I’m just along for the ride, really.


Continue reading →

We’re 2 episodes from the end of season 15 of rupaul’s drag race, and May’s paramount + preview ended. We signed in with our friend’s account that does ads, and the very first ad we saw was an MTV commercial “celebrating the winner of RuPaul’s Drag Race season 15”


Learned about the takeover of da share z0ne yesterday, like a lot of terminally online folks. Pretty disappointing and disheartening.

I had assumed that, like dril, this was the work of one person who had changed over time. Tastes change, writing voice changes, goals change, so it makes sense that the quality would shift. Not every dril tweet is a banger, not every da share zone is either.

But learning that the quality drop comes from a coup by a money grubbing asshole who is only mimicking the better work of the people he stole the account from really fucking sucks. Can’t escape the clutches of greed or money anywhere.


Splint updates! Oops it's been 8 months edition

I forgot to post about the updates back in December, so I'm gonna write about everything from 1.11 through 1.14.

The biggest changes since last summer are a global top-level entry in .splint.edn that applies to all files, supporting the upcoming Clojure 1.12 interop syntax ((^[] String/toUpperCase "noah")), and simplifying the internal logic of the pattern DSL so that the short forms are expanded to their full forms before processing.

Paired with the global entry in .splint.edn, I implemented :excludes, which will skip specified files or directories in global or in specific rules. The paths can be specified with Java's java.nio.file.FileSystem/getPathMatcher globs or regexes, as well as :re-find and :string. Details here.


Continue reading →

L, my 4 year old daughter: I know an old lady who actually ACTUALLY swallowed a thumb!

Then she chomped on my thumb.


May made this cookie cake from scratch.


Viscerally annoyed

I’m trying to learn Ocaml. It’s going okay, learning new languages is hard, and learning new warts is the hardest part. I came across one that’s left me so viscerally annoyed that I might stop learning the language altogether.

I’m struggling to write a real post about this lol. I keep deleting my words.

I’m annoyed that argument order evaluation is deliberately unspecified in the language spec and the primary compiler evaluates arguments right to left.


Continue reading →

@noahtheduke posted:

Me: why is the menu all Italian words? I thought it was Mediterranean. … i guess Italy is surrounded on all sides by the Mediterranean Sea… “I’m getting Mediterranean tonight, ordering some papa John’s.”

Continue reading →

At dinner with my wife

Me: why is the menu all Italian words? I thought it was Mediterranean. … i guess Italy is surrounded on all sides by the Mediterranean Sea… “I’m getting Mediterranean tonight, ordering some papa John’s.”


just popped into my head the time someone complained to me about their issues with PbtA games being that 2d6+stat makes the bell curve too hard to calculate. i'm trying to remember their argument, but they were annoyed that one of the jumps is like 22% difference, and then the next jump was like 15 or 17% or something. i asked if they didn't play pbta because of it and they were like "no, my group just figured out a better curve with d10s and house rule all pbta games to use it instead." i asked if they knew about the Spire and "sparked by resistence" games, and he was like "we're happy with pbta."

nerds are very silly what they get hung up on.


My wife, about a gross dude on tv: ew, no man, you’re 37, you’re old.
Me: you know, I’m about to turn 37.
Her: there are some thoughts and feelings related to age I need to reconsider


This Is Us

I’ve been watching This Is Us with my wife, we’re halfway through season 1, and it’s a fine, pleasant show. Lots of well done moments about family and parenthood and generational trauma.

However, they also have moments of these characters just cratering their lives instead of doing literally anything else, and it sucks all the fun out of the show. I finally had to leave the room when Kevin literally left his costar on stage opening night of their play, just ran out of the building. The music swelled, the moment was textured with him saying, “I’m thinking about what my dad would do”, showing how meaningful this is/supposed to be. But that shit ain’t cool! Embarrassing yourself is one thing. Humiliating your costar with no explanation is unconscionable.

Earlier in the episode, I had to leave the room cuz another moment was also rough and my wife said, “Can you not watch the show at a remove?” No, I cannot. All media I consume I consume fully. To hear a story is to embody the story in my head and in my heart. It’s nice when I’m crying to Joanna Newsom while washing dishes, but it’s annoying when i just want to enjoy some saccharine feel-good drama.


Continue reading →

I want a tattoo that communicates the same vibe as putting a rainbow flag in my home’s living window.

I know that such signals aren’t perfect, that bad people also get pride tattoos, that there’s no way to say “I’m safe” unless someone actually interacts with me and makes that value judgment themselves.


gender feelings

@noahtheduke posted:

Trans Jerry: I have a suspicion that she’s transitioned just for the jokes.

Father: And this offends you as a trans person.

Trans Jerry: No, it offends me as a comedian!


Continue reading →

I’m at the final section of Guacamelee and this game is charming as hell. 2/2 from DrinkBox, tho Severed was significantly better.

I can’t wait to finish the main game and then 100% it. A perfect length for a game, imp.


Watching tv with a 2 year old

Messy living room, blonde 2 year old standing directly in front of 54 inch television


Trans Jerry: I have a suspicion that she’s transitioned just for the jokes.

Father: And this offends you as a trans person.

Trans Jerry: No, it offends me as a comedian!


My wife May: You kids want yogurt and granola?
My 4 year old,, yelling indignantly: I want a bowl of frozen corn!


@noahtheduke posted: two humans standing at the bottom of a grimy staircase. the woman on the left has green and brown hair, the man on the right has dark hair and a greying beard.

fun fact: our first date, the day i proposed, and the day we got married fall on the same day, jan 11th, each a year apart. makes counting and planning really easy, i highly recommend it.

this photo is in the rhinegeist brewery stairwell where we had our first kiss and then a year later where we got married.


Continue reading →

7 years together and 5 years married

two humans standing at the bottom of a grimy staircase. the woman on the left has green and brown hair, the man on the right has dark hair and a greying beard.

fun fact: our first date, the day i proposed, and the day we got married fall on the same day, jan 11th, each a year apart. makes counting and planning really easy, i highly recommend it.

this photo is in the rhinegeist brewery stairwell where we had our first kiss and then a year later where we got married.


tyranny of the blank page

i spent multiple days thinking about a way to approach a technical problem, and decided that starting fresh was the right way to go. i gen'd a new project directory, opened the main file, and then sat and puzzled like the grinch for 3 hours until my puzzler was sore and it was time for bed with nearly nothing written.

maybe some of those thoughts will be helpful in the future, but dang it's annoying to make no visible progress.


@noahtheduke posted:

Everyone I know posted their Spotify Wrapped at the beginning of December. I went a different route and calculated my top 25 albums this year by time spent listening, multiplying scrobbled tracks by their length and grouping by album. (Full list below the fold)
BandAlbumTotal Play CountTotal Time Listened
The OtolithFolium Limina18432:29:53
EnforcedWar Remains49627:50:22
Bell WitchFuture's Shadow Part 1: The Clandestine Gate1824:58:30
ParamoreThis Is Why41224:27:5
Creeping DeathBoundless Domain32521:55:19
MajestiesVast Reaches Unclaimed32721:0:18
Cave InHeavy Pendulum23920:8:45
Jessie WareThat! Feels Good!26417:43:5
EnslavedHeimdal14917:11:33
Mutoid ManMutants26716:51:46
Grahm NesbittFloppy Knights Original Soundtrack46916:41:11
OROMETOROMET6816:21:32
M. M. KeeravaniRRR24114:53:52
Taylor SwiftMidnights28811:37:8
Machine GirlNeon White Original Soundtrack27611:9:39
Tomb MoldThe Enduring Spirit10410:30:7
HusbandryA Port in a Storm1199:50:45
2 MelloPHD: Portable Headphone Dancefloor1279:7:2
BlackbraidBlackbraid II819:1:22
Dying FetusMake Them Beg for Death1368:29:22
Kacey MusgravesGolden Hour1337:53:3
HorrendousOntological Mysterium1087:31:54
Megaton SwordBlood Hails Steel - Steel Hails Fire1017:24:23
NintendoKirby and the Forgotten Land Original Soundtrack2047:20:34
Taylor Swift1989 (Taylor's Version)1277:17:6

I think this is fairly representative of my current tastes! Except for Megaton Sword, I don't remember listening to this album so much. Maybe I listened to it alone for a whole day and just don't remember that?

This also doesn't include the roughly 950 plays of "After Laughter" by Paramore, because I played it almost entirely for my children who are obsessed. I made the regrettable decision to delete the whole album from last.fm, which now pains me in retrospect, but too bad dumbass!


Continue reading →

  1. Death Stranding
  2. Neon White
  3. Death’s Door
  4. Knotwords
  5. The Zachtronics Solitaire Collection
  6. SNAKE FARM
  7. Ghost of Tsushima
  8. Cobalt Core
  9. Card Shark

here's the chart

@noahtheduke posted:

Everyone I know posted their Spotify Wrapped at the beginning of December. I went a different route and calculated my top 25 albums this year by time spent listening, multiplying scrobbled tracks by their length and grouping by album. (Full list below the fold)
BandAlbumTotal Play CountTotal Time Listened
The OtolithFolium Limina18432:29:53
EnforcedWar Remains49627:50:22
Bell WitchFuture's Shadow Part 1: The Clandestine Gate1824:58:30
ParamoreThis Is Why41224:27:5
Creeping DeathBoundless Domain32521:55:19
MajestiesVast Reaches Unclaimed32721:0:18
Cave InHeavy Pendulum23920:8:45
Jessie WareThat! Feels Good!26417:43:5
EnslavedHeimdal14917:11:33
Mutoid ManMutants26716:51:46
Grahm NesbittFloppy Knights Original Soundtrack46916:41:11
OROMETOROMET6816:21:32
M. M. KeeravaniRRR24114:53:52
Taylor SwiftMidnights28811:37:8
Machine GirlNeon White Original Soundtrack27611:9:39
Tomb MoldThe Enduring Spirit10410:30:7
HusbandryA Port in a Storm1199:50:45
2 MelloPHD: Portable Headphone Dancefloor1279:7:2
BlackbraidBlackbraid II819:1:22
Dying FetusMake Them Beg for Death1368:29:22
Kacey MusgravesGolden Hour1337:53:3
HorrendousOntological Mysterium1087:31:54
Megaton SwordBlood Hails Steel - Steel Hails Fire1017:24:23
NintendoKirby and the Forgotten Land Original Soundtrack2047:20:34
Taylor Swift1989 (Taylor's Version)1277:17:6

I think this is fairly representative of my current tastes! Except for Megaton Sword, I don't remember listening to this album so much. Maybe I listened to it alone for a whole day and just don't remember that?

This also doesn't include the roughly 950 plays of "After Laughter" by Paramore, because I played it almost entirely for my children who are obsessed. I made the regrettable decision to delete the whole album from last.fm, which now pains me in retrospect, but too bad dumbass!


Continue reading →

Everyone I know posted their Spotify Wrapped at the beginning of December. I went a different route and calculated my top 25 albums this year by time spent listening, multiplying scrobbled tracks by their length and grouping by album. (Full list below the fold)


Continue reading →

May hands me a fancy grape: Here, taste this.
Me, who just ate all of the kids left over refried beans: Getting a lot of bean from these grapes.


Death Stranding Review

Death Stranding: Director's Cut Review
★★★★★
★★★★★

Completed

on

PlayStation 5

The first real mission, you have to carry your deceased mother’s body to an incinerator for cremation. As you leave the compound, the camera pulls back as Low Roar’s Bones plays. Once it ends, you’re left with Sam’s labored breathing and footfalls as the only soundtrack. After delivering the body and lighting the flame, you encounter the otherworldly enemies, the BTs, for the first time in gameplay. The fetus in the glass womb at your chest sobs nonstop until you get away from them.

My second kid was born less than a week before I started playing, and my wife’s mom had died unexpectedly 6 months before. I found the entire mission so emotionally trying that I put the game down until the start of the next year.

Once I returned, I found a singular experience: meditative, taxing, scary, poignant. I drew a lot of comfort in the effort it took to travel between destinations, relaxing into the mild challenge and allowing my adhd-riddled mind to quiet. The story, on the other hand, repeatedly knocked me on my ass. I cried multiple times, found both pain and solace in the way it handled death and grief and loss. Each of the major characters brought a different aspect of the recovery and healing process to the forefront, and their respective performances were unmatched in games.

I take issue with the focus on gun-based violence in the game. It felt great to play, I won’t lie, but it was so discordant with the themes of pain and disconnection and reconnection that I found myself disappointed in its prominence. Especially at the end, with 4 violence-focused bosses in a row, it felt like two games fighting each other for primacy.

Accepting that, I think this is a nearly-perfect game, and have spent the rest of the year thinking, “this other game is good, but I should go back to Death Stranding and run some more missions for the preppers.”

made with @nex3's Backloggd formatter

Me: i wonder what its like to enjoy giving and receiving presents
My wife May: you’re an insane person


Cobalt Core Review

NoahTheDuke

reviewed Cobalt Core

★★★★★
★★★★★

Completed

on

Windows PC

I’ve beaten the boss twice and each time, I feel like a god.

The music is brilliant and the art is cute and the writing is really funny and the conceit feels right for the gameplay.

made with @nex3's Backloggd formatter

@Iro posted:

By which I mean: something a creator made that gives them a pass where you'll check out anything they put out simply because their name is attached to it, even if it doesn't seem like it'd be your speed. And maybe it isn't, but you'll give it an honest shot sight unseen.

("Formerly" is okay too, I've got a few that used to be this that I no longer care about)

There are certainly some I'm forgetting, but a couple off the top of my head:

  • Ghost Trick and Shu Takumi
  • Tengen Toppa Gurren Lagann and Hiroyuki Imaishi (and the rest of the Trigger squad)
  • Pyre and Supergiant Games

Editing to add a couple:

  • Yokohama Kaidashi Kikou, Hitoshi Ashinano
  • Lucifer and the Biscuit Hammer, Satoshi Mizukami
  • Sekiro: Shadows Die Twice, From Software, look, it is what it is
  • Metal Gear Solid 2: Sons of Liberty, Hideo Kojima, who should maybe be ashamed of his words and deeds
  • (Formerly) Mistborn, Brandon Sanderson (the period of my life where I cared about the Cosmere whatsoever ended around Stormlight 3)

Continue reading →

Encanto isn’t good

Every time I watch it (sit and view, or spy it while my kids watch it), I’m taken aback by Abuela’s callousness and cruelty and selfishness. In the opening, she’s tender and kind, and then the rest of the movie she’s heartless. And giving her a last minute redemption by way of her sob story (that we already knew! there’s no reveal! the movie opens with it!) washes away all of the pain and hurt she caused.

It’s a movie wearing the clothes of “healing generational trauma” that provides a convenient excuse for older generations. According to the movie, all they have to say is, “I was hurting too” and not only is your pain not allowed to exist anymore, but it’s on you to give them comfort and kindness. Alongside that, no one else is responsible for their culpability in allowing this to happen or for how poorly they treated you. (Seriously, fuck Mirabel’s parents. Spineless cowards.)

I don’t feel like writing the whole comparison, but Turning Red does a similar story better.


Forgot about this draft post

I wrote this draft months ago right before bed, planning on coming back to it in the morning. Now I don’t remember what my breakthrough was. Damn. The description below of jnet’s problems is well worth reading if you give a shit, but never resolves lol.

Original post:


Continue reading →

@noahtheduke posted:

I impulsively bought a Steam Deck OLED this week and played it for an hour before bed last night.

The machine is way nicer than the Switch.

The two thumb sticks have perfect positions. Comparatively:

  • The PlayStation sticks are too low but relatively easy to reach so it feels like I’m pushing wrong direction to go in a given direction.

  • Xbox sticks are in different positions (derogatory), and the right stick suffers from the same issue as the PlayStation ones.

  • The same issues exist for the Switch joycons but significantly worse: if I have to use the right thumb stick for any length of time, my thumb cramps to the point of needing to stop playing entirely. The Pro controller is better due to size and right thumb stick position but isn’t better in any other way.

  • The sticks on the Steam Deck are mirrored and at my thumbs natural resting positions so there’s no strain to keep them in place or use them. The right stick is very close to the buttons so moving back and forth feels quick.

My only issue is that games don’t pause when you go to the “desktop”. If you press the home button on the switch or the ps5, the game freezes in place, but as a normal computer, games don’t freeze when using the Steam menu. That’s really annoying lol.

My not real issue with it is that I forgot I haven’t used Steam since 2013 so I need to buy some games to make it worth using lmao. Turns out I have the deluxe version of Guacamelee, the Half Lifes, and the Portals so I don’t have to drop dollars to enjoy it immediately, but I’ve wishlisted a bunch of games that I’m going to pick up when I get more time. (SNAKE FARM, Opportunity: a Sugar Baby story, The Banished Vault, Wildermyth, Pentiment, hi fi rush, etc)


Continue reading →

@noahtheduke posted:

Me, holding six books at Half-Price Books My wife May: that’s a lot of books for someone who doesn’t read books.

Continue reading →

Me, holding six books at Half-Price Books
My wife May: that’s a lot of books for someone who doesn’t read books.


the funny thing about chat servers is that they're self-contained communities. to feel comfortable in one, you need to spend enough time to both know the other people and to be known by them. you gotta learn the implications and usages of the emoji, you gotta learn the in-jokes and the history, you gotta actually put in effort to be a real part of the community! you can't skip right to the "i enjoy being here" part.

i've been in the netrunner slack server for ~7 years. i only have a handful of channels i'm in, and only some of those that are unmuted. i know the regulars, i know and have created the emojis, i am in it. i only got here because i've been chatting and contributing and reading constantly this whole time. just for my little corner! not even the "whole" server, just the channels I'm active in.

joining the discord for some new thing is not exciting, it's daunting and intimidating because that means to actually join and care about the community, i need to be willing to put in the high effort it takes to pay attention and participate. it's not a small task, it in fact might be the biggest task.


Continue reading →

@voidmoth asked:

do you have a preferred method for generating/integrating CSS in Clojurescript projects (via Garden, CLJSS, or whatever else) or do you just end up writing CSS normally?

I think Garden is super cool, but I am not a frontend kind of person, so I don't have further strong opinions. For jnet, the original dev used Stylus which we have continued to use. I find css in generally pretty hard to read and stylus in particular very hard to read lol (very deep nesting with no brackets???) but it works so it's hard to hate on.


thoughts on being polyamorous

a friend asked me recently about my "poly" status with my wife, and i started to write a short thing which turned into a long thing. here it is as i sent it to her, to avoid editing and nitpicking it into not getting posted.


Continue reading →

Me: the sunset is beautiful. Fall is amazing how it feels like the sun has been setting for 4 hours.
May: so true bestie 😌


Worst combo: staying up until 1 am playing a video game (Neon White), and then forgetting to take my adhd meds before work


Continue reading →

i don't know how to be online friends with people

i have a number of friends i used to see semi-regularly (at least once a year) that was helped by us both being active on facebook. now none of us are very active on facebook and i had some kids and everything is harder to schedule.

it's easy to say, "hey i know we haven't spoken in roughly 4 years but i miss you and hope you're doing okay" but how do i have it continue after we finish the pleasantries? the opening is easy, i just wrote it, but after, one on one conversation is hard to sustain without the ease of in-person dialogue.

i keep up with other friends because we're in group chats, so there's less pressure to speak directly to one person, you know? i can just throw into the chat "here's a dumb meme, here's a stray thought, here's a comment about my day". but when it's one on one, it feels like the silences are longer and it's harder to maintain any sort of connection.


Continue reading →

George Lucas selling Lucasfilm to Disney ruined Star Wars.


Continue reading →

YNAB & privacy

@noahtheduke posted:

Before I got married, I heard lots of advice about how to handle money in marriage, such as “have separate bank accounts” and “only use one joint bank account” and “as long as bills are covered, you should buy whatever you want” and “every penny must be accounted for to make sure nothing funny is happening”.

Back when we were Dual Income No Kids, I just sent her my half of the bills (as I had moved in with her and they were all in her name). It was easy and simple. Once we had our first kid and she quit her job, there was a question of how to handle spending money. I switched my direct deposit to give me an allowance (personal bills, etc) and then send the rest to her with the comment that she could spend as much as she wanted, that I both trusted her and thought she deserved to buy whatever she wanted.

This seemed fine but after two years, she admitted that she didn’t feel free to do whatever, that because her money was muddled in with the bills money, it felt bad to spend it on herself (even tho she knew I was okay with it).

I came up with a solution I haven’t seen anyone ever describe (tho there’s no way I’m the first to come up with it): she opened a second private account, and I set up my DD to send both of us the same allowance, and then send whatever is left over to our joint account. Aka, treat my job as a business and us as the two employees.

This has worked incredibly well. We both “earn” the same amount of money for our jobs (mine as an employed software dev, her as a stay at home mom), we both have privacy for our personal spending, and as long as we don’t go wild with our family spending (restaurants, shit for the kids), we save money.

I recommend it to everyone who wants to treat joint money a little more equitably.


Continue reading →

Money Handling When Married

Before I got married, I heard lots of advice about how to handle money in marriage, such as “have separate bank accounts” and “only use one joint bank account” and “as long as bills are covered, you should buy whatever you want” and “every penny must be accounted for to make sure nothing funny is happening”.

Back when we were Dual Income No Kids, I just sent her my half of the bills (as I had moved in with her and they were all in her name). It was easy and simple. Once we had our first kid and she quit her job, there was a question of how to handle spending money. I switched my direct deposit to give me an allowance (personal bills, etc) and then send the rest to her with the comment that she could spend as much as she wanted, that I both trusted her and thought she deserved to buy whatever she wanted.

This seemed fine but after two years, she admitted that she didn’t feel free to do whatever, that because her money was muddled in with the bills money, it felt bad to spend it on herself (even tho she knew I was okay with it).


Continue reading →

On the one hand, I don’t wanna hate on someone’s favorite thing.

On the other hand, I’m watching a truly boring-ass deathcore band rn and while I already don’t like deathcore, these folks are only making me hate them and the whole genre even more.

Giancarlo Esposito face: you think deathcore is not metal. I think classification arguments are dumb as shit and deathcore sucks regardless of what genre it is. We are not the same.


i finished ghost of tsushima

got the platinum trophy cuz i was roughly one hour of collecting away from it.

good game, would recommend. i spent way too long on it tho. i tried to resist my base urge to do everything and accidentally did everything, so it took me 55 hours to reach credits.

i chose to honor my uncle’s wishes at the end of the game. it was the sadder choice but it felt right and it nicely wrapped up that story.


at this point, i don't know that i can view selling one's company as anything other than an evil act

owning and running a company is already mired in a complex set of circumstances and power relationships that i don't have a firm grasp on, but i at least see an aspect of "thing i built alongside other people and have pride in and want to see succeed as a reflection of myself".

and it's like "yes, get the bag, take the money and run" but also, fucking no way dude, have some pride and dignity. “take the money and run” only applies when no one is reliant on you. once you have staff and people relying on you, you can't just sell out without ruining lives.

my brother responded to the above with:


Continue reading →

bought some more music

https://oromet.bandcamp.com/track/familiar-spirits?_layout=standard&_theme=dar

some real bangers in this haul


If you’re gonna criticize something, don’t make it look cool!

One of my favorite thrash bands is Warbringer. Their lyrics are generally anti-war but they fall into the trap of accidentally glorifying it . The same way full metal jacket is anti-war but it was used as a recruiting tool because soldiers love it.

For example, the song Remain Violent is anti-cop and yet the lyrics and the t-shirt makes them look sick as shit. Put some red and black protestors in there! Don’t repeat their slogans!

The constant threat of a shot to the chest But defending yourself is resisting arrest City streets that I called my home Are starting to look like a combat zone

All that's what they want for you to say Is to remain silent Now you have the right to remain To remain violent


Continue reading →

got a new shirt

Me in a crop top for the band Mares of Thrace


pixar movie rankings

i watched elemental last night and while i'm still coalescing my thoughts on it, i decided to rank the pixar films. feast your eyes on this and scream at me in the comments and rechosts

EDIT: descending, so cars is my fave

cars
toy story 2
turning red
coco
ratatouille
cars 3
a bug's life
the good dinosaur
monster's inc
luca
elemental
onward
brave
incredibles 2
the incredibles
monsters university
toy story


Continue reading →

how do you come up with ideas for games lol

i do a lot of hobby programming. it's my primary hobby. i spend a lot of time writing code for fun, but it's quote unquote boring stuff like tinkering with an alternative test framework or building a linter or fixing a bug in a library i use.

i sometimes think "i want to make a game, i like games, why shouldn't i?" and then i'm just... empty. completely devoid of ideas or thoughts. i know it's probably something of a muscle i must flex, but i haven't flexed it yet and it's hard to start new things.

i'm only thinking of this now because of the unity stuff. feels like there's excitement in the air alongside the dread, people writing tutorials and recommending things, so why not.


Continue reading →

y’all ever think about all of the super stimuli you engage with in modern life? i do.

idk why or when this happened but at some point i learned about super stimuli and became deeply unsettled by them and i’m now leery of anything that resemble one. feels too easy to fall off the cliff and lose a sense of what’s “average”.

maybe i’m just particular susceptible to them. i read some erotica earlier today and it made my chest constrict in such a way that left me shaken and a little emotionally numb after. a fairly pleasant but also worrisome experience. i want to enjoy my life, i want to be present and engaged, i don’t want to be distracted by thoughts of when i can sneak away to get my next hit of erotica lol.

there are many things that feel very good but they’re mostly quite hard to get. what changes when they’re suddenly abundant?


jumbled sexuality thoughts

up front: i gotta pee real bad and im falling asleep on the couch but i had this desire to write some thoughts down and i wanna get them out before starting the work week and forgetting everything until next friday so excuse me. this is gonna be rambly and all over the place.

what's my sexuality? i've been thinking about it a lot recently.

in short: i like women, but i think i'm "my wife"-sexual.


Continue reading →

If your programming language doesn’t allow dashes in identifiers, you’re a coward


Continue reading →

looking for a live action web series

roughly 20 years ago, i watched a live action web series, a "tv show" but made by nerds and uploaded to the internet in mp4 or quicktime or whatever format we were using back then. i'm searching for it now and cannot find it (cf popular post about how google sucks now).

the show was about the crackers and hackers and leakers who got early access to music and movies and released them online, while trying to dodge the feds. the format for each episode was a view of someone's desktop screen and their IRC-equivalent chat windows as they typed messages to each other. in the corner of the screen was a live feed camera of them sitting at their computer, like twitch but with the camera angle usually being from somewhere else in the room.

i remember there being like 8-10 episodes and all but the final one were this way: irc chats between the person we were following for that episode and their compatriots, and a nearly static image of them sitting at their computer, fake typing. and then the final one had some handheld camera stuff, some bad acting, and a finale i don't actually remember watching.


Continue reading →

Coraline

Rewatched Coraline on our vacation because my 3 year old imprinted on a Coraline doll at the grocery store.

The movie fuckin bangs. It’s so good, really witty, beautiful and creepy and unlike Nightmare Before Christmas (which I famously dislike). I love every character, I love the “you must collect 3 items” quest line. I love that the story is about parenting and childhood and isn’t just “my grand/parents are mean so we need to resolve that to move on”. I love the little dogs in their angel wings. I love the dreamlike sequences at the end.

I love it all. 10/10


Continue reading →

Old memories

Just remembered without provocation that roughly 14 years ago I had reconnected with an old friend from Livejournal. She wanted to be penpals so we exchanged addresses and she sent me a long and intimate letter with drawings in the marginalia, detailing her life after moving to San Francisco.

In the letter she included a story about modeling nude. My girlfriend at the time found and read the letter and was upset about that story. She didn’t explicitly say that I couldn’t write back but she made the whole situation uncomfortable enough that I never did write back. I threw the letter away shortly after.

I’m sorry I ghosted you, Sarah. Hope you’re doing okay.


I hate that gamergate someone buried itself into our understanding of games journalism and games criticism. Frequently I find ostensibly left-leaning (or explicitly leftist) groups and communities who will parrot gg talking points about game reviews or criticism without a hint of self-awareness and then react angrily when called out about it.

It’s lazy and dismissive to say that a two thousand word review, published weeks after the game’s release, is merely clickbait design to get ad views. It’s the basest kind of critique, requires no defense, and allows no discussion. It is its own kind of clickbait, a jingoism for terminally online nerds to feel like they’ve seen through some veil of reality. And it comes directly from the gg playbook, a simple means of derailing conversations and sowing distrust and discord.

Anyway, I’ve loved the Facebook group “I’m begging you to play another rpg” but seeing the mods delete my comments and reward this shitty behavior has really soured my feelings.


Continue reading →

on a fuckin tear recently

when it comes to hobby programming, i don't believe in pushing myself to work on stuff i don't feel like working on. i just lean as far into my strange desire as i have energy, and go where my curiosity leads.

for many years this led to heartbreak and contributed to my deep-set sense of failure, as i slowly accrued a graveyard of unfinished projects and codebases where, once i had satisfied some core question, i walked away to do something else.

but also, i'm now on my third lil project in the last month, each one has been fruitful and compelling and provocative. i don't know if or when i'll finish them, and yet i feel content with them. i've released more than 10 versions of Splint this year, so what am i looking to prove? nothing.


Continue reading →

Meetings:

  • 2:30-3:30
  • 3:30-4:00
  • 4:00-4:30

Guess I’m not getting anything done today


@noahtheduke posted:

https://twitter.com/tswifterastour/status/1689519372178747392

She fuckin did it! I cannot believe the conspiracy Swifties were right!!!!!! Ahhhhhhhhhhhhhhhhhh


Continue reading →

Mild success!

@noahtheduke posted:

I spend a lot of time thinking about my linter’s performance, and I’ve changed some of the ways I program in Clojure to support that. But it also means that I’ve sacrificed some of the benefits of Clojure and I’m not always writing “idiomatic” Clojure.

I dream of moving to a language like Rust or Zig, one that pursues pure speed and efficiency, but I know Clojure and I’m intimately familiar with it, so it would be quite a loss of effort and time to just get back to where I am currently.

And for what? My linter runs fast enough! It can lint 120k lines of Clojure in 15 seconds. Is that Ruff speeds? No but it’s pretty dang good.

Buuuuut it could be faster, and that gnaws at me lol


Continue reading →

I’ve been putting off implementing a feature in Splint for months because I worried it would be annoying to write, but I needed it yesterday so I took a stab at it and it basically went as smoothly as I could hope.

The feature? Excluding files or file globs from being checked within specific rules or globally from inside the configuration file. Java’s java.nio.file.PathMatcher makes it really simple. I was worried I would have to implement it myself.

Lots of hoopla for nothing. Feels great to see it work.


"bogos binted?" was in my dream last night


Continue reading →

Splint v1.9.0 and v1.10.0

Forgot to post after releasing v1.9.0 back in May, so this is gonna be fuckin huge.

In short: v1.9 added a new rule (style/prefer-clj-string) and a new cli flag (--[no-]summary). v1.10 added reading available deps.edn and project.clj files to determine the directories to check, changing the pattern DSL to use a variation of pangloss/pattern's DSL, and to add 5 new rules, 4 of which are performance rules (style/redundant-regex-constructor, performance/assoc-many, performance/avoid-satisfies, performance/get-in-literals, performance/get-keyword).

The change in v1.10 means that you can run bb splint or clojure -M:splint and it'll "just work": it'll check the primary directories and the directories under and :test alias without any extra fiddling. This makes it much easier to use quickly. I've always been annoyed at clj-kondo's insistence on forcing the --lint flag for choosing files, and loved Rubocop's "just run it" mentality.


Continue reading →

@ridiculousdino asked:

Need a vibe check on the new olivia rodrigo song

vampire? this song has me so excited for the album. she has leaned into early lorde (complimentary) but with lots of anger. i like this more than everything on SOUR which was fun but felt young and kind of sloppy.


Continue reading →

MI-1

Watched Mission Impossible 1 for the first time in probably 20 years with my wife. This movie is fucking awesome. Can’t wait to watch the rest.


I understand that consistent labels and acronyms are good, but I think QuILTBAG+ is better than LGBTQAI+.


@noahtheduke posted:

Ocaml! It’s like Haskell’s cooler friend. :eggbug-devious:

It’s kind of a toss up between the two but I like the sound of Ocaml’s practicality. The type-system enforced purity of Haskell sounds nightmarish as I am a println debugger whenever I don’t have a lisp repl at hand, and I like the look of Ocaml’s syntax. I’ve read some of the source of Flow, Facebook’s javascript type system, and except for let x = … in, it parses really nicely.


Continue reading →

@prophet asked:

What is your favorite programming language you don't know? :)

Ocaml! It’s like Haskell’s cooler friend. :eggbug-devious:


Continue reading →

doom spiraling

instead of doing work, i'm chosting because i'm at a point where i don't know that i can reasonably do my job. i've been here over a year and i still can't work tickets without significant help and multiple missed deadlines. knowledge about how the business works or what it does rolls off my mind like water off a duck's back.

i think i need a new job, tho the fear lurks that no matter which job i go to, i won't be able to learn it so i'm just buying myself time.

the company is good, my coworkers are nice, my boss is extremely chill and friendly, they're serious about everyone taking 4+ weeks of vacation a year and give off extra days every month like they hate work. it's an ideal workplace.


Continue reading →

@ridiculousdino asked:

Tell me your favorite tswift song and album please and thank you

Album is easy: Lover. It came out the year I got married and right after my wife got pregnant, so we were very much in love and feeling hopeful for the future. We listened to it non-stop during a trip to visit my extended family. Brings up a lot of good memories.


Continue reading →

Saw Taylor Swift last night

Taylor Swift concert, performing a song off Red

My wife and I showing off our “Lover 1-11” bracelets

She was great, the show was great. My wife made me a “Lover” themed friendship bracelet with our wedding date (1-11) on it and I wept during the performance of the song.


Continue reading →

@wiredaemon asked:

What is a type in programming languages? Hot take answers only!

In increasing order of heat:


Continue reading →

went to a concert and then bought some music

8 yob albums and 1 cave in album

Saw Cave In open for Yob recently and both were amazing. Bought a sick Yob t-shirt and Cave In long sleeve. Went home and purchased all 8 Yob albums on bandcamp and the latest Cave In album.

Yob got on stage and immediately started playing. After they finished their first song, Michael Scheidt said, "We have 5 more songs. About an hour and a half.". Before playing their last song, he said, "Instead of wasting everyone's time with a fake encore, we prefer to just play really long sets. Here's our last one." and then played an extra long version of Quantum Mystic.


Continue reading →

splint v1.8.0

1 new rule, 2 new outputs, and one of my favorite changes yet: continue to run after a rule throws an exception.


Continue reading →

Splint 1.70

v1.7.0 adds a new rule, a new cli flag, and two new output options. Details under the fold.


Continue reading →

splint 1.6.0 and then of course 1.6.1 lol

Small bug fix this time:

  • Fix merging defaults for --parallel and --output so they can be set by .splint.edn local config.
  • Also wrote short descriptions for all empty config.edn rule descriptions.

I of course fucked up the adhoc deploy script I built, so when I pushed 1.6.0, I didn't actually tag it and didn't commit any of the changes and really just messed it all up, so I cut another release immediately. I wish I could just write the code and will it onto my user's computers.


Finished death stranding

Spoilers under the fold


Continue reading →

Splint 1.3.0 and 1.4.0 and 1.50

Gonna put the patch notes below the fold


Continue reading →

idk how people do remote work. i've been at it for 3 years and these have been the least productive, most frustrating and painful years of my software career.

work on something. get frustrated. open a new browser tab. go to facebook/cohost/lobsters/etc. immediately close the tab because i should be working and it's not helpful to just mindlessly scroll to avoid doing work. look at the code again. feel frustrated. open a new browser tab. go to...

repeat for 3 years.


Continue reading →

disney music thoughts

my kids are growing into prime animated movie ages, so we're been listening to a lot of the disney and related animated musicals, as well as watching other animated movies too. because of who i am as a person, i spend a lot of time deeply thinking about this stuff because it's omnipresent. i could write up whole posts about them individually but i'm just gonna put down a couple thoughts to purge them.


Continue reading →

splint 1.2.2 and 1.2.3 and 1.2.4

oops, forgot to post in here about these (not that anyone on cohost uses splint :eggbug-sob:)

1.2.2 big changes:

  • Differentiate between &&. rest args and parsed lists in :on-match handlers by attaching :noahtheduke.spat.pattern/rest metadata to bound rest args.
    • Allows us to write patterns that reuse the same binding var in single element and rest args positions: (if ?x ?y nil) and (if ?x (do &&. ?y) nil) differentiate ?y with the above metadata.

Continue reading →

someone i knew roughly 6 years ago passed away at her own hand. this is the third one in the last year, which doesn't even go back to my wife's mother 1.6 years ago.

there are 6 million many ways to die and i know that the older i get the more people i know will die, but this is a particularly gutting form.

she had a kid, 7 or 8 years old at this point.


Continue reading →

card shark

Started playing card shark on my switch and it’s great. The performance required has made it much more dramatic and challenging even in this first hour. Can’t wait to see where it goes next.


splint 1.2.1

since 1.0, i've done a fair amount of work:

  • now checks :spat/lit metadata in patterns to allow patterns to use the "special" symbols the dsl is looking for as plain data: '(defn example [^:spat/lit _] will look for the symbol _, not match on anything.
  • wrote a bunch of documentation for rules and patterns and how they work and are built.
  • cleaned up the rules documentation pages quite a bit: outside links, an :updated field to show the most recent version a rule was changed, a nice <hr> between each rule to ensure visual clarity.
  • moved 20+ rules from lint to style genres because they're purely style related.
  • added ctx to :on-match function signature, allowing for global config to be passed in.
  • added :chosen-style, which allows for rules to define different "styles" instead of having multiple conflicting rules for the same scenario.
  • added "markdown" as an output format. same as "full" but will use ### headers and fenced code blocks to make it look pretty. i'm not sure the use-case here, but kibit has it and it was easy to add.

shit's coming along nicely and i feel good about it. still fast as hell


company fired some of my coworkers. i somehow survived; i suspect because i'm cheaper than them. doesn't feel so good.

gonna get saddled with my ex-coworker's project that he's spent a month preparing for and was going to get me up to speed on next week, lol. he's written some documentation but let's be real, there's a lot of shit in his brain he didn't put to paper and now i have to start from nearly 0 without him or our project manager (also fired) and will probably be expected to meet the same deadline.

in the big meeting where the ceo talked about it after it happened, he said that the company is still doing well and we have 4 years of runway and that there's no need to panic and that we're still hiring for some positions. shameless


Continue reading →

adhd vibes

sometimes it's like i'm jacked into the matrix, the work i have in front of me consumes not just my field of vision but my entire raison d'être. every part of my brain is tuned for the problem space, every breath drives me forward like ramming speed in ben-hur, the words and thoughts shift around in front of my eyes. my thoughts get so incredibly loud that i can't hear my wife from across the table.

other times, my attention feels like the subject of my focus was burned with the fire that burns things out of time. in a meeting and not picking up a single word my coworker is saying. looking at code and being unable to hold the previous expressions in my head as i scan my eyes across the screen. feeling so unmoored from my body and my experiences that i can't form sentences.

frankly, both are exhausting.


splint reaches 1.0

i don't like waiting around for version 1.0. 0ver is funny but annoying. BE NOT AFRAID. so i've released splint 1.0.

it has disabling rules, it doesn't choke on any code i've thrown at it so far, and the set of rules it has is pretty great. there's loads more work to be done, such as moving most of the "lint" rules to "style", which will invariably break folks config lol, but why wait?

the specific updates this time are:


Continue reading →

whomst can i talk to?

sometimes, i have a conflict with my wife and i'm unsure if i did the "right thing", if i acted in a way that's consistent with my values and my ideal self, and if there's space between our shared expectations that i can either stand firm and say, "i acted in an acceptable manner, it's not on me to manage this" or i can bend and say, "i acted inappropriately, i'm sorry, i'll try to do better in the future."

that is hard to know and i've spent a lot of time over the years thinking about it in both directions applied to many various situations.

my frustration comes when i feel like i don't have a good perspective on the situation and i want feedback or outside help. this is the perfect place for a therapist, but for various reasons, i no longer have access to one. so i could reach out to a friend or family member. but who do i want to burden with whatever nonsense i'm experiencing?


Continue reading →

splint update: magic comments edition

I did it, nerds. I added support in splint v0.1.119 for magic comments aka directives aka clj-kondo style #_:splint/disable or #_{:splint/disable [lint/plus-one]}. This means that folks can now pepper their code-base with stuff that has very limited utility! I'm very excited to see this become a piece of infrastructure when it certainly should not.

I'm up to 3300 lines of Clojure, which is fucking sick. This is maybe the most code I've ever written from scratch for a single project. I'd love for other people to contribute, but as of right now, only one person has tried, and they just fixed a typo in the readme.

If you use Clojure, please check this out, I would love to get your feedback.


@noahtheduke posted:

I want another parser because I want access to comments. Without comments, I can't parse magic comments, meaning I can't enable or disable rules inline, only globally. That's annoying and not ideal. However, every solution I've dreamed up has some deep issue.

All times below are about parsing the 8.5k lines in clojure/core.clj.

  • Edamame is our current parser and it's quite fast (40-60ms) but it drops comments. I've forked it to try to add them, but that would mean handling them in every other part of the parser, such as syntax-quote and maps and sets, making dealing with those objects really hard. emoji github:sob

  • Rewrite-clj is much slower (180ms) only exposes comments in the zip api, meaning I have to operate on the zipper objects with zipper functions (horrible and slow). It's nice to rely on Clojure built-ins instead of (loop [zloc zloc] (z/next* ...)) nonsense.

  • parcera looked promising, but the pre-processing in parcera/ast is slow (240ms) and operating on the Java directly is deeply cumbersome. The included grammar also makes some odd choices and I don't know ANTLR4 well enough to know how to fix them (such as including the : in keyword strings). And maybe this isn't such a big deal but matching against strings is annoying. Means I'm writing something other than Clojure code.


Continue reading →

Splint rambling: Clojure Parsers

I want another parser because I want access to comments. Without comments, I can't parse magic comments, meaning I can't enable or disable rules inline, only globally. That's annoying and not ideal. However, every solution I've dreamed up has some deep issue.


Continue reading →

Announcing splint 0.1.69

After lots of work, I have a "good enough" version of splint, my new Clojure linter, that I can now share it with y'all. It has 73 rules, extremely minimal config and cli, and runs faster than every other linter on the market while being only moderately dumber.

I have lots of big plans for this bad boy but for now, suffice to say that it works and it's fast and it's pretty dang cool to make stuff.


jinteki.net v114 release notes and thoughts

In release v114, Francesco Pellegrini fixed a whole mess of bugs, added set-mark command, and added some tests to cover bug reports we couldn't reproduce. I added compiling css and cljs in Github Actions, to catch basic compiler errors.


Continue reading →

Full Parhelion implementation on jinteki.net

I have just released Null Signal Games' newest set Parhelion on jinteki.net. (Release notes here.)

My life has been a mess the last year and it pains me that I don't have the time or availability to put 20+ hours of work into jnet anymore, as it desperately needs it, so please accept my humble apologies for the long delay between releases. Congrats to the whole jnet team for their hard work and tireless efforts in implementing 120 new cards in the span of a couple weeks in preparation for this day.


Screenshot of iPhone version of video game Immortality. A redheaded woman wearing a black dress faces the camera smirking, and there are two masks on thin pedestals with eggbug superimposed over to her left and right.

:eggbug: 😏 :eggbug:


I commented on someone else’s post about open source community norms and brought up Rich Hickey’s Open Source is Not About You. I said that I admired the stance after initially thinking it rude. However,,,

I can’t help but wonder what Clojure could look like if it was less preciously held by those in charge. I don’t want Rust levels of development speed, that’s too much and too fast for my taste. But it dampens my enthusiasm for the language and my faith in the team when they respond with such disinterest in things that don’t materially impact them directly.

Sharp edges and places of friction are ignored or brushed away as unimportant, like stack traces or error messages in general. Bugs that have available patches can be left to bitrot, sometimes for years (concat stack overflow patch), and bugs without patches can be ignored or treated as too prevalent to fix (keyword regex, type hinting symbol vs vector in defn).


Continue reading →

Copyright © 2024 Noah Bogart
Website credits