<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nerd on John Stowers</title><link>https://johnstowers.co.nz/tags/nerd/</link><description>Recent content in Nerd on John Stowers</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 16 Nov 2020 21:05:00 +0000</lastBuildDate><atom:link href="https://johnstowers.co.nz/tags/nerd/index.xml" rel="self" type="application/rss+xml"/><item><title>FreemooVR and LocustVR</title><link>https://johnstowers.co.nz/2020/11/16/freemoovr-locustvr/</link><pubDate>Mon, 16 Nov 2020 21:05:00 +0000</pubDate><guid>https://johnstowers.co.nz/2020/11/16/freemoovr-locustvr/</guid><description>A friendly fork of FreemoVR, and the first VR system for freely walking locusts</description></item><item><title>FreemoVR - Virtual Reality for Freely Moving Animals</title><link>https://johnstowers.co.nz/2017/08/28/freemovr/</link><pubDate>Mon, 28 Aug 2017 21:05:00 +0000</pubDate><guid>https://johnstowers.co.nz/2017/08/28/freemovr/</guid><description>A virtual reality system for freely moving flies, fish and mice</description></item><item><title>Year One at Loopbio</title><link>https://johnstowers.co.nz/2016/12/22/loopbio-year-one/</link><pubDate>Thu, 22 Dec 2016 21:05:00 +0000</pubDate><guid>https://johnstowers.co.nz/2016/12/22/loopbio-year-one/</guid><description>A year on from Another Change: the apparatus was meant not to be the hard part, so we made it ours.</description></item><item><title>Another Change</title><link>https://johnstowers.co.nz/2015/12/14/another-change/</link><pubDate>Mon, 14 Dec 2015 21:05:00 +0000</pubDate><guid>https://johnstowers.co.nz/2015/12/14/another-change/</guid><description>Co-founding Loopbio, and the observation that led me there.</description></item><item><title>Installing OpenCV 3 on Ubuntu 12.04</title><link>https://johnstowers.co.nz/2015/07/27/opencv3-ubuntu1204/</link><pubDate>Mon, 27 Jul 2015 17:05:00 +0000</pubDate><guid>https://johnstowers.co.nz/2015/07/27/opencv3-ubuntu1204/</guid><description>Compiling OpenCV 3.0 on Ubuntu 12.04</description></item><item><title>On Abstractions, Simplicity, and Positioning</title><link>https://johnstowers.co.nz/2014/07/10/abstractions-and-positioning/</link><pubDate>Thu, 10 Jul 2014 21:05:00 +0000</pubDate><guid>https://johnstowers.co.nz/2014/07/10/abstractions-and-positioning/</guid><description>The most important design principle is minimising the cost of the inevitable failure of your abstraction - and how Python, OpenCV, Arduino, GNOME Shell and ROS each position themselves around it.</description></item><item><title>Operating a Many-camera Real-time Tracking System</title><link>https://johnstowers.co.nz/2014/06/10/many-camera-tracking/</link><pubDate>Tue, 10 Jun 2014 21:05:00 +0000</pubDate><guid>https://johnstowers.co.nz/2014/06/10/many-camera-tracking/</guid><description>Patterns for managing a real-time multi-camera tracking setup</description></item><item><title>FlyMAD - The Fly Mind Altering Device</title><link>https://johnstowers.co.nz/2014/05/27/flymad/</link><pubDate>Tue, 27 May 2014 21:05:00 +0000</pubDate><guid>https://johnstowers.co.nz/2014/05/27/flymad/</guid><description>Simplified ROS Distribution</description></item><item><title>Distributing Pure Python ROS Applications</title><link>https://johnstowers.co.nz/2013/10/11/ros-freeze/</link><pubDate>Fri, 11 Oct 2013 00:46:32 +0000</pubDate><guid>https://johnstowers.co.nz/2013/10/11/ros-freeze/</guid><description>Simplified ROS Distribution</description></item><item><title>Lightweight Development Prefixes</title><link>https://johnstowers.co.nz/2013/09/29/lightweight-development-prefixes/</link><pubDate>Sun, 29 Sep 2013 18:05:00 +0000</pubDate><guid>https://johnstowers.co.nz/2013/09/29/lightweight-development-prefixes/</guid><description>lightweight development prefixes on Linux</description></item><item><title>GNOME Tweak Tool 3.10 Improvements</title><link>https://johnstowers.co.nz/2013/09/24/tweak-tool-310/</link><pubDate>Tue, 24 Sep 2013 12:25:32 +0000</pubDate><guid>https://johnstowers.co.nz/2013/09/24/tweak-tool-310/</guid><description>ROS + Gtk</description></item><item><title>Python Bindings to the Pointcloud Library</title><link>https://johnstowers.co.nz/2013/02/03/python-pcl/</link><pubDate>Sun, 03 Feb 2013 02:00:00 +0000</pubDate><guid>https://johnstowers.co.nz/2013/02/03/python-pcl/</guid><description>python-pcl</description></item><item><title>ROS and Gtk for Laboratory Control</title><link>https://johnstowers.co.nz/2013/01/27/lab-with-gtk-ros-1/</link><pubDate>Sun, 27 Jan 2013 23:15:32 +0000</pubDate><guid>https://johnstowers.co.nz/2013/01/27/lab-with-gtk-ros-1/</guid><description>ROS + Gtk</description></item><item><title>I'm at GUADEC</title><link>https://johnstowers.co.nz/2012/07/27/im-at-guadec/</link><pubDate>Fri, 27 Jul 2012 02:38:26 +0000</pubDate><guid>https://johnstowers.co.nz/2012/07/27/im-at-guadec/</guid><description>&lt;p&gt;An organised person would have blogged about going to GUADEC before the event started. I am not that person. I am there now. Come see me if you want to talk about / hack on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;GNOME tweak tool&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Scientific computing with PyGObject (improving interaction with numpy, etc)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows builds of PyGObject + GTK3&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Real time charting (&lt;a href="https://github.com/nzjrs/uber-graph" rel="noopener"&gt;https://github.com/nzjrs/uber-graph&lt;/a&gt;
)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>A Change</title><link>https://johnstowers.co.nz/2011/10/19/a-change/</link><pubDate>Wed, 19 Oct 2011 16:15:32 +0000</pubDate><guid>https://johnstowers.co.nz/2011/10/19/a-change/</guid><description>&lt;p&gt;2011 has been an interesting year. Between the &lt;a href="http://en.wikipedia.org/wiki/Christchurch_earthquake" rel="noopener"&gt;stupid earthquakes&lt;/a&gt;
 and the pressure of finishing my PhD, I have been silent because I have had nothing interesting to talk about (cf. twitter&amp;hellip;).&lt;/p&gt;
