Tips & tricks from my 4 months at Pythian

After working with Yanick Champoux on a few little Perl projects here and there, we finally met face-to-face at YAPC::NA last summer. A few months later, when I was looking for a co-op position, I immediately thought of Pythian.

They’re a mid-sized company in Ottawa that does database services. They’re the expert DBAs you hire if you don’t have your own (or enough of your own). Their in-house development team works on 2 major pieces of software: Support Track, a ticket tracking web application, and Avail, a server monitoring tool. I was hired to do quality assurance on these two systems over the winter semester.

A lot of the testing was manual, and I learned a bunch of new techniques for testing and debugging web applications. Because I did a bunch of little things while I was there, I wanted to share a bunch of little tips & tricks you might find useful if you don’t already know about them.

Testing/debugging tips & tricks

  • openssl s_server and s_client are a simple server and client included with the standard OpenSSL installation. If you need to see what your SSL server or client is doing, these provide the instrumentation you’re looking for. I used this extensively in my testing for a project adding SSL support to an HTTP client library – see also SSL Security in HTTP::Tiny.
  • telnet & netcat make a nice server/client pair for plaintext protocols like HTTP or memcached.
  • mtr is the best of ping and traceroute rolled into a single package.
  • perldoc -l will tell you which module is being loaded. Module::Versions::Report is also very helpful.
  • Symlinks are often used to provide a kind of versioning for a directory. To switch the symlink to the new target atomically, do: ln -s new-thing link-tmp && mv -Tf link-tmp link – the mv makes is atomic. If you try to give the symlink a new target with ln directly, it isn’t atomic. Use strace if you don’t believe me.
  • cp has a -s flag that makes symbolic links with a less confusing syntax than ln.
  • To follow a file being appended to while also being able to scroll back and forth, use less and press F to follow just like tail -f.
  • To make columnar data from various commands actually readable, pipe into column -t.
  • perltidy is your friend.
  • Just do echo 'alias fail="tail -f"' >> ~/.bash_alises already and be done with it!