Blog Archive 2017 Love your bugs Nov 12 2017 Two kinds of feedback Jun 03 2017 2016 2015 in review Jan 05 2016 2015 Effective Learning Strategies for Programmers Oct 10 2015 2014 PS1 for Python3 Oct 23 2014 I’m joining Dropbox Oct 10 2014 Debugging with pstree Sep 21 2014 Rejected PyCon Proposals Sep 11 2014 Getting Started with Python Internals Aug 03 2014 The CPython Peephole Optimizer and You Aug 02 2014 Of Syntax Warnings and Symbol Tables Jun 11 2014 PyCon prep: import is a keyword Mar 16 2014 Reading EBNF Mar 16 2014 PyCon prep: `require` in Ruby Feb 16 2014 2013 Introduction to the Python Interpreter, Part 4: It’s Dynamic! Dec 03 2013 Introduction to the Python Interpreter, Part 3: Understanding Bytecode Nov 17 2013 Introduction to the Python Interpreter, Part 2: Code Objects Nov 15 2013 Introduction to the Python Interpreter, Part 1: Function Objects Nov 15 2013 Python Puzzle Solutions Oct 31 2013 A Python puzzle Oct 29 2013 Bug hunting Oct 15 2013 Python Bytecode: Fun with dis Aug 14 2013 Systematic Debugging Jul 24 2013 More side effecting Jul 02 2013 Side-effecting Assignment Jun 28 2013 New git tricks Jun 25 2013 Surprised by Stable Sort Jan 02 2013 2012 Some wacky shell scripting Dec 23 2012 Git add -p: The Wave of the Future Dec 18 2012