Canonical Voices

Posts tagged with 'acire'

jono

Yesterday I announced that the new Severed Fifth website is launched on Monday, and with it will begin the second phase of the project and the build-up to the second album. For the first album I ran out of steam as I had just signed up to do The Art Of Community for O’Reilly and this sucked up all of my spare time. I don’t want to make the same mistake again.

As such, I am keen to hand over some of my projects to new maintainers who can be sure to give them the time and focus that they deserve. Today I want to share some of the next next steps I would ideally like to see to provide some food for thought, and appeal for volunteers to take the reigns in these projects:

Acire

Acire is the project I created to produce a solid library of Python Snippets to make it easier for new developers to get started with the platform. The project has been pretty popular and I am keen to see it continue to grow.

Right now Acire has a good feature-set to browse and run snippets, but I would love to see it continue to develop and include the following:

  • Dependency Checking – when running a snippet that requires a module that you don’t have installed, Acire should tell you and provide a one-click installation of the required module(s). Ed has a branch that he started, and this seems like a good start on this solution.
  • Async Documentation Checking – right now when Acire loads documentation links it stalls due to it’s non-async loading of the docs URL title. This causes significant problems if you are not connected to a network. It would be good to use GIO to solve this.
  • Better Searchability Of Snippets – I would love to see (a) a search box to do a text search across all snippets and (b) see a better taxonomy of snippets. There are two cases here: (1) I want a snippet that is part of a specific module, and (2) I want a snippet to help me with something (such as playing music). Today you can only search by category (which is mainly categorized by module name). This could be greatly improved.
  • Multiple Language Support – while I love Python, I would love Acire to be able to support multiple languages. I think the most elegant way to do this is to have a language pack for each supported language. Today you get Python content with the python-snippets package, but I would love to see c#-snippets as an example.

Would you like to take the reigns with Acire? If so, drop me an email to jono AT ubuntu DOT com.

Python Snippets

For Python Snippets I would like to grow a team of reviewers. Right now I approve all merge proposals and merge them into the branch (which is used to generate the daily PPA), but I think it makes better sense to distribute this work across a number of contributors that can communicate via a mailing list.

If you are interested in joining this team, drop me an email to jono AT ubuntu DOT com.

PyJunior

PyJunior was a project I wrote in a few hours while on vacation. The whole point is to make programming for kids much easier, and although simple, the program is off to a good start.

PyJunior really excites me. It holds so much potential to really introduce kids to Python and all the fun you can have with it. Some plans I have had for PyJunior include

  • Integrated Kid Friendly Docs – I have a dream for the documentation in PyJunior. You click the Help button and a window displays a list of Recipes. These are tutorial documents that outline how to do something fun such as make a calculator or a game. Each recipe not only explains how to write the code in simple kid-friendly steps, but also includes a button next to each code snippet that will paste it into the editor. I think it could be awesome to have a PyJunior Docs Team that produces these docs, and that the Recipe Browser would grab them off the Internet to save having to ship them with the app. This could really open up the world of programming for kids.
  • Sharing Programs – I includes a Share button in PyJunior that is switched off by default, but the goal was to create one-click way in which you can share a program with your friend. Kids need to be able to easily help each other with programs and this would provide a means for one kid to share his/her program with their friend who can then help them do something or fix a problem.
  • Interactive Tutorial – I would love to have written an animated interactive tutorial (like the first level of a modern game that explains how the controls work) that explains how the interface works.

Would you like to take the reigns with PyJunior? If so, drop me an email to jono AT ubuntu DOT com.

Moving On

If any of these projects sound exciting to you, do get in touch. I want to make sure that each has a competent maintainer who has the time to commit to the project, so I will go through a short evaluation for each. Thanks in advance to everyone who volunteers to help. :-)

Read more
jono

While I have been away this week on vacation there were 16 new submissions with new snippets! I utterly flabbergasted at how many of you good folks are contributing snippets.

