October dispatch

This commit is contained in:
David Eisinger
2023-10-06 14:18:43 -04:00
parent b3e82b438a
commit dce7d4d478
6 changed files with 1388 additions and 0 deletions

View File

@@ -0,0 +1,162 @@
#[1]Steph Ango [2]Steph Ango
[3]Steph Ango / [4]Writing [5]About [6]Now
Style is consistent constraint
September 3, 2023 •2 minute read
Oscar Wilde once said:
“Consistency is the last refuge of the unimaginative.”
When it comes to ideas, I agree — allow your mind to be changed. When
it comes to process, I disagree. Style emerges from consistency, and
having a style opens your imagination. Your mind should be flexible,
but your process should be repeatable.
Style is a set of constraints that you stick to.
You can explore many types of constraints: colors, shapes, materials,
textures, fonts, language, clothing, decor, beliefs, flavors, sounds,
scents, rituals. Your style doesnt have to please anyone else. Play by
your own rules. Everything you do is open to stylistic interpretation.
A style can be a system, a pattern, a set of personal guidelines. Here
are a few of mine:
* I wear monochromatic clothing without logos
* I use YYYY-MM-DD dates everywhere
* I pluralize tag and folder names (e.g. #people not #person)
* I use [7]plain text files for all my writing
* I ask myself [8]40 questions every year
* I meal prep lunches every week, shave my head twice a week
* I write [9]concise essays, less than 500 words
Collect constraints you enjoy. Unusual constraints make things more
fun. You can always change them later. This is your style, after all.
Its not a life commitment, its just the way you do things. For now.
Having a style collapses hundreds of future decisions into one, and
gives you focus. I always pluralize tags so I never have to wonder what
to name new tags.
Style gives you leverage. Every time you reuse your style you save
time. A durable style is a great investment.
Style helps you know when youre breaking your constraints. Sometimes
you have to. And if you want to edit your constraints, you can. It will
be easier to adopt the new constraints if you already had some clearly
defined.
You dont need a style for everything. Make a deliberate choice about
what needs consistency and what doesnt.
If you stick with your constraints long enough, your style becomes a
cohesive and recognizable [10]point of view.
__________________________________________________________________
Appendix
I am starting a collection of interesting personal style choices.
Please [11]send me examples and Ill add them to the list.
* [12]Scott Yu-Jan [13]paints all his tools white.
* [14]2ynthetic uses a [15]limited palette for outfits and [16]office
decor.
* [17]Johnny Decimal is a system to organize digital data.
* [18]Casey Neistat labels everything [19]in his studio with paint
markers.
* Ryan Hoover [20]never changes his profile picture.
* Wes Anderson uses [21]the typeface Futura in many of his films.
* [22]Steve Jobs wore the same Issey Miyake black turtleneck and New
Balance 991 shoes every day.
* George R.R. Martin writes his novels on the 40 year old DOS
operating system
* Beethoven always counted exactly 60 coffee beans to make coffee,
especially for visitors.
* Jesper Kouthoofd of [23]Teenage Engineering [24]only uses lowercase
because uppercase communicates too much authority
* Osvaldo Cavandoli created the cartoon [25]La Linea using an
animated white line, colored backgrounds, and unintelligible
vocalizations
Linked mentions
[26]Don't specialize, hybridize
Specialization is too heavily encouraged as a career path. Becoming a
generalist is one alternative, but there is...
[27]Buy wisely
Whenever I buy things I try to prioritize cost per use. Sometimes I
consider other priorities such as...
[28]Obsidian Vault Template
I use Obsidian to write and take notes. This is my bottom-up approach
to note-taking and organizing things...
[29]Flexoki
Flexoki is an inky color scheme for prose and code. Flexoki is designed
for reading and writing on...
You might also enjoy
* [30]Buy wisely
* [31]Concise explanations accelerate progress
* [32]Scars are beautiful
* [33]Don't delegate understanding
* [34]Nibble and your appetite will grow
* [35]How I do my to-dos
* [36]Calmness is a superpower
* [37]Design is compromise
* [38]A little bit every day
[39]Receive my updates
Follow me via email, [40]RSS, [41]Twitter and [42]other options
____________________ Sign up
[43]Mastodon
References
Visible links:
1. https://stephango.com/feed.xml
2. https://stephango.com/feed.json
3. file:///
4. file:///
5. file:///about
6. file:///now
7. file:///file-over-app
8. file:///40-questions
9. file:///concise
10. file:///in-good-hands
11. file:///about
12. https://www.youtube.com/@ScottYuJan
13. https://www.youtube.com/watch?v=3GBPYRG9jM0
14. https://www.youtube.com/@2ynthetic
15. https://www.youtube.com/watch?v=4xMo2PsLi3c
16. https://www.youtube.com/watch?v=1RqBrl0-qOA
17. https://johnnydecimal.com/
18. https://www.youtube.com/@casey
19. https://www.youtube.com/watch?v=vb60rrtTddQ
20. https://www.ryanhoover.me/post/why-i-never-change-my-profile-pic
21. https://www.marksimonson.com/notebook/view/RoyalTenenbaumsWorldofFutura
22. https://en.wikipedia.org/wiki/Steve_Jobs
23. https://teenage.engineering/
24. https://scandinavianmind.com/feature/human-touch-interview-jesper-kouthoofd-teenage-engineering
25. https://en.wikipedia.org/wiki/La_Linea_(TV_series)
26. file:///hybridize
27. file:///buy-wisely
28. file:///vault
29. file:///flexoki
30. file:///buy-wisely
31. file:///concise
32. file:///scars
33. file:///understand
34. file:///nibble
35. file:///todos
36. file:///calmness
37. file:///design-is-compromise
38. file:///a-little-bit-every-day
39. file:///subscribe
40. file:///feed.xml
41. https://twitter.com/kepano
42. file:///subscribe
43. https://mastodon.social/@kepano
Hidden links:
45. https://twitter.com/kepano

View File

@@ -0,0 +1,524 @@
#[1]alternate
IFRAME: [2]https://www.googletagmanager.com/ns.html?id=GTM-5HBJC2K
[3]Skip to main content
(BUTTON) Open Navigation Menu
To revist this article, visit My Profile, then [4]View saved stories.
(BUTTON) Close Alert
[5]WIRED
I Finally Reached Computing Nirvana. What Was It All For?
* [6]Backchannel
* [7]Business
* [8]Culture
* [9]Gear
* [10]Ideas
* [11]Science
* [12]Security
* [13]Merch
* [14]Prime Day
(BUTTON) More
To revist this article, visit My Profile, then [15]View saved stories.
(BUTTON) Close Alert
[16]Sign In
[17]Search
* [18]Backchannel
* [19]Business
* [20]Culture
* [21]Gear
* [22]Ideas
* [23]Science
* [24]Security
* [25]Merch
* [26]Prime Day
* [27]Podcasts
* [28]Video
* [29]Artificial Intelligence
* [30]Climate
* [31]Games
* [32]Newsletters
* [33]Magazine
* [34]Events
* [35]Wired Insider
* [36]Jobs
* [37]Coupons
[38]Paul Ford
[39]Ideas
Apr 1, 2022 7:00 AM
I Finally Reached Computing Nirvana. What Was It All For?
Breakfast, it turns out. The answer is breakfast.
illustration concept of an optimal computer system
Illustration: Elena Lacey
(BUTTON) Save
(BUTTON) Save
Like many nerds before me, I spent a goodly portion of my life
searching for the perfect [40]computing system. I wanted a single tool
that would let me write prose or programs, that could search every
email, tweet, or document in a few keystrokes, and that would work
across all my devices. I yearned to summit the mythic Mt. Augment, to
achieve the enlightenment of a properly orchestrated personal computer.
Where the [41]software industry offered notifications, little clicks
and dings, messages jumping up and down on my screen like a dog begging
for a treat, I wanted calm textuality. Seeking it, I tweaked. I
configured.
The purpose of configuration is to make a thing work with some other
thing—to make the to-do list work with the email client, say, or the
calendar work with the other calendar. It's an interdisciplinary study.
Configuration can be as complex as programming or as simple as checking
a box. Everyone talks about it, but it's not taken that seriously,
because there's not much profit in it. And unfortunately, configuration
is indistinguishable from procrastination. A little is fine but too
much is embarrassing.
[42]The Best Way to Learn Online? Be a Lurker
Sneakbrowsing
The Best Way to Learn Online? Be a Lurker
Paul Ford
[43]Coders Primal Urge to Kill Inefficiency&-Everywhere
Coders
Coders Primal Urge to Kill Inefficiency—Everywhere
Clive Thompson
[44]Forget To-Do Lists. You Really Need a Got Done List
work smart
Forget To-Do Lists. You Really Need a Got Done List
Stacy S. Kim
I spent almost three decades configuring my text editor, amassing 20 or
so dotfiles that would make one acronym or nonsense word concordant
with another. (For me: i3wm + emacs + org-mode + notmuch + tmux, bound
together with ssh + git + Syncthing + Tailscale.) I'd start down a
path, but then there'd be some blocker—some bug I didn't understand,
some page of errors I didn't have time to deal with—and I'd give up.
A big problem I had was where to put my stuff. I tried different
databases, folder structures, private websites, cloud drives, and
desktop search tools. The key, finally, was to turn nearly everything
in my life into emails. All my calendar entries, essay drafts, tweets—I
wrote programs that turned them into gigs and gigs of emails. Emails
are horrible, messy, swollen, decrepit forms of data, but they are
understood by everything everywhere. You can lard them with
attachments. You can tag them. You can add any amount of metadata to
them and synchronize them with servers. They suck, but they work. No
higher praise.
It took years to get all these emails into place, tag them, filter them
just so. Little by little I could see more of the shape of my own data.
And as I did this, software got better and computers got faster. Not
only that, other people started sharing their config files on GitHub.
Then, one cold day—January 31, 2022—something bizarre happened. I was
at home, writing a little glue function to make my emails searchable
from anywhere inside my text editor. I evaluated that tiny program and
ran it. It worked. Somewhere in my brain, I felt a distinct click. I
was done. No longer configuring, but configured. The world had
conspired to give me what I wanted. I stood up from the computer,
suffused with a sort of European-classical-composer level of emotion,
and went for a walk. Was this happiness? Freedom? Or would I find
myself back tomorrow, with a whole new set of requirements?
Most Popular
* [45]New Yorks Airbnb Ban Is Descending Into Pure Chaos
Business
New Yorks Airbnb Ban Is Descending Into Pure Chaos
Amanda Hoover
* [46]The Israel-Hamas War Is Drowning X in Disinformation
Security
The Israel-Hamas War Is Drowning X in Disinformation
David Gilbert
* [47]Inside FTXs All-Night Race to Stop a $1 Billion Crypto Heist
Security
Inside FTXs All-Night Race to Stop a $1 Billion Crypto Heist
Andy Greenberg
* [48]23andMe User Data Stolen in Targeted Attack on Ashkenazi Jews
Security
23andMe User Data Stolen in Targeted Attack on Ashkenazi Jews
Lily Hay Newman
*
The more “professional” a piece of software is intended to be, the more
likely it is to be scriptable. CAD tools or 3D programs will provide
whole languages just for configuration. But the huge consumer products,
the operating systems themselves, are more and more locked down. The
reasons are multiple—money, security, simplicity. A lot of our
computing is done on someone else's terms. We describe it with carceral
words. To assert control over your device, you “jailbreak” out.
I wonder if this is one of the reasons people get into [49]crypto—they
dream of a new world that can be customized like software. Programmable
money, self-executing contracts, little scripts that rearrange reality.
In DAOs (decentralized autonomous organizations), people use code to
make social rules, then buy or do things with their consolidated
digital might.
A lot of my friends hate all this stuff (perhaps [50]NFTs more than
DAOs) with great passion; they see it as a closing off, a betrayal of
the open, trust-driven nature of the early web. Others love it, seeing
it as a continuation of the community-building, empowering nature of
the early web. What I see is a generation of configurers coming into
their own. Older web folks expected to create the new digital economy;
these younger ones are trying to create the new economy economy. Their
dream is a more perfect union where humans will, because of computers,
stop acting in the ways we've been acting since we came out of the
trees. Then again, $200 million in NFTs were stolen the day I drafted
this column.
When in history have we been able to schedule folly? Sometimes the only
way to end the vacation is to drive the RV off a cliff.
Perhaps by the time you read this the NFTs will have been returned.
That would be a good reconfiguration. But the likely outcome of the
boom is that some people will cash out at the right time and become
convinced that they hold the keys to the universe and will lecture us
for the rest of our lives, and most people (like those who had their
NFTs stolen) will be humbled, or at best break even. When in history
have we been able to schedule folly? Sometimes the only way to end the
vacation is to drive the RV off a cliff.
While the youth reconfigure society, I'm done configuring. A month has
gone by since the click, and the urge to tweak is gone. My system looks
like something from the '80s (a lot of it is from the '80s), but I
finally got my room just the way I like it.
Here's what I mean. Say I search for the word “database”; 7,222 emails
pop up. Most are from marketers and industry mailing lists proclaiming
some technological triumph, but nestled among them are messages from
me, or to me, about learning to use databases—XML databases, SQL
databases, and so forth. When I read these old messages, I am always
surprised at how little I've changed, how consistent my obsessions are.
There's something valuable to me in just seeing that, in seeing how the
world keeps trumpeting the new while the self stays the same. You'd
think there'd be at least five new me's by now, given how often I've
vowed to become better. But no. I've been writing about configuring my
text editor since 1996. I've been running my mouth about databases at
least that long. They say you can't dip your hand in the same river
twice, but they rarely mention that it's the same hand doing the
dipping.
Most Popular
* [51]New Yorks Airbnb Ban Is Descending Into Pure Chaos
Business
New Yorks Airbnb Ban Is Descending Into Pure Chaos
Amanda Hoover
* [52]The Israel-Hamas War Is Drowning X in Disinformation
Security
The Israel-Hamas War Is Drowning X in Disinformation
David Gilbert
* [53]Inside FTXs All-Night Race to Stop a $1 Billion Crypto Heist
Security
Inside FTXs All-Night Race to Stop a $1 Billion Crypto Heist
Andy Greenberg
* [54]23andMe User Data Stolen in Targeted Attack on Ashkenazi Jews
Security
23andMe User Data Stolen in Targeted Attack on Ashkenazi Jews
Lily Hay Newman
*
Since the emails are, well, just emails, sometimes I hit Reply (by
typing “r”). On a thread that went dormant a decade ago. I don't always
offer context. Sometimes I just write, “Curious … how did this turn
out?” I used to feel I was intruding, to just drop in like that. But
what the hell. It's been a long pandemic. No one has to write back.
Out go the emails. Most get no reply; some get a bounce-back. But often
enough, people respond at length. Some left the city and came back.
Some are up for coffee. A surprising number are now cyborgs
(pacemakers, hearing aids). Some are rich, some are broke, some are
divorced. One is considering being frozen after death, some are
considering getting into crypto, and one has moved to Miami. None of us
understand our children.
I'm thinking of starting a Sunday morning waffle breakfast for
[55]vaccinated people to come stare at each other. It's one thing to
email after 10 years, but everyone appreciates an invitation to
breakfast. Maybe I'll set up some sort of internet-connected LED
scrolly screen, like they put on food carts, so out-of-towners can
leave messages. I gotta have something to configure.
If you'd asked me, back when I was still configuring, not yet
configured, exactly why I was nurturing these dozens of dotfiles, I'd
have had a hard time telling you. I would have said: I want a pure and
sleek experience. I want the computer working for me, augmenting my
dumb brain with its immense arithmetical speed. I want access to my
whole digital self. So I am very surprised that the terminal result of
my efforts is not some sort of ecstatic communion with the internet, or
even with my own computer. The function of my whole big orchestrated,
tagged, integrated system was merely to rekindle old ties. What was all
that configuration for? It was, in all sincerity, for waffles.
__________________________________________________________________
This article appears in the April 2022 issue. [56]Subscribe now.
__________________________________________________________________
More Great WIRED Stories
* 📩 The latest on tech, science, and more: [57]Get our newsletters!
* [58]Jacques Vallée still doesnt know what UFOs are
* When should you [59]test yourself for Covid-19?
* [60]How to leave your photos to someone when you die
* TV struggles to put [61]Silicon Valley on the screen
* [62]YouTube's captions insert explicit language in kids' videos
* 👁️ Explore AI like never before with [63]our new database
* 🎧 Things not sounding right? Check out our favorite [64]wireless
headphones, [65]soundbars, and [66]Bluetooth speakers
[67]Paul Ford is a writer, programmer, and software entrepreneur. He
lives in Brooklyn.
Contributor
*
Topics[68]magazine-30.04[69]crypto[70]NFTs[71]software[72]Web3
More from WIRED
[73]
ChatGPT Isn't Coming for Your Coding Job
ChatGPT Isn't Coming for Your Coding Job
New technologies have long promised to make human software engineers
redundant. But developers have only gotten more important over time.
Zeb Larson
[74]AI-Powered Thought Decoders Wont Just Read Your Mind&-Theyll
Change It
AI-Powered Thought Decoders Wont Just Read Your Mind—Theyll Change
It
“Mind-reading” neural decoders could spell the end of privacy. But the
full ramifications of this technology are even more concerning.
Leo Kim
[75]Marie Kondo and the Manhattan Project
Marie Kondo and the Manhattan Project
What does the author and lifestyle guru have in common with the
mathematician Stan Ulam—and Benjamin Franklin?
Coco Krumme
[76]In the War Between Harassment and Censorship, No One Wins
In the War Between Harassment and Censorship, No One Wins
Abuses on Kiwi Farms have sparked debate about harassment, safety, and
free speech, with activists on both sides caught in an ethical
minefield.
Katherine Alejandra Cross
[77]Is the Physics of Time Actually Changing?
Is the Physics of Time Actually Changing?
Days seem to be rushing ahead in a disturbing blur, or else slowing
painfully down. Maybe its a tale as old as—well, you know.
KC Cole
[78]Immersive Tech Obscures Reality. AI Will Threaten It
Immersive Tech Obscures Reality. AI Will Threaten It
AI could supercharge augmented and virtual reality, making online
manipulation and disinformation campaigns much more personal—and
effective.
Jameson Spivack
[79]Welcome to Halal Hinge
Welcome to Halal Hinge
In my community, mums and aunties are joining WhatsApp matchmaking
groups to find spouses for their kids. Instead, theyre getting a crash
course in modern dating.
Faima Bakar
[80]Everyone Is a Girl Online
Everyone Is a Girl Online
NPC influencers, "girl dinner," angels, bimbos—the internet is a girl's
world now, whether you like it or not.
Alex Quicho
[81]WIRED
WIRED is where tomorrow is realized. It is the essential source of
information and ideas that make sense of a world in constant
transformation. The WIRED conversation illuminates how technology is
changing every aspect of our lives—from culture to business, science to
design. The breakthroughs and innovations that we uncover lead to new
ways of thinking, new connections, and new industries.
*
*
*
*
*
*
(BUTTON) More From WIRED
* [82]Subscribe
* [83]Newsletters
* [84]FAQ
* [85]Wired Staff
* [86]Press Center
* [87]Coupons
* [88]Editorial Standards
* [89]Archive
* [90]Prime Day
(BUTTON) Contact
* [91]Advertise
* [92]Contact Us
* [93]Customer Care
* [94]Jobs
* [95]RSS
* [96]Accessibility Help
* [97]Condé Nast Store
* (BUTTON) Do Not Sell My Personal Info
© 2023 Condé Nast. All rights reserved. Use of this site constitutes
acceptance of our [98]User Agreement and [99]Privacy Policy and Cookie
Statement and [100]Your California Privacy Rights. WIRED may earn a
portion of sales from products that are purchased through our site as
part of our Affiliate Partnerships with retailers. The material on this
site may not be reproduced, distributed, transmitted, cached or
otherwise used, except with the prior written permission of Condé Nast.
[101]Ad Choices
Select international site (BUTTON) United States
* [102]UK
* [103]Italia
* [104]Japón
References
Visible links:
1. https://www.wired.com/feed/rss
2. https://www.googletagmanager.com/ns.html?id=GTM-5HBJC2K
3. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L85849-8TMP.html#main-content
4. file:///account/saved
5. file:///
6. file:///category/backchannel/
7. file:///category/business/
8. file:///category/culture/
9. file:///category/gear/
10. file:///category/ideas/
11. file:///category/science/
12. file:///category/security/
13. https://shop.wired.com/
14. file:///story/best-october-prime-day-deals-2023-3/
15. file:///account/saved
16. file:///auth/initiate?redirectURL=/story/i-finally-reached-computing-nirvana-what-was-it-all-for/&source=VERSO_NAVIGATION
17. file:///search/
18. file:///category/backchannel/
19. file:///category/business/
20. file:///category/culture/
21. file:///category/gear/
22. file:///category/ideas/
23. file:///category/science/
24. file:///category/security/
25. https://shop.wired.com/
26. file:///story/best-october-prime-day-deals-2023-3/
27. file:///podcasts/
28. file:///video/
29. https://www.wired.com/category/artificial-intelligence/
30. https://www.wired.com/category/science/environment-climate-change/
31. https://www.wired.com/tag/video-games/
32. https://www.wired.com/newsletter
33. https://www.wired.com/magazine
34. https://events.wired.com/livewired
35. file:///category/wiredinsider/
36. https://jobs.wired.com/?source=navbar
37. https://www.wired.com/coupons
38. file:///author/paul-ford
39. file:///category/ideas
40. https://www.wired.com/tag/computers/
41. https://www.wired.com/tag/software/
42. file:///story/best-way-learn-online-be-lurker/
43. file:///story/coders-efficiency-is-beautiful/
44. file:///story/productivity-got-done-list/
45. https://www.wired.com/story/airbnb-ban-new-york-illegal-listings/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
46. https://www.wired.com/story/x-israel-hamas-war-disinformation/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
47. https://www.wired.com/story/ftx-1-billion-crypto-heist/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
48. https://www.wired.com/story/23andme-credential-stuffing-data-stolen/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
49. https://www.wired.com/tag/cryptocurrency/
50. https://www.wired.com/tag/nfts/
51. https://www.wired.com/story/airbnb-ban-new-york-illegal-listings/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
52. https://www.wired.com/story/x-israel-hamas-war-disinformation/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
53. https://www.wired.com/story/ftx-1-billion-crypto-heist/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
54. https://www.wired.com/story/23andme-credential-stuffing-data-stolen/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
55. https://www.wired.com/tag/vaccines/
56. https://subscribe.wired.com/subscribe/splits/wired/WIR_Edit_Hardcoded?source=ArticleEnd_CMlink
57. https://www.wired.com/newsletter?sourceCode=BottomStories
58. https://www.wired.com/story/jacques-vallee-still-doesnt-know-what-ufos-are/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc
59. https://www.wired.com/story/when-to-test-for-covid-vaccinated/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc
60. https://www.wired.com/story/how-to-leave-photos-behind-when-you-die/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc
61. https://www.wired.com/story/wecrashed-tv-silicon-valley/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc
62. https://www.wired.com/story/youtubes-captions-insert-explicit-language-kids-videos/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc
63. https://www.wired.com/category/artificial-intelligence/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc
64. https://www.wired.com/gallery/best-wireless-headphones/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc
65. https://www.wired.com/gallery/best-soundbars/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc
66. https://www.wired.com/gallery/best-bluetooth-speakers/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc
67. file:///author/paul-ford
68. file:///tag/magazine-3004/
69. file:///tag/crypto/
70. file:///tag/nfts/
71. file:///tag/software/
72. file:///tag/web3/
73. https://www.wired.com/story/chatgpt-coding-software-crisis/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
74. https://www.wired.com/story/ai-thought-decoder-mind-philosophy/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
75. https://www.wired.com/story/optimization-math-history-coco-krumme/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
76. https://www.wired.com/story/kiwifarms-tech-ethics-networked-harassment/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
77. https://www.wired.com/story/physics-of-time-actually-changing/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
78. https://www.wired.com/story/immersive-technology-artificial-intelligence-disinformation/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
79. https://www.wired.com/story/whatsapp-matchmaking-dating-ghosting/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
80. https://www.wired.com/story/girls-online-culture/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
81. file:///
82. https://www.wired.com/subscribe/
83. https://www.wired.com/newsletter?sourceCode=HeaderAndFooter
84. https://www.wired.com/about/faq/
85. https://www.wired.com/wired-staff/
86. https://www.wired.com/about/press/
87. https://www.wired.com/coupons
88. https://www.wired.com/about/wired-on-background-policy/
89. https://archive.wired.com/t/storefront/storefront
90. file:///story/best-october-prime-day-deals-2023-3/
91. https://www.condenast.com/brands/wired
92. https://www.wired.com/about/feedback/
93. https://subscriptions.wired.com/pubs/N3/WIR/Register.jsp?cds_page_id=175371&cds_mag_code=WIR&id=1423757547774&lsid=50431012277019467&vid=1
94. https://www.wired.com/about/wired-jobs/
95. file:///about/rss-feeds/
96. file:///about/accessibility-help/
97. https://www.condenaststore.com/
98. https://www.condenast.com/user-agreement/
99. http://www.condenast.com/privacy-policy#privacypolicy
100. http://www.condenast.com/privacy-policy#privacypolicy-california
101. http://www.condenast.com/privacy-policy#privacypolicy-optout
102. https://www.wired.co.uk/
103. https://www.wired.it/
104. https://wired.jp/
Hidden links:
106. file://localhost/story/best-way-learn-online-be-lurker/
107. file://localhost/story/coders-efficiency-is-beautiful/
108. file://localhost/story/productivity-got-done-list/
109. https://www.wired.com/story/airbnb-ban-new-york-illegal-listings/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
110. https://www.wired.com/story/x-israel-hamas-war-disinformation/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
111. https://www.wired.com/story/ftx-1-billion-crypto-heist/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
112. https://www.wired.com/story/23andme-credential-stuffing-data-stolen/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
113. https://www.wired.com/story/airbnb-ban-new-york-illegal-listings/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
114. https://www.wired.com/story/x-israel-hamas-war-disinformation/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
115. https://www.wired.com/story/ftx-1-billion-crypto-heist/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
116. https://www.wired.com/story/23andme-credential-stuffing-data-stolen/#intcid=_wired-right-rail_04b13a6e-88a3-40d4-830d-f3acae710540_popular4-1-reranked-by-vidi
117. https://www.twitter.com/https://twitter.com/ftrain
118. https://www.wired.com/story/chatgpt-coding-software-crisis/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
119. https://www.wired.com/story/ai-thought-decoder-mind-philosophy/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
120. https://www.wired.com/story/optimization-math-history-coco-krumme/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
121. https://www.wired.com/story/kiwifarms-tech-ethics-networked-harassment/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
122. https://www.wired.com/story/physics-of-time-actually-changing/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
123. https://www.wired.com/story/immersive-technology-artificial-intelligence-disinformation/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
124. https://www.wired.com/story/whatsapp-matchmaking-dating-ghosting/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
125. https://www.wired.com/story/girls-online-culture/#intcid=_wired-bottom-recirc-v2_1cf83657-8f1c-4af7-bf40-d8067c0a444b_cral2-2-reranked-by-vidi
126. https://www.facebook.com/wired/
127. https://twitter.com/wired/
128. https://pinterest.com/wired/
129. https://www.youtube.com/user/wired/
130. https://instagram.com/wired/
131. https://www.tiktok.com/@wired?lang=en

