i'm thinking of writing an  "implement a toy version of HTTP in a weekend” guide, similar to https://implement-dns.wizardzines.com/, but not sure what would be fun to include

thinking of:

1. sending a simple HTTP GET or POST request over a TCP socket
2. some very very basic header/status code parsing

what would you be interested in seeing in there, if you're curious to learn more about HTTP? As usual the goal is just to write a fun throwaway implementation, not something resilient


nostr:npub1dsw4a6fsqy9wj9r2e0hhg9cum6wnvdqqwr6997wdzpu7fzjtgyuqx67s3y you can sign up for https://wizardzines.com/zine-announcements/ to get an email when it's out, in a week!


what would you call a git commit that can no longer be reached from any branch or reference (for example because you ran `git commit --amend` or `git rebase`), but that you can still get to from `git reflog`?

I've considered "orphan", "dangling", and "unreachable" but none of these seem right:
- orphan has another meaning in git
- dangling only refers to the "tip" commits
- "unreachable" means that you can't reach it at all


nostr:npub13n409lc4d9w06xuqurrkkh4mtdzc2afc5m07tkkc26u7p2lcq04qkh3h2h wait openssl was a personal toy??? I had no idea


update: we did it!

https://cdn.masto.host/socialjvnsca/media_attachments/files/112/083/839/868/286/771/original/e2d33e494b9dddab.png


nostr:npub14ux2hjvvp3e8xekxajz4vy7js8dg3tzp48md0tr4m7wmwmy0ye5srsjx88 thanks for this, it made me look up the origin of that phrase and ugh

(from wikipedia)

https://cdn.masto.host/socialjvnsca/media_attachments/files/112/083/822/329/949/018/original/9e18714dba1addca.png


nostr:npub1x09n84dxhuynsr7kl5gkn8j7qmj6mgl7sg65uj4rycr29skgqh9q92jlxu i actually did post it to mastodon, it was just a while ago https://social.jvns.ca/@b0rk/111920508523737165


nostr:npub1kte8vkw70glp0fcvwxxfc53pryvq50gc40lw054tqf4l5d5tdsksks5pcv ❤


nostr:npub1356lwqhtlclkq0ua7fhgetrdsnfqy99w4e8un5gt3d0kkhudkr2sn6exc2 i think it's really incredible how well DNS has held up considering that it was designed in 1983


nostr:npub1e38tldqw799qguy0l82tgskgkcr7422dws5hfnm9qv0j60v7nyhs88lkey i've never used mercurial and I don't really know anything about it except that it has a lot of very passionate fans


just noticed that almost 11,000 people are subscribed to get comics from me every saturday! who wants to help us get over 11,000?

you can sign up here: https://wizardzines.com/saturday-comics

https://cdn.masto.host/socialjvnsca/media_attachments/files/112/083/543/569/900/097/original/4c06dcbb1df60d35.png


nostr:npub1erpua23c63um0lg2vt9j2kr0r9y02fz4j7nm3rylj70qhk83fqzsr46rah thank you!


nostr:npub1jxc4qpzg7mtwmlclxuhlwn8mq2a5knaulexfl68lxq2taftze9tq94qug0 mostly interested in the shell script thing right now


nostr:npub132lhw8yg9p3lg8zh8f3wk7zh56x3wv3el5n6x4qzjnarl54jsscqszrnmv the closest project I know to that is jj, still seems early but they're doing interesting work https://github.com/martinvonz/jj


nostr:npub1wq6kzst3l7j67fyfk7j2jl6nyzgyg7qdffcgsll43euwccdw79es88ju6u nothing I have read by him has made me think he would be an enjoyable person to talk to tbh


i uh spend a lot of time thinking about whether various surprising software design choices are

a) intrinsic to the problem domain ("it turns out it DOES make sense!”)
b) made sense historically ("this made sense in 1992, but it didn't age well”)
c) just a typo/mistake (the "Referer" header)
d) related to budget/time constraints (“well, prototyping with shell scripts is fast!”)
e) cultural/organizational (“well, Google is the main funder for this project, and…”)
f) something else


nostr:npub1jdmpcwfd2pf4akk4wrudv48fnfuw5tc3dslsnvxhygd4q85mgcpq4xjwnq that's definitely true, how do you think it's related to those things being shell scripts originally? feels like you could have shell scripts with consistent flags


nostr:npub1erpua23c63um0lg2vt9j2kr0r9y02fz4j7nm3rylj70qhk83fqzsr46rah how do you think that affects git's user experience? i hear this a lot but it's hard for me to see how it affects the user experience today


this morning I'm thinking about how git's history of being built as a series of shell scripts has affected its user experience

my sense is

1) a lot of git was originally built as shell scripts
2) the user experience you can provide in a shell script is extremely limited
3) a lot of that now can't change for backwards compatibility reasons

does anyone have examples of this? will talk about how I think this affects merge conflicts in the next post

(1/?)


i just understood today that the reason I feel stressed out about merge commits is that you can't figure out the contents of a merge commit by looking at it with `git show`

for example in this screenshot I have two merge commits (`merge1` and `merge2`). They both have the same parents. They display the exact same way with `git show`. But they have different contents.

https://cdn.masto.host/socialjvnsca/media_attachments/files/111/999/930/147/508/928/original/b31370668435f50b.png


Julia Evans

programming and exclamation marks

I have DMs muted from people I don’t follow.


nostr:npub13n409lc4d9w06xuqurrkkh4mtdzc2afc5m07tkkc26u7p2lcq04qkh3h2h saw a nice mention of networking for system administrators on the orange site  (though I'm sure you hear this all the time!)

https://cdn.masto.host/socialjvnsca/media_attachments/files/111/189/641/358/951/805/original/b6c52af5ddaffd53.png


I spent way too long working on this talk (about 6 months, though far from continuously obviously) so I'm happy people seem to like it


new talk: making hard things easy https://jvns.ca/blog/2023/10/06/new-talk--making-hard-things-easy/


nostr:npub1cvpv9cywr20k3r2tmd8crrmqr00vungzuvxeh5n7rzl6xgdsz83q6wyvgu honestly i haven’t looked at that code in like a year and i have no idea what it’s doing, all i know is it works pretty well


nostr:npub12ch9um8y0qcmy3awj8zd7ethkz3hd37ex6xpqp0hcx4fdfgfptnql2lpkm the surprising thing to me is that I can get pretty good results with some pretty mediocre code


nostr:npub12ch9um8y0qcmy3awj8zd7ethkz3hd37ex6xpqp0hcx4fdfgfptnql2lpkm yeah my script is pretty crappy so all of those issues are not surprising. this is definitely the code I use


you probably shouldn't use my spellcheck script (it's a bit of a mess) but I feel like the reason this works well is that I put together my own list of "correct" words (based on my own past writing and google n-grams) and it results in a lot fewer false positives

feels like there must be a "real" spellcheck program out there that has tools to help you automatically assemble your own dictionary of "correct" words based on a corpus of your writing


A while back I wanted a spellcheck, and I couldn't find one that gave me the results I wanted (because I use a lot of terminology/jargon that isn't in the dictionary). Someone suggested that I write my own spellcheck program, based on this guide by Peter Norvig, and it's actually worked really well, better than any other spellcheck I've tried  https://norvig.com/spell-correct.html

it looks like this https://gist.github.com/jvns/702a51110d55b99d6c468cde60b45dbb


nostr:npub1s2rk67lgfeyet57at6z7umrhualmdtdls5qdx7ykpx54gen6wv2suh66tx you can just buy new zines one at a time when they come out


nostr:npub15pzznd3zxt5qhs552ykgaav0gfvh30n9x4du6w5ufwu8e9jzhzgqekar23 that's a great idea, I'll think about possible ways to implement that


nostr:npub14c5was0sauzk57fhrvw7wkzves2usuxxhtfltk5an4atplqz7xzsm4pqtd thanks! I created an issue https://github.com/jvns/mess-with-dns-backend/issues/32 (though I'm very behind on the backlog...)


nostr:npub1qcy4xnxgwr75mlugku3qc2aqskgsymy847helej72ke2y823r7uqesqpzu they're 8.5" x 5.5”. I'm pretty unlikely to change the paper size at this point :)


nostr:npub1vaynp6armrryyqr92zmw0vg4wvy7f56uhju5hx7rh5syzyt5h24spmarep aw thank you! I don't but I'll look into if I can find a way to do it


would folks be interested in some kind of “get print copies of every zine julia has ever written" product?

(right now there's a 13-pack for sale on the store, but it doesn't include print copies of the free zines)


(the way we solved expensive international zine shipping was the simplest possible thing: just use letter mail! put a zine in an envelope with a stamp. It took a while to work out the logistics though.)


been working on editing the transcript of the “making hard things easy" talk and I think I'll post it tomorrow https://www.youtube.com/watch?v=30YWsGDr8mA


nostr:npub1xz28zqwwmdfca2g9whfsvwvk2ee500rvspll28uwcjfwunu3s4hqum69v6 very simple, just sending the zines with letter mail. The weight limit for letter mail is pretty low though so I think it only works if you're ordering 1 zine.


