Posts for the 'Software' Category

  1. Python plugin systems

    There is a lot of interesting information about creating plugin architectures using Python all over the web, but its in fairly disparate places. This is an overview of the documentation that I found as of April 2010.

    Firstly Dr André Roberge has some very interesting posts, as well as a talk at PyCon 2009 on Blip.tv entitled Plugins and monkeypatching: increasing flexibility, dealing with inflexibility. He is also the author of Crunchy which uses a plugin system. He goes on to write about his experiences in creating a plugin architecture on his blog, over 6 parts starting here on part 1.

    Marty Alchin, the author of Pro Django has an interesting couple of pages in that same book about creating a simple plugin system, and the snippet of code is on djangosnippets.com. He also has an excellent blog post about implementing a plugin architecture, it also talks about Django but is fairly non-specific.

    William E. Hart over 2009-2010 has also been researching Python Plugin Frameworks, his overview is on his blog and he is also the author of the PyUtilib Component Architecture. This was very recently released and so hasn’t gathered much momentum as of this post but looks very promising indeed.

    Zope. The big one is the Zope Component Architecture. I must admit, that looking into it I think its overkill, I don’t like the configuration utility or the overhead it introduces – just to use it requires a lot of extra Zope modules. However google for it if you are interested in learning further.

    Yapsy. Yapsy is interesting, looks extremely lightweight, has been around for a few years, is currently on version 1.7 and serves as a good starting point. It has no external dependancies.

    SprinklesPy. SprinklesPy is also very lightweight but I am not sure that development is active on it (2006 was the last mention of it being used that I found), or that it has anyone in the community using it (a benefit I believe if you are implementing a system that you are not creating yourself.)

    Trac is the one component architecture that frequently gets mentioned, and it has a very decent user base. However, ripping the plugin system out might be more work than is reasonable.

    Examples of Plugin use in the wild:

    Other interesting links:

    It is clear to me that there is no correct way of implementing plugins and you have to pick based upon the needs of your project, but this should serve as a good starting point. I will add and update this post as my knowledge grows.

    By timc3 on the
    April 22nd, 2010
  2. Using Hudson to build Sphinx documentation

    I have become quite the fan of both Hudson and Sphinx. At Cantemo we are using Hudson for Continuous Integration testing, and its a large improvement over buildbot which I was trying before.

    For documentation at the moment I am using Sphinx, a python based documentation generator. We require the documentation to be updated at the same time as the development and tests are built so it is becoming second nature to build documents soon after development is done.

    Sphinx allows the creation of documents in ReStructured Text and has build options for creating HTML, LaTeX, PDFs and other version of documents so I tied it into a Hudson build.

    Firstly you need a working Hudson installation. There are many tutorials on doing this that work fine, so please google for one. You will probably have the following requirements for following the rest of the steps:

    • Hudson Python plugin
    • pip installed for python
    • VirtualEnv installed for python

    Second you need a Sphinx project that can be built.

    1. Firstly create a new job in Hudson, call it what you want. I am using the free-style software project type.
    2. Now start filling in the details. I am going to check out from subversion (you can also use HG, Git or whatever.). The repo URL will be checked when you fill in the details, and you will have the option to supply username and password credentials. The user Hudson is running under on my Linux box has public/private key SSH authentication.

      An example of the URL is:

      http://your host/yourrepo/development/Documentation/Development/trunk
    3. Now create a build shell.

      cd $WORKSPACE
      virtualenv -q docs
      source ./docs/bin/activate
      pip install -q -E ./docs -r trunk/requirements.pip
      cd trunk
      sphinx-build -b html source build

      This is:

      • Change to the current workspace directory
      • Create a Python Virtual Environment called docs
      • Activate that environment
      • Use Pip to install the requirements held with the sphinx project
      • Change into the trunk directory
      • Build the HTML version of the sphinx documentation

      My screenshots show an extra step for Rsyncing the files to a remote host. This is because I want to publish the results of the build. The FTP and SCP plugin for Hudson are not so great so I prefer manually rsyncing as a build step for now.

    My Sphinx project is checked out above the source files, and in this location is a requirements.pip file for pip to use when installing into the Virtual Environment. This file is basically:

    sphinx
    Pygments>=0.8

    You could also put your project in here so that sphinx can auto-document modules, or put other requirements for PDF generation.

    Then try a build.

    By timc3 on the
    March 21st, 2010
  3. Postfix and Gmail

    I have been using Hudson as a continuous integration server for a short while now and I am super impressed. I have it running on Debian and is really quite feature-full.

    One thing that I did have a problem with was with the standard Debian 5 Java environment there was a problem using TLS for mail it seemed, and I didn’t just want to send stuff to gmail’s SMTP server all the time so I configured a local Postfix SMTP relay on another server.

    This guide, Send Mail Postfix Through Gmail’s SMTP On A Ubuntu LTS Server helped a lot – but be sure to read the comments as there are some helpful hints.

    So now I have it. Hudson running and sending email through my relay to my gmail accounts.

    More information on Hudson soon.

    By timc3 on the
    March 20th, 2010
  4. NewNewsWire

    I have posted about NetNewsWire many times on here before. Its been my favourite news reading application for a couple of years now (if not more) but recent development has severally hampered the usability of the software.

    It seemed to be when they changed it to support sync to Google Reader – not a bad idea by any means, but releasing the software before it was full tested and working was a huge mistake. Trying to push it to people before it was ready was an even bigger mistake.

    Now twitter & fb are full of messages about problems with the Mac OSX and iPhone version, and it really needs to be sorted out. I know its free now, but as I have said before I paid for it a long time ago and it worked, if its a question of money then release it as a paid version. Not too expensive ( VersionsApp – take note ) but working.

    Do not recommend it at the moment, which is such a pity as it used to be one of my favourite applications.

    By timc3 on the
    October 9th, 2009
  5. Google chrome OS

    Wow, Google have announced the release of the Google OS. Although it wasn’t entirely a shock its nice to see that they are promoting something from the ground up.

    http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html

    Looking forward to trying it out even if I don’t have a netbook.

    By timc3 on the
    July 8th, 2009
  6. Hilarious look at Adobe’s UI

    So what’s wrong with Adobe’s UI: Well this is a very funny tumbl log of plenty of comments of things that could be done better:

    adobe-logo.jpg

    http://adobegripes.tumblr.com/

    Things that particularly standout are issues with there cross-platform UI. Although praised by many as a good example, it just shows that some of the finer details are missed.

    Via UIEye.

    By timc3 on the
    January 29th, 2009
  7. UI design in the open

    This is just great:

    http://www.avc.com/a_vc/2009/01/redesigning-a-u.html

    A summary of the post that basically Bug Labs has hired IDEO to redesign their hardware user interface for BUGbase and to do it in the open.

    Updates on the design process can be sees at: Bug Blog, Bug Community, and the IDEO blog.

    By timc3 on the
    January 19th, 2009
  8. Working with SVN on OS X

    I use SVN (subversion) quite a bit, even at home to manage my own files, but recently I have been running the beta version for Versions by Sofa and Pico.

    It turned into an excellent way of using SVN, being very visual and supporting everything that I needed, but alas the Beta period ran out and they released Versions 1.

    Now I was all for buying this application, but the purchase price of 39 Euros totally puts my of. After all this is a nice to have, and only improves my life slightly. It just doesn’t seem worth the price – particularly when most software like this for OS X is about half the price (I would have easily decided to buy it for 20 Euros).

    So after deciding whether to hack it, not really an option any more as I like to have all paid for or properly licensed software on my machines, or search for something else I looked back at what I could use.

    SVN from the command line. So I started using this again, and I found myself checking in versions of things that are not ready and not having a nice overview of files. It works of course, but it didn’t suit my way of working since using versions – checking in some files, and generally knowing the status of projects that I am working on.

    Then I went back to the SVN plugin for Finder. This is ok, but more often than not the rendering of icons showing whether a folder is up to date or not stops working leaving me in the dark.

    Then I decided to check out textmate SVN integration. Its ok, but not really good enough, I don’t like the keybindings and the interface is not intuitive enough.

    Finally I came across the ProjectPlus plugin for Textmate. After installing just configure it in the preferences to work with what ever source revision system you use (Its supports SVN, Git, Mercurial, Svk & Bazaar), and you can see the state of what you are doing in the system.

    By timc3 on the
    January 10th, 2009
  9. 2008 Applications of the year

    So here are my most used OS X applications of the year, in no particular order:

    * Spotify. This is just an excellent music application, the speed with which the streams start is simply amazing and I don’t find that I get that many adverts in the way of the vast array of songs on offer.

    * Textmate. I probably use this more than any other application on the Mac, for me hands down the best text editor that I have ever used and I find more and more features in it everyday.

    * NetNewsWire Pro. Having all my RSS feeds in one place is really just what I need. Must remember to integrate it with FriendFeed.

    * Adium. Always there, some times a pain with XMMP but otherwise just awesome.

    * Python 2.5. Best scripting language by far, but then I am biased.

    All free (I did buy a license for NetNewsWire but you no longer have to) apart from TextMate which is more than worth the price.

    By timc3 on the
    January 9th, 2009
  10. This is awesome – Papervision

    This is really really awesome, and you have to really check it out for your self.

    MeWithAPet.jpg

    Its a little flash application that uses a webcam or other camera attached to your computer to project a little ‘Proto’ guy on top of a printed piece of paper. They have even got some code released for it.

    Check it out here with some images and video, but it really works better to try it yourselves:

    http://www.boffswana.com/news/

    By timc3 on the
    December 16th, 2008