I just reviewed all of these submissions and we now have a bunch of new snippets, including:

  • WebKit examples and a fantastic snippet for theming a table dynamically.
  • Handling CSV files.
  • A slew of new DesktopCouch snippets.
  • A bunch of new Clutter snippets.
  • A snippet that reads in OpenOffice.org spreadsheets (.ods files).
  • We also had some new categories started with new snippets for the inspect and gconf modules.

Thanks everyone for your rocking work! We now have 191 snippets in the library! :-)

Want to contribute? Go and find out how!

Read more
jono

Today Andy Breiner submitted a new Python snippet that demonstrates the use of the os module and Regular Expressions and looks at all the snippets in the Python Snippets library and counts how many people have submitted snippets. This is a great way of seeing how many people are contributing to the project. Well, I wanted to share the date with you folks:

  • Jim Bublitz: 15 snippets
  • Andy Breiner: 11 snippets
  • Jono Bacon: 10 snippets
  • Darren Worrall: 7 snippets
  • Simon Vermeersch: 6 snippets
  • Scott Ferguson: 4 snippets
  • Jurjen Stellingwerff: 4 snippets
  • Tim Voet: 3 snippets
  • Markus Korn: 3 snippets
  • Siegfried-Angel Gevatter Pujals: 3 snippets
  • Huntly Cameron: 3 snippets
  • Tiago Boldt Sousa: 2 snippets
  • Simon Edwards: 1 snippet
  • Scott James Remnant: 1 snippet
  • Benjamin Klueglein: 1 snippet
  • Rich Jones: 1 snippet
  • Oliver Marks: 1 snippet
  • John Turek: 1 snippet
  • Jonathan Riddell: 1 snippet
  • Josh Holland: 1 snippet
  • João Pinto: 1 snippet
  • Gonzalo Núñez: 1 snippet
  • Nick Veitch: 1 snippet
  • Evan Briones: 1 snippet
  • David D. Lowe: 1 snippet
  • Bruno Girin: 1 snippet
  • David Futcher: 1 snippet
  • Bastian Kennel: 1 snippet
  • Andre “Osku” Schmidt: 1 snippet

What a fantastic collection of top-tier rock stars! These people have come together to contribute to a total of 173 snippets as it stands today! The other snippets in the library don’t have a specific author attached (they came from documentation).

I am not only pleased with how some of these folks have really gone to town in creating snippets, but also just how many different people have contributed. That is fantastic.

Of course, you can be one of these people too! Go and find out how to contribute your Python snippets today!

Read more
jono

I am proud to announce the release of Acire 0.4!

This release includes the following new features

  • Documentation Links – many snippets now include links to relavent documentation links, and these are shown right within the Acire interface and just a click away.
  • Alphabetized Lists – the list of categories in Acire and the list of snippets in each category has now been alphabetized which makes navigating available snippets much easier.
  • HIG improvements – thanks to Matthew Pirocchi fo contributing a branch for helping Acire to fit in with the GNOME HIG better. The changes are subtle but really sleek. :-)
  • Number of snippets – the number of snippets that are currently available are now shown on the status bar.
  • Link to how to add snippets – Acire is nothing without python-snippets, so I added a link in the Help menu to this page which explains how people can contribute snippets.

These features are in addition these features which already exist:

  • Diverse Library Of Examples – via the Python Snippets library, Acire provides you with access to hundreds of available snippets spanning a wide variety of Python modules.
  • New Snippets, Daily – for Ubuntu users, our library of Python Snippets is available in a package that is updated daily. We are always adding snippets, and they will be delivered to your system effortlessly.
  • Browse Snippets Easily – snippets are organized into a series of categories which neatly map to Python modules. When you select a category you will see a list of available snippets.
  • View Code – code for snippets is just a click away, using full syntax highlighting and respecting your Monospace font settings on your desktop.
  • Test and Run Snippets – snippets can be run right from Acire with a single click. See a snippet running, browse the code and understand how it works.
  • Play With Snippets Your Way – looking at a snippet’s code and want to change something to see what happens? No problem, edit the code, run it and have fun. When you are done you can even save your snippet to a file on your computer.
  • Available In Your LanguageAcire is available in multiple languages, with many more with each release.

