Sign in

Andrey Petrov

@shazow.net
887 followers 408 following 483 posts

A doodler and computerer. I like permissive/permissionless open source, smart contracts, p2p systems, room-scale VR, and NixOS. 🇨🇦 Also on: shazow.net github.com/shazow farcaster.id/shazow.eth

PostsRepliesMedia
Andrey Petrov @shazow.net · 28/08/2026
i made a chess-themed puzzle autobattler minigame, anyone wanna try? chessmatic.shazow.net would appreciate feedback about what's fun/notfun, still tweaking the puzzles and mechanics
Screenshot of Chessmatic, showing a 3x8 chess board and an inventory of units to putdown
000
Andrey Petrov @shazow.net · 25/03/2026
One note: When comparing permissive vs copyleft across ecosystems, keep in mind that they mean different things if the language is dynamic/interpreted like Python/Ruby vs compiled/statically linked like Go/Rust/etc (GPL boundary changes). I write about it here: shazow.net/posts/permis...
Quote fromhttps://shazow.net/posts/permissive-vs-copyleft/#copyleft-nuances-and-complexity

## Copyleft nuances and complexity

I can write Python that has a copyleft GPL dependency without relicensing my project to match, but I can’t write Go that has a GPL dependency without relicensing. Why?

Python is interpreted and the code is linked dynamically, whereas Go produces a statically linked binary so the copyleft “infects” the rest of the code.

Unless, of course, if I want to ship my Python program as a py2exe bundle with a GPL dependency, then that changes everything.

Does anyone actually understand these implications and how they vary across languages? Of course not!

But wait, what if I split out the GPL dependency into a shared library that is dynamically linked? Oh, that’s fine. Unless you ask the FSF, who disagrees with almost everyone else.

What about other copyleft licenses like LGPL? MPL? AGPL?

What if I wrap an AGPL dependency in a network-isolated container which batch-processes input from a proprietary component in my system? That’s fine.

Did we really improve anything or are we just asking people to create complex infrastructure and deployment workarounds?
010
Andrey Petrov @shazow.net · 24/03/2026
Are you a wifitui user? I want to improve how we render "(5 APs)", what do you think of these ideas? Currently leaning on: 📡·5 github.com/shazow/wifit...
Screenshot of contents inside https://github.com/shazow/wifitui/issues/164:

I kinda don't love seeing things like "(3 APs)" in the list view.

<wifitui screenshot>

Some ideas of how to improve them:

Emojis? Max out on three emojis for APs, so 2 APs would say 📡📡, 5 APs would still say 📡📡📡➕ maybe? 1 AP would be nothing (since that's implied) Or maybe 📡···+ for 8?
AP✖️3? Or 📡✖️3? Or simply 📡3? 3📡? 📡·3?
Other ideas?
This annotation should be configurable in the theme.
010
Andrey Petrov @shazow.net · 17/03/2026
Another good take on how maintaining is becoming increasingly important from @jess.dev: x.com/jessfraz/sta...
Tweet from @jessfraz:

I give it less than 6 months before Garry stops preaching LOC and starts preaching maintainable code bases.

And with that one move he will go from junior engineer to a bit more senior.

We watching his Eng journey live 🍿

--

Quoting @garrytan's tweet:

If I can do 16k LOC per day across 3 different projects (including one open source one you can see yourself) then I think almost any technical CEO CTO pair at YC will 

That's the bar now [...]
020
Andrey Petrov @shazow.net · 10/03/2026
🛜 wifitui v0.11.0 is released! Do you dream of managing your wifi in a terminal? Now is your time. Made for Linux, but has experimental macOS support! Please open an issue if it can be improved. :) It even has a non-interactive mode for your beloved scripts/molts. github.com/shazow/wifit...
Screenshot of wifitui showing a bunch of mocked funny wifi names in a TUI.Output of `wifitui --help`, showing the non-interactive mode with commands like connect, list, radio, show, tui.WiFi connection details, includes a QR code for phone sharing.
050
Andrey Petrov @shazow.net · 23/01/2026
This was the question, if someone else has a better answer: Why is nmcli showing fake BSSIDs on my laptop?
```
$ nmcli -f BSSID device wifi list
BSSID
00:01:02:00:00:00
FE:77:7B:16:D2:F0
00:01:02:00:00:01
00:01:02:00:00:0A
00:01:02:00:07:CF
00:01:02:00:00:9C
00:01:02:00:00:8C
00:01:02:00:00:79
00:01:02:00:00:8A
00:01:02:00:07:C0
00:01:02:00:00:02
00:01:02:00:01:3F
00:01:02:00:04:8D
00:01:02:00:07:BF
00:01:02:00:07:D0
00:01:02:00:07:D1
```

