October dispatch
This commit is contained in:
BIN
content/journal/dispatch-8-october-2023/demo1.mp3
Normal file
BIN
content/journal/dispatch-8-october-2023/demo1.mp3
Normal file
Binary file not shown.
BIN
content/journal/dispatch-8-october-2023/demo2.mp3
Normal file
BIN
content/journal/dispatch-8-october-2023/demo2.mp3
Normal file
Binary file not shown.
107
content/journal/dispatch-8-october-2023/index.md
Normal file
107
content/journal/dispatch-8-october-2023/index.md
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
title: "Dispatch #8 (October 2023)"
|
||||
date: 2023-10-06T14:08:30-04:00
|
||||
draft: false
|
||||
tags:
|
||||
- dispatch
|
||||
references:
|
||||
- title: "gokrazy is really cool - Xe Iaso"
|
||||
url: https://xeiaso.net/blog/gokrazy/
|
||||
date: 2023-10-10T02:50:31Z
|
||||
file: xeiaso-net-ygnwtd.txt
|
||||
- title: "I Finally Reached Computing Nirvana. What Was It All For? | WIRED"
|
||||
url: https://www.wired.com/story/i-finally-reached-computing-nirvana-what-was-it-all-for/
|
||||
date: 2023-10-10T02:50:32Z
|
||||
file: www-wired-com-ybjipw.txt
|
||||
- title: "Style is consistent constraint — Steph Ango"
|
||||
url: https://stephango.com/style
|
||||
date: 2023-10-10T02:50:32Z
|
||||
file: stephango-com-tiumoc.txt
|
||||
---
|
||||
|
||||
Italy was grand, what an adventure. We spent a little over a week in Tuscany, mostly on Elba Island, with quick visits to Siena and Florence on our way out. [Our accomodations on Elba][1] were awesome, and other highlights included [Spiaggia di Sansone][2], [Cavo][3], and revisiting a few favorite spots in Siena and Florence (the pizza at [Il Pomodorino][4] was as good as we remembered).
|
||||
|
||||
It wasn't all perfectly smooth -- Nev had a tough time with jet lag, and driving through Italy was stressful, but a week later, that stuff's all faded away and what remains are the great memories.
|
||||
|
||||
[1]: https://www.rosselbalepalme.it/en/glamping-lodge.php
|
||||
[2]: https://www.infoelba.com/island-of-elba/beaches/sansone-beach/
|
||||
[3]: https://www.infoelba.com/discovering-elba/communes-towns/rio-marina/cavo/
|
||||
[4]: https://ilpomodorino.it/
|
||||
|
||||
<!--more-->
|
||||
|
||||
<div class="image-set">
|
||||
{{<thumbnail IMG_4710.jpeg "267x" />}}
|
||||
{{<thumbnail IMG_4771.jpeg "267x" />}}
|
||||
{{<thumbnail IMG_4781.jpeg "267x" />}}
|
||||
</div>
|
||||
|
||||
<div class="image-set">
|
||||
{{<thumbnail IMG_4809.jpeg "267x" />}}
|
||||
{{<thumbnail IMG_4842.jpeg "267x" />}}
|
||||
{{<thumbnail IMG_4886.jpeg "267x" />}}
|
||||
</div>
|
||||
|
||||
I downloaded the [Airalo][5] app before I left, which offers cheap international data plans using e-SIM cards. The app works great, no complaints there, but mixed feelings about having a working phone while on vacation -- it was cool to be able to send photos + make video calls, but my company's going through some tough times and I couldn't pull myself away from Slack and email.
|
||||
|
||||
[5]: https://www.airalo.com/
|
||||
|
||||
I had a birthday right before we left, and I decided to gift myself a [Novation Circuit Tracks][6], a portable synthesizer and drum machine. This thing is neat! Four drum tracks, two synths, and the ability to control other gear with MIDI. I've only had it about a week and I'm already feeling relatively proficient. Here are a couple demos:
|
||||
|
||||
[6]: https://us.novationmusic.com/products/circuit-tracks?setCurrencyId=2
|
||||
|
||||
<audio controls src="demo1.mp3"></audio>
|
||||
<audio controls src="demo2.mp3"></audio>
|
||||
|
||||
On that second one, the Circuit is using MIDI signals to play my [digital piano][7], which is then sending audio back into the Circuit. I'm just using the voice memos app (of all things) to record the output; I'll probably need to get a proper <abbr title="digital audio workstation">DAW</abbr> set up if I'm going to get more ambitious, but for now, it's pretty fun to create tracks with just a hardware device.
|
||||
|
||||
[7]: https://usa.yamaha.com/products/music_production/synthesizers/reface/reface_cp.html
|
||||
|
||||
Making music, especially digitally, appeals equally to my mathematical and creative brains; it's so cool to punch a rhythm into a grid and hear something pretty good come out. And it's cool that music hardware is pretty much all MIDI + audio signals, and you can combine devices in unlimited ways (the flipside being that my gear wishlist is growing by the day).
|
||||
|
||||
I was anticipating a longer learning curve with the Circuit, and was kind of surprised that I was making tracks basically as good as I've ever done within a few days; maybe it's just an intuitively-designed tool, but more realistically, I'm just not a very sophisticated musician. I feel that way about a lot of hobbies -- I gain a level of basic competence and just kind of stay there. Someone recently asked how long I'd been playing guitar, and I said, well, I guess 25 years, but I'm like 1.5 years good. Maybe I'll always be a dabbler, and maybe that's OK! I certainly get a lot of joy out of these activities. But I can't help but compare myself to, like, [Bonobo][8] and feel like that's what I should be striving for.
|
||||
|
||||
[8]: https://bonobomusic.com/
|
||||
|
||||
This month:
|
||||
|
||||
* Adventure: [Bull City Race Fest][9] half-marathon next weekend, then, if I'm feeling frisky, keep my training up and register for [City of Oaks][10]. The other night, I was running after dark and managed to tweaked my ankle in the last 20 feet -- the perils of trying to balance work, parenting, and training, I guess.
|
||||
* Project:
|
||||
* Build a music workstation -- I need some more desk space for gear, cables, and power
|
||||
* Prep my `Golong` app for the upcoming NBA draft, then open source it & write a post about it
|
||||
* Write a program in Go to pull interesting stats from my fantasy leagues using this [`yfquery` library][11]
|
||||
* Skill: keep making musical tracks + refining my workflows
|
||||
|
||||
[9]: https://capstoneraces.com/bull-city-race-fest/
|
||||
[10]: https://cityofoaksmarathon.com/
|
||||
[11]: https://github.com/famendola1/yfquery
|
||||
|
||||
Reading:
|
||||
|
||||
* Fiction:
|
||||
* [_Double or Nothing_][12], Kim Sherwood
|
||||
* [_Enemy of the State_][13], Kyle Mills
|
||||
* Non-fiction: [_The Creative Programmer_][14], [Wouter Groeneveld][15]
|
||||
|
||||
[12]: https://bookshop.org/p/books/double-or-nothing-a-double-o-novel-kim-sherwood/18644028?ean=9780063236516
|
||||
[13]: https://bookshop.org/p/books/enemy-of-the-state-vince-flynn/6701730?ean=9781982147525
|
||||
[14]: https://www.manning.com/books/the-creative-programmer
|
||||
[15]: https://brainbaking.com/
|
||||
|
||||
Links:
|
||||
|
||||
* [gokrazy is really cool][16]
|
||||
|
||||
> 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.
|
||||
|
||||
* [I Finally Reached Computing Nirvana. What Was It All For?][17]
|
||||
|
||||
> 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.
|
||||
|
||||
* [Style is consistent constraint][18]
|
||||
|
||||
> 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.
|
||||
|
||||
[16]: https://example.com/
|
||||
[17]: https://example.com/
|
||||
[18]: https://example.com/
|
||||
162
static/archive/stephango-com-tiumoc.txt
Normal file
162
static/archive/stephango-com-tiumoc.txt
Normal 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 doesn’t 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.
|
||||
It’s not a life commitment, it’s 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 you’re 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 don’t need a style for everything. Make a deliberate choice about
|
||||
what needs consistency and what doesn’t.
|
||||
|
||||
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 I’ll 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
|
||||
524
static/archive/www-wired-com-ybjipw.txt
Normal file
524
static/archive/www-wired-com-ybjipw.txt
Normal 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 York’s Airbnb Ban Is Descending Into Pure Chaos
|
||||
Business
|
||||
New York’s 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 FTX’s All-Night Race to Stop a $1 Billion Crypto Heist
|
||||
Security
|
||||
Inside FTX’s 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 York’s Airbnb Ban Is Descending Into Pure Chaos
|
||||
Business
|
||||
New York’s 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 FTX’s All-Night Race to Stop a $1 Billion Crypto Heist
|
||||
Security
|
||||
Inside FTX’s 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 doesn’t 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’ Won’t Just Read Your Mind&-They’ll
|
||||
Change It
|
||||
AI-Powered ‘Thought Decoders’ Won’t Just Read Your Mind—They’ll 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 it’s 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, they’re 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&amp;cds_mag_code=WIR&amp;id=1423757547774&amp;lsid=50431012277019467&amp;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
|
||||
595
static/archive/xeiaso-net-ygnwtd.txt
Normal file
595
static/archive/xeiaso-net-ygnwtd.txt
Normal 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
|
||||
Reference in New Issue
Block a user