nostr:npub1kte8vkw70glp0fcvwxxfc53pryvq50gc40lw054tqf4l5d5tdsksks5pcv printing is easy. the main problem is that I use a really incredible US-based shipping service  (https://www.whitesquirrel.com/) to handle fulfillment and I'm not aware of any similar overseas services.


nostr:npub1kte8vkw70glp0fcvwxxfc53pryvq50gc40lw054tqf4l5d5tdsksks5pcv yeah people always suggest that! it sounds like a cool idea but I have never found any viable way to do it for various reasons


nostr:npub1l8523qwlmle9k82p44s4zlx0mzh4kkrpxvlgvfc0dnmuw2pl0sjsufsyaq haha I love it


nostr:npub14c5was0sauzk57fhrvw7wkzves2usuxxhtfltk5an4atplqz7xzsm4pqtd that's great to hear! i guess the video editors did incredible work :)


nostr:npub1dfnwg2phy50g3zkyzw9uskpw2emr2ay0r85jpvtam69ugu5yhlqqkqqfvg aw thank you! definitely didn't get a chance to talk to everyone I wanted to


my talk from Strange Loop "Making Hard Things Easy" is up! https://www.youtube.com/watch?v=30YWsGDr8mA


nostr:npub1w9fcc9eq08xp04l0wzkxmp94gcqpw9mvueplnradg93udw90s23qjsf73p the fact that ivory lets me read my feed in chronological order is probably the main reason i pay for it


nostr:npub1ekgpqavw8x0s9wj9rj8mxw57ywt5330j49fhmlfmvx3pyyl0yz7q39p0he i love zulip (i’ve used it every day for 10 years) but my impression is that it can be a bit hard to use for casual/infrequent users, probably because it’s a small company with less designers. It definitely has a lot of UI stability over time which I really appreciate as a long time user


almost 10,000 people are subscribed to get comics from me every saturday! who wants to help us get over 10,000?

you can sign up here: https://wizardzines.com/saturday-comics/

https://cdn.masto.host/socialjvnsca/media_attachments/files/111/132/503/614/011/429/original/008899e924fa3daa.jpeg


nostr:npub1p4grwm5vzshe7he6jp5gatt0j0707armz7f35mzr3afqmwqr9f9sgaqlwm i did not understand any of those words but maybe if you write a post about it I will :)


nostr:npub1p4grwm5vzshe7he6jp5gatt0j0707armz7f35mzr3afqmwqr9f9sgaqlwm i'd love to read that article! when i talk about avoiding async rust i'm talking about programs that interact with networking (like for example a program that captures packets) but aren't very performance sensitive


nostr:npub1p4grwm5vzshe7he6jp5gatt0j0707armz7f35mzr3afqmwqr9f9sgaqlwm this might be a bad question but as someone who finds async rust confusing and who (I think) has no real need to use it, do you think there's a reason for me to learn about async rust?

i've been trying on and off for years to find a small subset of rust that I can actually get comfortable with and I haven't yet been able to figure out which parts of Rust I want to learn vs ignore


nostr:npub17d25x8sg58gpagwxcvxkf78lnczkqccxkeqtkr6x260tjupg72usczwaym i found it hard to tell how much the circles are rotating by each time


nostr:npub1ewrzwm8wffnt5gddesqukw327v882vnqnl3hn9s92crdj78x5ntqntnzyd i feel like there’s a certain kind of guy who comes online to argue with strangers


nostr:npub1ekgpqavw8x0s9wj9rj8mxw57ywt5330j49fhmlfmvx3pyyl0yz7q39p0he asked this a while back and got some great responses https://mastodon.social/@b0rk/109485838486742920


nostr:npub1zd6p99dvq75u96hrvzr6ukhas3ydy6830gtje245573pfvg54xqqmw4ava yeah that’s really cool


nostr:npub1zd6p99dvq75u96hrvzr6ukhas3ydy6830gtje245573pfvg54xqqmw4ava same, i don’t really understand either of them


GitUp (https://gitup.co/) also seems to have a nice undo feature, though it only supports Mac OS


nostr:npub1z0pekk9ueskyxmhnlq2jmquhc87ycnam0j87mnyt30h0h4n6udfs4dd6zw ooh neat


has anyone tried using the 'git undo' from the git-branchless project? https://github.com/arxanas/git-branchless

a general "undo" feature for git seems like such a cool idea and I'm curious about whether it works well in practice


nostr:npub1p5a8a99guvktqwg5u882dgz5zaqzyxs5fw2xgc7d23yg2a8hjadsyqn53s here are the contents, your guess is as good as mine what the point of this was supposed to be

https://cdn.masto.host/socialjvnsca/media_attachments/files/111/066/930/221/073/041/original/b2b70047924810d1.png


in a git repository, where do your files live? https://jvns.ca/blog/2023/09/14/in-a-git-repository--where-do-your-files-live-/


nostr:npub1t4zqrns77u9yfduzydfwf0tuyhvpt2z4pjdvctm7py24gpqnduqqnqjcda no worries :)