Installing Acire 0.4 is a doddle if you are running Ubuntu (Lucid and Karmic) or Debian, just follow the instructions. Right now Acire is not packaged for other distributions, but I would love it to be: drop me a line if it is and I will update the website with installation details.

At the heart of the Acire and Python Snippets project are Python snippets that are contibuted by the community. We need YOUR help to produce more snippets to help opportunistic developers really harness our wonderful platform. To contribute a snippet follow the guidelines here.

Read more
jono

With the goal of Acire and Python Snippets seeking to serve multiple distributions, it seemed appropriate to give it it’s own website. Thanks to the wonderful people over at wordpress.com for making my fave CMS available as a free hosted service, we now have our new website!

This was a result of a few hours work, so there is plenty to do on the site. Let me know what kind of content you would like to see.

Of course, the most important page is the how to contribute a snippet page if you…er…get my drift. ;-)

Read more
jono

With the new release of Acire just out I wanted to tell you folks a fun little story of an added benefit to Acire that I never envisaged when I came up with the idea for the app.

Yesterday I got an email from someone (I will keep the identify private) saying:

I’m trying to create an application but I can’t seem to find any way to embed a gnome-terminal into my app. I know you’re not offering support :) but if you have some spare time is there any chance you can point me to the documentation for that?

This happens a lot: someone wants to do something, so they ask for help over email or on another medium such as IRC. Unfortunately, I am usually pretty busy and typically don’t have the time to answer support questions. Before Acire existed I would have at most hunted out some links or possibly just the person to to go and ask on a particular forum or mailing list.

Now Acire exists, I just fired it up, selected Python VTE from the cateogries combo box, clicked on the snippet, and then cut and pasted the code into the email:

#!/usr/bin/env python

# [SNIPPET_NAME: Embed a VTE terminal]
# [SNIPPET_CATEGORIES: Python VTE]
# [SNIPPET_DESCRIPTION: Embed a VTE terminal in your application]

try:
    import gtk
except:
    print >> sys.stderr, "You need to install the python gtk bindings"
    sys.exit(1)

# import vte
try:
    import vte
except:
    error = gtk.MessageDialog (None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK,
        'You need to install python bindings for libvte')
    error.run()
    sys.exit (1)

if __name__ == '__main__':
    # create the terminal
    v = vte.Terminal()
    v.connect ("child-exited", lambda term: gtk.main_quit())

    # fork_command() will run a command, in this case it shows a prompt
    v.fork_command()

    # create a window and add the VTE
    window = gtk.Window()
    window.add(v)
    window.connect('delete-event', lambda window, event: gtk.main_quit())

    # you need to show the VTE
    window.show_all()

    # Finally, run the application
    gtk.main()

Job done. What made me smile about this was that Acire not only helps me, but it helped me help someone else too. Rocking. :-)

Read more
jono

Everyone’s favorite tool to browse Python snippets, run them, learn from them and incorporate them into your programs has been released! This new release has the following new features:

  • Translated – Acire has now got support for multiple languages, but this is very new so it needs your translations! Want to help make Acire rocking in your language? Easy. Go and contribute here!
  • Edit Snippets – Acire now allows you to edit the code inside a snippet and execute it within Acire itself.
  • Save Snippets – You can now save the snippets, even if they have been edited, into a specific file on your system.
  • Look and Feel Polish – a little bit of spit and shine has been applied to respect your chosen monospace font, use a scalable icon for docky and a few other little changes.

As I have mentioned before, I the snippets that Acire shows and the Acire itself are in two separate packages (this means that others can write viewers to view the snippets on other environments).

Installing Acire and it’s snippets is simple. First install the daily snippets PPA (this will deliver new snippets to your system on a daily bases):

