"it's me and my stuff" - victor
"searching for simplicity in computing" - rui
"perennially under construction" - roel
"open new tabs with me" - brin
"may i interest you in some LINKS?" - daniel (archived)
"i make the bleep bloop music on my computer" - kyrla
if, like me, you find the message box too intimidating — "this will be just as cringy and permanent as the notes in my high school yearbook" — consider some inspiring one-liners from v1 of the internet phone book:
you can join v2 of the internet phone book. v1 did not have enough sites to feel like a thick phone book, so please join and make v2 bigger. feel free to ask me for help if you want to make a personal website but aren't sure where to start.
the layout and card previews will be similar to simplenote.png. it is a fast, information-dense, text-oriented, visually pleasant, and unsurprising UI, which is the highest praise i can give an interface.
and we can do this without figma! plain webpages are great for prototyping. javascript can query content collections, measure text widths, and generate component variants. (i'm desparately trying to fill the figma-shaped hole in my design engineer persona)
for example: a really short or empty name may be jarring, and a really long name may be missing text-overflow ellipsis. we can preempt these visual bugs by populating components with shortest, longest, and median text early in the design phase.
i was inspired by piccalilli's design process (see the 2nd video). i like the contrast grid, and the broader idea of having a pattern library and component playground (#162) that shows all UI permutations.
i started making a struggle meals recipe website (screenshot.png). the plot barf was my attempt to make recipe attributes (price, effort, portions) perceivable at a glance, but then i realized that spider plots are poor information design.
on repeat: magdalena bay's cover of ashes to ashes
♫ we know major tom's a junkie
strung out in heaven's high
hitting an all-
time
low
FYI, you can still get a triptik.jpg from AAA.
i like having written directions for long trips.
it's also good for people who are trying to degoogle or use dumbphones (#129)
been listening to techno music:
- david's endless acid banger
- jaw harp (#27) performances like this one and that one
- tracks from daft punk's anime movie, like crescendolls and digital love
... while listening to hvac experts who explain all the nuances to air quality — nuances regarding testing methods, confounding pollutants, chemical processes, and ventilation tradeoffs.
... and how indoor CO2 levels can easily reach 1000+ ppm. i would love to buy a CO2 monitor and test my home, office, car, and city. in the meantime, i will follow the duetschen and keep lüftening and touching grass
... and how atmospheric CO2 levels have increased from 280 ppm before the industrial revolution, to 400+ ppm these days, so we are all probably a tad icker and dumber because something is in the air
(continuing #196) i often think about CO2 levels and their effect on cognition, like how woozy kurt seemed in his experiment
shorter names are symlinks.
for example, libcap.so points to libcap.so.2, and libcap.so.2 points to libcap.so.2.77.
this lets applications link against a stable major ABI while being agnostic to minor library updates.
TIL about the naming convention of shared C libraries like
libcap.so.2.77.
the long name is versioned with format:
lib<name>.so.<major>.<minor>.<patch>
i've planned a gentle path to VPS proficiency: first, just log in and vim; then self-host small stateless apps for myself; then stateful apps for myself, then for the public; and then, maybe one day, hosting apps for paid customers.
but just like renting a domain name opened a lot of doors — custom email, #253-254, indie web homesteading — i think renting a VPS will similarly open lots of opportunities.
- there's a lifetime of interesting projects sans server management. you can write native apps and devtools. you can do so much on the frontend with javascript + fetch + wasm + other web apis + free static site hosting. all gratis and libre.
- there's momentum from teen coding days, avoiding projects that require a credit card.
i'm still frugal poor today (#367) and leery of subscription payments, preferring to work with free tools.
- there's fear of the unknown, driven by inexperience facing the adversarial internet: fear of misconfiguring something, of getting hacked, of cloud fees and surprise bills, of wasting resources, of scrapers and miscreants dogpiling my system.
this is my first time renting a VPS. it's a big deal for me. i usually avoid cloud/backend projects for a few reasons:
so now i'm running vim in a VPS. i got the cheapest digital ocean droplet ($4/mo, 512M ram, 10G ssd, 500G/mo egress). i log in thru termius, a terminal emulator that organizes my ssh keys and ip addresses.
i've been searching for a good vim notetaking setup on my ipad. i used vscode.dev for a while, but it was fiddly and slow, and my files disappeared whenever the ipad collected tab memory. i tried vim.wasm, but it didn't work on safari.
- i'm more aware of the dopamine drop after finishing stimulating activities, and regulating myself accordingly, instead of tweaking out with nervous energy and looking for my next dopamine fix e.g. reflexively opening my phone.
- i got hooked on mobile mobas and autochesses for a couple evenings. i play obsessively until i hit a wall where progress requires money, or inordinate amounts of time and commitment, or cooperation between random gamers, and then i uninstall.
- i kept my depression mustache for a few months in an effort to grow a fu manchu (like master shifu or the bad guy from mulan), but this week i shaved it. i catch myself stroking mustache tips that are no longer there.
- trying to budget my food spending stricter than ever. no restaurants. shopping only at aldi. thinking about sustenance per dollar. lots of rice and beans. i got 10 lbs of russets for $4 with the goal of making gnocchi and baked potatoes.
some monthnotes:
- had an active week of jogging + basketball + soccer + pickleball, which feels especially nice after weeks of couch potatoing, and also after letting my gym membership expire (#7)
"may all your pointers always point to the right place"
— b. kernighan, in a book signing
it's cool to see what other people do on their adventures. i liked eli's picross rpg, wraith's drip-fed novels via mastobot, eugene's learn-along techno music case studies, and sophia's generative art.
i've long underrated these contrived community challenges like parkruns or blaugust or occ (i could do these anytime on my own, right?) now i see that goal-oriented semisocial streak-keeping is powerful because of the accountability and momentum.
seeing a written record of my little accomplishments feels nice. it's like a tada list, a counter to my forgetful and self-critical tendencies.
i explored several funplanned projects and finished some longstanding todos. i rebalanced my creation-to-consumption ratio (#103), which is i think is the most important part.
december adventure review: kinda like my normal tinkering, except with more fun and momentum and energy, especially because of the time off work-work. one could even call it a micro-sabbatical if one wants to sound micro-boring.
tldr for rust developers:
# your-package-manager install chafa or chafa-dev, and ffmpeg
# then in Cargo.toml:
[dependencies]
chafa = { git = "https://github.com/wong-justin/chafa-rust.git", tag = "0.4.0", features = ["link-dynamic"] }
tldr: x86-64 linux users (including windows wsl users) can download the latest vic release and use it right away, as long as ffmpeg is on $PATH.
(day 29) i tidied yesterday's changes — lots of refactoring and double checking and fiddling with gh actions. i will tentatively say that the chafa rust bindings are usable enough to share. hopefully the installation instructions are clear.
(day 28) i built vic with static linking! still need to make git commits, write docs, test on other machines, and make github releases.
(day 27) i worked on static builds for vic, thanks to michael's unblocker. i've learned a lot about building C projects this year: static vs dynamic linking, licenses, rust bindings, compiler flags, unix conventions, package management, containers
(day 26) i thought of another approach: writing the FNV hash function in GPU shader code. that would shave off several orders of magnitude of execution time.
optimistically, i could make it a million times faster and brute force all 11-byte inputs in a few days. but realistically, i don't think i'm clever enough to reach that optimization, and the smallest zero-hash input may be several bytes longer anyways
(day 24) i did some napkin math. there are nearly one sextillion 11-byte alphanumeric inputs, which is the best case scenario for the 69th FNV challenge (#348). my naive rust code would take 45000 years to generate and hash those inputs :(
i will also start reading the "assembly for dummies" genre, starting with nicebyte's series and manuel's series and nayuki's page and ffmpeg's lessons.
this is so exciting.
i thought FNV, being so tiny, would be a good opportunity to learn assembly. but my 8 lines of rust compiled to 70-some instructions. so instead, i will study handwritten implementations that only use 10-20 instructions.
now i will approach the unsolved 128-bit challenges. implementing big ints could be fun. i'll need to optimize it since there are so many inputs to check. i could even try looking at the assembly code...
so the maintainers made a fun challenge to find inputs that hash to zero. i have been nerd-sniped into this game. i started by implementing the trivial 32- and 64-bit hashes and confirming a few test cases.
FNV is not ideal for cryptography, because 1) the function is so fast that adversaries could reverse hashes with brute force, and 2) the accumulator could get stuck at zero, meaning adversaries could induce hash collisions
the algorithm even includes ascii art lore.
the hash is seeded with a number based on someone's email signature that has an ascii bat:
/\oo/\
for each byte of input, an accumulator is xor'ed with that byte and multiplied by a special number.
the special number is carefully selected to be mathematically chaotic so output varies wildly.
(day 23) TIL about a neat lil hashing function called FNV, via matteo. the algorithm is simple:
(day 22) i made a sticker-collage.jpg
every year or so, i sit down with my sticker collection and the back of an old deskpad calendar.
it's very meditative and scrapbooky and fun
with four keybinds:
alt + left = snap to left 2/5
alt + right = snap to right 3/5
alt + up = maximize
alt + down = minimize
(day 21) is the shortest day of the year.
sunlovers find comfort knowing it can't get any worse than this.
i uploaded my old fork of the rectanglewin window manager for windows
i liked niki's birds-eye diagram.png of the unicode codepoint space. most codepoints are unallocated, and of the allocated, most of them are CJK (chinese, japanese, korean)
- a codepoint takes 1 to 4 bytes to represent with utf-8
notice how "character" is nebulous enough to fit any definition, and therefore usually worth avoiding.
in its place: glyph, codepoint(s), or byte?
- codepoints are numbers (0–10FFFF) to which the unicode people assign meaning. some codepoints represent letters, some represent diacritics, some represent byzantine musical symbols, some represent invisible modifiers
some definitions:
-
a glyph is the thing you see on the screen, a drawing assigned to a
grapheme cluster
- a grapheme cluster is one or more codepoints
curious vim users may enjoy this command, mentioned in the monospace dump: hover a glyph and ga to get the hexcode(s).
pairs well with fontdrop.info, my favorite font inspector
other fun codepoints i found along the way:
7-segment digits 🯰🯱🯲🯳🯴🯵🯶🯷🯸🯹,
quadruple prime ⁗,
stacked asterisks ⁑,
dominoes 🁬🀵,
and dancing stick figures:
🯈 🯇 🯅 🯆
the candidates, mostly arrows:
➚ ◹ ◥ ⧉ ⬈ ⇗ ⤤ ☛ ⎘ ↗︎ ↪ ↬ ↝ ↣ ❯ ➳ ➦ ➥ ➣ ⌝ ≻ ↱ » ⟿ ⮺ ⭧ 🡕 🡭 🡽 ❏ 𝀑
(day 20) beautiful weather, 75F and sunny.
i took a hammock nap.
in the evening, i went on a unicode adventure.
i wanted to find a glyph that looks like wikipedia's external link indicator.
"the trend is often to run blindly towards new technology. you have to be aware of what you're giving up in the process."
"with every new feature, it seems a desirable old feature goes away, or gets left by the wayside. there's room for both to co-exist. people have to realize that they still need to take the time to produce good art, good films, good music."
""don't forget that the five minutes of rewind time is never dead time... with your machine, you have lost that thinking time." you've gained something else, but you've lost something."
that comes from michael hawley, working at lucasfilm in the 1980s. he brings up word processors as a comparison to their new film editing computer. it's a hundred times faster than their old machine, but:
"...they can distinguish whether a student did his work on a word-processor or on a typewriter, because word-processor prose looks like a collage. it's a valid point."
"that makes it gratuitously easy to accidentally break little threads of thought that might otherwise have run through your writing. nowadays, english teachers are all complaining..."
"you're constrained, because you don't want to retype the damn thing... with a word processor, it's so easy to make changes: you can bounce around, back and forth, cut and paste and copy and snip and grab from anywhere." (#139)
"composing prose on a word processor is not like composing prose on a typewriter, because when you use a typewriter you have to get your ideas down coherently, produce a statement with direction, and see that the message gets across."
here's a quote that i've been thinking about a lot, on typewriters versus word processors, and the effect of new tools on creative work:
3) perhaps reading lots of novels and watching shows like word world (#200) cultivated a vivid imagination
and ofc 4) i probably have some genetic affinity for numbers and shapes
i think some childhood activities developed that visual intuition:
1) playing with number blocks.jpg
2) doing origami.
origami is really a math game:
sliding quantities around, exploring numerical relationships
it makes addition and subtraction really intuitive for me. one day i hope to make an animation of these number shapes, even tho they're a bit blurry and shifty. it's like trying to sketch a dream.
like for 5+7, the dumpy butt of the 5 nestles into the cap of the 7, compressing into a stack of twelve. or for 6+4, the 6 stem slides up the 4, and the 4 stem slides down the 6, like a yin-yang, to form a complete stack of ten.
unrelated: the same person has a post about visualizing numbers, and it's been on my mind for a few years, because it's similar to how i see numbers. digits have shapes when they combine. nobody else talks about this!
i read about cameron's pen plotter project. he pre-darkened facial features to get better results. so i went back to #311 and added some pixels to highlight the eyes and mouth. i felt like i was profaning the mona lisa, but it helped.
(day 18) i cleaned up vic: updating notes, removing a logging dependency, fixing a github action, and even using git tags for the first time. i feel much better about the codebase now.
(day 17) i thought about string art more, and realized i can score each line based on the difference between whiteness and actual pixels. then i can draw the highest scoring lines and omit the low scoring lines.
i tried to use euporie because python notebooks are nice for image processing. but i ran into hiccups with image display and package installs. i fell back to writing rust and livereloading the output in the terminal with chafa.
(day 16) progress.png on string art mona lisa. i can draw lines through a circle. next is the algorithm to turn an image into lines. i want to try applying the fourier transform. if that doesn't work, i'll use a brute force search.
"i spent an interesting evening recently with a grain of salt"
— mark v. shaney, markov chain usenet troll account, ca. 1984
i'm pleased with the results so far. there's enough substance to turn this into a full blog post, especially if i can replicate string art with crab graphics.
(day 15) crab mona lisa is finished! you can see the results on my desktop.png. it took 5+ hours to render the unoptimized script. the red version is a test build that shows out-of-bounds movement.
(day 14) i like john's take on turtle graphics: a horseshoe crab that leaves a snail trail in its wake. i want to draw the mona lisa using that crab. the trick is to move really fast. here's today's progress.png.
keypresses are scheduled with a timer and sent with nvim_input().
they're picked up by the event handler vim.on_key(callback), which manipulates some strings and displays them in a modal with vim.api.nvim_open_win()
core ingredients: nvim -c lets you send keypresses at startup.
i wrote about this before, and i still think it's a cool feature.
everything afterwards is just lua.
why rewrite showkeys? i prefer shell snippets because they're tweakable and portable, especially compared to (n)vim plugins, which have extra boilerplate and a confusing ecosystem.
(days 12-13) i finished flattening the 200 LOC plugin into a 60 LOC copy-paste snippet. here's the repo.
(day 11) i just piddled with #297 in an attempt to remove the plugin dependency.
it gave me a private IP address where i could install my app through a web dashboard.
it also let me debug the app over telnet (!?)
tomorrow i dig deeper.
i spent the next hour setting up my dev environment and running the sample app. it was surprisingly easy to get started. to enable dev mode on the device, i pressed home x3, up x2, right, left, right, left, right on the remote.
that's probably a corporate safety measure, and probably not a big deal for an indie app, but in any case, hypothetically speaking, i may or may not be developing an app for a platform that rhymes with "tofu"...
there's one interesting clause: "you will not issue a press release or public communication concerning the subject matter of this agreement, or publicly announce the development or availability of an application" without roku's approval. oops.
i started by registering a dev account. i spent an hour reading the terms and conditions. there's the usual "anything can be suspended at any time, don't do anything annoying or illegal," yada yada.
in the evening, i found another project. there's a roku screensaver with hot air balloons that mum really likes. i helped set it up again, but to my dismay, it had been infested with ai-generated images. gross! i resolved to make a replacement.
(day 10) was a nap day. i put earbuds in and played my go-to sleep aid, 10hr white noise. it's one of those bilateral stimulations i find deeply relaxing.
so today i made a vimscript that can automate inputs in a vim terminal session. combined with the showkeys plugin and obs, i should be ready to make nice reproducible TUI demos. here's a sample: vimscripted-tui.mp4 (482KB)
there's asciinema, but 1) it records input with output, so i can't store the inputs alone. and 2) my particular TUI creates tons of ANSI output per second which bloats the filesize. and 3) neither ascciinema nor vhs support showing keypresses.
(day 9) my old vic_demo.mp4 was made with vhs, but 1) it had unreliable speedups and slowdowns. i don't think vhs likes video player TUIs. and 2) vhs downloads a chromium dependency, which is a bit heavy. and 3) the feedback loop is slow
(day 8) was a total nothingburger. i read a ted chiang short story that made me want to hug my mom.
(day 7) merely added docs for the feature in #288. i should make a single source of truth for controls in the cli help text and the readme text. i also worked on my end-of-year post. it's a relief to write something that doesn't require research.
for now, i use dprint (which uses markup_fmt) to format my webstuffs.
i like how it can format html with inline script and style.
it handles .astro files too.
i like how it's faster than eslint and simpler to configure.
my change was only three lines of code, but i'm proud of those three lines. i want to get better at reading code and jumping into new repos like mitchell. i also want to write an autoformatter of my own, so i'm happy to see how others do it.
i kept a notes file to record my attempts and test hypotheses. "maybe x works? tried y but z happened." i found the main function to be pretty gnarly, so i ended up reading each line and writing myself a pseudocode summary.
(day 6) i accomplished #287 after a few hours. my process: i made a new test and livereloaded it with entr. i glanced through some source files and read struct definitions. i wrote print statements to dump variables.
also made small changes to vic: added a +/- 5 sec feature, and fixed the order of arguments in an ffmpeg command. i still need to add big features of threading and audio. but concurrency is tough, and i think i should refactor first.
(day 5) the html formatter i use, markup_fmt, currently wraps prose sentences to 80ch. i want to disable that because i prefer one sentence per line. today i built the project locally and poked around. tomorrow i should figure out which code to change.
spotify wrapped also happened today, so i spent the morning reminiscing. i gathered ~60 songs for my end-of-year post.
(day 3) i worked on a visualization of my commit history, like the one
on github profiles but using the
cal command. i started with a shell script, then
transitioned to perl for better string manipulation. here's a sneak peek
TIL pacman -Rs removes a package with its would-be
orphans. see also pacman -Qdt to list existing orphans. i
used these to remove pandoc and vlc because they had too many
dependencies slowing my arch updates. (i use pandoc-bin and mpv
instead)
ideally i would write an ffmpeg output device or an mpv output driver, but i'm not quite comfortable tinkering in C. for now, i experimented on a branch of vic and ended up with this result.png.
(day 1) i want to make a chafa filter for realtime video. the closest
thing is this mpv command that converts a webcam stream to unicode
blocks:
mpv av://v4l2:/dev/video0 -vo=tct --profile=low-latency
--untimed
gonna try december adventure, the low-key alternative to advent of code. i like gentle nudges that help me work on fun projects (#155), and i like seeing what other people are tinkering with.
- listen to the mantras. they seem corny, but i think they help. and if i use audio cues, why not pavlov myself with other environmental cues, like a dedicated drink or candle or chair or hour of the day?
-
remove distractions. no phone in the room, no wondering where to
start, no hunger or thirst
- log each session. i won't let myself get sidetracked because it will ruin the log
...which reminds me of parker's writing ritual. it's one of many efforts to reclaim my attention. i find myself surprisingly focused when following his tips:
i think of the paris review interviews where writers describe their their idiosyncratic routines. the only common thread seems to be lots of reading, writing, and deep focus...
i must remind myself of the tool-agnostic camp, aka productive people. i think about this video of roald dahl sitting in his dingy writing hut with pencil and paper and a lapboard. he did not need storyboard software or a customized text editor.
i like how easily i can collapse (zfat) and rearrange (dd, p) notes. i like how it complements my existing process. i am disappointed that <details> is a poor element for inline footnotes, and a deceptively poor element in general, but oh well.
so i made a vim & html mechanism that handles both of the aforementioned writing workflows. it's like annotations or comments in wysiwyg document editors. i'm working on a style guide / colophon of sorts where you can see an example.
malleability, after all, is where software shines. the more central a tool is, the more it ought to be comfy and fit your brain. mcphee depended on several highly customized scripts for his text editor (see end of #270)
some people prefer scrivener or gingko writer or card buddy, which all seem great for refactoring prose ("see the forest or the trees"). but i prefer to mold vim to my tastes and avoid being locked into a closed-source editor.
then there's the editing phase (draft no. 4), putting boxes around parts that need work. "you draw a box not only around any word that does not seem quite right but also around words that fulfill their assignment but seem to present an opportunity."
first is the fact-ordering phase, where mcphee describes laying thirty-some index cards on a large sheet of plywood, so that he could move parts of the story around until he found the right structure.
i'm trying a new way to draft lengthy posts. it's inspired by nonfiction writer john mcphee, as introduced by james. i'm focused on two workflows:
i've been thinking about gus' smallweb subway for a while. great idea, great name. maybe one day i'll fork it to crawl more webrings (perhaps using mike's list) and make a bigger map.
continuing #122:
-
wigglypaint, a squigglevision editor made in decker
- theforest.link now looks like a retro lisa desktop
it feels so natural and obvious compared to diataxis' forced abstractions, where i'm still left wondering "what's the difference between a tutorial and a how-to guide?"
a sensible documentation model: fabrizio's seven actions. people read docs to appraise, understand, explore, practice, remember, develop, and troubleshoot, usually in that order.
in my drafts:
- "why is it called x86_64?"
- "personal website patterns"
- "what makes a great TUI?"
- "programmers at work, 40 years later"
- #15
i learned sinusoidal movement can be approximated with
cubic-bezier(0.364, 0, 0.636, 1)
i also learned that iframes cannot have a resizable drag handle. you
gotta use a parent container instead
you can record your own demo using this link on a big screen:
/unlisted/iframes
?tl=https://example.com
&tr=https://example.com
&bl=https://example.com
&br=https://example.com
i screencasted some of my sites being fluidly resized: animated-iframes.mp4 (3.2MB). i like how it captures a lot of layout work in a matter of seconds.
only disadvantages:
-
more power draw, heat, and resource demands
- easy to forget about testing UIs on low-res screens
-
more freedom on sprawling canvases like figma or
#173
- finally have the space for polypane (or responsively) to test multiple viewports at once
-
a taller text editor (i'm at 85 LOC but would like even more)
- less context switching brings subtle cognitive relief. "what did i write above? where is that file?" now answered with a glance, not a scroll or alt-tab
so glad i got a 4k monitor a couple years ago. advantages:
- crisper screenshots and screencasts (low-res media stands out like a sore thumb these days)
then TUI-specific programs on the right:
gaze livereloading vic,
bacon organizing rust
compiler output, tail -f
logs, and tig
(partially offscreen) for git
screenshot saturday: just my desktop.png. standard things on the left: documentation, notes, and code. firefox browser, neovim editor, ghostty terminal with nvim dark theme. all within niri, the scrolling desktop environment.
the naive perspective is "why do i need to buy a domain to publish code", and the other perspective is "we need namespaces, and DNS already provides that along with decentralization and proof of ownership, so let's just use that"
TIL
reasons why java/android packages use reverse DNS
names like com.google.android.apps
it's mostly about namespacing and preventing security issues in the
supply chain
beach boys' pet sounds reminds me of katamari's sunbaked savanna reminds me of bobbing's dog reminds me of graham kartna's gymnyc1999 tmp reminds me of animal collective's dragon slayer
just set up void linux on an old 32-bit netbook (wonger@craptop). curious to see what i can do with 10GB of disk space and 2GB ram. also interested in comparing void with arch, esp re: package management and system init
and that's it! fluid typography and spacing made easy. note that it
all depends on clamp()
which is baseline 2020.
note this is not a fixed typographic scale (1em 2em 4em), but it grows with viewport size, so bigger screens can have bigger text and looser margins. no more breakpoints; only choose min and max supported viewports, and the rest is interpolated.
use the vars like t-shirt sizes:
margin: var(--space-s); padding: var(--space-m); font-size: var(--step-2);
and for spacing:
--space-s: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem); --space-m: clamp(1.6875rem, 1.6108rem + 0.3409vw, 1.875rem); --space-l: clamp(2.25rem, 2.1477rem + 0.4545vw, 2.5rem);
it generates CSS variables for font sizes:
--step-0: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem); --step-1: clamp(1.35rem, 1.2631rem + 0.3864vw, 1.5625rem); --step-2: clamp(1.62rem, 1.4837rem + 0.6057vw, 1.9531rem);
i should probably explain the value of utopia.fyi instead of just namedropping it all the time. their blog posts are good (one, two), but i'll try to summarize everything in a few nuggets:
in the works: screenshot.png, a site for searching the computer chronicles (#30). currently wrangling tailwind. i think i'll go back to utopia.fyi's fluid sizing and spacing instead of tailwind's awkward breakpoints.
added two small but helpful options to vic: --dry-run and
--log. feels good to write rust again.
-
i liked peeking at 80's tech; analog infrastructure, operating
systems, sysadmin habits. i'm catching up on graybeard culture.
- keep a logbook! so useful.
-
but still interesting enough for me to finish — me, a serial
book quitter who abandons 3 of every 4 books
- i always appreciate a good record-keeper. cool to witness the birth of infosec in detail
- most chapters followed the same narrative: "interrupted my date, hacker guessed passwords, network connection was hard to trace, bureaucracy wouldn't help, forced cliffhanger"
thoughts after reading the cuckoo's egg:
- i like stoll's technical writing — detailed but not dry, where e.g. i can understand how the morris worm worked without getting confused or bored
i remembered to check for false negatives from temporary server/network errors, and for false positives from parked domains, thanks to viktor's post. there were also several curl-resistant sites that behaved normally when visited in a web browser.
nearly half of the casualties were due to glitch.com's shutdown. yet another reason to own your URLs, or lease them as long as possible, whatever you wanna call it. see also #211
i estimate 2-3% of the indie web dies per year, based on my script
searching the internet phone book directory for 4xxs and timeouts:
curl 'https://internetphonebook.net/data/ipb-db.json' | jq '.[] |
.url' | xargs -I {} sh -c 'echo {} >> results; curl -LI {}
>> results'
but this year, i've become a muesli enjoyer (oats + nuts + seeds + fruit). it's been a great struggle meal: healthy, filling, energizing, affordableish, and easy to make (just boil). a bit birdfoody, but i don't mind, especially after adding honey.
favorite cereals:
- honey bunches of oats
- life (cinnamon)
- blueberry morning
- froot loops
- raisin bran (crunch)
- mini wheats
and the newspaper format, refreshingly analog, reminds me of paul's inky letters and loren's college-ruled year in review.
and for 23 years! sorry, matt, but i think she's the OG weeknoter (#45). putzing around, making little mistakes, finding little joys. it's all so pleasantly mundane. reminds me of katie's receipt from the bookshop.
and her poems, like this ode to grape nuts:
"you look like kitty litter
make my mouth blistery
but i love to eat you
that's your mystery"
so much to love about jennifermillsnews.org:
- "tired woman has good sit"
- "chili has big surprise in store for local woman"
- "woman discovers favorite temperature"
been rocking out to from the pyre all week. really fun and solid album. favorite tracks: rifle, count the ways, agnus dei
some site updates: new navbar, new endmarks, and a bigger font size on bigger screens. shoutouts to max for inspiring me to revisit these elements.
- i originally excluded tv series and podcasts because they aren't traditional in-one-piece works of art. but they can be just as enjoyable as a book, movie, or album. essays and articles also deserve a spot. anyways, enough niggling...
-
writing reviews takes a lot of time (#216)
- how to write a review? do i write a summary, or do i write how it makes me feel? do i share what i enjoy, or what i think other people will enjoy?
-
most cover art does not translate to 12x8 ascii art
- i like the idea of drip-feeding lil' enjoyable nuggets rather than a flood of everything at once (#191)
i don't really have a non-tech personal canon. the closest thing i have is enjoyables, but that's just an art gallery, not particularly influential to my core thinking or feelings. also, i've not been enjoying my enjoyables page because:
- nobody wants to use software: yes, this i why i like UX work, because i can help people log off quicker. pardon the big expletive
- against access: what does a deafblind person actually want? hint: not a ton of alt text.
great pieces i recently found and might add to the canon after they
sit with me for a while:
- spec-ulation: semver is just standardizing broken specs. am i upholding all my api promises?
if anyone knows who to credit for the unison big idea post, lemme know. maybe it's an ongoing team effort. ofc lots of canon pieces were team efforts. for example, engelbart had 17? helpers during his demo. shoutouts to uncredited helpers everywhere
honestly, i just wanted to make an asmr playlist of tech talks. quiet nerd speak is the ultimate sleep aid. somehow, tho, i only ended up with nine videos, and some of the presenters are quite enthusiastic and loud
michael published a similar piece on the very same day: "[software essays that] stuck in my mind and changed the way I think." what a grand coincidence. i'll also share david's design canon and the behind-the-scenes of brendan's everything-canon.
more uncomfortable honesty in the process: "do i actually agree with the underlying idea, or have i fallen for sweet nothings?" and also "there's still a large gap between my taste and ability." i think about that ira glass quote a lot
it's difficult to write about myself. questions of identity; lots of introspection. "what do i actually think and do, beyond a surface level? what are my aspirations?" and, unfortunately, stymied by "what will other people think of me?"
i thought the personal tech canon would be another low-effort listicle like #86, but it was actually quite time-consuming. 60-90 mins to read/watch each source, do research, and draft a blurb. then repeat 2-3x until satisficed.
new post: tech canon. so many nuggets to release. later, tho, because now it is 4am, and ive been up all night trying to finish this post before october arrives and i turn into a pumpkin
it might also be a good opportunity to style the feed. i always wonder "what will RSS-unaware readers
think when they click feed.xml?" because all you see is
gobbledygook. some user-friendly formatting and an explainer should
help
sorry for flooding your feed reader and having an uncool URL. now to write my third feed generator as prophesied (#192). i guess it's a good opportunity to replace RSS with atom, which is technically better.
the RSS bot for my homepage spazzed out yesterday :( i also
realized i've been sharing the wrong feed URL. once i clean everything
up, my main feed should be at /feed.xml
(not the github.io one). the nuggets feed remains
unaffected
an idea: archive websites by CNC laser engraving them into stone. then we could have a website cemetery like killedbygoogle.com but irl
updates to the monospace dump:
- added some ascii art
- reorganized sections, incl a dedicated figlet section
- archived broken links
- dumped new links
at least i have a minimum viable elixir webserver. one index.html and a few endpoints, using plug_cowboy
for http. no phoenix, and definitely no liveview (never knew it was so
heavy!)
been one of those head-against-wall days. trying to wrangle a cmake project with a bunch of dependencies. very far from my comfort zone. wouldn't it be nice if a perfect dockerfile or nix flake fell into my lap right about now
currently - an emulator records video to a hardcoded path.
the goal - write to stdout so i can run multiple instances,
streaming output over http chunks instead of writing to disk.
chance of success - unsure
(2) reminds me of my grandma, tasked with using a computer for the first time: we told her to click something on the screen, so she picked the mouse up and held it to the monitor, confused why it wasn't working
(1) more stories of people struggling with computers (#144): a widowed typist, thirty years ago, and joe, ten years ago. text was their only salvation. skeuomorphism might've been helpful too
granted, i have a carpet floor, and no chronic injuries
and i don't have to worry about creepy crawlies on the ground
(compared to, say, australia)
and i still enjoy sofa naps
see also #82
one year review of floor sleeping:
- love the extra space
- floor is cool, mattress was hot
- getting up is a lil harder
- foldable 3" mattress is a good compromise
(3) hard parts:
- staying under 13 kilobytes
- designing fun gameplay, incl sfx. see also juice
- webgl and webaudio misbehaviors (mainly on safari) (hard to debug)
(2) fun parts:
- using nifty js13k tools
- turning my emoji animal categories into spritesheets
- rationing bytes (justifying every lil feature, and optimizing bundle size)
(1) an unfinished project: emoji game. i envisioned a game where emoji animals exploded into letters, sorta like word world meets galaga. i gave it a shot during js13k last year but flopped (game jams are hard)
been binging (young) billy joel and (old) rod stewart performances
old grey whistle test (1986) (yt) is my favorite so far
released my portfolio! feels good to give visual work a visual home. also addresses #149-151. unfortunately, no fun URL as i had planned in #56.
found CSS properties that were proposed but rejected, including bleed, box-flex, flex-align, grid-flow, hyphenate-dictionary, leading-trim, masonry, max-font-size, rotation, text-first-indent, vertical-position, voice-pitch-range...
been thinking about indoor air quality and light quality for a while. see ben's lux and christian's air. ofc the simple answer is to just go outside more, which makes me interested in jon's outdoor computing routine.
and if you've been on the internet long enough to wind up here, then chances are your life is saturated with internet and media, so let's go outside and turn off the screens for a while, shall we? (i am projecting)
i have dozens of interesting websites and blogs on speed dial. i have hundreds of sleeping tabs waiting for a rainy day. i can visit them! they don't need to visit me. like keenan, i do not enjoy an unending stream of material. i choose a slow web.
now i have
two
perly feed generators under my belt (#53).
hopefully by the third i will remember the atom spec.
despite this, i am still feed-averse.
new slow-drip feed for #182. random acts of poetry (repo). short and sparse. "oh yes i forgot about this, what a serendipitous moment for my day." compare to typical feeds (overconsumption, backlogs and burdens, attention invasions)
then thinking of text-only news:
neuters.de,
text.npr.org,
lite.cnn.com,
cbc.ca/lite,
brutalist.report, and
plaintextsports.com
perhaps supporting a secondary frontend is a viable solution
"if we can implement this feature accessibly or remove it entirely, then is the inaccessible version worth maintaining?" "if we can implement this feature with reduced-data or remove it entirely, then is the data-heavy version worth maintaining?"
TIL the experimental CSS feature
prefers-reduced-data. imagine, though, the parallel universe
where reduced data was the norm, and
prefers-extra-data
was the enhancement. (my website comes from that universe). reminds me
of that accessiblity stance...
- decided to drain blisters
- now i can walk and pain is gone
- disappointed in my poor judgment and resulting downtime
- i'm signed up for a half-marathon, but now i'm hesitant about my feet and that same pavement
some mundane running updates:
- in general, enjoying 1-2 hr barefoot jogs at night
- longest run was 10 miles
- but ran on hot, rough pavement yesterday and received a gnarly blood blister on each foot
TIL a QR code can prefill a text message:
smsto:5555555555:hello world
see also
WIFI:T:WPA;S:mynetwork;P:mypass;;
via
nate
is it international cat day? i thought every day was cat day... anyways, i liked alexey's cat catalog from last year.
see also six word stories, aka "flash fiction":
"please select your child's eye color." —
dbohdan
"for sale: baby shoes, never worn." — unknown
nugget-sized poetry at
escarp.org:
"in the wet rainforest of the third apocalypse, the only dry tinder is
her literary past. she chooses death. mold eats the paper." —
blueberrio
favorite publix baked goods:
- carrot cake
- classic chocolate chip cookies
- sugar cookies are good too
- cranberry pistachio biscotti
- sourdough english muffins?
(9) that pretty much wraps it up. i'll keep my dependency versions pinned as long as possible (no need to update). i still want to look at the source code for any security or maintenance risks.
(8) verdict? a little bloated, yes, but similar to other site generators. zola has ~10 direct dependencies of ~580 total, and hugo has ~80 direct dependencies of ~180 (or ~260?) total.
(7) there's some fluff: a few different fetch implementations, and
eight multi-version packages, despite trying
npm dedupe. par for the course, i guess. no big deal
since output code should remain unaffected.
(6) there are 11 types of licenses among astro's dependencies. mostly
MIT.
there is opt-out telemetry. (i don't mind sending them a few
diagnostics. it feels like a contribution to open-source)
(5) there are node-ish packages for fetch, URLs, promises, cookies, MIME types, and so on. there are small utilities for tasks like string handling and data structures. there are a few packages for font handling, and a few for terminal output.
(4) astro uses several packages for syntax processing (HTML, CSS, JS,
TS, JSX). astro relies on a few bundler binaries: esbuild, rollup, and
parcel. it also uses libvips, an image processing binary;
and the
.astro
compiler, which is wasm.
(3) astro uses ~280 total packages. ~60 of those are direct
dependencies, and of those, ~30 are dependency-free.
most transitive dependencies spawn from vite, markdown-remark,
unstorage, shiki, and boxen.
(2) i'll be birds-eyeing dependencies of astro v5.10.0. you can follow along with the excellent tool node-modules.dev (if you have enough screen space and bandwidth)
(1) simlar to "what's in my bag",
zak has
what's in my pocket,
and anh has
what's in my browser.
today, i present "what's in my
node_modules?" not as fun as the others, but vetting
dependencies is important.
finally, some "easy" recommendations in the typical narrative format, simply well-produced and entertaining: the short game, and alphago (#127).
i also enjoy some sports documentaries. full of drama. here are the ones that sit in my heart, so gritty and human: senna (i don't even like f1), obree (i don't even like cycling), and hoop dreams.
i like no-voiceover documentaries. they're all about "show, don't tell." they have interesting material and editing. i'm especially drawn to absurd realities like vernon, fl (#120). atomic cafe is another good example.
koyaanisqatsi is free on youtube for now. it's one of my all-time favorite movies. in fact, it's the only movie that has a blurb on my unfinished enjoyables page. i'd recommend giving it adblock, a large screen, and at least twenty minutes.
todos:
- codegen for form fields
- map form fields to pdf fields
- deploy demo to the world wide web
- ask someone to test it
- make a drag-n-drop image gallery screen
settled on a responsive layout for the pdf-filling webapp: screenshot.png. happy to use desktop space wisely, even tho mobile is the primary target. hopefully the bottom nav is intuitive. nifty middle slider thanks to this guide.
just realized that pickleball is one of the best racquet sports
for fanning yourself
also in the running: padel and beach tennis
(3) initial cons:
- some usability issues and misbehaving components
- web component mysteries. state management? performance cost? unknown unknowns?
- 2MB uncompressed bundle for ~30 widgets. maybe that's normal?
(2) initial pros:
- fewest build hiccups compared to similar frameworks i tried
- sidestepping react by using web components
- good docs. comprehensive code samples and usage notes
- professional look and feel
(1) just finished the wasm "backend" for a client-side webapp. now i'm evaluating front-end frameworks & design systems. ibm's carbon components seem promising. i've been tinkering with a playground of their widgets.
happy world emoji day! emojipedia celebrates with a live
analytics dashboard.
coincidentally, i've been retrofitting some posts with a bottom emoji.
are they dinkuses, dingbats, or fleurons? who knows
three funerals in a month ought to be enough
(3) needs improvement:
- needs more readable text labels
- perhaps a layered redesign, like how digital maps have zoom levels and not a zillion elements on one layer
- needs to not crash chrome
(2) some good things:
-
nice birds-eye view of a website; like
treebut interactive and no scrolling - audited broken links
- hierarchical edge bundling looks cool
(1) an unfinished project: visualizing documentation sites. i'll only share a screenshot.png since the live page is too heavy. inspired by kayce's intertwingularity post, i scraped some sites and looked at links between pages.
here's a list of automated accessiblity page checks in deque's axe-core. TIL many accessiblity checkers, like lighthouse, use that library.
(10) finally, thanks to ian and the rest of the folks from lmt2. it's nice to bounce ideas off other people and to have some friendly accountability to finish projects.
(9) the other was a computer chronicles episode: s15e26, my web site, featuring a gallery of regrettable food, yahoo employees curating websites, drag-n-drop website builders ("homestead"), an accessibility segment (!), and the legendary dancing baby (!)
(8) two fantastic videos found me during the months i was working on my post. one was greg giving a lively recurse talk about deploying backend webapps, which is the bizarro antithesis to my lil' static website deployment. greg is great.
(7) anyways, more fun ideas:
- "i can recite the wcag 2.2 aa guidelines from memory"
- "i can deploy a website like helen keller"
- my cat can make a website (talking buttons + vim macros?)
(6) ...("a junior dev? in this economy? bahahaha") but maybe "i can
deploy a website with my eyes closed" is worth something?
we will see what happens once i finish my portfolio and try to connect
with people at companies
(5) the progression from capable junior ("i can learn this") to capable generalist ("i've done this before, but i'm rusty") to expert ("i've done this a hundred times; i can do this with my eyes closed, and fast"). the first two do not sound like strong hires...
(4) (trigger warning: three nuggets about the job market, or lack thereof) i've been thinking about jobs and portfolios, about hiring signals and levels of proficiency:
(3) wish i had:
- a real, large blindfold, and not just a black necktie
- a footpedal to advance splits, and not a hard-to-reach keybind
- more nubs on my keyboard, given my poor touch typing (see #22, in which my eyes were open)
(2) the speedrun layout was merely a way to show checkpoints. i was pretty slow and messed up a lot, but i think that fits the theme of my post. the speedrun software is called livesplit. shoutouts to divvy for window sizing and obs for screen recording.
(1) new post on screen readers, publishing HTML, accessibility, and being good enough: blindfolded deployment. took me months to figure out whaand it t to say and how to say it. the punchline was just the beginning: screencast.mp4
some beautiful orchestral music i've been enjoying:
warsaw concerto, by richard addinsell
marion's theme, by john williams
thinking about #128 again after helping mom set up a new phone. we're nearing the age where "let me teach you how to accomplish this new task" becomes "let me handle this for you, because software is getting too complicated, and you're crying"
(2) if you still need to use
less
as a pager, at least it's configurable:
LESS=-RIj.5
colors, ignorecase, centering, and more. via
john
some helpful terminal configs:
(1)
MANPAGER='nvim +Man!'
for vim creature comforts, along with features like
K
to follow manpage links or
gO
for section navigation. via
josh
find indie-web residents in your area:
table
for nownownow.com
find HN folk:
meet.hn
find local meetups:
meetup.com
(2) it's great for journaling, or freewriting, or brainstorming random ideas. i have an alias to dump output to a daily text file, and another alias to read everything concatenated like one big plaintext diary.
(1) i've been enjoying salar's writenow for a few months now. it's like rafał's ensō (distraction-free, append-only), but for the terminal.
pleasantly surprised by whisper.cpp: easy for me to build, and good examples in the readme; transcribing words along with timestamps, and color-coded confidence levels; accurate, and not too slow on my machine. (screenshot.png)
some thoughts on note capture: minimal friction (decisions, actions, time); hardware triggers, voice input with whisper.cpp + llm cleanup, spark files, one big text file vs many text files, bebop app, picture in picture mode as a sticky note
some thoughts on exercise: weightlifting revealing neglected muscles, adapting to my body proportions and limitations, leverages, barbell workouts, struggle meals with protein, rossiter stretching, jogging as long as possible (zone 2)
some thoughts on poetry in motion: andy anderson skateboarding, expressive movement in melee, soccer finesse, world-class runners, napoleon dynamite dancing
(4) a representative test phone is a pixel 4a (i would still be using
mine today if google hadn't
order 66'ed all of them)
disclaimer, again: these are broad recommendations and estimates; just
a starting point.
(3) people in emerging markets often have hand-me-down android phones,
3-4 yrs old. also sometimes computers, 5-8 yrs old
a representative test computer is a used laptop with ~6G ram and ~4
cores
(2) "emerging markets" ~= poorer countries with growth
iphones comprise only ~6% of emerging markets
networks continue to get faster
(1) alex's
performance inequality gap
is the most comprehensive answer to
#94, i think.
even though statistics are complicated and telemetry is sparse, here
are some takeaways from his latest report:
"waves are toys from God"
—
clay marzo, surfer
another great idea from that design studio, on calm tech and boring phones: flip the phone case and access the screen thru a minimal interface. like turning a smartphone into a smartwatch. todo: make my own lil' companion app
on user-friendly design, effective documentation, and the pit of success: an interactive phone manual. it's the only tutorial i've seen where old people actually have a chance. probably my favorite tutorial ever.
(2) compare to hacking the game of go, where researchers had to prune a much larger tree of board states in realtime.
(1) found a great writeup about finding the best boggle board. not sure why i love boggle so much; something about finding hidden patterns. it's also a goldilocks playground for programming: easy UI, nontrivial algorithms, reasonable size.
just finished an hour-long jog, and i'm absolutely chuffed. running has never felt so smooth. shoutouts to naps, water, protein, carbs, and cool breezes.
TIL excalidraw can generate a simple bar chart / line chart if you paste simple csv data from the clipboard. see the blog post and the demo.webm
another type of fun software i want to try, but never had the creative drive: generative art. maybe these exercises could get me going?
some hypercard art bits:
mari's collection.
i want to like hypercard, but every time i pull up
decker, i feel
lost and uninspired. html/js/css is still my preferred medium for art
and code.
(5/5) - made an enclosure.jpg for my mini-pc under my desk. my wall-mounted folding desk-setup.jpg is coming together. the goal: hide everything and save space by folding flat (within 6" of the wall). todo: monitor arm, cable management, and much more
(4/5) - nearly finished with
programmers at work. every interview is fascinating, and
computing history (#30) is useful
- other interviews on my mind: the documentary
vernon, fl. just letting
old florida guys ramble. absurd and also fascinating
(3/5) - spent a weekend debugging my broken
arch system. i touched
grub.cfg
and
fstab
and the physical SSD. i learned how to repartition. lots of chrooting
and mounting. i rate the experience 4/10. not fun but learned a lot
(2/5) - florida getting hotter and wetter (finally?)
- feeling bleh in general
- made kale and kielbasa soup twice in one week
- on repeat: mort garson's lilting
this is my beloved. it
totally transports me every time
(1/5) a smattering of recent happenings:
- i've had a (good?) post sitting in my drafts for two months. gotta
buckle up and finish it
- also itching to work on
vic. just need a few
more ounces of creative juice and energy. or discipline
"and for my next trick,
i will eat another crunchwrap supreme."
—
mike
(2/2) more rust -> wasm/js notes:
-
put
#[wasm-bindgen]on a function to export it - use primitive, flat parameters
-
u32,f64, etc ->number -
&strorString->string -
&[u8]orVec<u8>->Uint8Array
(1/2) notes on rust -> wasm/js:
- quickstart
cargo install wasm-pack-
wasm-packmakes wasm and javascript, butcargo buildonly makes wasm -
import stuff from 'boilerplate'andawait my_rust_fn()
(3/3) beyond merch, neovim actually has
a sustainable funding model
tons of donations. the ledger is at
open collective. i
like seeing open-source maintainers taking full-time compensation
instead of being broke or
working at wendy's.
(2/2) some_runners.jpg. i'm the guy in the neovim t-shirt, of which i have a one-year review:
- comfy, except
- white is thin and see-thru (wish i got the black variant)
- unisex shoulders are a tad narrow on me (wish i sized up)
(1/1) i ran a 5k (barefoot, ofc)
- 5% faster than last time
- but not sub-30
- and not as impressive as the ultra runners i've been binging
next year, i'll get sub-30, and maybe try a marathon too
walked by a gator.jpg last week
when i say i like sports, this basketball analysis is a great example of what i mean. strategy, mind games, outsmarting the opponent. not just running around with balls, but winning the mental puzzle. same thing with esports like melee. mind games.
(2) (because personal website havers are honest, thoughtful
oversharers, which are
exactly
the kind of reviewers you want). the implementation could include a
browser extension to check if
$curr_url
has been reviewed; also, domain verification.
you know how you can't trust online reviews because the store can manipulate/bribe/generate them? what if there was POSSE for ecommerce reviews? write a review on your personal website (#14), then syndicate to a collection of trustable reviews.
i think the original is more digestable though, and anything else should be tested yourself. for example, compression ratios vary a lot (1-20x?) depending on the data and algorithm, and cloud costs vary a lot (1-100x?) between pricing plans.
props to simon & jonathan for updating the "numbers every programmer should know". reads & writes, network latencies, cloud costs, compression ratios, all tested. also a nod to UX folk: the duration of an attention span and a blink.
other things i love from _why:
- an alt/indie/rock song (yt)
- a programming song (mp3)
- a talk about learning to code, and creative software (yt)
- his burnout manifesto, esp the programmer pain chart (PDF, 56 MB)
on creating more and consuming less: "when you don't create things,
you become defined by your tastes rather than your ability. your
tastes only narrow & exclude people. so create."
_why the lucky stiff
haiku by a robot
710
711
712
—
nathan
another personal webpage with decades of history that i deeply enjoy:
simon's
life timeline.
other blog organization strategies: tim's
calendar
and chris' alphabetical
index.
i like the table of contents to paul's website. he organized his posts hierarchically, not simply chronologically or tagged like most blogs. his pages have a rich history. i just wish it was collapsible like riki's treehouse.
some tender folky songs on my mind lately:
- this love of mine, alex amen (yt)
- daisy lady, tír na nóg (yt)
- sea of love, cat power (yt)
- pink moon, nick drake (yt)
(5/5) and something wholesome:
"we can see a lot of things on a smartphone. you can learn more about
life."
— woman, 40, tunisia
(4/5) a sobering reminder from that report:
"[owning a smartphone] is not my priority. my priority is basic
needs."
— woman, 37, philippines
(3/5) there's data like global internet speeds, but that's a limited picture. more compelling is this pew report. forget page speed for a moment; can these people afford a phone, or charge it, or learn how to use it, or prevent it from being stolen?
(2/5) i'm not sure where to find this information, though. i wanna book a plane ticket and get to know the people and their tech usage, performing an informal survey of my own.
(1/5) i've had a long-running fascination with internet usage in poorer areas like india. what kinds of phones do they have, what browser version, how much data, how fast. i'm trying to think outside my little american bubble and develop websites with empathy.
if you need to answer HTML spec questions like "what is allowed inside
an
<a>
tag" or "can a
<p>
have a
<div>", then here's a list of
content rules
for HTML elements. it's the same info from the
MDN
reference, just in all in one page.
(2/2) then i plastered the stickers all over my friend's house. i also left him a secret_note.png, ciphered with those same emoji images.
my favorite sticker was probably the
melon-dog
(1/2) a lil' old project of mine: i turned emoji mashups from emojikitchen.dev into stickers. i scraped the best images from the site and positioned them in printify's ordering widget (example_sheet.jpg). i paid ~$30 USD for 3 sticker sheets iirc.
i'm still thinking about browsing large git repos, like in #84-85. i wish there was a TUI where drilling down into blames/histories and comparing diffs/branches are visual, first-class actions. like a crossover between the 5d chess game and debase
if you like manu's people & blogs series, then you'll probably like elliott's handmade web interviews too. more photos, more intimate, less bloggy, more websitey.
some admirable light/dark modes:
- in videos (source), inverting the screencast layer with a 180° hue shift
-
in screenshots (source), using
<picture><source srcset="dark.png" media="(prefers-color-scheme: dark)"><img src="light.png"></picture>
TIL people made verbal representations for hexadecimal.
1F
is frosteen, fimteek, or fleventeen.
A0
is annty, tentek, or atta.
100
is a hundrek or one bitey, and
100000000
is one billby. more at
wikipedia
new post:
pronunciations.
i also stumbled upon these gloriously nerdy
song parodies
while searching for the official pronunciation of "suse linux". i love
them just as much as
krazam's videos.
git fetch && tig <remotename>
lazygit branch, then "u" then "enter" then "+"
git fetch && git diff --stat main
<remotename>/main
trying to improve my git workflows, starting with "show me what's changed upstream before i merge", aka incoming commits. here's a screenshot.png of useful commands i've found so far.
i'm considering another round of gsoc this year. it's always fun to see the features that organizations have roadmapped. for example, the internet archive wants to make a book lending system for libraries around the world.
(9/9) extra housesitting things:
- sleeping on the floor
- restocking their snacks
- leaving apples & bananas on their day of arrival, because it's nice to come home to fresh produce
- leaving a hello/goodbye note
(8/9) i triple check that the water and lights are off, that the doors are locked. so much could go wrong. i wonder if i'm too anxious for housesitting. i'm realizing that i crave a predictable, personalized, easy home. maybe i'm getting old.
(7/9) i've rehearsed the beginning of my condolences: "hey $friend, hope your trip is going well..."
one time, a pet dog accidentally became unleashed and killed a chicken
on the farm. not a happy cleanup.
(6/9) petsitting: usually i'm there to watch a dog or cat. that means food, water, poop and pee; allergy meds for me, and often meds for the pet too. i always worry "what if the pet becomes terminally ill while the owners are on the other side of the world?"
(5/9) hygiene: my minimum viable setup includes a travel-sized toothbrush + toothpaste, razor, deodorant, hair product, body soap, and lotion. a towel, too, if they're low on linens. i'll visit my home at one point to do laundry and grab anything i forgot.
(4/9) food: most tell me "eat what you want", but i'd rather not cook in someone else's kitchen. i usually order takeout and have leftovers. maybe i'll boil eggs, or maybe use the air fryer if they have one. maybe i'll borrow a snack.
(3/9) i get to experience how other people start their day. is there a screened-in porch? a nice view of the sunrise? a lounger chair? a shady tree? any running water nearby? what birds are chirping? is there a kettle for tea?
(2/9) i enjoy treating the stay as an offline retreat and not asking for wifi. i'll typically bring my notebook, a novel, and maybe my laptop for offline coding. no youtube binging. although i like watching movies on their streaming services.
(1/9) some thoughts after doing lots of housesitting, aka, "of all the
houses i've sat before":
housesitting is like a paid vacation for a floater/bachelor-type of
person.
celebration music, both for the aforementioned milestone and also for
a working feed (#53-54):
incredible
(my most replayed song last year, a total banger. i can't stop
bouncing)
(2/2) here's to many more screenfuls!
for future milestones, i'm considering: a random nugget button, or a
pile-of-notecards skeuomorphic view; and perhaps semantic search or
filtering.
(1/2) meta: i now have a whole 4k_screenful.jpg of nuggets. the widescreen layout is a months-long brainsplat, all in one page. no pagination, minimal scrolling. sorta like a newspaper spread or like magic ink (more looking, less interaction)
this nugget intentionally left blank.
(5/5) when she doesn’t respond, i know she’s used up all her words, so
i slowly whisper i love you thirty-two and a third times. after that,
we just sit on the line and listen to each other breathe.”
— j.m.
(4/5) late at night, i call my long distance lover, proudly say i only used fifty-nine today. i saved the rest for you.
(3/5) when the phone rings, i put it to my ear without saying hello. in the restaurant i point at chicken noodle soup. i am adjusting well to the new way.
(2/5) “in an effort to get people to look into each other’s eyes more, and also to appease the mutes, the government has decided to allot each person exactly one hundred and sixty-seven words, per day.
(1/5) the quiet world is my favorite poem — my favorite piece of writing, actually. you can read it in its original formatting, but i'm also copying it here because i'm a digital magpie and this is my place for beautiful things:
"go away or i will replace you with a very small shell script"
— a cheeky t-shirt worn by a cheeky
david korn, author of ksh.
(bonus: TIL david korn met the band korn.
pictures)
beware, stationery nerds: the first link in #62 is a trap. everything on that site is so tempting and clever. stub recycler, calendar stamp, pencil extender, pencil chocolate??
"needs, not greeds. needs, not greeds.."
little inventions i enjoy:
-
this pencil sharpener from
p&c. good handfeel, and simple.
- a cupholder from ikea. attaches anywhere! genius. no more spills near the computer.
TIL the classic cli tool wttr.in has a v2.wttr.in, which has some cute graphs.
also the same dev created
cht.sh, which TIL has learning guides
like
cht.sh/perl/:learn
and
cht.sh/latency
stayed up way too late for this: fetch-dysentery. fun little oregon trail + neofetch crossover. the pixel art could use some love, but overall im pleased :)
in the works:
- speedrun.jpg, a joking-but-serious project for lmt2. should be finished in a month
- a homepage redesign. outgrowing the single column layout
(2/2) "i write maybe three and a half thousand sentences a year. is
this too many, or not enough, or about right? i have no idea. i write
one sentence, then another, and repeat until done."
yes, just sentences, just working toward my quota
(1/2) "think of it like this, as just cranking out a daily quota of
sentences, instead of being a
writer, which feels like a claim that will need to be stamped
and approved."
— joe moran, "first you write a sentence"
thinking about the url for my portfolio:
/serious-business/employable/portfolio/hire-
/works(#on-x,#on-y,#on-z) justin.wong.in-one.page
"people love to romanticize being a writer when really it's just clacky-clacky backspace snacky"
- nicole
oh crumbs, the feed is broken... here's some waiting music in the meantime until i can get home and fix it. (flamingosis has some groovy mixes)
i just made an rss/atom feed for this page. thanks for the suggestion, dima and radek. beware: it's a bit of a firehose. it's also generated by an amateur perl script. let me know if something breaks.
a neat one-liner to browse arch packages, using
fzf
and
yay
(two palindromes):
yay -Slq | fzf --preview 'yay -Si {}' --height=97% --layout=reverse
--bind 'enter:execute(yay -Si {} | less)'
enough rambling. have you seen the astronomy picture of the day?
(7/7) one more benefit: this page is an idea incubator. some of these nuggets will hatch into full posts. and sometimes i find myself writing several nuggets in a row, only to i realize i had enough juice to write a full post after all, if it weren't for #47...
(6/7) an interesting phenomenon, as julia noticed: this page is like bookmarks but better. before, if i found something cool, i'd bookmark the link and forget about it. now, if i find something cool, i'll write a blurb and share it here, and i'll remember it.
(5/7) casual nuggets relieve the tension. sometimes i want to say something useful or interesting, but it's too short or tangential. sometimes i want to share something non-tech. where does it all go? before, nowhere. now, here!
(4/7) i put too much pressure on my main blog: overediting, triple checking, filtering out ideas. i only write in the format "i made a thing with code, look, i'm proud of it, and here's how it works". it's quite limiting. and slow.
(3/7) microblogs are not just for devs and techies, though. many twitter expats use micro.blog or thoughts.page to fill the void of social media.
(2/7) microblogs are the new hotness. see #1. see also zak's shell script and screencast that looks very similar to my workflow. not to mention the cool cousin of microblogs: weeknotes. like alice's or dima's.
(1/7) new post: an ugly alias. it represents most of my computering — shortcuts, vim, scripting, deep diving into technical niches, and writing html. i'm fond of the screencast.mp4. i ended the post early, though. here are some nuggets that didn't make the cut:
TIL: if you test a new domain at home, then test it the next day at work and see an https error, it's probably not your fault! your workplace network may have a "newly seen domain" blocking policy. the solution, as usual: wait 24 hrs.
deployed
smoothly!
- $10 domain on porkbun, not bad
- github free builds + hosting + custom domain, hard to beat
- new record: only one commit needed for the github action. astro is truly no-fuss
snagged a domain: in-one.page. i think i'll redesign multiple documentation sites, starting with ghostty.in-one.page. i wish more documentation would let me ctrl+f everything on a single page. pagefind is good too.
also on car modifications: i want ventilated/cooled seats in my car. (driving in florida heat gives me swamp butt) i thought cooled seats were only in fancy cars but TIL there's aftermarket installation options.
randomly thinking about car window speeds: who decided how fast is too
fast? how slow is too slow?
fwiw, my window moves 16in (40cm) in 3.5 seconds. should it be faster?
can i make it a lot slower for comedic effect?
working on a documentation page:
/ghostty-reference. happy to
make something that looks professional. (thanks,
starlight) happy with the
UX too:
shows-not-tells, fits on one page, platform filters, less wasted
space.
til: astro has a dev toolbar, hidden at the bottom of the screen. you can mouseover or press tab. it has buttons to report an astro bug, copy debug info, inspect interactive islands, audit accessibility features. pretty nifty.
some random niche songs i love:
1 is punky, 2 is catchy, 3 is smooth
(3/3) i think donny's guide is the prequisite for matthew's typography book, which is more comprehensive, more opinionated, more elegant, yet less practical, despite the title.
(2/3) in summary, look for: a generous x-height, open apertures, even letter-spacing, clear terminals, distinguishable ascenders and descenders, and enough contrast in stroke thickness. aka: give eyeballs what they want.
(1/3) this is the most practical guide i've found for looking at fonts. it's not just about vibes. donny points out exactly what makes a typeface legible. he also shares basic guidelines and css snippets for web typography in general.
til: bash and readline are both maintained by one fellow!
- he still updates both projects
- he made an old text editor (ce) which is like a tiny emacs
- he loves basketball and other sports (proof)
(2/2) the chronicles show the progression of culture along with tech. like, what was life like pre-internet? how did employment change with the introduction of computers? how did the first unix terminals work? what was the first software? who were the early adopters?
(1/2) the best history of computing imo, from 1984 to 2002:
the computer chronicles. you see the world gradually discover
computers. great hosts, neat demonstrations, good interviews.
perhaps start with S11E7, the internet.
if bored: check the 404 pages of your favorite small-web sites. for
example, see
tom
and
jack
and
sandy
and
manuel
and many others that i'm forgetting.
bonus:
http.cat
some instrumental songs that make me feel warm and fuzzy inside:
- looking up, michel petrucciani (yt)
- everyone's a vip to someone, the go! team (yt)
- entr'acte, the sound of music (yt)
i got a jaw harp. it makes the boing boing sound in spud infinity and fantastic mr fox. i thought it would be an easy instrument, but no! i struggle to coordinate my face, fingers, and breathing.
(3/3) on the third hand, where else could i write about huffing my own
farts? maybe that's what traditional social media is for. or diaries.
or regular blogs.
(ever uncomfortable, the author continues sharing random links)
(2/3) on the other hand, i imagine readers sifting through the page and finding useful nuggets. that keeps me going. i also imagine they enjoy indie-web-voyeurism just as i do: curious to get inside people's heads and see something personal.
(1/3) i'm realizing a few weeks in: microblogging feels incredibly vain. both kinds of vain: vain as in huffing my own farts, and vain as in useless. on one hand, i imagine this page gives the same vibes as a loner tweeting unfunny jokes.
just came across keybr, which is spaced repetition for typing practice. it gradually introduces new keys. it analyzes results, too: see my heatmap.jpg of hits and misses (i often flub c, i, t, and p)
i loved dave's
reflection
on his experience with p5js. he has a lot of passion, creativity,
smarts, and good vibes. happy to see him grow with the project.
p5 2.0 seems promising! bonus: the interactive
welcome demo
before llm agents, there was jessica's atomist, a "robot pair" for elm codegen. i think about it every year. 1) elm's strong type system and compiler made it possible 2) today, we can almost generate refactors for any language 3) still need better ux
favorite tiny desk concerts:
- alicia keys (link)
- c. tangana (link)
- weyes blood (link)
- tank and the bangas (link)
- los hacheros (link)
adding to
#1: my nuggets are also inspired by "linkblogs" like
tv.goodenough.us
or
jarrod's 7 things.
sometimes you just want to share a cool link ¯\_(ツ)_/¯
(we are all digital hoarders)
comments? questions? concerned? reach me at
justin@wonger.dev. i like
receiving emails from other internet wanderers.
have a swell day ◝(ᵔᵕᵔ)◜
kombucha tier list:
- brew dr, crisp apple
- health-ade, passion fruit + tangerine
- synergy, multi-green
- publix greenwise, honeycrisp apple
been wanting to write a post: "freetaxusa has great form design". just gotta do my taxes and take lots of screenshots.
one-month review of the xsto wallet:
- business cards slightly curved but not dirty
- wishing i got the 6-card variant instead of 4-card
- lightweight yet durable
- good customer service
reducing friction:
my alias
for
alias
itself. before: new aliases do not persist until you copy them to
~/.bash_aliases. after: just type
alias key='value'
as usual, and it automatically saves to file. small UX victories.
i've cooked up a fun alias for
sudo !!
(no shift required):
alias oops='$(fc -ln -2 -2 | sed '\''s/^/sudo /g'\'')'
it's basically "get last line of history and prepend
sudo".
(5/5) ultimately, i'm saying: try weightlifting. find a gym conveniently nearby, find a friend or personal trainer to mentor you for a couple months, find exercises you enjoy, find a time that works for you, find 30-whatever dollars a month.
(4/5) maybe it's cliche to be a gym evangelist. i share these gym nuggets only because it's drastically improved my life. it's much more valuable than a bookmarklet or song recommendation. and that's coming from a twice-a-week newbie!
(3/5) the gym is a refreshingly positive feedback loop: i lift weights, then i'm pumped with endorphins, then i eat & drink well afterwards, then i'm happy and productive for a bit, then i sleep well, then the next day is easier.
(2/5) i've grown used to negative feedback loops: feeling depressed, then not taking care of myself, then losing energy and motivation, then falling behind on todos, then feeling crappy all over again, but worser.
(1/5) just deadlifted my bodyweight for the first time! shoutouts to squat university for superb weightlifting tips. first gym goal: complete. gymgoing is now a lifestyle, not a phase. it's sorta saving my life.
another random music rec: a dream is all we know, by the lemon twigs (spotify). poppy 70s vibes, if that's your thing. their last two albums have been fantastic. i caught a few earworms.
(2/2) this means you can unbloat recipe websites in a few taps with this "foodmarklet":
javascript:void((()=>{let
js=document.createElement('script');js.src="//unpkg.com/foodmarklet";document.head.appendChild(js)})());
(source)
(1/2) did you know you can make bookmarklets (userscripts) on mobile? (full instructions)
- bookmark any page
- change the url to your code
-
give it a title like
!script -
to activate, tap the address bar and type
!script
one of my favorite songs this year: "sisters of a down". such an unlikely crossover, yet it works so well. i can't get enough. now i'm searching for more indian music and more metal.
before settling on
/nuggets, i considered:
/thoughts,
/tidbits,
/notelets,
/musings,
/shareables,
/lately,
and
/not-twitter. feel free to adopt one for your own site.
they deserve a home...
the indie web, particularly jarrod, inspired this page. see also: linus' stream, geoff's one-liners, and simon's TILs. the styling riffs off an earlier experiment of mine, /enjoyables.
greetings from my new microblog!
"nuggets: a taste of who i am and what i do."
sometimes tech, sometimes not. always casual.
sincerely,
wonger.dev.