nostr:npub1t4zqrns77u9yfduzydfwf0tuyhvpt2z4pjdvctm7py24gpqnduqqnqjcda thank you but I really meant it when I said I didn't want opinions :)


we were thinking about different ways to illustrate "HEAD" today and uh it's going extremely slowly

(not looking for opinions on this one, I have too many opinions of my own already :))

https://cdn.masto.host/socialjvnsca/media_attachments/files/111/058/837/866/614/693/original/49f3455243569735.png


nostr:npub1w0m7ewhra2r2996gyura8h7zuw0har82hgn5d6hzjxcqs79ncdsq99tzkc haha I just ran this is one of my personal repos and this is what I got

(it's very good on a real repo though)

https://cdn.masto.host/socialjvnsca/media_attachments/files/111/058/074/725/233/290/original/c4e1fbbc848f28cd.png


nostr:npub1slp5q3n9nyjn3p28hnxmvj5x82w6yw03cvplvkjdrnnuqqw4et3ste4xfq does this help? https://wizardzines.com/comics/unix-domain-sockets/


nostr:npub1cdvq6mcu7ct9ezhpurl3j3ermvn9qduy2ywhqnq9y0ukul0l2n6q5yfkvy thank you!!


been trying to get some more reviews of Wizard Zines, but still trying to work out the best system. So far I've set up

 - goodreads/storygraph pages (like https://www.goodreads.com/book/show/75355942-the-pocket-guide-to-debugging & https://app.thestorygraph.com/books/bb487c59-afd8-4db2-a7d4-9a38b00656bc)
- a plugin on my site (https://store.wizardzines.com/products/the-pocket-guide-to-debugging)

still trying to figure out which one works best -- goodreads is tricky because not everyone has an account and asking someone to make an account to leave a review is a lot


nostr:npub18sptzrwqg36u853x36edc9wkqp2c40dh5py7l6gu44gvvndfnc6ql9u636 aw thank you so much! love to see it


nostr:npub1anuyv4p2tf59agnyryvm0th9vkcsgmnkcj9vda73n7ryv4jp4kgq07dxd2 that makes sense thanks -- thinking about it in terms of backtracking seems much more realistic


nostr:npub1anuyv4p2tf59agnyryvm0th9vkcsgmnkcj9vda73n7ryv4jp4kgq07dxd2 (when I say "maintaining many parallel possibilites at a time", I'm thinking of this "Implementation: Simulating the NFA" section from https://swtch.com/~rsc/regexp/regexp1.html where he simulates an NFA using an array of states)


nostr:npub1anuyv4p2tf59agnyryvm0th9vkcsgmnkcj9vda73n7ryv4jp4kgq07dxd2

also I have a pretty clear model of how to "be the computer" for a python program, but for a regex it's harder because actually to match an NFA you have to maintain multiple possibilities in your head at the same time or something? Maintaining 3 parallel possibilities for where in the state machine we could be actually doesn't feel that easy.

running a DFA computer in your head is pretty easy but I don't think anyone is really converting a regex to a DFA in their head


nostr:npub1anuyv4p2tf59agnyryvm0th9vkcsgmnkcj9vda73n7ryv4jp4kgq07dxd2 yeah I have some of the same thoughts since my thoughts about regexes were also formed in theory of computation class

some things I find weird:

- "a regex defines a regular language" doesn't exactly map to regexes in practice (the '?' feels a little slippery to me, and in fact I get a little confused about ?s in my regexes)
- the thing where matching regexes with backreferences is NP-hard (I never use backreferences because they confuse me, but is it bad to use backreferences?)


nostr:npub14gs36ydu3rkt8v902lef7wcm0t2cd9ge02xwvy34y3k8fg3ns3psle9ask not yet! i haven't really figured out the right approach to regular expressions, I'm not sure what the hard part is about it yet!


nostr:npub1kte8vkw70glp0fcvwxxfc53pryvq50gc40lw054tqf4l5d5tdsksks5pcv i was surprised by all the replies about firewalls because somehow I forgot that people use iptables to configure firewalls :) (I've mostly used it for NAT and weird container stuff)


nostr:npub1qnwatsqn6dmynulnw7jfy7znfy07yl3vtm2hk30299h3kz53gnlszm96t2 interesting thanks! do you have any idea what makes vim hard to get into? (ok if not)


nostr:npub1wtcahw2z0fv4rd6xd8970p6n90m06u3plm8ng3e6fkpehtpe8jlsm04lfu godspeed