Oct 19, 2011

A Change

2011 has been an interesting year. Between the stupid earthquakes and the pressure of finishing my PhD, I have been silent because I have had nothing interesting to talk about (cf. twitter...).

But there is a light at the end, I'm on track to complete my thesis, 'Biologically Inspired Visual Control of Flying Robots', in December/January.

Christchurch, demolished, the old...

I'm excited to say that I have accepted a job at the Institute of Molecular pathology, in a research group studying the mechanisms of visual flight control in insects. Technology wise, it is a perfect fit; the experimental apparatus involves a multi-camera real-time flight tracking system and estimator for multiple targets in an augmented reality flight arena. It is open-source (ish), and python/numpy. Research wise, it allows me to investigate some of the assumptions and unknowns in the biomimetic control systems I implemented during my PhD. And it is in Vienna, 1st Feb, 2012!

Vienna, the new...

This is a career change for me. In the last few years it became increasingly clear that I was morally uncomfortable with the use of UAVs as weapons (drones). Previously I had consoled myself with there existing an ethical and philosophical difference between 'the application of research' and 'the action of research'. When It came to looking for work, and considering who to work for, this difference was often eroded.

It has also been particularly frustrating being in New Zealand for the last 12 months and watching our flaccid national response to the three recent challenges here (world cupearthquakerena oil spill).

Technology Tidbits

This post has been brought to you by procrastination.

Aug 10, 2008

A Frustrating Week

It all started so well. While Conduit was not accepted into GNOME 2.24, it was blessed as an external dependency for this cycle. That is great news for online service integration, and synchronization on the GNOME desktop. Congratulations to everyone who has helped me work on Conduit over these years, and well done to those who made it into the release set.

I was also able to make a 0.3.13 release incorporating those fixes and UI improvements I discussed last time around. After that things started to get worse.

Conduit 0.3.13.1 (and a hidden new feature)

  1. The disk holding my /home partition crashed. Taking a whole bunch of stuff with it. Like a good geek most of it was backed up or in a RCS, with the exception of my SSH key. FAIL.

  2. This meant I was unable to make the now customary Conduit x.x.x.1 brown paper bag release in time for the GNOME release. I do owe many thanks to our amazing sysadmin, Olav, for getting my new key onto the GNOME servers in a matter of hours.

  3. The disk crash took with it a week+ of my SOC work, making me very angry. To calm the tempers I thought I would work on the conduit-gio branch.

    1. Unfortunately I am not certain if this has much chance of success. I seem to have hit a regression/gvfs bug #547133.
  4. Then Christian Schlotter contributed a really nice Conduit dataprovider which supports sync/backup to Amazon S3.

    1. But this too seems blocked by a gvfs bug #547020.
  5. I then realized the implications of Webkit not being blessed as an external dependency. It means that I have two choices. Continue to drag around the pain that pthon-gtkmozembed brings, or move to using the unreleased (Py)WebkitGtk. I really encourage the WebkitGtk and PyWebkitGtk teams to make stable releases ASAP, to ensure they get into $DISTRO.

  6. Then I found that I could not push to bzr-playground.gnome.org anymore. It appears that it did not pick up my new SSH key. And loggerhead source code browsing is broken there.

  7. Completely fed up with software, I thought I would play with my new hardware toy. This is destined to replace the terrible, unsupported mess that was the Phytec phyCORE LPC3180 module for the purposes of my PhD work.

Beagleboard My brand new beagleboard (photo)

But then the FAIL continued. http://www.openembedded.org has been down for the last 5 days, making it impossible for me to check out the openembedded tree that supports this board. Does anyone know why it is down?

Feb 6, 2007

A Metadata Enabled GNOME

When Tracker was proposed for GNOME 2.18 I was one of its staunchest supporters, arguing that a GNOME wide unified metadata storage system would enable a richer desktop experience, and take GNOME beyond its competition. Tracker did not make the cut for GNOME 2.18, and will no doubt be proposed again for GNOME 2.20.

