Day 2: Read Issues and Learned About Multireader
😴 Mood: sleepy and existentially pondering the expanse of time that I have to self direct my learning
🎵 Soundtrack: peaceful piano playlist
📚 Reading Github Issues
Before starting this sabbatical I read André Arko’s blog post “How to Contribute to Open Source or: From No Experience to the Core Team in 15 Minutes Per Day”. One of André’s suggestions is to read everything, including every single open issue. He suggests chipping away at this for 15 minutes a day. Despite reading this blog post back when he published it in 2016, this point has stuck with me.
😱 Go has over 5k open issues. While I don’t expect to get through them anytime soon, I did start making my way through them.
I read:
- Every issue that was opened in the last 24 hours
- The most recent open issues related to the net package
- Every open issue that references “cloud foundry” …now I am realizing that I forgot to search “cloudfoundry” and I realize that I missed some. I will check in with those tomorrow!
Here is what I found when reading those issues:
- Some issues are fixed very quickly! I thought they might seem like easy bugs for me to reproduce and fix, but within a couple hours of opening someone else had already submitted a fix.
- I found two that are about documentation that I might take a look at later:
1,
2. One of them is even commented
on by @domdom82, a
partner in crimefellow contributor in the Cloud Foundry Foundation. - I found three that would require much bigger changes, but I actually understood (at least a little) what was going on and why the change was wanted: 1, 2, 3.
- I found one that I think we ran into with gorouter. We decided that golang was doing the right thing for generic clients/servers, but we added a fix for it in gorouter for our customers.
🎥 Watched: “Asynchronous Networking Patterns”
After I consumed as many github issues as possible without my eyes glazing over I moved on to a different format for learning. Videos! I searched youtube for videos about the net package and I found a great one from Filippo Valsorda, a golang contributor whom Eli Wrenn and I are kinda obsessed with.
The video is “GopherCon 2018: Filippo Valsorda- Asynchronous Networking Patterns”.
The talk covered:
- A dive into the net package by making a simple server and proxy by using only the primatives.
- How goroutines differ from event loops
- At one point Filippo said something like “you don’t want to fatal here, because that would destroy all of the other connections”. Yup, this is a bug I fixed once.
- Talked about SNI, which is something a team recently PRed into our TCP Router system.
- Multireaders 😲
✏️ Writing More Examples!
I started writting more examples for more code in the net package. Today I did IpAddr and TCPAddr. I didn’t submit today because I want to add more for UDPAddr, UnixAddr, and HardwareAddr at the same time. These examples have been a fun way to explore parts of the net package that I haven’t seen before.
🐈 Miscellaneous Learnings
- vim:
"+y
will yank things from vim to my normal paste buffer - vim:
gq
will wrap highlighted lines. Perfect for writing blog posts like this one. - go:
%q
in afmt.Printf
will print the string with quotes around it - I love clear communication and I saw these linked in the gopher slack