Oh boy, I'm starting to slip. When I don't take notes during the day, I don't post a new post at the end of the day. Gotta get back to it. Month one in NYC is complete!
On Thursday, Ken and I read through mutex.go to try and understand how Mutex's worked in Go. We were seeing weird results, but I think we've got it now.
I spent some time refactoring the client code, but my productivity has not been high. One thing I did implement was the Polyline Algorithm in Go, which served us no real performance benefit, but was interesting to code. The reason I looked into this, was because we were running into issues where we were seeing huge latency problems, and Ken finally realized the reason was because we were sending 5MB JSON dumps ten times a second, which is faster than our internet, which means we couldn't download the updates fast enough. Getting to this point was interesting though, lots of websocket debugging, which isn't easy. All of this would be quickly solved if someone on the Gorilla team implemented Websocket Compression.
On Friday, I didn't get much done. I had talked with the USDS back in January, and last week they reached out to me and asked if I'd like to interview. So on Friday, I did the interview. It went over pretty well. One interesting fact that I didn't know which was interesting was that browsers have a max number of parallel connections per domain. I also almost failed when I said that there were 128 IPs in a /32
... which is very much not correct. If you don't know what a /32
is or why this is funny, read about CIDR and check out this cheat-sheet. Thankfully, I caught myself after I got the verbal queue of "are you sure?". Maybe I would have had a chance if I asked IPv4 or IPv6 first, but I wasn't right in either scenario. Oh well.
Another question I got, which both the interviewer and I were skeptical on its practicality, but lead to some interesting discussion was "You’re in a competition for the slowest running program. Your program must run on a Commodore 64 (20 MBs ROM, 64Kbs of RAM) and turn on a light when it finishes. Last person to turn on the light wins, but if your program doesn’t halt, you lose." Something to think about, but I don't think I'd ask it in an interview in most scenarios.
Today (Saturday, Day 32) I'm going to a music hackathon, should be fun!
/Nat