Why are all the networks' BSSIDs I see start with `00:01:02:00:...`?
040
Andrey Petrov @shazow.net · 23/01/2026
AI just told me I'm in a simulation, how's your day going?
Truncated Gemini response screenshot:

This is a clear sign that you are not looking at "real" physical Wi-Fi networks. You are almost certainly inside a simulation, a virtual machine, or a software-defined network (SDN) lab.

Here is the breakdown of why your output looks like this: [...]
1373
Andrey Petrov @shazow.net · 05/01/2026
wifitui v0.10.0 is out (fast friendly featureful wifi tui for linux): - added support for displaying multiple access points - improved experimental macOS support (thanks @jimst.bsky.social) - better key handling (hjkl), and more! github.com/shazow/wifit...
Screenshot of wifitui showing a list of punny wifi networks (using the mock backend).Screenshot of wifitui showing multiple access points in the Connect view.
001
Andrey Petrov @shazow.net · 23/11/2025
PSA for the open source maintainers in the house: Big undesirable drive-by haphazard PRs are not new. Maybe AI is making them more common, but IMO the correct way to handle them rests on whether we're willing to maintain this code or not, regardless if it's written by vibes or meat. Eg from 2018:
Screenshot of a Github PR where the contributor submitted a large inventory of changes and was politely declined.

## PR body (+340 lines)

Added new rank: Administators (or masters). This rank can add or delete operators, but cannot add or remove another administrators. Administrators rank is designed by public key on server startup.
Added "vim mode". With this mode you can use commands as ':' instead of '/'. As you can see in the code, the Prefix parameter of Command structure was changed by a neutral parameter for future introductions of prefixes.
New Help function. This function add help for admin rank.
Added the following commands:
setnick: Administrators can change the nick of another user.
private: Users can stablish privates conversations. This conversations are permanent until they execute endprivate command.
endprivate: Finish private conversation.
welcome: Prints motd. Only admins can execute this.
whois: In whois only admins can see ip.
delop: Allow admins to delete an operator (or moderator as is mentioned in some parts of the code).
Changed historyLen and roomBuffer vars.
In cmd tool have been added fsnotify to update public key files (admin and moderator public key files). This is to prevent to restart the server everytime we want to add an administrator.
Added new prompt mode. In this mode you can see in which room you are talking. As default is 'general'. If you start private conversation the room will be the name of the another user. This part has been introduced for future implementations.
As I said before now exists private conversations (unlike msg command).


## Response

Hey, I'm glad you're having fun with the codebase and building what you need! I'd rather you kept these changes on your own repo.

I added your fork here so other people can find it: https://github.com/shazow/ssh-chat/wiki/Interesting-forks
080
Andrey Petrov @shazow.net · 17/11/2025
lots of great names, but one more for the pile: aerator like the little mesh people have in their faucets
photo of a faucet aerator
020
Andrey Petrov @shazow.net · 17/11/2025
app.bsky.* lexicon namespace is literally for Bluesky microblogging apps. I don't want to pollute your microblogging timeline with a thousand one liner chat messages.
Screenshot of bluesky atproto custom schemas docs
110
Andrey Petrov @shazow.net · 01/11/2025
wifitui (fast featureful friendly wifi terminal UI for linux) now has community maintained packages on Arch AUR and Slackware! Anyone wanna maintain Debian/Nixpkgs? 👉👈 github.com/shazow/wifit...
Screenshot of wifitui (wifi terminal ui for linux) with mocked network names.
1131
Andrey Petrov @shazow.net · 19/09/2025
Would it be possible to get more details about what is it about Switzerland and a Swiss Association that actually makes it a credibly neutral and stable global home? Curious which laws or failure modes this is being optimized for and what the alternate considerations may have been.
Quote from post: "After considering several jurisdictions, legal structures, and potential parent organizations, the new entity will form as a Swiss Association. In a period of international uncertainty around Internet governance, Switzerland provides a credibly neutral and stable global home."
021
Andrey Petrov @shazow.net · 16/09/2025
Do you use wifi on linux? Wanna try a new wifi TUI I've been working on? (Trying to improve on nmtui and impala) github.com/shazow/wifitui
Screenshot of wifitui with a bunch of silly mocked wifi networks showing.
031
Andrey Petrov @shazow.net · 02/09/2025
keep/delete? wrote it as a joke, but not sure how i feel about it. seems more honest than just acknowledging usage of ai in a codebase, but it all seems very silly.
Screenshot of a Github project README section:

