<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:html="http://www.w3.org/1999/html" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Ross Burton</title><link>http://www.burtonini.com/blog</link><description>A potted account of Ross' life</description><language>en</language><ttl>60</ttl><dc:creator>Ross Burton</dc:creator><admin:generatorAgent rdf:resource="http://pyblosxom.sourceforge.net/"/><admin:errorReportsTo rdf:resource="mailto:ross@burtonini.com"/><item><title>Knackered</title><guid isPermaLink="false">life/knackered-2007-07-29-18-00</guid><link>http://www.burtonini.com/blog/life/knackered-2007-07-29-18-00</link><description>This weekend, we tidied the garden a little. This involved some gardening and throwing away rubbish. Thirteen large bin bags ...</description><content:encoded><![CDATA[    <p>
      This weekend, we tidied the garden a little.  This involved some gardening
      and throwing away rubbish.
    </p>
    <p>
      Thirteen large bin bags of garden waste, and a skip full of doors,
      concrete and metal tubing later, we've finished the easy tasks.  Next week
      the new door and paving slabs arrive, so the hard work can begin.  I
      haven't been sleeping too well recently so bought a herbal sleep remedy
      today, but I don't think I'll need any help tonight.
    </p>
    <p>
      In other news, <a
      href="http://en.wikipedia.org/wiki/Jekyll_%28TV_series%29">Jekyll</a>
      finished last night.  An excellent series with some interesting twists and
      a good mix of horror and comedy, I highly recommend it to anyone who can
      watch it (I believe it's being aired on BBC America next Saturday, and I'm
      sure its all over the interwebs).
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/life</category><dc:date>2007-07-29T17:00:00Z</dc:date></item><item><title>GUADEC Roundup</title><guid isPermaLink="false">computers/guadec-2007-07-29-17-20</guid><link>http://www.burtonini.com/blog/computers/guadec-2007-07-29-17-20</link><description>This is probably the last GUADEC roundup to hit the Planets, considering that it finished a week ago. But, hey, ...</description><content:encoded><![CDATA[    <p>
      This is probably the last GUADEC roundup to hit the Planets, considering
      that it finished a week ago. But, hey, I've been busy.
    </p>
    <p>
      GUADEC was, as usual, a blast. Less sun, sea, and beach parties than last
      year; more rain, clouds, and parties in fake-Australian bars with too-loud
      music.  If the weather was better we could have hijacked the landlocked
      beach, which would have been fun.
    </p>
    <p>
      As an educational conference I totally failed at GUADEC, out of an entire
      week of talks I managed to attend a grand total of seven talks.  Between
      the GNOME Mobile meeting sprawling across two afternoons, a few meetings
      with clients, occasional attending our stand and having to leave Thursday
      afternoon meant that there just wasn't enough time.
    </p>
    <p>
      As a photographic experience I <a
      href="http://flickr.com/photos/rossburton/sets/72157600952460055/">mostly
      failed</a>.  I took more photos at Matthew's excellent <cite>Clutter
      Foo</cite> talk than the rest of GUADEC itself, and more photos at the
      ping pong tournament than the others combined.  From playing with my
      camera at the tournament I now know that the Sigma 17-70 lens is no way up
      to the challenge of sports photography: too slow and too short.  My next
      lens however will be Sigma's new 30mm f/1.4, I've been eyeing it for a
      while now and Daf had given in to temptation so I could have a play with
      it.  Sports photography will have to wait.
    </p>
    <p>
      As a member of the organising team however, I don't think I totally
      failed.  There were a few last minute snafus in the schedule but on the
      whole it appeared to hold together, the main problem being there being
      just too many good talks on at the same time.  Congratulations of course
      are due to Paul, Thomas, Bastien and Rob, who kept the conference running
      on track all week.
    </p>
    <p>
      Next year, Istanbul.  That <em>will</em> be interesting.
    </p>

    <p>
      <small>NP: <cite>F&#9839; A&#9839; &#8734;</cite>, Godspeed You! Black Emperor</small>
    </p>]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-29T16:20:00Z</dc:date></item><item><title>Devil's Pie Tutorial</title><guid isPermaLink="false">computers/devilspie/tutorial-2007-07-26-11-17</guid><link>http://www.burtonini.com/blog/computers/devilspie/tutorial-2007-07-26-11-17</link><description>Christer Edwards over at Ubuntu Tutorials has written a short tutorial on Devil's Pie . Thanks Christer! Now if only ...</description><content:encoded><![CDATA[    <p>
      Christer Edwards over at <a href="http://ubuntu-tutorials.com">Ubuntu
      Tutorials</a> has written <a
      href="http://ubuntu-tutorials.com/2007/07/25/how-to-set-default-workspace-size-and-window-effects-in-gnome/">a
      short tutorial on Devil's Pie</a>.  Thanks Christer!
    </p>
    <p>
      Now if only people would stop using a hack I wrote several years ago and
      fix the real problems...
    </p>
    <p>
      <small>NP: <cite>The Last Flowers from the Darkness</cite>, Mark Van Hoen</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/computers/devilspie</category><dc:date>2007-07-26T10:17:00Z</dc:date></item><item><title>Katachi Update</title><guid isPermaLink="false">computers/katachi-2007-07-23-09-40</guid><link>http://www.burtonini.com/blog/computers/katachi-2007-07-23-09-40</link><description>It appears that some people actually want to see Katachi in action before they try it. I can't imagine why, ...</description><content:encoded><![CDATA[    <p>
      It appears that some people actually want to see Katachi in action before
      they try it.  I can't imagine why, it only requires two libraries to be
      installed from version management, both of which are slightly obscure.
      So, here is a screenshot.
    </p>
    <p>
      <img src="http://burtonini.com/computing/screenshots/katachi-0.1.png" alt="Katachi" width="546" height="349"/>
    </p>
    <p>
      Also some other people don't know where to get GVFS and GtkImageView from.
      <a href="http://www.gnome.org/~alexl/git/gvfs.git/">This</a> is the git
      tree for GVFS, and GtkImageView is <a
      href="http://trac.bjourne.webfactional.com/">here</a>.  GtkImageView 1.1.0
      should work fine if you fix the trivial compile warnings, so maybe I
      should ditch my local SVN checkout and use the release for now.
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-23T08:40:00Z</dc:date></item><item><title>Announcing Katachi 0.1</title><guid isPermaLink="false">computers/katachi-2007-07-22-20-50</guid><link>http://www.burtonini.com/blog/computers/katachi-2007-07-22-20-50</link><description>Over the last few months I've been hacking on (yet another) image viewer for GTK+, using the hot new GVFS ...</description><content:encoded><![CDATA[    <p>
      Over the last few months I've been hacking on (yet another) image viewer
      for GTK+, using the hot new GVFS library (go Alex!) for asynchronous file
      handling and GtkImageView because I'm lazy.
    </p>
    <p>
      It's got a pretty lean interface at the moment and is fairly fast in use.
      My goal is to use it on my Zaurus for reviewing images from a CF card in
      the field, so performance is quite important to me.  As the primary users
      are photographers, filenames are not shown in the interface (just
      thumbnails).  There is a lot of work left to do, but I've used 0.1 for
      some time now.
    </p>
    <p>
      The source is being developed in a Bazaar branch at <a
      href="http://burtonini.com/bzr/katachi">http://burtonini.com/bzr/katachi</a>.
      I've just tagged a 0.1 release, a <a
      href="http://burtonini.com/computing/katachi-0.1.tar.gz">tarball of which
      is here</a>.  You'll need to build GVFS from git, and GtkImageView from
      svn, sorry. :)
    </p>
    <p>
      <small>NP: <cite>Closes Volume 1</cite>, Boards of Canada</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-22T19:50:00Z</dc:date></item><item><title>GUADEC</title><guid isPermaLink="false">computers/kde-2007-07-18-12-15</guid><link>http://www.burtonini.com/blog/computers/kde-2007-07-18-12-15</link><description>Currently at GUADEC. We had the joint OpenedHand/Collabora party last night, which explains the headache I guess. Also I'm glad ...</description><content:encoded><![CDATA[    <p>
      Currently at GUADEC.  We had the joint OpenedHand/Collabora party last
      night, which explains the headache I guess.  Also I'm glad I bought spare
      jeans because somehow a glass of Pimms managed to get all over them.
    </p>
    <p>
      I also saw KDE 4 running today.  Best quote: <q>Well at least maximise
      works</q>.
    </p>
    <p>
      Alex's GVFS talk was good this morning, I totally love it and can't wait
      for it to land in glib.  The file monitoring API alone makes me want to
      have Alex's babies (but it appears I've <a
      href="http://blogs.gnome.org/alexl/2007/06/04/enosleep/">been beaten to
      it</a>).  I've already written an application using <tt>libgio</tt>, which
      was amazingly simple.  It's a shame that so many people were asking
      questions during the talk instead of waiting until the end, because he had
      to skip the last few slides.
    </p>]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-18T11:15:00Z</dc:date></item><item><title>Dear Interweb: Where Is My N800</title><guid isPermaLink="false">computers/n800-2007-07-17-10-30</guid><link>http://www.burtonini.com/blog/computers/n800-2007-07-17-10-30</link><description>This is unusual for Dear Interweb ... my personal N800 was on our stand at GUADEC being used to demo ...</description><content:encoded><![CDATA[    <p>
      This is unusual for <cite>Dear Interweb</cite>...  my personal N800 was on
      our stand at GUADEC being used to demo Contacts, Dates and Tasks.  Then by
      the end of the day when we packed up... it was gone.  I'm hoping it is
      buried in someone else's bag from OpenedHand, but I'm also thinking that
      someone picked it up from the stand thinking it was their own.
    </p>
    <p>
      Can everyone please check that any N800s they have are actually their own?
      Mine is quite distinctive, it has the full Pimlico suite installed
      (Contacts, Dates, Tasks) and my addressbook, calendar, and task list on.
      Thanks!
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-17T09:30:00Z</dc:date></item><item><title>More GUADEC Lightning Talks</title><guid isPermaLink="false">computers/guadec-2007-07-13-19-20</guid><link>http://www.burtonini.com/blog/computers/guadec-2007-07-13-19-20</link><description>We've had so many great Lightning Talk submissions this year that we're going to have to split the session into ...</description><content:encoded><![CDATA[    <p>
      We've had so many great Lightning Talk submissions this year that we're
      going to have to split the session into two.  There is still the original
      session at 15:00, but there is now another session at 17:00 for any talks
      that don't fit into the first session.
    </p>
    <p>
      If you are doing a lightning talk, please remember to either check that
      your laptop works with the projector in the hall perfectly
      <strong>before</strong> the talks start, or put your talk on a USB memory
      stick -- something portable such as PDF or S5 please -- so you can use the
      provided laptop (a ThinkPad T43, 1024x768).
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-13T18:20:00Z</dc:date></item><item><title>Embedding Binary Blobs With GCC</title><guid isPermaLink="false">computers/ld-blobs-2007-07-13-15-50</guid><link>http://www.burtonini.com/blog/computers/ld-blobs-2007-07-13-15-50</link><description>For a long time I've wanted to know how to embed binary blobs into executables. This would be most useful ...</description><content:encoded><![CDATA[    <p>
      For a long time I've wanted to know how to embed binary blobs into
      executables.  This would be most useful for files like Glade and and UI
      Manager definitions, which are required for a given program to work at all
      but either cannot be embedded as a string literal (Glade) or can be but is
      annoying (UI Manager).  I finally asked the Interweb, and Daniel
      Jacobowitz replied with some pointers.  It turns out that doing this is
      remarkable simple.
    </p>
    <p>
      First, a caveat.  This probably requires GNU ld, which may or may not be a
      deal breaker for many people.
    </p>
    <p>
      First, create a data file.  Let's call it foo.txt, and put some text in it.
    </p>
    <pre>Hello, World!</pre>
    <p>
      Using <tt>ld</tt> this can be read in as a plain binary blob, and then
      written as a standard relocatable ELF object.
    </p>
    <pre>ld -r -b binary -o foo.o foo.txt</pre>
    <p>
      Now we have a standard ELF object with the data and some useful symbols
      defined.  <tt>objdump</tt> will show you the contents.
    </p>
    <pre>$ objdump -x foo.o 