&lt;p&gt;But there is a light at the end, I&amp;rsquo;m on track to complete my thesis, &lt;em&gt;&amp;lsquo;Biologically Inspired Visual Control of Flying Robots&amp;rsquo;,&lt;/em&gt; in December/January.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://johnstowers.co.nz/images/imported/chch1.jpg"&gt;&lt;figure class="img"&gt;
 &lt;img src="https://johnstowers.co.nz/images/imported/chch1-sml.jpg" alt="Christchurch, demolished, the old&amp;hellip;" loading="lazy" decoding="async"&gt;&lt;/figure&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m excited to say that I have accepted a job at the &lt;a href="http://www.imp.ac.at" rel="noopener"&gt;Institute of Molecular pathology&lt;/a&gt;
, in a &lt;a href="http://strawlab.org/" rel="noopener"&gt;research group&lt;/a&gt;
 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!&lt;/p&gt;</description></item><item><title>Interfacing Python + C + OpenCV via ctypes</title><link>https://johnstowers.co.nz/2011/07/15/interfacing-python-c-opencv-via-ctypes/</link><pubDate>Fri, 15 Jul 2011 12:01:48 +0000</pubDate><guid>https://johnstowers.co.nz/2011/07/15/interfacing-python-c-opencv-via-ctypes/</guid><description>&lt;p&gt;I was recently asked to help a colleague access his image processing C-library from python; quite a common task. As those of you who are familiar with Python might realise, there are a whole bag of ways that this can be accomplished;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.swig.org/" rel="noopener"&gt;SWIG&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://cython.org/" rel="noopener"&gt;Cython&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ctypes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://launchpad.net/pybindgen" rel="noopener"&gt;PybindGen&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this case the colleague only needed to access a single function from the library returning image data, and then hand this result onto OpenCV. One happy side effect of the new (&amp;gt; v2.1) python-opencv bindings is that they do &lt;a href="http://opencv.willowgarage.com/documentation/python/cookbook.html#pil-image-to-opencv" rel="noopener"&gt;no validation on CvImage.SetData&lt;/a&gt;
