After a wonderful week in England with family celebrating Christmas, Erica and I flew home to the East Bay. We were sat at Heathrow having a cup of coffee and I was thinking of what I occupy myself with on the plane ride over. Unfortunately, [Lernid](https://wiki.ubuntu.com/Lernid) hacking was out of the question as I had no net connection on the plane, so I got to thinking of something else. After some busy hacking time at 35,000 feet I am proud to show of the results of my labor: a little program called *Acire*.
Let me provide a bit of an introduction.
I love Python and I love PyGTK and as I have waxed lyrical about recently, I am passionate about how tools such as [Quickly](https://wiki.ubuntu.com/Quickly) are lowering the bar for opportunistic programmers to scratch their itch. The problem is, much as Python and PyGTK are incredible for writing apps, like any other tool they still need to be learned, and the best way to learn is by downloading, running and playing with code snippets. Traditionally this has involved finding scattered bits of sample code online and stuffing it into a directory. Not only do we download other people’s sample code but we often write our own little code snippets as we learn new parts of these tools, and these would be perfect to share with others. Unfortunately, many of us never end up putting them anywhere online. *Acire* is a first step in making this whole process easier.
Right now, *Acire* is a tool that allows you to browse snippets easily. It looks like this:
The combo box in the top left provides different categories of snippets. In the screenshot above you can see the general category `PyGTK`, but there is no reason why we can’t have sub-categories such as *PyGTK -> TreeViews*. When you select a category, the list underneath it shows all the current snippets. Clicking on a snippet not only loads the code in the view to the right, but also provides a simple description and location of the snippet underneath the code. You can then run the snippet by clicking the *Execute* button or copy the full code to the clipboard by clicking the *Copy* button.
To make snippets work in *Acire*, I have created some simple metadata tags that snippet authors should put at the top of the snippet in the code. Here is an example:
# [SNIPPET_NAME: Actions]
# [SNIPPET_CATEGORIES: PyGTK]
# [SNIPPET_DESCRIPTION: Demonstrates using Actions with a gtk.Action and gtk.AccelGroup]
To test this out I have already added this meta data content to all the examples from the [PyGTK Manual](https://www.pygtk.org/tutorial.html). This functionality already makes browsing available snippets, running them and looking at the code an absolute doddle.
I have just got in from a day of traveling, I am exhausted, and headed to bed. I will get the code online tomorrow and talk more about plans for *Acire*. 🙂