sudo add-apt-repository ppa:python-snippets-drivers/python-snippets-daily
sudo apt-get update
sudo apt-get install python-snippets

Now install the Acire PPA:

sudo add-apt-repository ppa:acire-team/acire-releases
sudo apt-get update
sudo apt-get install acire

Right now packages are available for Ubuntu 10.04 Lucid Lynx and Ubuntu 9.10 Karmic Koala packages should be available soon.

We need your snippets!

The fuel that makes Acire rock is the library of snippets. To really get the most out of Acire and it’s library of snippets, we need you to contribute snippets that demonstrate something in Python. These snippets are really helpful in showing us all how a given Python modules works, and really helpful in lowering the bar to development. Here is how you can contribute a snippet!

Step 1: Grab the library

Just run:

bzr branch lp:python-snippets

Step 2: Create your snippet

A snippet should demonstrate a specific feature in a given module or in the Python language. This could include showing how to use a specific widget, a feature of that widget, or another function.

python-snippets is divided into sub-directories which outlines the theme of the snippets. You should pick the most appropriate directory to put your snippet it, and add it there. If a suitable directory does not exist already, create it and add it there.

Step 3: Add metadata

The way Acire pulls out the snippets is by detecting some specific metadata additions to comments at the top of the file You should now add the following meta data as comments to the top of the file:

# [SNIPPET_NAME: A Short Name For The Snippet]
# [SNIPPET_CATEGORIES: Category]  <-- see CATEGORIES file for existing categories
# [SNIPPET_DESCRIPTION: A single line description of the snippet]
# [SNIPPET_AUTHOR: Your Name <your@emailaddress.com>]
# [SNIPPET_LICENSE: An Open Source license (from the LICENSES file)]

Here is an example:

# [SNIPPET_NAME: Playing a Pipeline]
# [SNIPPET_CATEGORIES: GStreamer]
# [SNIPPET_DESCRIPTION: Construct and play a pipeline]
# [SNIPPET_AUTHOR: Jono Bacon <jono@ubuntu.com>]
# [SNIPPET_LICENSE: GPL]

You now need to add your file to your branch with:

bzr add your-snippet.py

Step 4: Propose it for merging

With your new snippet ready, it is time to propose it for inclusion in the main python-snippets library.

First, commit your changes to your local branch with:

bzr commit

Now push it to your own branch on Launchpad:

bzr push lp:~<your launchpad username>/python-snippets/<name of your branch>

As an example:

bzr push lp:~jonobacon/python-snippets/gstreamer-snippets

Now go to https://code.launchpad.net/python-snippets and you should see your branch listed there. Click on it and when the branch page information page loads click on the Propose for merging link. Add a short description of what you examples do in the Initial Comment box and then click the Propose Merge button.

We will then review the merge and if it looks good, add it to python-snippets and it will be delivered to Acire users in the next daily package upload. :-)

Read more
jono

As I have blogged about recently, I have been really getting into the idea of enabling opportunistic developers to get to grips with writing applications for the Open Source desktop as easily as possible. This has including raving about the awesome Quickly and I recently wrote Acire, a simple program for viewing a library of Python Snippets that can be used to read, learn from, run and help lower the barrier for making your own programs rock and roll.

Back at UDS there was an awesome snippets party which resulted in many examples on this wiki page, but it is just a webpage and of course you can’t see them in Acire, you can’t run them and you can’t play with them right away. I started moving some of them over to the Python Snippets library but I need your help! This is as simple as putting together some example programs, adding some information at the top in the comments and submitting them for review.

If we can get these (and other!) snippets included, it will be another awesome resource to enable our awesome developer community to make fantastic apps that make our desktop rock that little bit more.

Interested? Intrigued? Want to help make the goodness happen? Well, read on…

Creating Snippets

Before you create your snippets, I recommend you install the nice and fresh Acire 0.2.

Here is how you go about creating the snippets.

Step 1: Grab the library

