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 con...| shazow.net
Syndicated This post was featured on opensource.org/maintainers/shazow My first big open source project was urllib3. Today it’s used by almost every Python user and receives about 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…...| shazow.net
I went into a deep research hole trying to discover the origin of the quote: “Any sufficiently advanced incompetence is indistinguishable from malice.” tl;dr: Earliest online record of this quote is by Vernon Schryver on May 1, 2002. Grey’s Law, 1996? Wikipedia, LLMs, and various random blog posts cite it as “Grey’s Law” which I haven’t been able to corroborate. Wikipedia references a book from 2015 which refers to the quote as “Grey’s Law” but attributes it to “unknown ...| shazow.net
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? Can my audience be taken away? Can my ability to extend it and build on the protocol be taken away? Some specific failure modes I’m concerned about: What happens when the most popular app or instance becomes malicious? Is there something the maintainer can do that would prompt me to abandon ...| shazow.net
Imagine thousands of years in the future, when humanity is dispersed across the stars. We are fully actualized and have reached the final leafs of the universe’s tech tree. We are happy and in control of our destiny. Are the trillions of us spanning many solar systems? What if there are only millions, or even thousands of us? It’s tempting to take our history of swarming through continents on Earth, consuming all available resources to scale and grow, and extrapolate it into space.| Andrey Petrov
I think of conditioning as a long-term conversation between decentralized components. After breaking my foot, I’ve been working on conditioning all of the tiny ligaments to properly support movements and impacts I haven’t practiced in months. I can’t just say “hey foot, you’re not broken anymore, go back to normal.” I have to slowly and incrementally reinforce each change. Similar to learning a musical instrument by training our fingers to move a specific way, over and over – we...| Andrey Petrov
I wrote down the names of 5 friends, I’m going to send each of them a gratitude email by the end of the year. Want to join me? It can be just a couple of sentences of how they positively impacted your life, or a brief story of a positive shared experience, or what you admire about them.| shazow.net
“There are no such thing as zero trust assumptions.” Trustless is a confusing word: We don’t use it in common speech; it means “not trust worthy” in the dictionary; decentralized technologies sometimes use it as “not needing to trust”; and the uninitiated might interpret it to mean that it’s advocating for less trust? Despite the confusion, there is a very useful insight behind the concept of “trustless” (in the decentralization sense).| shazow.net
A blockchain like Ethereum1 provides a collectively owned programmable substrate, allowing us to build more decentralized “onchain” applications where the consumers have more agency over how things behave. Let’s break down “collectively owned programmable substrate”: Collectively Owned The Ethereum consensus is a communal mechanism which enforces certain rights for anyone who chooses to use it. Primarily, it is designed to enforce the right to deploy code that is guaranteed to be ex...| shazow.net
As technological advancements march on, we’re having a lot of very important conversations about what we want out of the platforms we use day to day. We often talk about “decentralization” since it carries so much meaning, but it’s also easy to talk past each other because we may be thinking about different components of decentralization in different contexts. If we have two systems where one is more trustless and the second is more permissionless, can we say that one is decentralized...| shazow.net
Decentralized Finance (DeFi) is a technology that exploded in popularity in 2020, taking place almost entirely on the Ethereum network. There are many things about it that are outright fascinating: Algorithmic stablecoins, automated market makers, flash loans, flash mints! Every month there is a wild new invention that changes the landscape, often increasingly difficult to understand which is both frustrating and intimidating. I want to talk about one thin slice of this technology that I’m ...| shazow.net
I got into the habit of dumping quick blog post ideas into issues on my blog’s repo. It’s a convenient place to iterate on them and share with friends for feedback before actually publishing on my blog post. The drafts keep accumulating, how do I trick myself into publishing more? Perhaps by reducing the effort required for the next step? Let’s do it! Architecture My blog is statically generated using Hugo, the code is hosted on Github, then when a pull request comes in it is built, pre...| shazow.net
There are bazillions of sourdough recipes in the wild, foaming with traffic from eager bakers trapped in quarantine, ready for their sourdough starter baby with a punny name to graduate into a tube of sustenance and distraction during dark times. Sourdough recipes are more involved than regular bread recipes, that’s for sure. There are many steps, and bakers can’t seem to agree on many of them. That’s no accident, a great sourdough bake needs to be adjusted to our kitchen and our starter.| shazow.net
Proud to be part of the team who built this chonk of vital internet infrastructure. ❤️ Big sincere thank you to our maintainers: @theavalkyrie @sethmlarson @haikuginger @Lukasaoz @sigmavirus24, and to all the other contributors for this very important work. https://t.co/ea3iFClKD5 — Andrey 🦃 Petrov (@shazow) December 17, 2018 Since urllib3 was created in 2008, we have gained several amazing maintainers and hundreds of contributors. Any time you do anything that touches HTTP in Python...| shazow.net
I spent fifty hours setting up my new computer, and I feel a mixture of shame and pride about it. We spend a lot of our lives in our computers. Working, socializing, relaxing. On the work laptop, at the home desktop, on the phone in bed. We live in our computers, and we do little things to make ourselves feel more at home in them — a little more cozy. We change the wallpaper, install some new apps, buy a pretty case and some stickers for the back.| shazow.net
After maintaining a project for many years, maybe you’re no longer using it yourself? Or maybe you’re burned out from the grind? Or you can’t afford to allocate time to it? Maybe it’s time to pass it on to somebody else. I feel like there is more to learn from failure stories than success stories, so let’s start with those. What not to do I’ve handed over several projects before, and some didn’t go as well as I’d hoped.| shazow.net
It has been over two months and I feel better. @hyfen pong — Andrey 🦃 Petrov (@shazow) April 20, 2007 My first tweet. I haven’t tweeted in over two months. This is very unusual for me. I’ve been an avid tweeter since 2007. Writing tweets has become a part of my identity to the point where most my bios mention that I’m a tweet ghostwriter—composing and editing tweets for friends is one of my favourite things to do.| shazow.net
A case study between Python and Go. In Go, a common complaint from newly-minted gophers who come from another language is the error handling pattern: result, err := DoSomething() if err != nil { return nil, err } another, err := SomethingElse(result) if err != nil { return nil, err } // We can be a bit more terse if we don't need to save any // variables outside of the if-scope: if err := MoreWork(another); err !| shazow.net
I’ve been meaning to change and improve my master password for years. I knew the steps but I really wanted someone to spell it out for me anyways, so I’ll spell out the concrete steps for you. Popular password managers work by maintaining an encrypted database of many secrets, protected by a combination of the master password and access to the encrypted database file that is synchronized across your devices. Picking a strong master password is crucial in case one of your devices is stolen...| shazow.net
When getting started with Go, there is a strong temptation to bring baggage from your previous language. It’s a heuristic which is usually helpful, but sometimes counter-productive and inevitably results in regret. Go does not have classes and objects, but it does have types that we can make many instances of. Further, we can attach methods to these types and they kind-of start looking like the classes we’re used to. When we attach a method to a type, the receiver is the instance of the t...| shazow.net
← Back to shazow.net| shazow.net
In a few months, the first iteration of modern consumer virtual reality headsets are going to start shipping. A lot is rapidly changing and new applications are being discovered every week. I present three stories that use VR technology to push our crafts beyond what was possible. Each story is focused around an amazing short video that is very much worth watching. “This is not why I became an actor.” On the set of The Hobbit, Sir Ian McKellen broke down in tears after hours of delivering...| shazow.net
The goal of designing a public API response layout is to balance ease of use for consumers with commitment of stability from the provider. We can bolt on all kinds of crazy metadata and embedded values that we’ll regret having to maintain years later, like complex pagination schemes that don’t scale for evolving domain spaces or when we’re finally Web Scale and wasting millions on extra bandwidth from that emoji soup we thought would be hilarious to wrap each entry with.| shazow.net
SSH, how does it even? A few weeks ago, I wrote ssh-chat. ssh http://t.co/E7Ilc0B0BC pic.twitter.com/CqYBR1WYO4 — Andrey 🦃 Petrov (@shazow) December 13, 2014 The idea is simple: You open your terminal and type, $ ssh chat.shazow.net Unlike many others, you might stop yourself before typing “ls” and notice — that’s no shell, it’s a chat room! While the little details sink in, it dawns on you that there is something extra-special going on in here.| shazow.net
Helping the future come a little sooner Six years ago, I built a better Python http library. It had then-novel things like connection pooling, thread-safety, multipart encoding, and more. Today, every Python user depends on it. Maintaining something for six years on my own time is not easy, even with a slew of coping strategies. A few hours here and there, every week, and slowly it chugs along—largely thanks to contributors undertaking the bigger tasks that I can’t knock off in a quick af...| shazow.net
A letter of concern Hello, John Carmack. (1/3) Everyone has had some time to digest the FB deal now. I think it is going to be positive, but clearly many disagree. — John Carmack (@ID_AA_Carmack) March 28, 2014 (2/3) Much of the ranting has been emotional or tribal, but I am interested in reading coherent viewpoints about objective outcomes. — John Carmack (@ID_AA_Carmack) March 28, 2014 (3/3) What are the hazards?| shazow.net
Finding the North Star for your career What do I really want? I’ve been thinking about this for many years. Do I want to build a venture capital funded startup? A sustainable humble life-style business? An innovative independent game studio? A wildly-profitable consulting enterprise? Perhaps follow in the foot-steps of 37Signals, Github, Twitter, or Google? Or maybe I would be happy working for somebody else but I just haven’t found the right place?| shazow.net
Lessons learned from five years of maintaining one of the most-used Python libraries. I’ve published dozens of open source projects over the years, mostly in Python and JavaScript. Few are old and stable, others are new and immature, some are wildly popular with a constant stream of contributors, but most linger until one day a trickle of users suddenly discover them. This is a guide on how to traverse these waters and foster your project into something you can be proud of.| shazow.net
“What was it like?” More than anything else, it was creepy. … But worth it. Bespectacled My first vision correction was prescribed in the midst of my high school years. I could see well enough to get around but with great effort and strain. By the time I got home from school, I had to take a long nap just to make it through the rest of the day. My eyes were exhausted and glasses fixed all that.| shazow.net
Every offer you get will include some details and omit others. To perform a proper comparison between multiple offers and reach a good decision, you’ll need all the details for all offers. After numerous back-and-forths with several companies, I composed a checklist ideal for anyone on the verge of deciding the next stage of their career. Benefits: Medical, dental, vision. Yes, you’re young and healthy, but root canals are much more painful when you’re paying for them out of your pocket.| shazow.net
Or, first things I install when I nest into a fresh Apple computing device: Adium Chrome Firefox Clyppan Colloquy Dropbox Growl Homebrew Fink MacPorts MacVim (via Homebrew!) Notifyapp Google Notifier Pandoraboy Quicksilver Skype iTerm2 TotalTerminal Visor Transmission VLC Virtualbox XCode (Based on my older post, New Macbook Pro, list of things I installed. What am I missing?)| shazow.net
We live in a time when cleartext usernames and passwords are leaked on a daily basis. In the last couple of months my accounts got compromised on Gawker, Sony, and MtGox. I decided it’s time to start using the one-password-per-service technique. These are tools I found in my research. I’m currently using SuperGenPass, but considering writing my own version that uses customizeable multipass sha512, more symbol breadth in passwords, and some other improvements.| shazow.net
This approach is similar to FriendFeed’s schemaless database framework. The key difference is in the data locality. The goal is not to build an effective schemaless database on top of a relational database, but rather to accomodate for rapidly-evolving relational schemas and reducing the difficult of migrating forward. Hypothesis In an evolving relational (SQL) database schema, we store two types of data: Data we will be querying against and data we will be displaying.| shazow.net
My strategy as a novice designer is to keep track of some rules of thumb to reduce the probability of making bad mistakes from lack of experience. If I’m careful enough, then I can often get to a point where just a little polish from an experienced designer is what it takes to get it from the 80% to the 100% mark. Keep a grid, always align to the vertical columns, but also strive to align to the horizontal rows if possible.| shazow.net
Drawing without using reference is one of my favourite hobbies. Struggling to pull an image out of the depths of my mind, like a fierce fish fighting for freedom. Reeling and reeling, until the moment when the fish bursts out of the still surface of the water, when the splash from the water blankets me as a sign of impending success. The rod sways unbalanced from the weight of the catch.| shazow.net
For context, this is comparing with my Valve Index which is not very apples-to-apples. This is specific to the wireless embedded mode, not tethered Quest Link mode. I tested it with the Elite Strap, which ought to be included by default. Tracking Tracking is “surprisingly good” as everyone says, especially superficially. It’s hard to visually detect glitches when the system is operating smoothly. On the other hand, I did feel mild nausea after some casual use.| shazow.net