All articles, alphabetical order
- “Solutions”
- 1, 6, 21, 107, … ?
- A Little Teaser. Keen Eyes? You’ll See! Follow the clues to reveal the hidden message.
- A Mini-Project to Decode a Mini-Language
- A Python syntax highlighter
- A race within a race
- A Subversion Pre-Commit Hook. How to install and test a simple Subversion pre-commit hook script.
- A tale of two upgrades
- A useful octal escape sequence
- A world without version control
- A yen for more symbols
- Accidental Emacs. A list of Emacs modes and tricks I use all the time but discovered by accident.
- ACCU 2013
- ACCU Bristol and Bath
- ACCU Conference 2008. A preview of ACCU 2008.
- An Exploration of the Phenomenology of Software Development
- An ideal working environment
- Angle brackets hurt my eyes
- 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.
- Anti-Social Build Orders. An article advocating zero-tolerance for anti-social build offences.
- Are List Comprehensions the Wrong Way Round?
- Attack of the Alien Asterisks. Unusual font rendering on Windows
- Awesome presentations
- Beware the March of IDEs!
- Big City Skyline Puzzle. Comments on a novel computer science puzzle. When machine resources are scarce, a compiled language offers precise control.
- BIG G little g - What begins with G? Capitalisation: Google or google?
- Bike charts by Google. Using the google chart API for something ... different
- bin2hex.py
- Binary Literals
- Binary search returns … ?
- Binary search revisited
- Blackmail made easy using Python counters. A programming puzzle and a discussion of Python's evolution.
- Books, blogs, comments and code samples
- Brackets Off! Thoughts on operator precedence.
- Browsing Python Documentation using the Python Sidebar
- Built in Type Safety?
- C++ Concurrency in Action. A glowing review of Anthony Williams' book on C++11's support for concurrency
- Casualties in the great computer shootout. An investigation into various dimensions of some speed benchmark programs.
- Charming Python
- Code completion for dynamic languages
- Code Craft
- Code in Comments. Don't comment out dead code, delete it!
- Code Rot. What happens when we stop tending to our code? It decays. This article investigates why.
- Collaborative documentation tools
- comp.lang.name? Python was named after a comedy troupe. This note discusses what makes a good name for a computer language.
- Complacency in the computer industry
- Computer Language Complexity
- Converting integer literals in C++ and Python
- Copy, load, redirect and tee using C++ streambufs. The C++ iostream library separates formatting from lower level read/write operations. This article shows how to use C++ stream buffers to copy, load, redirect and tee streams.
- Could a Python eat an elephant?
- Could OCR conquer the calligraphylion? A note on the challenge which Arabic script sets for optical character recognition engines.
- Creating a Temporary Subversion Repository
- Curling for web sites. A script using curl and bash to detect when a website status changes.
- Define pedantic
- DEFLATE: run-length encoding, but better. An investigation into the extended run-length encoder at the heart of the Zlib compression library.
- Desktop preferences
- Different Angles on Legacy Code
- Distorted Software. What does software look like? This article suggests that architecture diagrams get the emphasis wrong.
- Drawing Chess Positions. A follow-up article on scripting graphics.
- Drawing Chessboards. An article about creating graphics programmatically.
- Drawing Software Designs
- Driving down the road of innovation
- Elegance and Efficiency. Must elegant code be efficient? This article investigates.
- Emoticrab invasion, CSS breakdown. CSS positioning doesn't always work in a Feed reader.
- Entertaining Documentation
- Equality and Equivalence
- Erlang Erlang. A parallel processing problem.
- 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.
- Eurovision 2008 charts
- Ever wish you’d branched first? A short article describing how to branch a Subversion working copy based on the development trunk.
- Evolving Python in and for the real world
- Favicon. Why my favicon is a jigsaw piece.
- Feeding an internet addiction
- File shifting using lftp and rsync. Sometimes it's easier to shift files using the command line, rather than a GUI.
- Fixed Wheels and Simple Designs
- Fixing Compiler Warnings the Hard Way. Listen when your compiler grumbles, but sometimes you should ignore its suggestions.
- Fixing header file dependencies. A simple script to check header files are self contained
- fold left, right
- Folded files and rainbow code
- Friday Puzzles
- From __future__ import braces
- From CVS to Subversion
- From Hash Key to Haskell. A note on keys, characters, smileys, digraphs and Haskell.
- Fun with Erlang, ACCU 2008
- Functional Programming “Aha!” Moments
- Generating solutions to the 8 Queens Puzzle
- Generic documentation
- Getting started with Typo
- Good maths, bad computers
- Google Mail holiday auto-responder
- Google Reader
- Happy Mac
- 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.
- Hiding iterator boilerplate behind a Boost facade
- High altitude programming
- Hong Kong Supplementary Character Set
- Hosting for Life? TextDrive revived!
- How green you are
- How many restarts?
- How to Mirror a Subversion Repository
- Hunting down globals with nm
- iBlame Exchange
- Ignoring .svn directories
- Ima Lumberjack, (s)he’s OK. Gender-neutral technical writing using fictional names.
- In, on and out of boxes
- Inner, Outer, Shake it all abouter. Encapsulation is about allocating responsibility and easing utility rather than protecting data.
- Internal Subversion Externals
- Introducing Java
- Joined Output and the Fencepost Problem. Items and the spaces between them: some notes on the fencepost problem and joining up strings.
- Keyword Substitution - Just say No!
- Knuth visited, Brains Limited
- 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?
- 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.
- Lenient Browsers and Wobbly Tables
- Lexical Dispatch in Python. Dispatching to functions based on their names
- Life goes on
- Life on Canvas
- Life, user manuals, recursive pictures
- Lock but don’t but
- Longest common subsequence. An investigation into the classic computer science problem of calculating the longest common subsequence of two sequences, and its relationship to the edit distance and longest increasing subsequence problems.
- Look and Say Numbers
- Looping forever and ever
- Macros with halos
- Man or man(1)?
- map, filter, accumulate, lambda
- Martin Fowler on Soft Documentation
- Maximum of an empty sequence?
- Maybe we live in a scripting universe. Comments on Larry Wall's 11th State of the Onion address.
- Me, Myself and OpenID. Setting up a personal OpenID server using phpMyID
- Merging sorted streams in Python. Did you know that Python's for loops can have an else clause? Here's how it can be used in a stream-merging function.
- Message to Self. What’s this?
- Metablog. Reflections on 14 months of blogging, and why I'm no longer using Typo.
- Metaprogramming is Your Friend. An investigation into metaprogramming techniques used by lazy C, C++, Lisp and Python programmers.
- Mistargeted ads
- Mixing Python and C++
- More adventures in C++
- My (Test) First Ruby Program
- My First Typo Sidebar
- Narrow Python
- Negative, Captain
- Next permutation: When C++ gets it right. An investigation into a classic algorithm for generating the distinct permutations of a sequence in lexicographical order.
- No www, yes comments, no categories
- Nonce Sense. Cryptography
- Not my links
- Oberon, Cromarty, Lisa, Waggledance, Ariel
- OCR. Wrong characters, right meaning! (chuckles). When OCR gets the characters wrong but the meaning right.
- Octal Literals
- One svnserve, multiple repositories
- Ongoing Peer Review
- Ordered sublists. A brute force approach. A brute force solution to the longest increasing subsequence problem.
- Oulipo and the Eodermdrome challenge. The word EODERMDROME is itself an eodermdrome. Can you find any others?
- Overload Online
- Paging through the Manual using Access Keys
- Paralipsis
- Parsing C++
- Partitioning with Python
- Patience sort and the Longest increasing subsequence. How a simple card game provides an efficient algorithm for finding the longest increasing subsequence of a given sequence.
- Patience Sorted
- Pcl-cvs and Psvn Incompatibilities
- Perl 6, Python 3
- Perlish Wisdom
- Permission and Forgiveness
- Personal overnight builds
- Personal version control
- Pi seconds is a nanocentury
- Pitching Python in three syllables
- Polyominoes
- Posting from the command line using mtsend
- Power programming. What makes a language powerful? The programmer!
- Pragmatic fashion
- Printed C++ Journals
- Programming Nirvana, Plan B. Simon Peyton Jones discusses functional programming, Haskell, and promotes a radical route to programming Nirvana at ACCU 2008.
- Py2exe
- PyCon UK
- PyCon UK: statistics, pictures and perennial problems
- Python 2.5
- Python keyword workaround
- Python on Ice. A review of the Python 2, Python 3 language fork. Python 3 has met with some resistance. A moratorium on further changes to the language is being imposed, to smooth the transition.
- Python’s lesser known loop control
- Python, Surprise me!
- Readable Code
- Release then Test
- Removing duplicates using itertools.groupby. An interpreted Python session showing itertools in action.
- Retro-fitting coding standards
- Reversing Hofstadter’s Law
- Review of Pete Becker’s TR1 Book
- Review: Expert Python Programming
- Rewriting String.Left()
- Robot wars
- RTM vs STW
- Run-length encoding in Python
- Running Sums in Python. A Python program to generate the running sum of a series.
- Saving changes to read-only files
- Scatter pictures with Google Charts
- Seamless sequence output in Python 3.0
- Seeing with a fresh pair of ears
- Set.insert or set.add?
- Shameful Names
- Shells, Logs and Pipes
- Singly Linked Lists in C++
- Smart Pointers, Dumb Programmers. A note describing how a smart pointer tripped me up.
- So many feeds, so little news. So many feeds, so little news. A reflection on internet consumption.
- Soft Documentation. A software developer's investigation into documentation tools.
- Software development checklist += 3
- Sounds of the Tokyo Metro
- Source open, problem closed. An example of the open source advantage.
- Space sensitive programming
- Spam, Typo, Subversion Logs
- Spolsky podcast causes exercise bike incident
- Steady on Subversion. Despite the increasing popularity of distributed version control systems, I'm sticking with Subversion. Here's why.
- Steganography made simple
- 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.
- String literals and regular expressions. An article about string literals, escape sequences, regular expressions, and the problems encountered when mixing these together.
- Subversion 1.4
- Sugar Pie. Approximating pi by scattering sugar.
- Sums and sums of squares in C++. Reduce is a higher order function which applies a another function repeatedly to a collection of values, accumulating the result. Well known to functional programmers, reduce is also a standard C++ algorithm.
- svn help patch
- Synchronising Workspaces
- Syntactic Sugar
- tag.wordaligned.org
- Takewhile drops one
- Tell me about … Virtualization. An attempt to describe virtualization, why it's useful, and when to consider using it.
- Test driven development in Python
- The case against TODO. A neat label for work in progress or an easy way to disguise the flaws in a codebase?
- The Etch-A-Sketch User Interface
- The Granny—Stroustrup Scale
- The Heroic Programmer
- 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.
- The Maximum Sum contiguous subsequence problem. A stream-based solution to a classic computer science problem.
- The Price of Coffee. Offering something for nothing and getting paid nothing for it. Leap day ramblings.
- The Rings of Saturn
- The Third Rule of Program Optimisation
- The Trouble with Version Numbers
- There’s no escape??!
- Think, quote, escape
- Tony Hoare’s vision, car crashes, and Alan Turing. The highs and lows of Europython 2009. A personal review.
- 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?
- Top Ten Percent. The most efficient way to sort the top 10% of a collection.
- Top Ten Tags. Choosing the right algorithm to select the N largest items from a collection.
- Trac — not just a pretty interface
- Tracing function calls using Python decorators. Developing code to trace function calls using Python decorators.
- Turing Tests and Train Trackers
- Two star programming
- Undogfooding
- Version Control for Third Party Software
- What apple gets right
- What’s in the box?
- When computer applications reside on the web
- When web search results get read out of context
- When you comment on a comment
- White black knight then black white knight. Yet more on drawing chessboards
- Why Python programmers should learn Python
- Why Software Development isn’t Like Construction. What’s the best metaphor for software development? Steve McConnell prefers “construction”. I disagree.
- Wiki Markup. Wikis often invent their own markup syntax. A note on why I favour Markdown.
- Your computer might be at risk. A hard drive failed this weekend. Guess what, it hadn't been backed up. Here's how I went about recovering the data, and some thoughts on the future of computing in general and operating systems in particular.
- Zippy triples served with Python. How do you generate previous, this, next, triples from a collection. A stream-based solution in Python.