Reflecting back on 2017, the best thing I did was to quit a mediocre job and go to the Recurse Center. Goodreads says I read about 8,776 pages across 21 books. Got my US visa approved and had trips to NYC, Doha and Rajastan. Declared NYPL to be my favorite spot on the planet. Bike trips to Lepakshi and B.R Hills. Had a great year with my cute little nephew. Ditched Mac and bought a Dell XPS 13 with Linux on it. Got my The Emperor of All Maladies signed. Started cooking and running. Watched my BF get married. Watched Sarah Kay and Hans Zimmer live.
RC was definitely the most productive 3 months of my life. I learned more about life, programming, humility, people and the world in this sweet short time than any other time I can remember. I enjoyed almost all of this so much and it would be such a shame to not shout it out aloud. I wrote extensively about the experience in this blog What did I do at Recurse Center?
It was a good year indeed and I look forward to a bunch of things now.
Being overly attached to the things I work on makes me act and behave in ways much more harsh than I ever should. I joined Red hat late this year and I’ve been my professional worst. I was really pissed off to find a lot of rough edges on a project which had more resources than all the other companies I had ever worked on combined. I agree that it is not acceptable behavior from a senior engineer and I need to change. This is #1 priority for the new year.
The 4 social rules of RC are supposed to be lightweight guidelines. I hope to inculcate them in me a lot more deeply over the year.
This short conversational example from https://github.com/mroth/subtleist explains the gist of it.
I went through the paper An Incremental Approach to Compiler Construction by Abdulaziz Ghuloum and it had a profound impact on me.
The author presents a very approachable technique for building pedagogical compilers by starting with a tiny subset of Scheme - a language that can just accept integers and print it. The language incrementally grows into Scheme in 24 small steps which can be understood in isolation. Every step yields a fully working compiler for a progressively expanding subset of Scheme. Every compiler step produces real assembly code that can be assembled and executed directly by the hardware.
I started implementing the paper and the code is available on Github. The gaps in the paper convinced me to write an extended tutorial/book about the subject. Its only a very rough draft right now. Completing the book in such a way that an experienced programmer new to compilers will be able to use the book as primary reference to write a compiler of her own would be my second goal for the year.
3. A well typed nanopass framework
I watched a talk titled Writing a Nanopass Compiler by Andy Keep during a lazy afternoon at RC. The approach resonated a lot with me but the library is in Scheme - no types and static guarantees. The Scheme approach is to be honest very elegant and the API/macros look great. I am as biased as it gets when it comes to types. I really wanted to do it all over again in a well typed language.
Fear of failure is why I haven’t even applied for a PhD/MS program yet even though it is the first thought that goes through my head after I wake up most of the days. I’ve stalked professors from IUB, U. Washington, Glasgow and NEU more than I’d like to admit. The inability to do any typed functional programming in India and the mediocrity of day jobs exacerbate the problem.
If I go back to academia today, this is what I’d work on. I hope to get neck deep into this and see how much I can push through. As far as I could find, there is not much research in this space and there is possibility of some original work. My earlier attempts in Haskell didn’t really go well - I missed proper dependent types sorely. This might be the right opportunity to take the pill and move over to the promised land of Idris. There are a lot of known and unknown unknowns to be solved. Its a very hard problem that will push me harder than most other problems I’ve ever attempted. I’m excited.
I’m looking forward to awesomeness.