, which means you can pass an arbitrary string/pointer. Because of this I advised him I thought using something like SWIG was overkill, and he could just write a wrapper to his library using ctypes, or a thin python extension directly.&lt;/p&gt;</description></item><item><title>End of an Era: PyGTK</title><link>https://johnstowers.co.nz/2011/04/03/end-of-an-era-pygtk/</link><pubDate>Sun, 03 Apr 2011 14:48:08 +0000</pubDate><guid>https://johnstowers.co.nz/2011/04/03/end-of-an-era-pygtk/</guid><description>&lt;p&gt;I just &lt;a href="http://mail.gnome.org/archives/gnome-announce-list/2011-April/msg00002.html" rel="noopener"&gt;released&lt;/a&gt;
 PyGTK 2.24, which will almost certainly be the last major &lt;a href="http://www.pygtk.org" rel="noopener"&gt;PyGTK&lt;/a&gt;
 release. The future of Python on the GNOME platform is &lt;a href="http://live.gnome.org/PyGObject" rel="noopener"&gt;PyGObject + GObject Introspection&lt;/a&gt;
. From my experience over the last few months porting a number of my projects, the future is bright.&lt;/p&gt;
&lt;p&gt;In a cruel twist of irony, the state of PyGTK on Windows and Mac has never been better. The credit for the windows work (and some great documentation improvements this cycle) must go to Dieter Verfaillie&lt;/p&gt;</description></item><item><title>PyGTK All-in-one Installer for Windows</title><link>https://johnstowers.co.nz/2010/12/24/pygtk-all-in-one-installer-for-windows/</link><pubDate>Fri, 24 Dec 2010 20:18:25 +0000</pubDate><guid>https://johnstowers.co.nz/2010/12/24/pygtk-all-in-one-installer-for-windows/</guid><description>&lt;p&gt;The PyGTK team is pleased to &lt;a href="http://www.daa.com.au/pipermail/pygtk/2010-December/019296.html" rel="noopener"&gt;announce&lt;/a&gt;
 the return of the highly popular all-in-one installer for Windows.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The PyGTK All-in-one installer provides an alternative installation method for PyGTK users on Windows. It bundles PyGTK, PyGObject, PyCairo, PyGtkSourceView2, PyGooCanvas, PyRsvg, the gtk+-bundle and Glade in one handy installer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Currently 32 bit Python 2.6 and 2.7 versions are supported on Windows XP and above.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://download.gnome.org/binaries/win32/pygtk/2.22/" rel="noopener"&gt;Download&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/dieterv/pygtk-installer/blob/master/README.rst" rel="noopener"&gt;README&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://github.com/dieterv" rel="noopener"&gt;Dieter Verfaillie&lt;/a&gt;
 deserves enormous thanks for this work. Firstly, he performed the tedious job of ensuring that all the component MSI installers were exactly correct, and secondly, the really difficult task of deconstructing these individual installers and reassembling their contents into a single cohesive executable.&lt;/p&gt;</description></item><item><title>GTK+ Viewer for Microsoft Kinect</title><link>https://johnstowers.co.nz/2010/11/19/gtk-viewer-for-microsoft-kinect/</link><pubDate>Fri, 19 Nov 2010 01:09:11 +0000</pubDate><guid>https://johnstowers.co.nz/2010/11/19/gtk-viewer-for-microsoft-kinect/</guid><description>&lt;p&gt;I&amp;rsquo;m hacking on the new &lt;a href="http://en.wikipedia.org/wiki/Kinect" rel="noopener"&gt;Kinect&lt;/a&gt;
 at the moment and the &lt;a href="https://github.com/OpenKinect/libfreenect/blob/master/c/examples/glview.c" rel="noopener"&gt;OpenGL viewer&lt;/a&gt;
 didn&amp;rsquo;t work for me so I threw together this &lt;strong&gt;&lt;a href="https://gist.github.com/704902" rel="noopener"&gt;terrible&lt;/a&gt;