foo.o:     file format elf32-i386

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         0000000d  00000000  00000000  00000034  2**0
                  CONTENTS, ALLOC, LOAD, DATA
SYMBOL TABLE:
00000000 l    d  .data  00000000 .data
0000000d g       .data  00000000 _binary_foo_txt_end
0000000d g       *ABS*  00000000 _binary_foo_txt_size
00000000 g       .data  00000000 _binary_foo_txt_start</pre>
    <p>
      Here we see 13 bytes of data, and a symbol which contains the address of
      the data.  This is all we need to access it from a C program.
    </p>
    <pre>#include &lt;stdio.h&gt;
extern char _binary_foo_txt_start[];

int main (void) {
  puts (_binary_foo_txt_start);
  return 0;
}</pre>
    <p>
      Now if we compile this and link it against the generated object, we'll have a binary.
    </p>
    <pre>$ gcc -o test test.c foo.o
$ ./test
Hello, World!</pre>
    <p>
      Hooray!  One small problem which alert people should have noticed: the
      string itself is in the <tt>.data</tt> section, which is read/write.  For
      my use, I want it to be read-only data in the <tt>.rodata</tt> section so
      that it isn't copied for every instance of the application.  As far as I
      know, this isn't possible with <tt>ld</tt> but <tt>objcopy</tt> will let
      us rename sections on the fly.
    </p>
    <pre>$ objcopy --rename-section .data=.rodata,alloc,load,readonly,data,contents foo.o foo.o
