Posts for the 'Software' Category

  1. My Jenkins nginx proxy script

    Here is a very simple configuration for nginx to proxy Jenkins (the new name for the un-Oracle’d Hudson)

    server {
            listen   80 default;
            server_name  bld-master localhost;
            root /var/lib/jenkins;

            access_log  /var/log/nginx/jenkins.access.log;

            location / {
                    proxy_pass        http://127.0.0.1:8080/;
                    proxy_redirect    off;
                    proxy_set_header  Host             $http_host;
                    proxy_set_header  X-Real-IP        $remote_addr;
                    proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            }

    }
    By timc3 on the
    April 15th, 2011
  2. NetGrowl

    I needed to test sending growl messages to machines running Growl, using just Python.

    There was a problem trying to find scripts, old websites were not responding, and there was a distinct lack of being able to get anything off the group easily but I chanced upon a script that worked. Fearing that the site it is hosted on might also end up biting dust, I made my changes to the script and have uploaded it to GitHub:

    http://github.com/timc3/netgrowl

    So if you need to send Growl messages either from the command line or from within your Python project check it out.

    The original authors are detailed in the script.

    By timc3 on the
    October 2nd, 2010
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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