Just run:

bzr branch lp:python-snippets

Step 2: Create your snippet

A snippet should demonstrate a specific feature in a given module or in the Python language. This could include showing how to use a specific widget, a feature of that widget, or another function. The list of snippets in the Quickly Snippets page is ideal for porting over to snippets!

python-snippets is divided into sub-directories which outlines the theme of the snippets. You should pick the most appropriate directory to put your snippet it, and add it there. If a suitable directory does not exist already, create it and add it there.

Step 3: Add metadata

The way Acire pulls out the snippets is by detecting some specific metadata additions to comments at the top of the file You should now add the following meta data as comments to the top of the file:

# [SNIPPET_NAME: A Short Name For The Snippet]
# [SNIPPET_CATEGORIES: Category]  <-- see CATEGORIES file for existing categories
# [SNIPPET_DESCRIPTION: A single line description of the snippet]
# [SNIPPET_AUTHOR: Your Name <your@emailaddress.com>]
# [SNIPPET_LICENSE: An Open Source license (from the LICENSES file)]

Here is an example:

# [SNIPPET_NAME: Playing a Pipeline]
# [SNIPPET_CATEGORIES: GStreamer]
# [SNIPPET_DESCRIPTION: Construct and play a pipeline]
# [SNIPPET_AUTHOR: Jono Bacon <jono@ubuntu.com>]
# [SNIPPET_LICENSE: GPL]

You now need to add your file to your branch with:

bzr add your-snippet.py

Step 4: Propose it for merging

With your new snippet ready, it is time to propose it for inclusion in the main python-snippets library.

First, commit your changes to your local branch with:

bzr commit

Now push it to your own branch on Launchpad:

bzr push lp:~<your launchpad username>/python-snippets/<name of your branch>

As an example:

bzr push lp:~jonobacon/python-snippets/gstreamer-snippets

Now go to https://code.launchpad.net/python-snippets and you should see your branch listed there. Click on it and when the branch page information page loads click on the Propose for merging link. Add a short description of what you examples do in the Initial Comment box and then click the Propose Merge button.

We will then review the merge and if it looks good, add it to python-snippets and it will be delivered to Acire users in the next daily package upload. :-)

I really appreciate any time you can spend in contributing snippets!

Read more
jono

Acire 0.2 Released

I am pleased to announce the second release of my little project to browse, read, run and learn from a library of Python examples. This release brings us:

  • Examples now have syntax highlighting and use a better font for reading code.
  • An awesome new icon designed by the ever-affable Martin Owens.
  • Various bug fixes.

You can grab it from the Acire PPA by running these simple commands:

sudo add-apt-repository ppa:acire-team/acire-releases
sudo apt-get update
sudo apt-get install acire

For Acire to be in any way useful you will need to grab the Python Snippets library. Subscribe to the PPA and get a fresh batch of Python Snippets daily! Subscribe by just running these commands:

sudo add-apt-repository ppa:python-snippets-drivers/python-snippets-daily
sudo apt-get update
sudo apt-get install python-snippets

Rock and roll!

UPDATE: It turns out we had a few dependencies missing. You can fix this with:

sudo apt-get install python-gtksourceview python-gnomeprint

We will get the packaged fixed soon, but this will get you up and running. Thanks for the feedback, folks!

Read more
jono

A few weeks back I blogged about my new program Acire: a simple little tool that provides a library of Python examples called snippets that outline how to do specific taks. With each snippet you can browse the code, run it and otherwise learn how it works in order to help you get to grips with writing your own programs as quickly and easily as possible.

I wrote Acire to augment Quickly in lowering the bar for Opportunistic Programmers to get involved in writing applications. For more on opportunistic programmers see my article Unchaining the Opportunistic Programmer.

So core ethos in my mind behind Acire is:

Provide a regularly, automatically updating diverse range of Python examples, all available within Acire, which allows you to browse, view, run and learn from them.

