Blog posts
Older (pre-2017) posts are primarily technical; newer posts are primarily non-technical. See this post for details.I don't update this often anymore. If I do, it's because I've written something that I don't want to submit to a real publication.
- A year of 200 books :: January 3, 2018
- What I wish I had known :: June 29, 2017
- A personal statement :: June 2, 2017
- A change of pace :: February 3, 2017
- Time-slicing photos with Python and ImageMagick :: May 15, 2016
- psycopg2 OFFSET performance with large tables :: April 23, 2015
- Showing only additions and deletions in git :: April 18, 2014
- Sudoku code: another encryption scheme :: October 6, 2013
- How not to check the validity of an email address :: September 2, 2013
- Simulating the night sky with CSS :: January 4, 2013
- Agora Octave: Update #11 :: October 27, 2012
- Agora Octave: Update #10 :: October 20, 2012
- Agora Octave: Update #9 :: October 15, 2012
- Agora Octave: Update #8 :: October 8, 2012
- Line numbering is actually surprisingly hard :: September 29, 2012
- Agora Octave: Update #7 :: September 22, 2012
- Agora Octave: Update #6 :: September 14, 2012
- Agora Octave: Update #5.1 :: September 11, 2012
- Agora Octave: Update #5 :: September 7, 2012
- Agora Octave: Update #4 :: August 31, 2012
- Agora Octave: Update #3 :: August 24, 2012
- Agora Octave: Update #2 :: August 17, 2012
- Agora Octave: Update #1 :: August 10, 2012
- SOCIS 2012 with Agora Octave :: August 3, 2012
- Pi code: an encryption scheme :: June 1, 2011
- First post :: April 22, 2011