&lt;/strong&gt;&lt;a href="https://gist.github.com/704902" rel="noopener"&gt; quality gtk+ one.&lt;/a&gt;
 I&amp;rsquo;ll clean up the code and try to get this into &lt;a href="http://openkinect.org/wiki/Main_Page" rel="noopener"&gt;OpenKinect&lt;/a&gt;
 ASAP.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://johnstowers.co.nz/images/imported/gtk-microsoft-kinect.jpg"&gt;&lt;figure class="img"&gt;
 &lt;img src="https://johnstowers.co.nz/images/imported/gtk-microsoft-kinect-sml.jpg" alt="GTK&amp;#43; viewer for Microsoft Kinect" loading="lazy" decoding="async"&gt;&lt;/figure&gt;
&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Map Updates</title><link>https://johnstowers.co.nz/2010/06/10/map-updates/</link><pubDate>Thu, 10 Jun 2010 16:34:27 +0000</pubDate><guid>https://johnstowers.co.nz/2010/06/10/map-updates/</guid><description>&lt;p&gt;I recently made a number of &lt;a href="http://mail.gnome.org/archives/gnome-announce-list/2010-June/msg00003.html" rel="noopener"&gt;improvements&lt;/a&gt;
 to &lt;a href="http://nzjrs.github.com/osm-gps-map/" rel="noopener"&gt;osm-gps-map&lt;/a&gt;
, the easy to use mapping widget. The motivation for these came at the request of the &lt;a href="http://www.foxtrotgps.org/" rel="noopener"&gt;foxtrotGPS&lt;/a&gt;
 developers (foxtrotGPS is a community developed fork of TangoGPS). These changes enhanced the API for adding &lt;a href="http://github.com/nzjrs/osm-gps-map/blob/master/src/osm-gps-map-image.h" rel="noopener"&gt;images&lt;/a&gt;
 and &lt;a href="http://github.com/nzjrs/osm-gps-map/blob/master/src/osm-gps-map-track.h" rel="noopener"&gt;tracks&lt;/a&gt;
 to the map, and in addition allowed me to clean up the &lt;a href="http://github.com/nzjrs/osm-gps-map/blob/master/src/osm-gps-map-widget.h" rel="noopener"&gt;basic API&lt;/a&gt;
 making it easier to use for the common case. But, there is more, especially relevant to Gtk+/GNOME 3.0.&lt;/p&gt;</description></item><item><title>Nautilus + Coverflow part two</title><link>https://johnstowers.co.nz/2010/02/05/nautilus-coverflow-part-two/</link><pubDate>Fri, 05 Feb 2010 02:21:19 +0000</pubDate><guid>https://johnstowers.co.nz/2010/02/05/nautilus-coverflow-part-two/</guid><description>&lt;p&gt;After two complete rewrites following my initial experiments, the other &lt;a href="http://gloobus.wordpress.com/" rel="noopener"&gt;gloobus&lt;/a&gt;
 developers &lt;em&gt;(badchoice and kitkat)&lt;/em&gt; have &lt;a href="http://gloobus.wordpress.com/2010/02/04/gloobus-flow/" rel="noopener"&gt;continued to work&lt;/a&gt;
 on integrating this coverflow view into nautilus.&lt;/p&gt;