View File

@@ -0,0 +1,595 @@
#[1]alternate [2]alternate
[3]Xe
[4]Blog
[5]Contact
[6]Resume
[7]Talks
[8]VODs
[9]Signalboost
gokrazy is really cool
Published on 09/20/2023
An image of undefined I work for Tailscale at the time of writing this
article. I wrote this on my own time out of my own volition.
When you deal with Linux, you end up hearing about "distributions" as
different "flavors" of Linux combined with a bunch of other tools. This
is mostly true, but it's slightly missing the forest for the trees.
Consider this famous and often misunderstood quote by Richard Stallman:
I'd just like to interject for a moment. What you're referring to as
Linux is in fact, GNU/Linux, or as I've recently taken to calling
it, GNU plus Linux.Linux is not an operating system unto itself, but
rather another free component of a fully functioning GNU system made
useful by the GNU corelibs, shell utilities and vital system
components comprising a full OS as defined by POSIX.
Many pages of ink have been spilled over analyzing this quote, and a
lot of them fall short of really getting at the heart of the matter.
What this actually means is something like this:
By itself, Linux is useless. It does boot the system, it does interface
with hardware, but without a bunch of other tools, it's not very
useful. It's like a car without a steering wheel, or a boat without a
rudder. It does something, but it's not very useful. The real value of
things like the GNU project, systemd, openrc and other tools in that
vein is that they make Linux useful. They make it into a complete
system that you can use to do things. They are the proverbial steering
wheel and rudder in the metaphor.
Mara is hacker
<[10]Mara> Fun fact, if you try to boot a Linux kernel without an init
process, it'll just panic and crash!
Most Linux systems on the face of the planet are built with GNU tools
and utilities. In order to compile the Linux kernel, you need to use
[11]GCC. In order to run ls to list files in the current directory, you
need to use [12]GNU coreutils. Every dynamically linked program uses
[13]glibc for performing basic system interactions like writing to
files or opening network sockets. Everything is built on top of the GNU
toolset. This is why Stallman is so adamant about calling it GNU/Linux.
It's not that he's trying to take credit for Linux, it's that he's
trying to give credit to the GNU project for making Linux useful.
However, there's a lot of room for nuance here. For example, [14]Alpine
Linux is a Linux distribution that uses [15]musl libc instead of
[16]glibc and [17]busybox instead of GNU coreutils. It's still a Linux
distribution, but it doesn't use the GNU toolset. It's still a Linux
distribution, but it's not GNU/Linux.
Mara is hacker
<[18]Mara> Also, for the record you can build the Linux kernel with
clang, but that's a whole other can of worms. For one, GCC supports
many more targets than clang likely ever will, but in general there are
some compromises you need to make until clang implements some
GCC-specific compiler extensions a bit better. Google, Facebook, and a
few other companies do run LLVM compiled kernels in production though,
so it's probably closer to viable than you think. Especially if you use
ChromeOS or Android.
So, what is a Linux distribution? It's a collection of tools that make
Linux useful. It's a collection of tools that make Linux into a
complete system. It's not a "flavor" of Linux (though this conceptually
can exist with alternative kernels like the Zen kernel patchset), it's
a system that just so happens to make Linux useful.
As a counter-argument, consider the reason why Linux runs on more
devices worldwide than there are people: [19]Android. Android does use
the Linux kernel, but it doesn't use any GNU tools in the stack at all.
You can't take programs that are compiled against other Linux
distributions and run them on Android. You can't take programs that are
compiled against Android and run them on other Linux distributions.
Aoi is wut
<[20]Aoi> Wait, so does this mean Android's not a Linux distribution?
What is it then?
I'm going to argue that Android is not a Linux distribution unto
itself. Android is a Linux implementation. It uses the Linux kernel,
but that's where the similarities with the rest of the ecosystem end.
Android is its own little world where there's just enough system tools
to get the system running, but once you get into the UI, it's a
completely different world. It's a completely different ecosystem. It's
a completely different operating system.
Aoi is wut
<[21]Aoi> So what's the difference between a Linux distribution and a
Linux implementation?
Cadey is enby
<[22]Cadey> It's a bit of a fuzzy line, but I'd say that a Linux
distribution is a collection of discrete tools that make Linux useful,
and a Linux implementation is a cohesive collection of bespoke tools
that make Linux into a complete system. Really, you could argue that if
it has /bin/sh, it's a Linux distribution.
gokrazy
[23]gokrazy is a Linux implementation that I've used off and on for a
few years now. It's a very interesting project because everything on
the system is written in Go save the kernel. The init process is in Go
(and even listens over HTTP to handle updates!), every userland process
is written in Go, and even the core system services are written in Go.
Out of the box a gokrazy install comes with these basic tools:
* The init process that is mandated to be the parent of all userland
processes by the Linux kernel.
* A [24]DHCP client that automatically configures the network
interface.
* A [25]NTP client that automatically sets the system clock.
* A little tool to save randomness from the kernel to a file so that
it can be used to seed the random number generator on boot (because
the Raspberry Pi doesn't have a robust hardware random number
generator)
That's it. Everything else from the web UI to A/B update logic is
written in Go. It boots in literal seconds, uses an insanely small
amount of RAM out of the box, and runs with nearly zero overhead. When
you configure your gokrazy install to run additional software, you do
so by adding the Go command path to a configuration file and then
updating to trigger a reboot into the new version.
Here's an example of what my gokrazy virtual machine's file tree looks
like:
/ # tree etc gokrazy user
etc
âââ breakglass.authorized_keys
âââ gokr-pw.txt
âââ gokrazy
â âââ sbom.json
âââ hostname
âââ hosts
âââ http-port.txt
âââ https-port.txt
âââ localtime
âââ machine-id
âââ resolv.conf -> /tmp/resolv.conf
âââ ssl
âââ ca-bundle.pem
gokrazy
âââ dhcp
âââ heartbeat
âââ init
âââ ntp
âââ randomd
user
âââ breakglass
âââ fbstatus
âââ qemu-guest-kragent
âââ serial-busybox
âââ tailscale
âââ tailscaled
âââ waifud-gok-agent
That is the entire system. It's all stripped down to these few
programs, configuration files, and one symlink for DNS resolution. This
is a very minimal system, and it's all you need to run statically
linked Go programs. It's very easy to deploy your own services to it
too. It's probably the easiest platform I know of that lets you just
deploy a Go binary and have it run as a service, automatically
restarting when it crashes.
The tooling
When I used gokrazy back in the day, you had to use a command line
called gokr-packer that you passed a bunch of command line flags to
with information about all the Go programs you wanted to run on the
machine, configuration for those programs, and any other
meta-information like where the update tool should push the image to.
It was a bit of a pain to use, but it worked. Recently the [26]gok tool
was added to the project, and this has been revolutionary when it comes
to using and administrating gokrazy installs.
Essentially, gok is a wrapper around the existing gokr-packer logic
with a JSON file to store your configuration details. It's a lot easier
to use, understand, and automate. You don't have to remember command
line flags or maintain unwieldy scripts. You just edit a JSON file and
push updates with gok update. It's amazingly simple.
Setting up a gokrazy machine
As an example, I'm going to show you how to install a bunch of tailnet
addons to a gokrazy machine. I'm also going to assume that you don't
have a gokrazy install set up yet, so we'll need to install it. To do
this, we'll need to do a few simple things:
* Install the gok tool.
* Create your gok configuration.
* Install Tailscale on the machine.
* Create your "seed" image with gok overwrite.
* Boot it on your Raspberry Pi or VM.
* Push any updates to the image to the machine with gok update.
First, let's install the gok tool. In order to do this, you need to
have the [27]Go toolchain installed. Once you have that, you can run go
install to install the gok tool:
go install github.com/gokrazy/tools/cmd/gok@main
Mara is hacker
<[28]Mara> You may want to ensure that ~/go/bin is in your $PATH
variable so that you can run it by the name gok instead of
~/go/bin/gok.
Next, create a new gokrazy configuration with gok new:
gok new -i casa
This will create a configuration named casa (cf: Spanish for "house")
in ~/gokrazy/casa. This is where all of your configuration files will
live. You can edit the configuration file with gok edit:
gok edit -i casa
If you are making a virtual machine
If you are making a virtual machine, you will need to override the
kernel and firmware packages. You can do this by adding the following
to your configuration file:
{
// ...
"KernelPackage": "github.com/rtr7/kernel",
"FirmwarePackage": "github.com/rtr7/kernel",
// ...
}
You will need to prefix the gok overwrite and gok update commands with
GOARCH=amd64 to ensure that Go builds x86_64 binaries instead of ARM
binaries:
GOARCH=amd64 gok update -i casa
If you don't do this, you will get arm64 binaries being built. This may
require manual recovery of your virtual machine.
Let's make our lives easier by installing [29]Tailscale on the machine.
By default, gokrazy will announce its hostname over DHCP, which usually
makes most consumer routers pick it up and then lets you ping it by
name. When you have [30]MagicDNS enabled, Tailscale can take over this
logic and prevent you from accessing the machine by name.
However, Tailscale is written in Go and doesn't require any of the
services that most Linux distributions provide in order to function.
It's a perfect fit for gokrazy. You can install it with gok add:
gok add tailscale.com/cmd/tailscaled
gok add tailscale.com/cmd/tailscale
And be sure to add the mkfs service to create a persistent partition on
/perm:
gok add github.com/gokrazy/mkfs
Next, fetch an [31]auth key from [32]the admin console and make sure
you check that it's reusable. Then, add the following to your
configuration file under the PackageConfig block:
{
// ...
"PackageConfig": {
// ...
"tailscale.com/cmd/tailscale": {
"CommandLineFlags": [
"up",
// paste your key here!
"--authkey=tskey-auth-hunter2-hunter2hunter2hunter2"
]
},
// ...
}
// ...
}
Mara is hacker
<[33]Mara> You can pass any other [34]tailscale up flags you want here,
such as --advertise-exit-node if you want to use your gokrazy machine
as an [35]exit node.
This will make your machine automatically connect to Tailscale on boot.
Next, we need to create our "seed" image with gok overwrite. First,
figure out what the device node for your SD card is. On Linux, you can
do this with lsblk:
lsblk
And then look for the one that has the same size as your SD card. In my
case, it's /dev/sdd. Once you have that, you can run gok overwrite:
gok overwrite --full /dev/sdd
However if you want to write the image to a file (such as if you are
doing mass distribution or making a VM image), you need to use gok
overwrite with a file instead of a device node. This will create a 16
GB image:
gok overwrite -i casa --full gokrazy.img --target_storage_bytes 17179869184
Once you have your image, you can write it to your SD card with dd (or
[36]balenaEtcher) or import it into your virtual machine hypervisor of
choice.
Once you have your image written to your SD card, you can boot it on
your Raspberry Pi or VM.
Aoi is wut
<[37]Aoi> Wait, so how do I log in with a shell?
Cadey is enby
<[38]Cadey> You don't. gokrazy doesn't have a login prompt. It's a
single-user system. There is [39]breakglass as a tool of last resort to
modify things, but you only have a very minimal subset of busybox to
work with, so it should be avoided if at all possible.
Once you have your machine booted and it responds to pings over
Tailscale, you can open its HTTP interface in your browser. If you
called your machine casa, you can open it at [40]http://casa. It will
prompt you for a username and password. Your username is gokrazy, and
the password is near the top of your config.json file. When you log in,
you'll see a screen like this:
[41][gokrazy-ui.jpg]
This is the gokrazy web UI. It lets you see the status of your machine
and any logs that are being generated by your applications. You can
also start, stop, and restart any of your applications from here. It's
a very simple UI, but it's fantastic for debugging and monitoring.
Tailnet addons
Now that we have a Gokrazy system up and running, let's add some
programs to it! I'm going to list a couple tailnet addons that give
your tailnet superpowers. These are all written in Go, so they're a
perfect fit for gokrazy.
Today I'm going to show you how to install these tools into your
tailnet:
* [42]golink - a URL shortener at http://go
* [43]tmemes - an internal meme generator you can host at
http://memegen
* [44]tclip - a pastebin you can host at http://paste
These tools help you augment your tailnet by giving you tools that will
make you and your team's life a lot easier. A URL shortener helps you
link to complicated Google Docs URLs. A meme generator gives you a new
innovative way to let off steam. A pastebin lets you share text with
your team without having to worry about the service you're using going
offline due to no fault of your own.
golink
To install golink, we need to add the golink binary to the
configuration. You can do this with gok add:
gok add github.com/tailscale/golink/cmd/golink
Then configure it with gok edit:
{
// ...
"PackageConfig": {
// ...
"github.com/tailscale/golink/cmd/golink": {
"CommandLineFlags": [
"--sqlitedb=/perm/home/golink/data.db"
],
"Environment": [
// the same one from before
"TS_AUTHKEY=tskey-auth-hunter2-hunter2hunter2hunter2"
],
// don't start the service until NTP catches up
"WaitForClock": true
},
// ...
}
// ...
}
And finally push it with gok update:
gok update -i casa
It'll build the image, push it out over Tailscale, trigger a reboot,
and be back up in the span of a minute. Once it's back up, you can open
the web UI again and see the status of your golink instance at
[45]http://casa/status?path=%2fuser%2fgolink:
[46][golink.jpg]
And then you can start using short URLs at [47]http://go:
[48][golink-ui.jpg]
And that's it! You now have a super minimal VM running small programs
that let you do useful things to you. You can add more programs to your
configuration file and push them with gok update to add more
functionality to your machine. You can even add your own programs to
the configuration file and push them to your machine. It's a very
simple system, but it's very powerful.
tmemes
Google is infamous for having an internal service named [49]memegen.
This allows Googlers to make internal-facing memes about the slings and
arrows that impact them as highly paid programmers. This is an internal
service inside Google that has a lot of serious investment of time and
energy to make it the best possible experience it can be. It's to the
point that reportedly people can keep up with how an all-hands meeting
is going by the tone of the sarcastic memes that are being posted to
memegen.
The main reason this is run inside Google is to avoid information
leaking via memes. Yes, this is an actual threat model.
Thanks to the magic of Tailscale, you can make your own private memegen
using [50]tmemes. tmemes is a tailnet addon that lets you post image
macro templates and layer wisdom over it in the form of text.
Here's an example meme:
[51][society-if-gokrazy.jpg]
To add tmemes to your gokrazy machine, you can use gok add:
gok add github.com/tailscale/tmemes/tmemes
Then open your config with gok edit and add the following to your
PackageConfig block:
{
// ...
"PackageConfig": {
// ...
"github.com/tailscale/tmemes/tmemes": {
"Environment": [
"TS_AUTHKEY=tskey-auth-hunter2-hunter2hunter2hunter2"
],
"CommandLineFlags": [
// change this to your desired hostname
"--hostname=memegen",
// change this to your username on Tailscale
"--admin=Xe@github",
"--store=/perm/home/tmemes"
],
"WaitForClock": true
},
// ...
},
// ...
}
And then push it with gok update:
gok update -i casa
Then you can head to [52]http://memegen and upload a template to make
your own dank memes.
If you want to integrate your own tools with tmemes, you can check out
the [53]API documentation. This should help you do whatever it is you
want with a meme generator as a service.
tclip
Sometimes you just need a place to paste text and get a URL pointing to
it. [54]tclip is a tool that you can add to your tailnet and get
exactly that. It's a very simple tool, but it's very useful. It's also
written in Go, so it's a perfect fit for gokrazy. [55]Their recent
update to remove Cgo dependencies makes it possible to run your tclip
node on a gokrazy machine.
To add tclip to your gokrazy machine, you can use gok add:
gok add github.com/tailscale-dev/tclip/cmd/tclipd
Then open your config with gok edit and add the following to your
PackageConfig block:
{
// ...
"PackageConfig": {
// ...
"github.com/tailscale-dev/tclip/cmd/tclipd": {
"CommandLineFlags": [
"--data-location=/perm/home/tclip/"
],
"WaitForClock": true,
"Environment": [
"TS_AUTHKEY=tskey-auth-hunter2-hunter2hunter2hunter2",
"USE_FUNNEL=true" // Remove this if you don't want to use Funnel
]
},
// ...
}
}
And then push it with gok update:
gok update -i casa
And then you can start using it by heading to [56]http://paste. Install
the command-line tool on your development workstation with go install:
go install github.com/tailscale-dev/tclip/cmd/tclip@latest
Here's an example tclip link if you want to see what it looks like in
practice: [57]interjection.c. It's a very simple tool, but it's very
useful.
Conclusion
gokrazy is insanely cool. It's the easiest way to deploy Go services to
your homelab. It integrates seamlessly with Tailscale, and is something
that I'm very excited to see grow and mature. I'm very excited to see
what the future holds for gokrazy, and I'm very excited to see what
people do with it.
I've seen signs that they're going to be adding an automatic update
process, and that has me very excited. I'm also excited to see what
other services people add to the gokrazy ecosystem. I'm hoping to add a
few of my own in the future, and I'm hoping to see what other people do
with it.
Mara is hacker
<[58]Mara> Spoiler alert: [59]waifud support is coming soon to a
homelab near you.
(BUTTON) Share
Facts and circumstances may have changed since publication. Please
contact me before jumping to conclusions if something seems wrong or
unclear.
Tags: go, gokrazy, linux
Copyright 2012-2023 Xe Iaso (Christine Dodrill). Any and all opinions
listed here are my own and not representative of any of my employers,
past, future, and/or present.
Like what you see? Donate on [60]Patreon like [61]these awesome people!
Served by xesite v4
(/nix/store/5k4azk5h5ymf5r6siw9jv7d3k58qrwx7-xesite_v4-20231009/bin/xes
ite), source code available [62]here.
References
1. https://xeiaso.net/blog.rss
2. https://xeiaso.net/blog.json
3. file:///
4. file:///blog
5. file:///contact
6. file:///resume
7. file:///talks
8. file:///vods
9. file:///signalboost
10. file:///characters#mara
11. https://gcc.gnu.org/
12. https://www.gnu.org/software/coreutils/coreutils.html
13. https://www.gnu.org/software/libc/
14. https://alpinelinux.org/
15. https://musl.libc.org/
16. https://www.gnu.org/software/libc/
17. https://en.wikipedia.org/wiki/BusyBox
18. file:///characters#mara
19. https://en.wikipedia.org/wiki/Android_(operating_system)
20. file:///characters#aoi
21. file:///characters#aoi
22. file:///characters#cadey
23. https://gokrazy.org/
24. https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
25. https://en.wikipedia.org/wiki/Network_Time_Protocol
26. https://gokrazy.org/quickstart/
27. https://golang.org/doc/install
28. file:///characters#mara
29. https://tailscale.com/
30. https://tailscale.com/kb/1081/magicdns/
31. https://tailscale.com/kb/1085/auth-keys/
32. https://login.tailscale.com/admin/settings/keys
33. file:///characters#mara
34. https://tailscale.com/kb/1080/cli/#up
35. https://tailscale.com/kb/1103/exit-nodes/?q=exit node
36. https://etcher.balena.io/
37. file:///characters#aoi
38. file:///characters#cadey
39. https://github.com/gokrazy/breakglass
40. http://casa/
41. https://cdn.xeiaso.net/file/christine-static/blog/2023/gokrazy/gokrazy-ui.jpg
42. https://github.com/tailscale/golink
43. https://github.com/tailscale/tmemes
44. https://github.com/tailscale-dev/tclip
45. http://casa/status?path=/user/golink
46. https://cdn.xeiaso.net/file/christine-static/blog/2023/gokrazy/golink.jpg
47. http://go/
48. https://cdn.xeiaso.net/file/christine-static/blog/2023/gokrazy/golink-ui.jpg
49. https://www.buzzfeednews.com/article/reyhan/inside-googles-internal-meme-generator
50. https://github.com/tailscale/tmemes
51. https://cdn.xeiaso.net/file/christine-static/blog/2023/gokrazy/society-if-gokrazy.jpg
52. http://memegen/
53. https://github.com/tailscale/tmemes/blob/main/docs/api.md
54. https://tailscale.dev/blog/tclip
55. https://tailscale.dev/blog/tclip-updates-092023
56. http://paste/
57. https://paste.shark-harmonic.ts.net/paste/696b9b02-90ac-4adc-a33d-d749bb6f460f
58. file:///characters#mara
59. https://github.com/Xe/waifud-gok-agent
60. https://patreon.com/cadey
61. file:///patrons
62. https://github.com/Xe/site