Sign in

Andrey Petrov

@shazow.net
882 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 · 18/07/2026
When we use the wrong abstractions, complexity accumulates to route around the problem.
030
Andrey Petrov @shazow.net · 15/06/2026
Me: "I can't do that with my mouth because I'm not a bird" @tracyosborn.com: "... yet!" Let this be a reminder to everyone: We're still so early, your bird era could still be ahead of you!
0160
Andrey Petrov @shazow.net · 10/05/2026
trying to come up with a name for my vm manager for sandbox workflows, how bad is virtopus? 🐙
030
Andrey Petrov @shazow.net · 04/04/2026
Vibecoding is not the future, it is a commoditization of the past. The future of software engineering is building robust bug-free software, in a world where the cost of each bug is dramatically higher than before. The "lean Ethereum" megaproject is an example of what this looks like.
070
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 · 23/03/2026
How open source projects leak the top of the funnel: Anyone who worked at a tech company with a license policy (any company that builds software) has muscle memory to look for a few popular licenses. 1. Click project link 2. Glance at license 3. Not a license you use all the time? Close link
100
Andrey Petrov @shazow.net · 17/03/2026
The only useful distinction between slop or not is whether we're committing to maintain the thing. If it's disposable and going to rot in a few weeks, then it's slop (whether written by meat or otherwise). If it's reviewed and someone commits to owning it, then it's fine. bsky.app/profile/shaz...
3101
Andrey Petrov @shazow.net · 17/03/2026
@boscolo.co @goat.navy One more angle (to address spammy PDS's): What about a labeler which verifies the account has committed/burned a small bond onchain?
140
Reposted by Andrey Petrov
Edmund Edgar @goat.navy · 16/03/2026
did:cow: Another idea to billionaire-proof ATProto IDs, also "art of using a blockchain without using a blockchain". Blockchain-managed wrapper ID, no tx to create, points to a did:plc/did:web but you can move it if something goes wrong. Got carried away and made a resolver and front-end cow.watch
cow.watch
did:cow
56310
Andrey Petrov @shazow.net · 13/03/2026
Has anyone here submitted a package to Debian before? How'd that go?
120
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 · 01/03/2026
If you're curious why a prediction market might not pay out conditions of death: It's to avoid the creation of assassination markets.
030
Andrey Petrov @shazow.net · 22/02/2026
There's only a few ways to deal with attacks on permissionless networks: 1. Increase the cost to the attacker 2. Reduce the cost to the defender 3. Reduce the value to the attacker
0102
Reposted by Andrey Petrov
XMTP @xmtp.org · 10/02/2026
Today, @bsky.app + @atprotocol.dev devs can plug into XMTP to give users what they've been asking for: quantum-encrypted, secure group chats that scale to millions. With our XMTPID identity model, it's finally here. 1/5
1015426
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 · 20/01/2026
I see people debating whether an AI agent will ever "try to escape a container" but that is the wrong concern. The agent will be tricked into installing a malware dependency designed to escape the container. Even with CVEs patched many months ago, at scale, enough people will be impacted.
120
Andrey Petrov @shazow.net · 20/01/2026
Annual urllib3 report is out! Illia is taking over as lead maintainer, facilitated our first professional security audit, and we continue to raise funding for work on HTTP/2. Gentle reminder to ask your employer to help fund urllib3 work if you rely on Python. :) volochii.dev/blog/urllib3...
volochii.dev
urllib3 entered the "Billion-a-Month" club in 2025
Welcome to the 2025 annual report for urllib3. I’m Illia, and this is my first time writing this update for the second most downloaded Python package. Long-time readers will recognize these reports fr...
140
Andrey Petrov @shazow.net · 18/01/2026
Blindly accepting PRs without the prompt is like blindly implementing features users ask for without understanding their underlying needs. Users usually ask for less pain and more pleasure. It's the maintainer's job to dig deeper, read between the lines, and find the cause/utility behind the ask.
041
Andrey Petrov @shazow.net · 06/01/2026
❌ Social Network ❌ Social Media ✔️ Social Venue it's time we change our vocabulary, our words have become encumbered with business models when we really want to talk about a place that we visit for the people--a social venue.
050
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
Reposted by Andrey Petrov
Taras Glek @taras.glek.net · 24/12/2025
github.com/shazow/wifit... is a single-binary user-friendly TUI alternative for network-manager wifi selectors that desktop environments usually have
github.com
GitHub - shazow/wifitui: Fast featureful friendly wifi terminal UI. 🛜✨
Fast featureful friendly wifi terminal UI. 🛜✨. Contribute to shazow/wifitui development by creating an account on GitHub.
111
Reposted by Andrey Petrov
Stephan @stephancill.co.za · 07/12/2025
are there any ongoing discussions around adopting did:ethr (or a new smart contract-based DID primitive) as a decentralized alternative to did:plc? seems like a great fit
041
Andrey Petrov @shazow.net · 21/12/2025
hmm, wifitui got added to homebrew, but darwin/macOS backend support is an entirely vibecoded slop demo i made for my apple friends to be able to see what i'm working on, it barely works. would love for someone with a macOS device to help maintain the darwin backend... 👉👈 github.com/shazow/wifit...
github.com
wifitui/wifi/darwin/darwin.go at main · shazow/wifitui
Fast featureful friendly wifi terminal UI. 🛜✨. Contribute to shazow/wifitui development by creating an account on GitHub.
110
Andrey Petrov @shazow.net · 15/12/2025
has anyone experimented with making a browser-embedded PDS + signing key? for semi-ephemeral ATProto clients
020
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
is there a vaguely standard lexicon for making chat rooms on atproto? a small part of me wants to make ssh-chat 2.0 but with atproto as a federating backend
370
Reposted by Andrey Petrov
isabel @isabelroses.com · 05/11/2025
My very awesome and amazing guide on how to host a PDS on NixOS isabelroses.com/blog/nix-pds...
isabelroses.com
A NixOS PDS Hosting Guide
How to host your own personal data server using NixOS
310022
Reposted by Andrey Petrov
nixCraft @cyberciti.biz · 05/11/2025
TUI for managing bluetooth on Linux github.com/pythops/blue...
github.com
GitHub - pythops/bluetui: 🛜 TUI for managing bluetooth on Linux
🛜 TUI for managing bluetooth on Linux. Contribute to pythops/bluetui development by creating an account on GitHub.
1315
Reposted by Andrey Petrov
stellz @piss.beauty · 13/10/2025
solved my laptop being cold in the morning in a dumb way
tangled.org
@piss.beauty/heater
CPUs can make a little heat, as a treat
2324322
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 · 23/10/2025
Today's attempt at definitions: Federated is where power structures can accumulate on a single provider and disadvantage others. Decentralized is where the power structure is democratized/collectively owned and can't be concentrated to disadvantage others.
030
Reposted by Andrey Petrov
Seth Larson @sethmlarson.dev · 01/10/2025
This post was 5 years in the making, @shazow.net and I made a bet about whether "six", the Python 2/3 compatibility shim, would still be a popular package in 2025: sethmlarson.dev/winning-a-be...
sethmlarson.dev
Winning a bet about “six”, the Python 2 compatibility shim
Exactly five years ago today Andrey Petrov and I made a bet about whether “six”, the compatibility shim for Python 2 and 3 APIs, would still be in the top 20 daily downloads on PyPI. I said it woul...
083
Reposted by Andrey Petrov
chrisb @boscolo.co · 16/09/2025
Answer to question, "how would you fix did:plc?"
blog.boscolo.co
Solving AT Protocol's Centralized Identity
I spent the weekend building a proof of concept for a truly decentralized DID method using Farcaster's battle-tested identity system. Here's why AT Protocol needs this third DID option.
115212
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 · 16/09/2025
+1000 hope this gets more attention, subcommunities is the way forward, one global feed (even with varying moderation and timeline algorithms) can't replace everything.
160
Andrey Petrov @shazow.net · 13/09/2025
They say there is no free lunch, but what they don't tell you is that there is also no paid lunch. The whole concept of lunch is a lie.
030
Reposted by Andrey Petrov
gabby @fullmoon.id · 10/09/2025
I'd just like to interject for a moment. What you're referring to as Nix, is in fact, NixOS, or as I've recently taken to calling it, Nix plus OS. Nix is not an operating system unto itself, but rather another component of a fully functioning operating system made useful by the kernel, systemd, …
18810
Andrey Petrov @shazow.net · 09/09/2025
anyone use an alternative bluesky client exclusively? which one? anything you miss from the official client?
040
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 · 31/08/2025
arewedecentralizedyet.online is a great reminder that the word "decentralization" is useless without talking about what kinds of power participants have over each other. I wrote a post about this, analyzing very specific failure modes and what kinds of powers open social protocols have:
050
Andrey Petrov @shazow.net · 17/07/2025
robots.txt was the original claude․md
020
Reposted by Andrey Petrov
Tracy Osborn (tracymakes) @tracyosborn.com · 16/07/2025
Anyone out there with a YT channel with over 100K subscribers in a tech niche? I'm working on the @microconf.com YouTube strategy (www.youtube.com/@microconf) and would love to have someone to run quick questions on strategy by. Consultant recommendations welcome too!
youtube.com
MicroConf
Welcome to MicroConf - Where Independent SaaS Founders Launch, Meet, Learn, and Grow! MicroConf is the world’s most trusted community for bootstrapped SaaS founders. MicroConf is a community of SaaS...
0102
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
Reposted by Andrey Petrov
Seth Larson @sethmlarson.dev · 21/06/2025
I'm happy to announce that #urllib3 has a new lead maintainer: Illia Volochii 👏 I'll continue to maintain the project alongside my other co-maintainers @quentin.pradet.me and @shazow.net github.com/urllib3/urll...
github.com
Announcement: Illia Volochii is the new lead maintainer of urllib3 · Issue #3629 · urllib3/urllib3
Hello urllib3 contributors and watchers, I've got some great news today! I've been the lead maintainer of urllib3 since July 3rd, 2019. In my opinion, one of the exceptional parts of urllib3 as a p...
1141
Andrey Petrov @shazow.net · 10/06/2025
there's this thing called man pages, it's like llmstxt but from the 70s
160
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 · 15/05/2025
How can open social protocols fail us? I put together an analysis comparing several specific failure modes between Farcaster, Bluesky, and Mastodon. Please let me know if any of the protocol descriptions could be presented more fairly! shazow.net/posts/open-s...
shazow.net
How can open social protocols fail us in 2025
Let’s compare the possible failure modes of various open social protocols: ActivityPub/Mastodon ATProto/Bluesky Farcaster/Warpcast Some scenarios I’d like to consider: Can my identity be taken away...
5235
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