&lt;p&gt;The implementation of the coverflow widget this time is a little more sane. It is passed a GtkTreeModel of GFiles, and basically does everything in isolation. The coupling to nautilus is quite loose, so the idea is that the widget can be reused easily by others.&lt;/p&gt;</description></item><item><title>Misc Hacking</title><link>https://johnstowers.co.nz/2010/01/22/misc-hacking/</link><pubDate>Fri, 22 Jan 2010 11:22:39 +0000</pubDate><guid>https://johnstowers.co.nz/2010/01/22/misc-hacking/</guid><description>&lt;p&gt;I had two days off while I moved offices, so I got a chance to catch up on my backlog of random hacking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;osm-gps-map&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I released &lt;a href="http://nzjrs.github.com/osm-gps-map/" rel="noopener"&gt;osm-gps-map&lt;/a&gt;
 v0.5.0 which adds a few new features (such as keyboard navigation) but also contains many bugfixes and performance improvements. Check the &lt;a href="http://mail.gnome.org/archives/gnome-announce-list/2010-January/msg00063.html" rel="noopener"&gt;release notes&lt;/a&gt;
 for more information. The next item on the TODO is merging the OSD/layers branch.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conduit&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I &lt;a href="http://mail.gnome.org/archives/gnome-announce-list/2010-January/msg00064.html" rel="noopener"&gt;released Conduit 0.3.17&lt;/a&gt;
 which was long overdue. Mostly a bugfix release and updating to new API. The &lt;a href="http://live.gnome.org/Conduit" rel="noopener"&gt;Conduit homepage&lt;/a&gt;
 has also moved to live.gnome.org. Progress on Conduit is a bit slow at the moment, it does everything I want it to (I have a budget cellphone so phone synce does not interest me), and is pretty stable. I have some SOC work I would like to merge, but basically I am looking for developers and inspiration&amp;hellip;&lt;/p&gt;</description></item><item><title>Gtk+ Map Widget</title><link>https://johnstowers.co.nz/2010/01/11/gtk-map-widget/</link><pubDate>Mon, 11 Jan 2010 01:14:06 +0000</pubDate><guid>https://johnstowers.co.nz/2010/01/11/gtk-map-widget/</guid><description>&lt;p&gt;It has been a long time between blogs. I thought I should talk about the piece of software that has been responsible for the most emails in my inbox over the last few days - &lt;a href="http://nzjrs.github.com/osm-gps-map/" rel="noopener"&gt;osm-gps-map, the Gtk+ based map widget&lt;/a&gt;
. What started as a widget for use in one small application of mine has grown considerably.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I recently r&lt;a href="http://mail.gnome.org/archives/gnome-announce-list/2010-January/msg00020.html" rel="noopener"&gt;eleased 0.4.0&lt;/a&gt;
, a bugfix release.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I created a &lt;a href="http://groups.google.com/group/osm-gps-map" rel="noopener"&gt;mailing list&lt;/a&gt;
, if you are a user or interested osm-gps-map, them please join.&lt;/p&gt;</description></item><item><title>Playing With Clutter</title><link>https://johnstowers.co.nz/2009/05/27/playing-with-clutter/</link><pubDate>Wed, 27 May 2009 22:08:51 +0000</pubDate><guid>https://johnstowers.co.nz/2009/05/27/playing-with-clutter/</guid><description>&lt;p&gt;Some of you out there might be familiar with &lt;a href="https://launchpad.net/gloobus" rel="noopener"&gt;Gloobus&lt;/a&gt;
. Over the last few nights I spent some time integrating Gloobus inside nautilus.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://johnstowers.co.nz/images/imported/nautilus-clutter.png"&gt;&lt;figure class="img"&gt;
 &lt;img src="https://johnstowers.co.nz/images/imported/nautilus-clutter-300x168.png" alt="" loading="lazy" decoding="async"&gt;&lt;/figure&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This is a proof of concept. I have done very little so far - it shows the first 8 files in the directory, and allows you to navigate between them with animation. It is mostly just a port of Gloobus from C++ into a ClutterGroup derived Actor in C, most of the thanks should go to the &lt;a href="http://gloobus.wordpress.com/" rel="noopener"&gt;Gloobus author&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Map Widget Release</title><link>https://johnstowers.co.nz/2009/04/23/map-widget-release/</link><pubDate>Thu, 23 Apr 2009 00:05:31 +0000</pubDate><guid>https://johnstowers.co.nz/2009/04/23/map-widget-release/</guid><description>&lt;p&gt;I made a new April resolution to start blogging reguarly again. The first step of that long journey begins now.&lt;/p&gt;
&lt;p&gt;&lt;figure class="img"&gt;
 &lt;img src="https://johnstowers.co.nz/images/imported/screenshot-lt-openstreetmap-gps-map-1.png" alt="" loading="lazy" decoding="async"&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenStreetMap GPS Mapping Widget - 0.3&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I just released v0.3 of &lt;a href="http://nzjrs.github.com/osm-gps-map/" rel="noopener"&gt;osm-gps-map, the easy to use Gtk+ mapping widget&lt;/a&gt;
. Highlights for this release include;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A new major contributor, &lt;a href="http://github.com/mardy" rel="noopener"&gt;Alberto Mardegan&lt;/a&gt;
, who worked on many of the new features of this release. Thanks a lot Alberto!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Draw map tracks with Cairo by default.&lt;/p&gt;</description></item></channel></rss>