The subtle art of punting.

Summer is nearly upon us, so it’s time to give some gentle instruction to the newbies on the subtle art of punting in Cambridge.

For the beginner:

  • We punt from the back here in Cambridge. This is not Oxford.
  • Lift the pole up, and drop it over the side. Gingerly lowering it in does not work. If the punt is moving forward you can pretty much drop it vertically.
  • You will immediately know whether it’s struck bottom, how deep it is, and whether your pole is caught in weeds, or has bounced off the concreted edges.
  • Do not use the pole as a paddle. That doesn’t work either.
  • Push. This requires some oomph. Try to stop pushing before you’re bent double.
  • Remove the pole from the bottom. If it’s weedy (going granchester way), the trick is to twist the pole as you pull, and it should come out easy. If it doesn’t, then let go and stay in the punt. The alternative is wet, and they give you a paddle.
  • Once you’ve pushed, got the pole back, and are moving, then you can use the pole as a rudder.

More advanced tips:

  • The angle at which you drop the pole in is quite important. Angle it away from the punt as you drop it to move towards the bank, and under the punt (yes, underneath your feet) to move toward the centre. This is why the beginners always end up going in circles.
  • Once you get confident, you’ll find that after dropping the pole, you can guide it pretty much one-handed, and face forward, not sideways. Quicker that way, and fewer splinters too.
  • When pushing (if facing forward), you can lean back quite a long way, it looks more stylish that being bent over, faster too.
  • No splinters with metal poles.

 

A Lexer.

Now that it’s debugged, here’s some source for a lexer, and associated testapp.

  • Matches literal tokens only at the moment, not regexps (which I leave as an exercise to the reader).
  • Has Ansi and Unicode and Ordinal (numeric versions).
  • Also has some nifty arbitrary size set handling code.
  • Is not optimised: Some of the list and transition handling is (relatively) slow compared to compiled lexers. Also an exercise for the reader.

Source code.

Screenshot: