Books
I managed to read most of the books on my 2016 reading list (see below for the three that I’m rolling over into 2017), along with some new ones I picked up along the way:
L’Heure Bleue, or The Judy Poems
Elisa Gabbert I’ve come across Elisa’s poems over the past few years in DIAGRAM and coconut, so I ordered her new book as soon as I saw it come across my Twitter feed. The poems live partially inside the mind of Judy, a character in Wallace Shawn’s The Designated Mourner. They’re really extraordinary, and I’m planning to read the rest of Elisa’s books (French Exit and The Self Unstable) in 2017. Every once in awhile I read a book of poems that jump-starts my own writing, and this is one of them; I haven’t written a review of a poetry collection in awhile, but this one has been turning over in my mind enough these past couple of weeks that I may give it a go in the new year.
Sensual Math
Alice Fulton I picked this up shortly after my younger brother’s sudden death this summer. I enjoyed Fulton’s “fractal” poetry and found it really helpful, and this is another one that’s gotten me thinking about my own writing again (one of my goals for 2017 is to write more poems).
It Can’t Happen Here
Sinclair Lewis Except, as you know, it can and it did.
Machine Learning
Tom M. Mitchell This was required for the machine learning course I took at Georgia Tech this fall. The text is surprisingly clear and conversational, and I really enjoyed both the reading and the coursework.
Modern Mandarin Chinese Grammar
Claudia Ross and Jing-heng Sheng Ma Laura and I started learning Mandarin this year, so I picked up this book to go along with the texts assigned for the class we’re taking. I’m probably around an HSK2 level at this point (我会说一点点中文但是我的中文不好). I’m hoping to take the HSK4 exam in late 2017!
Here’s what I want to read in the coming year (starting with rolled-over books from 2016). As you’ll sort of see from my book and paper choices, my interests are mostly poetry (20th/21st century), philosophy (all kinds, though recently mostly ethics and philosophy of science), and computer science/tech (machine learning, information security, artificial intelligence, and programming languages, particularly functional and dependently-typed languages):
Structure and Interpretation of Computer Programs
Harold Abelson and Gerald Jay Sussman with Julie Sussman (Rolled over from 2016.) I wrote last year: “I’ve gotten about a third of the way through SICP twice; in 2016, my goal is to finish it.” Here’s hoping third time’s the charm!
Seven Concurrency Models in Seven Weeks
Paul Butcher (Rolled over from 2016.) For me, the hardest thing about learning Clojure was learning its concurrency primitives: atoms, agents, refs, and STM were unlike anything I’d ever used before. After writing Clojure for nearly four years and using it in a production web and iOS app, I’ve gained a deep appreciation for new ways of thinking about and writing concurrent applications. This book seems like it has a thing or two (or seven!) to teach me.
Purely Functional Data Structures
Chris Okasaki (Rolled over from 2016.) I read part of the paper (also on my 2016 list) before deciding to just focus on the book. While I was taking Algorithms: Design & Analysis, parts one and two on Coursera, I became interested in applying what I’d learned to functional programming languages like Clojure (as opposed to Java or Python, which I figure are the languages most students are using), which led me to Okasaki’s work.
Deep Learning: A Practitioner’s Approach
Josh Patterson and Adam Gibson We haven’t gotten too much into deep learning and deep neural network architectures in my coursework, so I’d like to dig into that in 2017. I gave a talk at this year’s EuroClojure that involved some work with DL4J, and I’d like to continue that kind of work in the new year.
Type-Driven Development with Idris
Edwin Brady I did some reading and work on Idris in 2016 (more under Papers, below), so I’m really excited to read Edwin’s book when it’s available next month.
Thoughtful Machine Learning
Matthew Kirk Ruby and ML are two of my favorite things! (I gave a talk on machine learning with Ruby at RubyConf this fall.) There’s not a whole lot of machine learning work being done in Ruby, so I’m interested to see what Kirk has in store.
Effective Java
Joshua Bloch As I’m getting the chance to write more Java at work, I’m re-reading this one to improve my code and better follow best practices. There’s a ton of great stuff in this book, and I wholeheartedly recommend it to anyone who writes Java (professionally or otherwise).
The Hacker Playbook 2
Peter Kim I’m taking an information security course at Georgia Tech in the spring, so I figured I’d do a little extracurricular reading (including this book on penetration testing). This is a bit of a follow-up to my earlier security reading (Hacking: The Art of Exploitation and Penetration Testing). My guess is that 90% of my interest in computer security has to do with the current political climate and 10% from watching too much Mr. Robot.
Ethical Hacking and Penetration Testing Guide
Rafay Baloch Another book on information security and penetration testing, though this one has a bit more in the way of process and ethics.
The Basics of Hacking and Penetration Testing (2nd Edition)
Patrick Engebretson The third in my trio of “how to hack stuff” books! There’s probably going to be a fair amount of overlap among them, but I want to be sure I have a thorough grounding in practice as well as theory.
Computer Security, Principles and Practice (3rd Edition)
William Stallings and Lawrie Brown Speaking of theory, this is the required text for my information security course.
Artificial Intelligence: A Modern Approach
Stuart Russell and Peter Norvig I’ve read bits and pieces of this as part of my machine learning and AI coursework, and I’d like to dig deeper in 2017.
Mindset: The New Psychology of Success
Carol S. Dweck I mentioned this book in another talk I gave at RailsConf in May. I read a couple of Dweck’s papers while preparing for that talk, and I think there’s a tremendous amount I can learn from Mindset for my growth as both an individual contributor and as a manager.
First, Break All the Rules
Marcus Buckingham and Curt Coffman I’ve heard good things about this book at each of the last three places I’ve worked, so it’s probably high time I read it.
Hume: An Intellectual Biography
James A. Harris I’ve been interested in Hume since I took an introductory philosophy course in college, and the reviews for this biography look pretty good.
The Culture Industry
Theodor W. Adorno I’ve also been interested in Adorno since college, and in fact read this exact book for a cultural studies class I took. This New Yorker article brought it back to my attention, and I think it’s overdue for a re-read.
A Billion Voices: China’s Search for a Common Language
David Moser This book was recommended by my Mandarin teacher, and I think it’ll be really interesting to see how modern Mandarin arose from a highly fragmented set of spoken languages and traditions.
Barely Composed: Poems
Alice Fulton Fulton is the author of Sensual Math, which I read this past year and really enjoyed. This is a more recent collection of hers, and I’m interested to see how her poetry has evolved over time.
The Nightingales of Troy
Alice Fulton This is a collection of linked short stories. I’m interested in this partly because I like her work, but also because I’m somewhat interested in writing short fiction, so I’m curious to see whether and how this will inform and provoke my own writing.
French Exit
Elisa Gabbert As mentioned, I read Elisa’s L’Heure Bleue, or The Judy Poems this year, and I’m excited to read her earlier work in 2017.
The Self Unstable
Elisa Gabbert These are lyric essays rather than poems. In the vein of my interest in Fulton’s work (that is, reading non-poetry as well as poetry by the same author), I’m curious to see how Elisa’s writing changes between these two modes and to discover what implications this could have for my own writing.
The Three-Body Problem
Cixin Liu This is the only novel on my reading list, but it’s been recommended to me by three completely separate groups of friends, so I’m expecting to really enjoy it. (It’s not that I don’t enjoy reading novels—I do—but they’ve been crowded out by my interests in poetry, philosophy, and computation over the past handful of years.)
The Voynich Manuscript
Raymond Clemens (Editor) The Voynich manuscript is a fascinating illustrated codex from the fifteenth century. I’ve been interested in ciphers and cryptography generally (more under Papers, below) and the Voynich manuscript in particular for years, and I’m so glad there’s finally an affordable reproduction. (Until Clemens’ edition, the only one available was roughly $250.00.)
Papers
I read almost all the papers I set out to read this year (see below for the two I’m rolling over into 2017). I was especially glad to have read all the Idris papers I set out to read in 2016. I even managed to become an Idris contributor!
Here are some extra papers I read in 2016 (mostly as part of the Georgia Tech OMSCS):
MIMIC: Finding Optima by Estimating Probability Densities
Jeremy S. De Bonet, Charles L. Isbell, Jr., and Paul Viola This is a paper on the MIMIC algorithm, which is a randomized optimization algorithm that takes into account the structure of the solution as it searches for optima. If you’re familiar with other RO algorithms but not MIMIC in particular, I think you’ll really enjoy this paper.
A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm
Martin Riedmiller and Heinrich Braun We learned about backpropagation in neural networks in my machine learning course. I discovered RPROP while digging through the ABAGAIL machine learning library, and discovered this paper while researching how the algorithm actually works.
Beyond Backpropagation: Using Simulated Annealing for Training Neural Networks
Randall S. Sexton, Robert E. Dorsey, and John D. Johnson We also covered simulated annealing in the randomized optimization portion of my machine learning class, and I was fascinated to discover that it can be used to train neural networks. This is one of my favorite machine learning papers that I came across this past semester.
Towards Fully Autonomous Driving: Systems and Algorithms
Jesse Levinson et al. Before the semester started, I took Sebastian Thrun’s Introduction to Machine Learning course. This paper is a great introduction to fundamental challenges in autonomous vehicle design (though slightly dated—it’s from 2011).
Confident Reasoning on Raven’s Progressive Matrices Tests
Keith McGreggor and Ashok Goel This is the first of three papers I read for Knowledge-Based AI, a course I took this fall as part of my master’s degree at Georgia Tech. The primary projects for the course centered around designing an AI agent that could solve Raven’s Progressive Matrices. This paper is the most recent of the three (2012) and introduces an algorithm for solving RPM problems that includes a calculation of confidence in the answer.
Two Visual Strategies for Solving the Raven’s Progressive Matrices Intelligence Test
Maithilee Kunda, Keith McGreggor, and Ashok Goel This is the next most recent of the three papers (2011) and covers both affine and fractal methods for solving RPM problems. (This paper appears in the citations for “Confident Reasoning,” which is how I found it.)
Addressing the Raven’s Progressive Matrices Test of “General” Intelligence
Ibid. Finally, this is the earliest of the three papers (2009, though I read the other two first) and covers applying the authors’ affine-extended algorithm to RPM problems.
Decipherment with a Million Random Restarts
Taylor Berg-Kirkpatrick and Dan Klein This paper applies a randomized optimization approach to the unsolved 340-character Zodiac cipher. I’ve been interested in classical cryptography and ciphers for awhile now, and the Z340 is one of the most famous unsolved cryptograms (it’s one of the FBI’s Cryptanalysis and Racketeering Records Unit’s top unsolved cases). I especially liked the way this tied into my machine learning coursework (in addition to MIMIC and simulated annealing, we also covered hill climbing with random restarts as part of the randomized optimization portion of the class).
Efficient Cryptanalysis of Homophonic Substitution Ciphers
Amrapali Dhavare, Richard M. Low, and Mark Stamp This paper covers efficient cryptanalysis of homophonic substitution ciphers generally and attempts to decipher the Z340 in particular.
Bayesian Inference for Zodiac and Other Homophonic Ciphers
Sujith Ravi and Kevin Knight This is another paper attempting to crack the Z340, this time using a Bayesian learning approach.
Finally, here the papers I want to read in 2017:
Out of the Tar Pit
Ben Mosely and Peter Marks (Rolled over from 2016.) This is a Fogus recommendation. It seems to mostly be “mutable state is the root of all misery,” and I’m curious to see where it will go.
Fundamental Concepts in Programming Languages
Christopher Strachey (Rolled over from 2016.) Another Fogus recommendation. I get the feeling I’m about to have a ton of knowledge dropped on me.
Concrete Problems in AI Safety
Dario Amodei et al. Given the level of concern about accidents and liability regarding autonomous vehicles (and, looking further ahead, from folks like Elon Musk and Stephen Hawking regarding general AI trying to murder us), AI safety seems like a thing worth learning more about.
TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems
Google Research Like the Millwheel paper, this wasn’t written by Google research generally; there are just way too many names for me to list. I haven’t gotten to dig too much into TensorFlow this year, and I’d like to rectify that in 2017.
Mastering the Game of Go with Deep Neural Networks and Tree Search
Google DeepMind Ditto the above note regarding attribution. I followed some of the news about AlphaGo’s victory over Lee Sedol back in March, but didn’t get a chance to read the paper, so it’s on my to-read list for the new year.
Everything You Always Wanted to Know About Synchronization but Were Afraid to Ask
Tudor David, Rachid Guerraoui, and Vasileios Trigonakis Synchronization is hard! Hopefully reading this paper makes it less so (for me, anyway).
Twenty Years of Attacks on the RSA Cryptosystem
Dan Boneh I’d like to learn more about electronic cryptography as part of my infosec reading this year (most of what I know is classical cryptography).
The Moral Character of Cryptographic Work
Phillip Rogaway This seems like a nice intersection of information security and philosophy, and hopefully has some salient tie-ins with the Ethical Hacking and Penetration Testing Guide, above.
Reflections on Trusting Trust
Ken Thompson “To what extent should one trust a statement that a program is free of Trojan horses?” Another intersection of information security and philosophy.
Bitcoin: A Peer-to-Peer Electronic Cash System
Satoshi Nakamoto I’m taking Machine Learning for Trading in the spring, which has piqued my interest in the intersection between computation and finance. Also, apparently everyone else on the planet has read this paper, so I figure I might as well, too.
Practical Optional Types for Clojure
Ambrose Bonnaire-Sergeant, Rowan Davies, and Sam Tobin-Hochstadt I find that Clojure has very few pain points, but after working in languages like Haskell and Idris (and, to a lesser extent, Java), dynamic typing feels like it might be one of them. (I’m also curious to find out how ideas raised in this paper might interrelate with those behind clojure.spec).
RRB-Trees: Efficient Immutable Vectors
Phil Bagwell and Tiark Rompf This paper examines relaxed radix balanced (RBR) trees, a new data structure for backing immutable vectors in Clojure.
A History of Haskell: Being Lazy with Class
Paul Hudak, John Hughes, Simon Peyton Jones, and Philip Wadler I’ve been doing a fair amount of functional programming this year (mainly Clojure with some Haskell and Idris), and I’d like to better learn and understand the design behind Haskell in the coming year.
Advances in Quantum Machine Learning
Jeremy Adcock et al. I know nothing about quantum computing, so hopefully reading this paper partially rectifies that.
Towards Design for Self-Healing
Alessandra Gorla I really enjoyed Carin Meier’s talk at EuroClojure 2016, which covered genetic programming and self-healing code in Clojure; she referenced this paper, so I’d like to read it to better understand how these principles could be applied to eventually write code that repairs itself.