Skip to main content

Tag: Python

Null objects for the win

So I’ve been watching a lot of OO refactoring screencasts and reading posts and I’m able to say I’ve implemented some of the advice I’ve heard. Life’s all about learning eh?

So the main example I want to talk about here is Null objects.

Null objects

In dynamic languages, and Ruby in particular1 the concept of the lack of something needs to be encapsulated. For example: you’re wrapping the database and no entry exists; what to you return? In Ruby it’s often nil but this is not great for app design. This nil will proliferate through your app causing errors in its wake (NoMethodError) and causing de-localised stacktraces. Another example is the concept of a guest user. How do you represent this? Subclass the normal User class? nil?! One way to combat this is to introduce Null Objects, where they look like a standard user but don’t respond to the methods in the same way.

Embedding Python in LaTeX

Combining Python with LaTeX is a powerful combination. It allows for arbitrary code to be executed which either gives the results of expressions, or can be used to embed programatically certain things e.g. the paths of files or images.

By downloading python.sty and including it in a usepackage block, python code can be run.

I was having trouble getting this to work as it seems I was using an invalid version of python.sty. The version linked above works as of the date of this post

Plotting unevenly gridded contour plots

Quite often at work I have to generate colour maps of certain things, which are generally not sampled evenly in coordinate space. I am also a huge fan of Python, so I thought to myself: can I combine these things? Well until now I didnt think you could. Matplotlibs contour plots require evenly spaced x and y points with z points to match. This is until I found a way

Adding module imports to iPython startup

I’m constantly opening an iPython interpreter and having to import my common modules (for me pyfits mostly).

The easiest way to import modules on iPython startup is to look in your

~/.ipython/ipy_user_conf.py

file which is a nice easy way to add python code into your ipython startup (as opposed to the ipythonrc file which is about colours etc.).

In the main function, just add a line such as

ip.ex("import pyfits")

This will allow custom code to be run at startup. In this case, iPython loads the pyfits module.