RC W2D2 - Be a chef

Open source

I started taking a closer look at open source projects today, starting with urllib3. I've used it before, it's in Python and a fellow RC batchmate Andrey is a maintainer.

The issue I focused on involved type checking, so I spent a bit of time on a mypy refresher. In my previous role I had to make the existing py2 codebase compatible with py3, which means introducing lots of type comments. TIL type stubs can only be used to check clients of the stub, but not the code itself.

I also had a quick look at Kubernetes. I've used it before, it's a chance to practice my recently-acquired Go skills and there'll be a presentation on it later in the week. Fine, it's also the hottest thing right now...

I was expecting a large group of maintainers, I wasn't quite expecting this large. There's a set of videos for new contributors. There's even an agreement you have to sign before contributing - gives me the same feeling as signing an NDA to hear a startup idea.

Content: Be a chef

Following up the brief discussion on Jiro last week, Oz wrote this excellent piece on why you should use (the developers analogue of) a chef's knife and not a Thermomix.

https://blog.bradfieldcs.com/cutting-through-to-what-matters-48baf397806f

That summer at culinary school continues to pay dividends.

RC W2D4 - The product-minded engineer

Open source

Today's open source event was on contributing to Kubernetes (hereafter, k8s). First, I should mention how open source contributors own the copyright over their contributions. If the maintainers want to change the type of licence, say, all contributors need to agree. Thus having a agreement to assign the copyright beforehand as a requirement is actually quite sensible (so not like signing an NDA).

Julian shared his experience on making open source contributions, and he's clearly into k8s. Given the number of different areas, he suggested choosing between them by first information-gathering - attending the meetings and following conversations on Slack to get a sense what the issues are. Plus k8s has lots of clients in different languages, so you can contribute even if you're less familiar with Go. Listening to his suggestions definitely makes contributing more approachable.

WebAssembly

I had planned to spend more time with urllib3, then realized I was hosting the Front End Hack and Tell. Conveniently getting WebAssembly to run in the browser had been elusive, thus something to hack on. It turns out the instructions missed out including the edition to the Cargo.toml file (source here). The package will compile with the change, and running it in the browser simply requires a web server be set up.

It's not clear to me why a web server is needed (since it's just importing a set of instructions), but repeating this for my rocket game from last week got it to run on repl.it - it's playable here (repl here)! Navigate the rocket with arrow keys and shoot with the space bar. The rocket game was featured in David Beazly's mind-blowing talk, where he livecodes a WebAssembly interpreter in Python from scratch.

Content: Product management

The extra content last week was on data science, this week we feature product management.

https://blog.pragmaticengineer.com/the-product-minded-engineer

At the end of the day, we use software to solve business problems. The better we understand the context of the problem, the more impact our solution will have.

RC W2D5 - My first open source contribution

Open source

I made my first open source contribution! I have the perfect gif to celebrate.

I used to think that you become a better developer primarily through work experience. I've since recognized a number of similarities with open source - reading through an existing (and potentially large) codebase, a collaborative review process, making the code production-grade (via suite of build, test and style checks). I imagine iteration cycles are broadly faster in a work setting, though this also varies greatly between companies.

While a professional role provides steady income, open source offers interesting compensation models. Andrey focuses on work where the client would agree to publishing the code as open source. He recently completed a project for Keybase, and the code can be found here.

Is open source accessible? There might be a gap going from generating Fibonacci numbers to contributing to a production codebase, but perhaps the point here is that the gap is smaller than what most people imagine. It's certainly smaller than what I initially imagined.

Content: The cordon bleu kid

Now for the weekend content. I very much enjoyed this FT Weekend article about a 6-year old culinary connoisseur (enclosed below).

Content: Ever Or Not

I love how you can stroll in to your neighborhood bar/cafe in Berlin and there would be a DJ playing chill techno. A different model to getting bottle service at a Vegas EDM club with star DJs. This is for the former.

Content: Dr. Prajak Arunthong

Thais make the best ads. Try not to cry.

Content: Shoe Dog

I started listening to audiobooks on Audible at 2.5x speed, thanks to Ali Abdaal, and timely given the lockdown. Try it! You'd be surprised how you're still able to pick up (and even enjoy) the content.

It's changed my life. I'm a much more open-minded reader now, since the bar to reading is much lower. These days I particularly enjoy listening to biographies, and for this genre I highly recommend Shoe Dog by Phil Knight on the early days of Nike. The startup struggle is real, and how he stays true to his principles despite that is admirable.

But my hope was that when I failed, if I failed, I'd fail quickly, so I'd have enough time, enough years, to implement all the hard-won lessons. I wasn't much for setting goals, but this goal kept flashing through my mind every day, until it became my internal chant: Fail fast.



RC W3D1 - Fake it till you make it

On faking it

According to my Github profile, I'm an Arctic Code Contributor. Github has decided that one of my repositories is worthy of preserving for future generations, alongside the illustrious source code for Python, Go, Rust, Linux and React. My code will live in a "very-long-term archive designed to last at least 1,000 years".

The repo in question is a set of notebooks created to help people get started with pandas and scikit-learn, i.e. Python libraries for data manipulation and machine learning. I've come across references to it in French, Chinese and Korean.

At this point you might think I'm bragging. The funny thing is it all started as a bit of a ruse.

I wanted to get a job in data science. I thought presenting at a conference would be a selling point. I created a Meetup group. I hosted a social to get members. I got the members to attend my presentations. I used the presentations to get a speaker's slot at PyCon UK.

Hence the title for today's blog post. We all had a start somewhere, I'm not sure how I feel that's what's being remembered. I guess I have to work even harder now...

Open source

A thought that did not sit well over the weekend was my previous claim that open source is not as inaccessible as I initially thought. This holds true, but incomplete. My reference to the gap between generating Fibonacci and production-grade code alludes to this, but I hesitated to publish what I initially drafted. I was worried what I said would be seen as a discouragement.

It helps having worked in a production environment; some may need a bit of hand-holding to feel more comfortable with, say, the build-test-style suite. That said, I think this hand-holding process can be a helpful how-to guide. I'll ponder on this in the coming weeks.

Content: External validation

In that same post I also mentioned my fear of exposure, when in reality people tend to care too little than too much. The content for today, a Tim Urban post titled Taming the Mammoth, illustrates this beautifully.

https://waitbutwhy.com/2014/06/taming-mammoth-let-peoples-opinions-run-life.html

Being approved of by one type of person means turning another off. So obsessing over fitting in with any one group is illogical, especially if that group isn’t really who you are. You’ll do all that work, and meanwhile, your actual favorite people are off being friends with each other somewhere else.