To help people see the potential of a GNOME desktop using Tracker I have been working on two projects for the past little while. Both of these are components of my larger vision of a metadata rich GNOME desktop. These initial attempts just focus on making tagging [1] a more consistent experience for all GNOME apps. Consider the examples and screenshots (for a file called nice) below;

  • Freedesktop emblem spec Allows desktop file managers and indexers to present a list of predefined emblems and tags to the user, and allows these predefined emblems/tags to be installed by third party developers in a consistent manner.

  • Tracker Nautilus Integration Nautilus using tracker for storage of all tags and emblems.

  • libtracker-gtk A bunch of gtk widgets that application authors can use to add tracker functionalit to their application.

Nautilus Tracker Intergration A Tracker connected GtkListStore A GtkEntryCompletion widget

Industrious individuals could probably find the bzr repositories for the above work, but at the moment it is not quite ready for prime time consumption. Stay tuned for more news.

[1] Terminology:

  • Tag: A descriptive keyword the user has associated with a file

  • Emblem: A tag with an associated image

Feb 19, 2007

Another Introductory Post

Hey Planet GNOME'rs

Thanks Jeff for putting me on Planet GNOME. My name is John Stowers and i'm currently splitting my time between a few things that might be of interest to people here.

  1. Synchronization and the GNOME Desktop I probably spend most of my free time hacking on Conduit, which is a synchronization application for GNOME. I hope to provide a (DBus) service where application authors can use Conduit for their individual sync and export capabilities, and don't have to keep reimplementing them in their own applications. Furthermore as a stand alone application I aspire to the ease of use of Apple's .Mac while supporting core GNOME technologies. Conduit pre 0.3.0 More information

    1. Conduit Website

    2. Slides and Video from a talk at Linux.conf.au

    3. The next release is scheduled for around the same time as the release of GNOME 2.18 and will support that favorite requested feature coughtomboy synchronizationcough. Thanks Boyd.

  2. A Metadata Enabled GNOME Im pretty excited about Tracker and the ability to move away from a folder centric GNOME. By embracing metadata, tagging, and a desktop indexer I think that we will leap past our competitors in terms of integration between applications. To this end I am hacking on;

    1. Nautilus + Tracker integration Injecting some love into the nautilus emblem functionality. Support tagging and attaching emblems (emblem = a tag with an image) from either nautilus or Tracker.

    2. Nautilus metadata integration Working with neilj on a nautilus-on-steroids + libtracker-gtk. Lets make metadata visible (in nautilus) and easy for application authors to add to their apps (libtracker-gtk)

    3. GtkFileChooser + Tracker Attach tags and notes at save time (whats the state of the filechooser extension spec?)

Other than that Im 23 years old, just finished a masters and electrical engineering at the University of Canterbury. Im really an electronics nerd so im also hacking on Albatross Unpiloted Aerial Vehicle. Im doing some traveling around Europe for the next few months and then probably starting a phD.

Nov 10, 2007

Another n810 Post...

Thanks to the awesome work of Thomas Van Machelen, Conduit has the beginnings of a port to the hildon ui. Whats more impressive, is that unlike me (who owns a n800), Thomas has been doing all this in an emulator. So anyone who reads this, consider this an endorsement of Thomas request for a developer discount code!

Conduit on n800

Conduit on the n8xx is something I have been looking forward to for a while. The first and most tangible benefits will be giving n8xx users the ability to use Conduits photo sync facilities to upload pictures to all the webservices we support. Beyond this however, there is much more to offer;

  • PIM sync using the evolution-python bindings on both the host PC and the n8xx

  • File sync to the n8xx without having to plug it into USB and transfer things via the memory card. By using conduits built in network sync (over python XMLRPC), sync is as easy as letting the PC and n8xx be on the same network.

Aug 20, 2007

Autotools Bribe With Beer

