All articles, alphabetical order

  1. 1, 6, 21, 107, … ?
  2. A Mini-Project to Decode a Mini-Language
  3. A Python syntax highlighter
  4. A Subversion Pre-Commit Hook. How to install and test a simple Subversion pre-commit hook script.
  5. A tale of two upgrades
  6. A world without version control
  7. A yen for more symbols
  8. Accidental Emacs. A list of Emacs modes and tricks I use all the time but discovered by accident.
  9. ACCU Conference 2008
  10. An ideal working environment
  11. Animated pair streams. Another look at the functional programming problem of generating an infinite sequence of pairs. An example of using the Python Imaging Library to generate an animated GIF.
  12. Anti-Social Build Orders. An article advocating zero-tolerance for anti-social build offences.
  13. Are List Comprehensions the Wrong Way Round?
  14. Attack of the Alien Asterisks. Unusual font rendering on Windows
  15. Awesome presentations
  16. Big City Skyline Puzzle. Comments on a novel computer science puzzle. When machine resources are scarce, a compiled language offers precise control.
  17. BIG G little g - What begins with G?
  18. bin2hex.py
  19. Binary Literals
  20. Brackets Off! Thoughts on operator precedence.
  21. Browsing Python Documentation using the Python Sidebar
  22. Built in Type Safety?
  23. Casualties in the great computer shootout. An investigation into various dimensions of some speed benchmark programs.
  24. Charming Python
  25. Code completion for dynamic languages
  26. Code Craft
  27. Code in Comments. Don't comment out dead code, delete it!
  28. Collaborative documentation tools
  29. Complacency in the computer industry
  30. Computer Language Complexity
  31. Creating a Temporary Subversion Repository
  32. Curling for web sites. A script using curl and bash to detect when a website status changes.
  33. Different Angles on Legacy Code
  34. Distorted Software
  35. Drawing Chess Positions. A follow-up article on scripting graphics.
  36. Drawing Chessboards. An article about creating graphics programmatically.
  37. Drawing Software Designs
  38. Elegance and Efficiency. Must elegant code be efficient? This article investigates.
  39. Entertaining Documentation
  40. Erlang Erlang
  41. Essential Python Reading List. An essential Python reading list. I've ordered the items so you can pause or stop reading at any point: at every stage you'll have learned about as much possible about Python for the effort you've put in.
  42. Eurovision 2008 charts
  43. Ever wish you’d branched first? A short article describing how to branch a Subversion working copy based on the development trunk.
  44. Evolving Python in and for the real world
  45. Feeding an internet addiction
  46. File shifting using lftp and rsync. Sometimes it's easier to shift files using the command line, rather than a GUI.
  47. Fixed Wheels and Simple Designs
  48. Fixing Compiler Warnings the Hard Way. Listen when your compiler grumbles, but sometimes you should ignore its suggestions.
  49. Fixing header file dependencies. A simple script to check header files are self contained
  50. fold left, right
  51. Friday Puzzles
  52. From __future__ import braces
  53. From CVS to Subversion
  54. From Hash Key to Haskell. A note on keys, characters, smileys, digraphs and Haskell.
  55. Fun with Erlang, ACCU 2008
  56. Functional Programming “Aha!” Moments
  57. Generating solutions to the 8 Queens Puzzle
  58. Getting started with Typo
  59. Google Mail holiday auto-responder
  60. Google Reader
  61. Happy Mac
  62. He Sells Shell Scripts to Intersect Sets. The Unix command shell contains a lot of what I like in a programming environment: it’s dynamic, high-level, interpreted, flexible, succinct. This article shows the Unix tools in action.
  63. High altitude programming
  64. Hong Kong Supplementary Character Set
  65. How green you are
  66. How many restarts?
  67. How to Mirror a Subversion Repository
  68. Hunting down globals with nm
  69. iBlame Exchange
  70. Ignoring .svn directories
  71. Ima Lumberjack, (s)he’s OK. Gender-neutral technical writing using fictional names.
  72. In, on and out of boxes
  73. Internal Subversion Externals
  74. Introducing Java
  75. Joined Output and the Fencepost Problem. Items and the spaces between them: some notes on the fencepost problem and joining up strings.
  76. Keyword Substitution - Just say No!
  77. Koenig’s first rule of debugging. The problems caused by the C++ compilation model, dependencies and cryptic compile diagnostics. If an expert like Andrew Koenig can’t get it right, what hope for the rest of us?
  78. Launching missiles and other unhappy accidents. Launching a missile is an example of a dangerous programming side-effect. Bus accidents are used to motivate team-work.
  79. Lenient Browsers and Wobbly Tables
  80. Lexical Dispatch in Python. Dispatching to functions based on their names
  81. Life, user manuals, recursive pictures
  82. Lock but don’t but
  83. Look and Say Numbers
  84. Looping forever and ever
  85. Macros with halos
  86. map, filter, accumulate, lambda
  87. Martin Fowler on Soft Documentation
  88. Maybe we live in a scripting universe. Comments on Larry Wall's 11th State of the Onion address.
  89. Me, Myself and OpenID. Setting up a personal OpenID server using phpMyID
  90. Merging sorted streams in Python
  91. Message to Self. What’s this?
  92. Metablog
  93. Metaprogramming is Your Friend. An investigation into metaprogramming techniques used by lazy C, C++, Lisp and Python programmers.
  94. Mistargeted ads
  95. Mixing Python and C++
  96. My (Test) First Ruby Program
  97. My First Typo Sidebar
  98. Narrow Python
  99. No www, yes comments, no categories
  100. Nonce Sense. Cryptography
  101. Not my links
  102. Oberon, Cromarty, Lisa, Waggledance, Ariel
  103. Octal Literals
  104. One svnserve, multiple repositories
  105. Ongoing Peer Review
  106. Overload Online
  107. Paging through the Manual using Access Keys
  108. Paralipsis
  109. Parsing C++
  110. Pcl-cvs and Psvn Incompatibilities
  111. Perlish Wisdom
  112. Permission and Forgiveness
  113. Personal overnight builds
  114. Personal version control
  115. Pitching Python in three syllables
  116. Polyominoes
  117. Posting from the command line using mtsend
  118. Pragmatic fashion
  119. Printed C++ Journals
  120. Programming Nirvana, Plan B
  121. Py2exe
  122. PyCon UK
  123. PyCon UK: statistics, pictures and perennial problems
  124. Python 2.5
  125. Python keyword workaround
  126. Readable Code
  127. Release then Test
  128. Removing duplicates using itertools.groupby. An interpreted Python session showing itertools in action.
  129. Retro-fitting coding standards
  130. Reversing Hofstadter’s Law
  131. Review of Pete Becker’s TR1 Book
  132. Rewriting String.Left()
  133. Robot wars
  134. RTM vs STW
  135. Running Sums in Python. A Python program to generate the running sum of a series.
  136. Saving changes to read-only files
  137. Scatter pictures with Google Charts
  138. Seeing with a fresh pair of ears
  139. Shameful Names
  140. Shells, Logs and Pipes
  141. Smart Pointers, Dumb Programmers. A note describing how a smart pointer tripped me up.
  142. So many feeds, so little news. So many feeds, so little news. A reflection on internet consumption.
  143. Soft Documentation. A software developer's investigation into documentation tools.
  144. Sounds of the Tokyo Metro
  145. Source open, problem closed. An example of the open source advantage.
  146. Space sensitive programming
  147. Spam, Typo, Subversion Logs
  148. Stop the clock, squash the bug. Which is better, a clock which loses a minute a day or one which is stopped? An investigation into how we find and fix software defects.
  149. String literals and regular expressions. An article about string literals, escape sequences, regular expressions, and the problems encountered when mixing these together.
  150. Subversion 1.4
  151. Sugar Pie. Approximating pi by scattering sugar.
  152. svn help patch
  153. Synchronising Workspaces
  154. Syntactic Sugar
  155. tag.wordaligned.org
  156. Takewhile drops one
  157. Test driven development in Python
  158. The case against TODO. A neat label for work in progress or an easy way to disguise the flaws in a codebase?
  159. The Etch-A-Sketch User Interface
  160. The Granny—Stroustrup Scale
  161. The Heroic Programmer
  162. The Lazy Builder’s Complexity Lesson. A discussion of algorithmic complexity, and a demonstration of how the C++ standard library allows programmers to write code which is both concise and efficient.
  163. The Maximum Subsequence Problem. A stream-based solution to a classic computer science problem.
  164. The Price of Coffee. Offering something for nothing and getting paid nothing for it. Leap day ramblings.
  165. The Third Rule of Program Optimisation
  166. The Trouble with Version Numbers
  167. There’s no escape??!
  168. Too big or too clever? Steve Yegge says that, for large applications, size is an enemy best controlled by dynamic languages. Alex Martelli says a language can be too dynamic for a large application. Who's right?
  169. Top Ten Percent. The most efficient way to sort the top 10% of a collection.
  170. Top Ten Tags. Choosing the right algorithm to select the N largest items from a collection.
  171. Trac — not just a pretty interface
  172. Tracing function calls using Python decorators. Developing code to trace function calls using Python decorators.
  173. Turing Tests and Train Trackers
  174. Version Control for Third Party Software
  175. What apple gets right
  176. When computer applications reside on the web
  177. When web search results get read out of context
  178. White black knight then black white knight. Yet more on drawing chessboards
  179. Why Python programmers should learn Python
  180. Why Software Development isn’t Like Construction. What’s the best metaphor for software development? Steve McConnell prefers “construction”. I disagree.
  181. Wiki Markup. Wikis often invent their own markup syntax. A note on why I favour Markdown.
  182. Zippy triples served with Python. How do you generate previous, this next, triples from a collection. A stream-based solution in Python.