Meeting this goal is broken into two parts: providing the viewer (Acire) and providing the library of examples (Python Snippets).

The Acire code is now available at http://www.launchpad.net/acire. If you want to give it a shot, make sure you have python-vte installed from your distribution and also install the python-snippets PPA (see below) and then run:

bzr branch lp:acire

Then run:

cd acire
quickly run

UPDATE: A PPA of the first Acire 0.1 release is now available. Just run these commands to install it:

sudo add-apt-repository ppa:acire-team/acire-releases
sudo apt-get update
sudo apt-get install acire

Thanks to Nathan Handler for setting this up!

Acire will show you your library of snippets and you can click on each one and click the Execute button to run it:

Let’s now discuss the snippets. I created a new Launchpad project at http://www.launchpad.net/python-snippets which is intended to provide a library of snippets. I will be encouraging the community to provide snippets for this library (see below), and I have deliberately kept the library as a seperate project from Acire which is useful for getting the library without getting Acire and also if someone wants to write an alternative to Acire (such as a KDE port).

My friend and yours Nathan Handler has created a daily PPA of the library for Karmic and you can install it by just adding these commands:

sudo add-apt-repository ppa:python-snippets-drivers/python-snippets-daily
sudo apt-get update
sudo apt-get install python-snippets

Once you have done this, the latest Python Snippets library will be delivered right to your computer and ready for browsing, learning, and playing with right from within Acire!

We Need Your Snippets!

So right now we have an awesome app for viewing with and playing with snippets, and a means of delivering them to hungry hackers, but what we now need is more snippets. Adding a snippet is as simple as following these steps.

Step 1: Grab the library

Just run:

bzr branch lp:python-snippets

Step 2: Create your snippet

A snippet should demonstrate a specific feature in a given module or in the Python language. This could include showing how to use a specific widget, a feature of that widget, or another function.

python-snippets is divided into sub-directories which outlines the theme of the snippets. You should pick the most appropriate directory to put your snippet it, and add it there. If a suitable directory does not exist already, create it and add it there.

Step 3: Add metadata

The way Acire pulls out the snippets is by detecting some specific metadata additions to comments at the top of the file You should now add the following meta data as comments to the top of the file:

# [SNIPPET_NAME: A Short Name For The Snippet]
# [SNIPPET_CATEGORIES: Category]  <-- see CATEGORIES file for existing categories
# [SNIPPET_DESCRIPTION: A single line description of the snippet]
# [SNIPPET_AUTHOR: Your Name <your@emailaddress.com>]
# [SNIPPET_LICENSE: An Open Source license (from the LICENSES file)]

Here is an example:

# [SNIPPET_NAME: Playing a Pipeline]
# [SNIPPET_CATEGORIES: GStreamer]
# [SNIPPET_DESCRIPTION: Construct and play a pipeline]
# [SNIPPET_AUTHOR: Jono Bacon <jono@ubuntu.com>]
# [SNIPPET_LICENSE: GPL]

You now need to add your file to your branch with:

bzr add your-snippet.py

Step 4: Propose it for merging

With your new snippet ready, it is time to propose it for inclusion in the main python-snippets library.

First, commit your changes to your local branch with:

bzr commit

Now push it to your own branch on Launchpad:

bzr push lp:~<your launchpad username>/python-snippets/<name of your branch>

As an example:

bzr push lp:~jonobacon/python-snippets/gstreamer-snippets

Now go to https://code.launchpad.net/python-snippets and you should see your branch listed there. Click on it and when the branch page information page loads click on the Propose for merging link. Add a short description of what you examples do in the Initial Comment box and then click the Propose Merge button.

We will then review the merge and if it looks good, add it to python-snippets and it will be delivered to Acire users in the next daily package upload. :-)

I am really keen to see snippets on pretty much everything and if you want to help, a great place to start is converting the Quickly snippets page over to real, runnable snippets for python-snippets. Let’s roll!

Read more
jono

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 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 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. 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. :-)

Read more