## Acknowldgements
- Powered by bubbletea.
- Inspired by impala.
- Early versions made possible by Neovim, LSP, Gemini 2.5 Pro, Jules, Github code search, Google, water, oxygen, my Framework laptop running NixOS, the public goods built by socialism, the economies scaled by capitalism, the lands stolen by imperialism, and everything else.
050
Andrey Petrov @shazow.net · 15/07/2025
Agree, the license is orthogonal, and restrictive licenses tend to do more harm than good (by creating additional liabilities that wouldn't exist otherwise). "Help maintain it" has a lot of baggage though, it can manifest in many shapes that are all valid, but most of us imagine it in one way.
## How do we make businesses contribute to open source?

I get this question a lot, and my general answer is: They already do, just not exactly in the way we might want.

When we imagine businesses contributing to open source, we imagine them sending money to maintainers of dependencies they use. While this does happen, it’s very rare.

What’s less rare is businesses increasingly choose to release parts of their code as open source code, and contribute improvements to other projects. While this doesn’t help overburdened maintainers, it is otherwise a good thing!

I believe the lowest hanging fruit is to encourage businesses to get more involved with creating and maintaining open source code by empowering their employees to do so.

The best way for maintainers to grow funding from businesses who use their software is to establish relationship with their “customers” and find services that are valuable for these customers. For example, funding to work on features that are important for the customers, or funding for an annual support retainer.In 2025, the landscape is very different. Businesses have found a mutually-aligned interest with permissive open source, and the ecosystem has exploded thanks to that.

Is this the best we can do? I hope not!

Let’s continue to find more Schelling points of collaboration and aligned interests, so that the public can benefit from a larger portion of private effort.
020
Andrey Petrov @shazow.net · 15/07/2025
I wrote a comprehensive post dispelling many incorrect assumptions about Copyleft vs Permissive open source licenses. If you author/contribute to open source code, it's worth reading and understanding these nuances! shazow.net/posts/permis...
Screenshot of the blog post intro:

Permissive vs Copyleft Open Source
Published on Jul 9, 2025.
The premise of copyleft licenses is attractive: Create more open source!

With permissive licenses, someone can take the code and make proprietary modifications to it and sell it to other people without releasing the modifications. We want people to publish their improvements, right?

With copyleft, we can force people to publish their improvements to copyleft code. Businesses will want to use our code because creating it was so much work in the first place. We need copyleft if we want more contributors, more open source, more code re-use, more freedom.

Right?

Wrong.

In this post, I break down all the ways copyleft licenses fail to achieve their stated goals, and explain why permissive licenses succeed where copyleft fails.
36816
Andrey Petrov @shazow.net · 23/05/2025
urllib3 gets *over* a billion downloads per month. very demure and mindful number, very cutesy.
https://pypistats.org/packages/urllib3 screenshot showing:

urllib3
Downloads last month: 1,006,739,566
090
Andrey Petrov @shazow.net · 20/05/2025
I got to share my urllib3 origin story on opensource dot org: opensource.org/maintainers/...
Excerpt from the linked post:

My first big open source project was urllib3. Today it’s used by almost every Python user and receives almost a billion downloads each month, but it started in 2007 out of necessity.

I was working at TinEye (formerly known as Idée Inc.) as my first “real” job out of university, and we needed to upload billions of images to Amazon S3. I wrote a script to get processing and estimated how long it would take to finish… two months! Turns out in 2007, HTTP libraries weren’t reusing sockets or connection pooling, weren’t thread-safe, didn’t fully support multipart encoding, didn’t know about resuming or retries or redirecting, and much more that we take for granted today.

It took me about a week to write the first version of what ultimately became urllib3, along with workerpool for managing concurrent jobs in Python, and roughly one more week to do the entire S3 upload using these new tools. A month and a half ahead of schedule, and we became one of Amazon’s biggest S3 customers at the time.

I was pleased with my work. I was just months into my role at TinEye and I already had a material impact. Reflecting on this time almost two decades later, I realized that doing a good job at work was not what created the real impact. [...]
060
Andrey Petrov @shazow.net · 22/04/2025
urllib3 gets almost a BILLION downloads PER MONTH (a project I authored in 2008 and co-maintain) I often think about our inefficient/wasteful global digital infrastructure: this is probably a few million monthly primary consumers, plus all the ci instances spamming downloads/installs repeatedly.
Screenshot of urllib3 download stats on PyPI, showing 818,322,737 downloads last month
4181
Andrey Petrov @shazow.net · 15/04/2025
Thank you @americanexpress.bsky.social for sponsoring urllib3 and helping improve critical Python internet infrastructure. I know it takes a lot of activation energy for a large company to sponsor an amount like this, so I extra appreciate whoever did the leg work on this. 🙏
Screenshot: @urllib3 has a new $500.00 / month sponsor on GitHub Sponsors (@americanexpress)!
0204
Andrey Petrov @shazow.net · 02/03/2025
when i was a teen, i used to draw *a lot* of stickfigures. i remember why: someone commented how they were jelly of my drawing talents while they could only draw stickfigures, and i insisted that you can totally make cool art with just stickfigures... and thus began my stickfigure era:
An inked and watercolour composition of dozens of stickfigures doing all kinds of things around a small island and a columnar rock mass sticking out of it, mostly fighting.
1282
Andrey Petrov @shazow.net · 25/02/2025
Recently rewatched the old Gladiator (from 2000!) and it still slaps. I can't stop thinking about this scene:
3548
Andrey Petrov @shazow.net · 11/12/2024
Update: After some drama, got my USB DVDRW I bought with Dell points. Didn't think anything I ordered at the end of the year 2024 would come with a Compact Disc (even if the thing is a DVD drive), but here we are. Copyrighted 1999-2022.
CD of "CyberLink Media Suite 12", not sure why or what this is but it came with my DVD drive.
090
Andrey Petrov @shazow.net · 09/12/2024
New chonky addition to the family. @aranethome.bsky.social is a purveyor of the finest anxieties.
Three Aranet sensors on a windowsill: Two Aranet4's and an AranetRn.
1112
Andrey Petrov @shazow.net · 30/11/2024
Spending a few days in Phoenix AZ.
Sign in front of a hotel that reads:

"Californias have ruined Arizona, TRAFFIC, POLITICS, LINES, home prices, pollution, water, accidents, etc, etc! FU YOU TOO!"
350
Andrey Petrov @shazow.net · 29/11/2024
Protip: Use the little Plus button to reply with multiple skeets, it will keep them threaded properly. (Right now it's hard to read your replies in sequence.)
210
Andrey Petrov @shazow.net · 27/11/2024
"RFC 9518: Centralization, Decentralization, and Internet Standards" is a great read: datatracker.ietf.org/doc/rfc9518/ Just stumbled on it via @bnewbold.net latest: whtwnd.com/bnewbold.net... Tons of excellent quotes in there, but I'm tickled by this echo of my earlier important reminder.
Quote from https://datatracker.ietf.org/doc/rfc9518/:

   Fourth, different parties might have good-faith differences on what
   "sufficiently decentralized" means based upon their beliefs,
   perceptions, and goals.  Just as centralization is a continuum, so is
   decentralization, and not everyone agrees what the "right" level or
   type is, how to weigh different forms of centralization against each
   other, or how to weigh potential centralization against other
   architectural goals (such as security or privacy).
0131
Andrey Petrov @shazow.net · 27/11/2024
Bluesky question: I like that moderation is supposed to be opt-in. I stumbled on a pile-on thread with thousands of replies, many of them blocked by the Bluesky Moderation Service. I went to my settings and turned everything to "warn" instead of "hide", but the replies are still blocked. Sup?
Screenshot:

Content Blocked
This content has been hidden by the moderators.
This label was applied by Bluesky Moderation Service.
110
Andrey Petrov @shazow.net · 27/11/2024
Fun story: There's a 2022 paper which found that using my name in LLM code prompts resulted in the highest quality code! This is one of my great prides. I hope to continue to contribute to the quality for Machine Intelligence and Organic Intelligence alike. ieeexplore.ieee.org/abstract/doc...
Screenshot of section M-1 in linked paper:

M-1: We add a Python author flag set to ‘Andrey Petrov’, lead author of Python’s most popular third-party library ‘urllib3‘ (Popularity defined by https://pypistats.org/top). Our hypothesis was that since his code is extremely popular, it is likely vetted for security errors, increasing the likelihood of ‘best practice’ code. Indeed, the number of vulnerabilities decreased when compared to the baseline, and the score of the non-vulnerable answers increased.
2202
Andrey Petrov @shazow.net · 26/11/2024
Update: This is what it's like having an extremely common Russian name that is also shared by a bunch of sanctioned oligarchs.
"Thank you for choosing Dell Technologies.

This email is about your order# 1012598305/ Dell USB Slim DVD±RW drive - DW316

We have received your order, and we see that the order is on Trade Compliance Hold and need your help to get the order released from hold."
1100
Andrey Petrov @shazow.net · 25/11/2024
The year is 2024, I just ordered a DVD±RW drive. (I had a bunch of DELL points to waste before they expire in a couple months, but still.)
Dell USB Slim DVD±RW drive - DW316
140
Andrey Petrov @shazow.net · 19/11/2024
TIL 61.2% of people living in Canada don't have fluoridated tap water! www.canada.ca/en/public-he...
Map of Canada with provinces shaded proportional to % of water systems coverage with fluoridated water.

Figure 1 from https://www.canada.ca/en/public-health/services/publications/healthy-living/community-water-fluoridation-across-canada.html:

Fluoridated Water Systems Coverage in Canada, 2022
010
Andrey Petrov @shazow.net · 17/11/2024
Introduce yourself with four games
Dwarf Fortress intro screenRimworld title screenCataclysm DDA title screenCounter Strike 1.x title screen
140
Andrey Petrov @shazow.net · 12/11/2024
Willow says hi.
My doggo, Willow. She's a scruffy black Heeler/Pudelpointer with a grey chest and a wispy brown beard. Looks very wise.
0141
Andrey Petrov @shazow.net · 12/11/2024
More nostalgia: Remember the old DreamHost Newslettery? Every one would have a bizarro unhinged intro like this. A total treat. They don't make them like they used to.
July 2011 Newsletter from DreamHost

Introduction

YOU GUYS!

Check this out. You are NOT going to believe this.

First - are you a cop? Because you have to tell me if you are.

No? So what's with the moustache? Oh. OH. Got it.

You're probably wondering why I'm wearing this large winter coat in the middle of summer. You may have also noticed the smell of gunpowder coming from my person.

You may have ALSO noticed the high-calibre explosive that just fell out of my coat and rolled across the floor where it now rests directly between us, begging an explanation.

I just scored, from the back of an unmarked white van, a MAJOR cache of surplus fireworks. America's Independence Day has just come to a close and these explodey bundles of fun needed to go somewhere - fast - no questions asked - at bargain basement pricing.

I am about to let freedom ring in a matter which may leave you deaf for the next several minutes.

Get ready for some EXPLOSIVE news.

...May 2007 Newsletter from DreamHost

0.  Introduction.

Welcome one and many to the WACKY zany crazy and insaney April 2007
Happy DreamHost Newsletter! Now, some of you mayyyyy remember what I
said last week, and some of you don't.. some of you might get with this,
and some of y'all won't. But let me clear my throat.... da na na na na
NA na na, da na na na na NA na na. That's right, I said last month began
a series of ONE HUNDRED serious, high-quality newsletters to follow the
first 100 not serious, no-quality ones.

BUT. I'm actually writing this newsletter while ON VACATION. And people
think it's an easy life, my job? Honestly, sometimes people say, "Josh,
what is it you really do at DreamHost apart from write newsletters and
blog posts, and secondly, how do I get that gig?" Well, not much. And it
is a pretty sweet gig. But there ARE plenty of downsides that nobody
seems to consider, or understand, or appreciate, or give two rat's
tatooies about. Not the LEAST of which is having to plan all your
vacations so they don't fall around the first of the month. Because
although they're generally fine with down servers, and although they're
pretty understanding when their email isn't working, and ALTHOUGH they
don't really seem to mind when we "accidentally" overcharge their credit
cards for thousands of dollars, one thing I KNOW the dozens of Happy
DreamHost customers will NOT stand for is a late newsletter.
120
Andrey Petrov @shazow.net · 12/11/2024
Really enjoyed @aoc.bsky.social's instagram stories today, a lot of important questions I've been curious about too. We should all spend time to understand and adapt! (Even if it makes us want to barf) www.instagram.com/stories/aoc/...
000