Twelve Weeks at the Recurse Center
It's been four weeks since I finished my batch at the Recurse Center and I'm finally getting around to publishing what I did in weeks seven through twelve. I wrote about the things I did in my first six weeks here http://ryanriddle.github.io/six-weeks.html.
In weeks seven through twelve
- I added atomic transactions to my database using a rollback journal
- I added isolated transactions to my database using locks
- I learned Ruby does not have read-write locks
- I tried and failed to implement read-write locks in Ruby
- I learned how to use the system call fcntl to get locks on files and I gave a presentation on it
- I rewrote the isolated transaction code to use MVCC
- I learned about isolation levels
- I learned when and how to use condition variables and I used them to implement serializable, isolated transactions in my database
- I learned about concurrency models that do not rely on locking like software transactional memory
- I contributed to http://pump.io
- I hacked around with BEP44 for storing arbitrary data on the BitTorrent distributed hash table
- I played with a Clojure library called Overtone for making music
- I used React Native to create an Android app to help me catch the bus
There are also things I never got around to doing. When I started my batch I wanted to work on crypto, machine learning, and gpu programming. Looking back the things I wanted to do but didn't don't seem important. What's important to me is I learned a lot, I had fun, and I met great people. And the things I still want to do, like GPU programming, I can still do. I just have to make time. Never graduate!