I have a love-hate relationship with autotools. I love the thought of a parallel universe where it doesn't exist, and hate it with the fiery passion of 1000 suns the rest of the time. I just released Conduit 0.3.3 and have had some reports of some build errors. The recurring build error is basically something like

Running intltoolize… Running aclocal-1.4… aclocal: configure.ac: 18: macro `AM_PATH_PYTHON’ not found in library

The problem is, by some combination of luck and ignorance I have never been able to reproduce this or fix it (on Ubuntu). The additional confusion is that Conduit is python, so I understand even less of the interaction of autotools. I therefor have an offer;

I will happily pay the person who fixes the horrible autotools setup in Conduit a crisp $NZ50. This cool cash can be redeemed from me in person at linux.conf.au, in cash or beer form, or I will buy the lucky person a piece of FOSS memorabilia (example) to that value.

That means fixing the above bug, deleting autofoo files that don't do anything, checking that the translation stuff is setup optimally and generally making it less shameful and easier to follow. The person will also receive additional love points if they implement a skeleton autotools setup for documentation and for themed application icons. Remember, I hate autotools this much...

Jan 22, 2009

Back into the swing of things

It has been a long time between posts, but I am back in New Zealand now, and vowing to get back on top of this blogging thing. I will post more in the coming weeks about my time in France with the ENAC crew, but I will start today small; by releasing some code I have been hacking on.

I wanted a small project to get back into the desktop development mindset after being in the embedded C (ARM 7 LPC2148) and OpenEmbedded (Beagleboard and Gumsix Overo) world for a while. I am also ecstatic that git was clearly the most popular DVCS in the recent survey, I really hope it provides the impetus for GNOME to move to a DVCS.

With that in mind I decided to use this small project to learn git. Firstly, github.com is the coolest thing I have ever seen. I am moving all of my projects (except Conduit) there, and using the pages and wiki features to document them as appropriate.

Facebook Notify

Facebook Notify is a small PyGtk application which monitors your Facebook profile and notifies you when it changes. Some would consider it a gross abuse of the GNOME notification area, but it keeps me out of the web browser, decreasing procrastination, thereby improving my productivity.

It notifies you when any of the following events occur;

  • One of your friends changes their status, profile picture, or profile details

  • You receive a friend request, event or group invitation

  • Someone writes on one of your friends walls

  • One of your friends is tagged in a photo

The code is a few days work, and nothing impressive. It does however contain a rather nifty deferred threaded network io system so to never block the GUI. I guess something similar could be done in C + libsoup + GTask, if one was allowed to arbitarily chain callback functions. I remeber seeing a bug and discussion about this somewhere.

The main bug is that WebKitGtk segfaults if you destroy the WebView after logging into Facebook. Not cool. Anyone know anything about this bug? Is anyone going to make an updated libwebkitgtk release soon?

So, please, fork my code. That way I have a real life example to practice merging from!

Jan 16, 2008

Back To Reality

Conduit 0.3.5: Enough Excuses

I am a terrible project maintainer. It has been a full 3 months since the last Conduit release, and I have run out of excuses. First I got distracted by online desktop shenanigans, then by Opensync and Ubuntu things. I got caught up in moving Conduit to GNOME SVN. Then I got distracted by JHBuild on windows. Finally I lost my nerve and went on holiday, not touching a computer for 3 weeks. Enough is enough!

The good news however is that there is no doubt in my mind that this is the best Conduit release ever. I'm using Conduit on a daily basis for a variety of tasks, and its looking really solid. Yes there are still some bugs, but thats life. So, no screenshots this time, just a list of shiny new features. Over the next few weeks I will be doing a series of "look what you can do with conduit" type posts, as this is probably the best way to demonstrate to folks what they can accomplish with a generic sync+conversion framework, with a focus on integration with the desktop environment and great support of online services!

  • Release Notes

  • Download

  • Report Bugs

  • Whats New

    • Move to GNOME SVN and Bugzilla

    • In memory mapping DB has been replace with sqlite based one. Should reduce memory usage during large sync's.

    • Restructure code layout to allow Conduit to be used as a library by other python programs.

    • Removed Gtk dependancy in core. Conduit command line can now be run without Gtk installed.

    • Added 'always up to date' infrastructure for automatic syncing.

    • Improved n800 support for syncing audio, video and photos to the device.

    • New AudioVideoConverter for transcoding media types (uses FFMPEG and/or mencoder)

    • Include Banshee support in configure.ac - from lool

    • Support data hashes in addition to mtimes as a means for detecting changes

    • Remove twisted dependency for network sync. Uses the built in python xmlrpc module

    • Use python logging module for better logging granularity

    • Make HAL easier to extend in dataprovider factories

    • Files that did not load correctly are shown in the preferences window to help debugging

    • Experimental maemo/hildon UI (Thomas)

    • Added iPod photos support

    • Write support in f-spot using its new dbus interface (Thomas)

    • Support tags in all datatypes (useful for images)

    • Incredible improvements in test coverage. 75% lines of core code tested (including close to 100% of the core sync engine)

    • RSS Feed source now supports video enclosures

    • Many many bug fixes as a result of test focus

As more people start to use conduit I am becoming more conservative and focusing a lot more on testing. One aspect of this is a machine I have set up that runs the test suite every time there is a commit. The other aspect is more regular releases. For the former look here, for the latter please test and give me feedback!

Team conduit is well poised for a 0.4.0 release to coincide with GNOME 2.22.

Holidays

It feels strange to be back at university after a solid 3 weeks of doing very little. I had the best summer holiday I have had in a long time. Considerable thanks must go to the weather in New Zealand, its great to finally have the good weather in December. Anyway here are some holiday snaps for those that are curious about what a summer Christmas/New Year in New Zealand looks like.

My Christmas Present My Christmas Present

Relaxing on the Jetty Relaxing on the Jetty

Sunset Sunset at the Bay Of Many Coves

Diving Hunter Gatherer

Oct 2, 2006

Beryl - The Compiz Fork

This post is a little rant on the compiz fork (beryl) and on forks in general.

When I hear people say that "the fork is good because the two goals are different" I bow my head in shame. David R wants the same things as Quinn, a rocking WM/DE.

Its sad that now the fork has "started" there is no going back (in the short term) - the projects will onlycontinue to diverge. Compiz has just gained a whole bunch of features in cvs (pane plugin, multi-head architecture stuff, support for metacity themes) and David has started being more active on the mailing list. Quinn and co. bought this fork on too quickly, sucumbing to every request on the compiz.net forums, and adding poor quality code and hacks all over the show. I mean there has not even been an official compiz release yet!, why fork, how many years did it take to get a solid DE and people are impatient over compiz, a young project with no official release?

If Quinn and co. would have cooled their jets for another month or so then this for wouldnt have happened. If there is a difference in the projects goals it is that one (compiz) has a BDFL that has a grander vision and quality for the project, and that the other (beryl) doesnt. Its a free for all.

About the GNOME dependancies - its only gconf. Quinn wrote a plugin to replace gconf (csm) but it was done in such a hackish way that it wasnt clean. I wish they would have just improved the csm plugin to the quality that it could be accepted upstream and then this whole fork rubbish could have been avoided.

If you read Davids latest comments you will see that he is concerned that the current changes in beryl (and by extrapolation most future changes) will be done in such a (hackish?) way to make them incompatible with upstream compiz.

Many of the plugins in beryl touch the core and are no longer implemented in a plugin type way. David offered an invitation for suggestions on how to improve the core APIs so that these beryl features could be implemented as plugins in a nicer way but no-one has stepped up and made said suggestions.

I guess its just easier to fork than it is to talk to a person these days.....

In essence beryl will be take take take and no give

That makes me sad

Jan 26, 2007

Bling to Get Excited About

Some interesting things have popped up in the FOSS world in the last few weeks. Some of you may have seen these, others may not;

Metacity with composite supportConduit status icon and detachable conflict window

Next → Page 1 of 10