$ objdump  -h foo.o
...
  0 .rodata       0000000d  00000000  00000000  00000034  2**0</pre>
    <p>
      Excellent, problem solved.  If you want to download this sample, I have <a
      href="http://burtonini.com/computing/ldblob.tar.gz">a tarball</a>.  Many
      thanks to Daniel Jacobowitz for pointing out how to achieve this.
    </p>
    <p>
      <strong>Update:</strong> note that any data embedded in the binary like
      this won't be terminated with a NULL.  This is obvious in hindsight, but
      due to luck my example still worked.  There might be a way of asking
      objcopy to append a 0 to the end of the data, but if not always remember
      to use the start and end pointers or size instead of just the start, or
      append a NULL yourself before converting to an ELF.
    </p>
    <p>
      <small>NP: <cite>()</cite>, Sigur R&oacute;s</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-13T14:50:00Z</dc:date></item><item><title>Dear Interweb: GCC and Arbitrary Binary Sections</title><guid isPermaLink="false">computers/gcc-2007-07-13-12-30</guid><link>http://www.burtonini.com/blog/computers/gcc-2007-07-13-12-30</link><description>Mono/C has this nice feature where arbitrary files can be linked into the final binary, and you can programmatically access ...</description><content:encoded><![CDATA[    <p>
      Mono/C&#9839; has this nice feature where arbitrary files can be linked
      into the final binary, and you can programmatically access them.  I'd like
      to be able to do that in C too, I'm sure it is possible, I just don't know
      an easy way.  I know that if you have a section <tt>foo</tt>, then ld will
      create <tt>__start_foo</tt> and <tt>__stop_foo</tt> symbols which point to
      the start and end of the section, so all I really want is an easy way to
      get ld to use the contents of an arbitrary file (say, <tt>ui.xml</tt>) as
      a section.
    </p>
    <p>
      Anybody know how to do this?  <strong>Update:</strong> thanks to Daniel
      Jacobowitz for giving enough clues to a working, and clean, solution.
      I'll blog this shortly.
    </p>
    <p>
      <small>NP: <cite>The Sound Of A Handshake</cite>, cLOUDDEAD</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-13T11:30:00Z</dc:date></item><item><title>Pimlico and Maemo Synergy Overdrive!</title><guid isPermaLink="false">computers/pimlico-2007-07-11-12-40</guid><link>http://www.burtonini.com/blog/computers/pimlico-2007-07-11-12-40</link><description>We've had Dates on Maemo for a long time now, but now and again people asked for Contacts. We never ...</description><content:encoded><![CDATA[    <p>
      We've had Dates on Maemo for a long time now, but now and again people
      asked for Contacts.  We never really bothered to build Contacts because it
      isn't ported to Maemo, so doesn't fit in to the environment.  Well,
      yesterday I found myself with a clean Maemo 3.2 Scratchbox (quite unusual
      I assure you) so thought I'd build a package anyway.  It's not integrated
      into Maemo, but it's in <a href="http://maemo.o-hand.com">our
      repository</a> now.
    </p>
    <p>
      Hopefully this will cause a fanbase of programmers to spontaneously appear
      who will help us develop the next generation of Contacts, which is modular
      and thus far easier to port to various platforms.
    </p>
    <p>
      Along with my recent Tasks on Maemo announcement, all of Pimlico is now
      available for Maemo.  I'll have a N800 with the full suite on at GUADEC if
      anyone wants to see it.
    </p>
    <p>
      <small>NP: <cite>This Too Shall Pass</cite>, Breakage</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-11T11:40:00Z</dc:date></item><item><title>Tasks 0.10</title><guid isPermaLink="false">computers/tasks-2007-07-11-12-39</guid><link>http://www.burtonini.com/blog/computers/tasks-2007-07-11-12-39</link><description>I'm pleased to announce that Tasks 0.10 is now available from the Pimlico Project . There are a few fixes ...</description><content:encoded><![CDATA[    <p>
      I'm pleased to announce that Tasks 0.10 is now available from the <a
      href="http://pimlico-project.org">Pimlico Project</a>.  There are a few
      fixes here, but the big news is an initial port to Maemo (thanks to Rob
      Bradford for the bulk of this work).
    </p>
    <ul>
      <li>Basic Maemo port (currently for the N800 only, but should build for the 770)</li>
      <li>Internal refactoring of the grouping architecture</li>
      <li>Don't allow tabbing in the Notes field (#381)</li>
      <li>Make the Notes tab label bold if there is a note</li>
    </ul>
    <p>
      The Maemo port of Tasks is a prime place for anyone who wants to learn
      about programming Maemo.  The Maemo-specific code is currently 595 lines
      long (a chunk of which need to be factored out), so filling in the missing
      pieces (such as starting a web browser) is easy.  If anyone wants to get
      their hands dirty, <a href="mailto:ross@burtonini.com">mail me</a>.
    </p>
    <p>
      <small>NP: <cite>Burial</cite>, Burial</small>
    </p>
]]></content:encoded><category domain="http://www.burtonini.com">/computers</category><dc:date>2007-07-11T11:39:00Z</dc:date></item></channel></rss>