<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ramblings</title>
	<atom:link href="http://www.flamingspork.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flamingspork.com/blog</link>
	<description>Ramblings which occasionally resemble reality. This is the blog of Stewart Smith.</description>
	<lastBuildDate>Thu, 11 Mar 2010 22:21:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Writing A Storage Engine for Drizzle, Part 2: CREATE TABLE</title>
		<link>http://www.flamingspork.com/blog/2010/03/12/writing-a-storage-engine-for-drizzle-part-2-create-table/</link>
		<comments>http://www.flamingspork.com/blog/2010/03/12/writing-a-storage-engine-for-drizzle-part-2-create-table/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 14:27:34 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[drizzle]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[protobuf]]></category>
		<category><![CDATA[StorageEngine]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1813</guid>
		<description><![CDATA[The DDL code paths for Drizzle are increasingly different from MySQL. For example, the embedded_innodb StorageEngine CREATE TABLE code path is completely different than what it would have to be for MySQL. This is because of a number of reasons, the primary one being that Drizzle uses a protobuf message to describe the table format [...]]]></description>
			<content:encoded><![CDATA[<p>The DDL code paths for Drizzle are increasingly different from MySQL. For example, the embedded_innodb StorageEngine CREATE TABLE code path is completely different than what it would have to be for MySQL. This is because of a number of reasons, the primary one being that Drizzle uses a protobuf message to describe the table format instead of several data structures and a FRM file.</p>
<p>We are pretty close to having the table protobuf message format being final (there&#8217;s a few bits left to clean up, but expect them done Real Soon Now (TM)). You can see the definition (which is pretty simple to follow) in <a href="http://bazaar.launchpad.net/~drizzle-developers/drizzle/development/annotate/head:/drizzled/message/table.proto">drizzled/message/table.proto</a>. Also check out my <a href="http://www.flamingspork.com/blog/2009/12/12/the-table-protobuf-message-format/">series of blog posts on the table message</a> (more posts coming, I promise!).</p>
<p>Drizzle allows either your StorageEngine or the Drizzle kernel to take care of storage of table metadata. You tell the Drizzle kernel that your engine will take care of metadata itself by specifying HTON_HAS_DATA_DICTIONARY to the StorageEngine constructor. If you don&#8217;t specify HTON_HAS_DATA_DICTIONARY, the Drizzle kernel stores the serialized Table protobuf message in a &#8220;table_name.dfe&#8221; file in a directory named after the database. If you have specified that you have a data dictionary, you&#8217;ll also have to implement some other methods in your StorageEngine. We&#8217;ll cover these in a later post.</p>
<p>If you ever dealt with creating a table in MySQL, you may recognize this method:</p>
<pre>virtual int create(const char *name, TABLE *form, HA_CREATE_INFO *info)=0;</pre>
<p>This is not how we do things in Drizzle. We now have this function in StorageEngine that you have to implement:</p>
<pre>int doCreateTable(Session* session, const char *path,
                  Table&amp; table_obj,
                  drizzled::message::Table&amp; table_message)</pre>
<p>The existence of the Table parameter is largely historic and at some point will go away. In the Embedded InnoDB engine, we don&#8217;t use the Table parameter at all. Shortly we&#8217;ll also get rid of the path parameter, instead having the table schema in the Table message and helper functions to construct path names.</p>
<p>Methods name &#8220;doFoo&#8221; (such as doCreateTable) mean that there is a method named foo() (such as createTable()) in the base class. It does some base work (such as making sure the table_message is filled out and handling any errors) while the &#8220;real&#8221; work is done by your StorageEngine in the doCreateTable() method.</p>
<p>The Embedded InnoDB engine goes through the table message and constructs a data structure for the Embedded InnoDB library to create a table. The ARCHIVE storage engine is much simpler, and it pretty much just creates the header of the ARZ file, mostly ignoring the format of the table. The best bet is to look at the code from one of these engines, depending on what type of engine you&#8217;re working on. This code, along with the table message definition should be more than enough</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/03/12/writing-a-storage-engine-for-drizzle-part-2-create-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuing the journey</title>
		<link>http://www.flamingspork.com/blog/2010/03/11/continuing-the-journey/</link>
		<comments>http://www.flamingspork.com/blog/2010/03/11/continuing-the-journey/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 07:42:46 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[drizzle]]></category>
		<category><![CDATA[life, the universe and everything]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[work et al]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[ndb]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1752</guid>
		<description><![CDATA[A couple of months ago (December 1st for those playing along at home) it marked five years to the day that I started at MySQL AB (now Sun, now Oracle). A good part of me is really surprised it was for that long and other parts surprised it wasn&#8217;t longer. Through MySQL and Sun, I [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of months ago (December 1st for those playing along at home) it marked five years to the day that I started at <a href="http://www.mysql.com">MySQL AB</a> (<del datetime="2010-03-10T03:09:15+00:00">now <a href="http://www.sun.com">Sun</a></del>, now <a href="http://www.oracle.com">Oracle</a>). A good part of me is really surprised it was for that long and other parts surprised it wasn&#8217;t longer. Through MySQL and Sun, I met some pretty amazing people, worked with some really smart ones and formed really solid and awesome friendships. Of course, not everything was perfect (sometimes not even close), but we did have some fun.</p>
<p>Up until November 2008 (that&#8217;s 3 years and 11 months for those playing at home) I worked on <a href="http://www.mysql.com/cluster">MySQL Cluster</a>. Still love the product and love how much better we&#8217;re making Drizzle so it&#8217;ll be the best SQL interface to NDB :)</p>
<p>The ideas behind Drizzle had been talked about for a while&#8230; and with my experience with internals of the MySQL server, I thought that some change and dramatic improvement was sorely needed.</p>
<p>Then, in 2008, Brian created a tree. I was soon sending in patches at nights, we announced to the whole world at OSCON and it captured a lot of attention.</p>
<p>Since November 2008 I&#8217;ve been working on <a href="http://drizzle.org">Drizzle</a> full time. It was absolutely awesome that I had the opportunity to spend all my days hacking on Drizzle &#8211; both directly with fantastic people and for fantastic people.</p>
<p>But&#8230; the Sun set&#8230; which was exciting and sad at the same time.</p>
<p>Never to fear! There were plenty of places wanting Drizzle hackers (and MySQL hackers). For me, it came down to this: &#8220;real artists ship&#8221;. While there were other places where I would no doubt be happy and work on something really cool, the only way I could end up working out where I should really be was: what is the best way to have Drizzle make a stable release that we&#8217;d see be suitable for deployment? So, Where Am I Now?</p>
<p><a href="http://www.rackspacecloud.com">Rackspace</a>.</p>
<p>Where I&#8217;ll again be spending all my time hacking Drizzle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/03/11/continuing-the-journey/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Drizzle BoF at the MySQL Conference and Expo</title>
		<link>http://www.flamingspork.com/blog/2010/03/09/drizzle-bof-at-the-mysql-conference-and-expo/</link>
		<comments>http://www.flamingspork.com/blog/2010/03/09/drizzle-bof-at-the-mysql-conference-and-expo/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 04:46:39 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[drizzle]]></category>
		<category><![CDATA[bof]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqluc]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1830</guid>
		<description><![CDATA[At the 2010 O&#8217;Reilly MySQL Conference and Expo there will be a Drizzle BoF!
It&#8217;s currently scheduled for 7pm on April 13th.
Come along, it will be awesome.
]]></description>
			<content:encoded><![CDATA[<p>At the <a href="http://en.oreilly.com/mysql2010/">2010 O&#8217;Reilly MySQL Conference and Expo</a> there will be a Drizzle BoF!</p>
<p>It&#8217;s currently scheduled for 7pm on April 13th.</p>
<p>Come along, it will be awesome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/03/09/drizzle-bof-at-the-mysql-conference-and-expo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bike Riding in the storm</title>
		<link>http://www.flamingspork.com/blog/2010/03/06/bike-riding-in-the-storm/</link>
		<comments>http://www.flamingspork.com/blog/2010/03/06/bike-riding-in-the-storm/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 05:24:25 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[life, the universe and everything]]></category>
		<category><![CDATA[bike]]></category>
		<category><![CDATA[hail]]></category>
		<category><![CDATA[melbourne]]></category>
		<category><![CDATA[ride]]></category>
		<category><![CDATA[storm]]></category>
		<category><![CDATA[wet]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1823</guid>
		<description><![CDATA[Out on a pier down St Kilda, the weather looked&#8230; well&#8230; like it could be a bit annoying on the way back:
but then&#8230; just a bit down the way&#8230;. it hit:
It was &#8220;a bit wet&#8221;. Big blocks of ice falling from the sky (that hurt).
Anyway, on the way back we found a storm water drain:
Yes, [...]]]></description>
			<content:encoded><![CDATA[<p>Out on a pier down St Kilda, the weather looked&#8230; well&#8230; like it could be a bit annoying on the way back:</p>
<p><a href="http://www.flamingspork.com/blog/wp-content/uploads/2010/03/pre-storm.jpg"><img class="aligncenter size-large wp-image-1825" title="pre-storm" src="http://www.flamingspork.com/blog/wp-content/uploads/2010/03/pre-storm-1024x768.jpg" alt="" width="450" height="337" /></a>but then&#8230; just a bit down the way&#8230;. it hit:</p>
<p><a href="http://www.flamingspork.com/blog/wp-content/uploads/2010/03/a_bit_wet.jpg"><img class="aligncenter size-large wp-image-1827" title="a_bit_wet" src="http://www.flamingspork.com/blog/wp-content/uploads/2010/03/a_bit_wet-1024x768.jpg" alt="" width="450" height="337" /></a>It was &#8220;a bit wet&#8221;. Big blocks of ice falling from the sky (that hurt).</p>
<p>Anyway, on the way back we found a storm water drain:</p>
<p><a href="http://www.flamingspork.com/blog/wp-content/uploads/2010/03/storm1.jpg"><img class="aligncenter size-large wp-image-1828" title="storm" src="http://www.flamingspork.com/blog/wp-content/uploads/2010/03/storm1-768x1024.jpg" alt="" width="450" height="600" /></a>Yes, behind Michael is just all water (and I&#8217;m not talking about the Bay).</p>
<p>Still managed to get a 36.5km ride out of it, so not all bad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/03/06/bike-riding-in-the-storm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing A Storage Engine for Drizzle, Part 1: Plugin basics</title>
		<link>http://www.flamingspork.com/blog/2010/03/01/writing-a-storage-engine-for-drizzle-part-1-plugin-basics/</link>
		<comments>http://www.flamingspork.com/blog/2010/03/01/writing-a-storage-engine-for-drizzle-part-1-plugin-basics/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:40:27 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[drizzle]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[StorageEngine]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1811</guid>
		<description><![CDATA[So, you&#8217;ve decided to write a Storage Engine for Drizzle. This is excellent news! The API is continually being improved and if you&#8217;ve worked on a Storage Engine for MySQL, you&#8217;ll notice quite a few differences in some areas.
The first step is to create a skeleton StorageEngine plugin.
You can see my skeleton embedded_innodb StorageEngine plugin [...]]]></description>
			<content:encoded><![CDATA[<p>So, you&#8217;ve decided to write a Storage Engine for Drizzle. This is excellent news! The API is continually being improved and if you&#8217;ve worked on a Storage Engine for MySQL, you&#8217;ll notice quite a few differences in some areas.</p>
<p>The first step is to create a skeleton StorageEngine plugin.</p>
<p>You can see my skeleton embedded_innodb StorageEngine plugin in its <a href="https://code.launchpad.net/~stewart-flamingspork/drizzle/skeleton-embedded-innodb-engine/+merge/19313">merge request</a>.</p>
<p>The important steps are:</p>
<h2>1. Create the plugin directory</h2>
<p>e.g. <code>mkdir plugin/embedded_innodb</code></p>
<h2>2. Create the plugin.ini file describing the plugin</h2>
<p>create the plugin.ini file in the plugin directory (so it&#8217;s <code>plugin/plugin_name/plugin.ini</code>)<br />
An example plugin.ini for embedded_innodb is.</p>
<pre>[plugin]
title=InnoDB Storage Engine using the Embedded InnoDB library
description=Work in progress engine using libinnodb instead of including it in tree.
sources=embedded_innodb_engine.cc
headers=embedded_innodb_engine.h</pre>
<p>This gives us a title and description, along with telling the build system what sources to compile and what headers to make sure to include in any source distribution.</p>
<h2>3. Add plugin dependencies</h2>
<p>Your plugin may require extra libraries on the system. For example, the embedded_innodb plugin uses the Embedded InnoDB library (libinnodb).</p>
<p>Other examples include the MD5 function requiring either openssl or gnutls, the gearman related plugins requiring gearman libraries, the <code>UUID()</code> function requiring libuuid and BlitzDB requiring Tokyo Cabinet libraries.</p>
<p>For embedded_innodb, pandora-build has a macro for finding libinnodb on the system. We want to run this configure check, so we create a plugin.ac file in the plugin directory (i.e. <code>plugin/plugin_name/plugin.ac</code>) and add the check to it.</p>
<p>For embedded_innodb, the plugin.ac file just contains this one line:</p>
<pre>PANDORA_HAVE_LIBINNODB</pre>
<p>We also want to add two things to plugin.ini; one to tell the build system only to build our plugin if libinnodb was found and the other to link our plugin with libinnodb. For embedded_innodb, it&#8217;s these two lines:</p>
<pre>build_conditional="x${ac_cv_libinnodb}" = "xyes"
ldflags=${LTLIBINNODB}</pre>
<div>Not too hard at all! This should look relatively familiar for those who have seen autoconf and automake in the past.</div>
<p>Some plugins (such as the md5 function) have a bit more custom auto-foo in plugin.ini and plugin.ac (as one of two libraries can be used). You can do pretty much anything with the plugin system, but you&#8217;re a lot more likely to keep it simple like we have here.</p>
<h2>4. Add skeleton source code for your StorageEngine</h2>
<p>While this will change a little bit over time (and is a little long to just paste into here), you can see what I did for embedded_innodb in the <a href="https://code.launchpad.net/~stewart-flamingspork/drizzle/skeleton-embedded-innodb-engine">skeleton-embedded-innodb-engine</a> tree.</p>
<h2>5. Build!</h2>
<p>You will need to re-run <code>./config/autorun.sh</code> so the build system picks up your new plugin. When you run <code>./configure --help</code> afterwards, you should see options for building with/without your new plugin.</p>
<h2>6. Add a test</h2>
<p>You will probably want to add a test to see that your plugin loads successfully. When your plugin is built, the test suite automatically picks up any tests you have in the <code>plugin/plugin_name/tests</code> directory. This is in the same format as general MySQL and Drizzle tests: tests go in a <code>t/</code> directory, expected results in a <code>r/</code> directory.</p>
<p>Since we are loading a plugin, we will also need some server options to make sure that plugin is loaded. These are stored in the rather inappropriately named <code>test-master.opt</code> file (that&#8217;s the test name with &#8220;<code>-master.opt</code>&#8221; appended to the end instead of &#8220;<code>.test</code>&#8220;). For the embedded_innodb plugin_load test, we have a <code>﻿plugin/embedded_innodb/tests/t/plugin_load-master.opt</code> file with the following content:</p>
<pre>﻿--plugin_add=embedded_innodb</pre>
<p>You can have pretty much anything in the plugin_load.test file&#8230; if you&#8217;re fancy, you&#8217;ll have a <code>SELECT</code> query on <code>data_dictionary.plugins</code> to check that the plugin really is there. Be sure to also add a <code>r/plugin_load.result</code> file (My preferred method is to just create an empty result file, run the test suite and examine the rejected output before renaming the <code>.reject</code> file to <code>.result</code>)</p>
<p>Once you&#8217;ve added your test, you can run it either by just typing &#8220;<code>make test</code>&#8221; (which will run the whole test suite), or you can go into the main <code>tests/</code> directory and run <code>./test-run.pl --suite=plugin_name</code> (which will just run the tests for your plugin).</p>
<h2>7. Check the code in, feel good about self</h2>
<p>and you&#8217;re done. Well&#8230; the start of a Storage Engine plugin is done :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/03/01/writing-a-storage-engine-for-drizzle-part-1-plugin-basics/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Playing with multiple exposure</title>
		<link>http://www.flamingspork.com/blog/2010/02/28/playing-with-multiple-exposure/</link>
		<comments>http://www.flamingspork.com/blog/2010/02/28/playing-with-multiple-exposure/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 23:18:07 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[b&w]]></category>
		<category><![CDATA[nikon]]></category>
		<category><![CDATA[photography]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1815</guid>
		<description><![CDATA[So, I discovered that my D200 had a built in &#8220;multiple exposure&#8221; option. While you can do exactly the same thing in GIMP (or Photoshop I guess) a whole lot easier (for one, you get to see what&#8217;s gonig on), we had been discussing Holga earlier in the night&#8230; so I felt it kind of [...]]]></description>
			<content:encoded><![CDATA[<p>So, I discovered that my D200 had a built in &#8220;multiple exposure&#8221; option. While you can do exactly the same thing in GIMP (or Photoshop I guess) a whole lot easier (for one, you get to see what&#8217;s gonig on), we had been discussing Holga earlier in the night&#8230; so I felt it kind of appropriate to not really see what I was doing.</p>
<p>Leah playing guitar hero, me sitting across the room only slightly distracting her with a camera.</p>
<p><a title="Guitar Hero by macplusg3, on Flickr" href="http://www.flickr.com/photos/stewartsmith/4392721955/"><img src="http://farm5.static.flickr.com/4001/4392721955_ef696ffee1.jpg" alt="Guitar Hero" width="334" height="500" /></a></p>
<p>Maybe I will end up getting a Holga one of these days&#8230; being restricted can be fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/02/28/playing-with-multiple-exposure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>anti-anti-feature: Windows license stickers</title>
		<link>http://www.flamingspork.com/blog/2010/02/23/anti-anti-feature-windows-license-stickers/</link>
		<comments>http://www.flamingspork.com/blog/2010/02/23/anti-anti-feature-windows-license-stickers/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 05:06:30 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[antifeatures]]></category>
		<category><![CDATA[license]]></category>
		<category><![CDATA[vista]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1792</guid>
		<description><![CDATA[Anti-Anti-Feature: An antifeature that doesn&#8217;t actually do what it&#8217;s meant to (something you didn&#8217;t want in the first place)
My laptop came with a Windows Vista license. An anti-feature in itself &#8211; I didn&#8217;t want it, have never used it (I run Ubuntu and love freedom).
However, if you try and read the license key off this [...]]]></description>
			<content:encoded><![CDATA[<p>Anti-Anti-Feature: An antifeature that doesn&#8217;t actually do what it&#8217;s meant to (something you didn&#8217;t want in the first place)</p>
<p>My laptop came with a Windows Vista license. An anti-feature in itself &#8211; I didn&#8217;t want it, have never used it (I run <a href="http://www.ubuntu.com/">Ubuntu</a> and love freedom).</p>
<p>However, if you try and read the license key off this sticker, it&#8217;s increasingly difficult to do so. It&#8217;s being worn away. Why? Because it&#8217;s on the bottom of the laptop and I&#8217;m using it on my lap (so friction rubs it away).</p>
<p>Luckily I don&#8217;t run Windows Vista and need to re-install it any time soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/02/23/anti-anti-feature-windows-license-stickers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>on presenting</title>
		<link>http://www.flamingspork.com/blog/2010/02/23/on-presenting/</link>
		<comments>http://www.flamingspork.com/blog/2010/02/23/on-presenting/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 00:23:21 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[280slides]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[dilbert]]></category>
		<category><![CDATA[keynote]]></category>
		<category><![CDATA[powerpoint]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[presentation zen]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1807</guid>
		<description><![CDATA[
This is totally not confined to at-work presentations.
The number of sessions I have sat through that could have taken 5 minutes instead of 20,30,40 or even 60 is amazing. Remember: I have not flown half way around the globe to see you read. I have come to hear a story, to see how conclusions were [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Dilbert.com" href="http://dilbert.com/strips/comic/2010-02-22/"><img src="http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/80000/3000/000/83078/83078.strip.gif" border="0" alt="Dilbert.com" /></a></p>
<p>This is totally <strong>not</strong> confined to at-work presentations.</p>
<p>The number of sessions I have sat through that could have taken 5 minutes instead of 20,30,40 or even 60 is <strong>amazing</strong>. Remember: I have not flown half way around the globe to see you read. I have come to hear a story, to see how conclusions were formed and interact.</p>
<p>Often, the tools are deficient. <strong><a href="http://office.microsoft.com/en-us/powerpoint/default.aspx">Powerpoint</a></strong> encourages <strong>bad habits</strong> (you can use PowerPoint for excellent slide decks too, but ignore the temptations of boring templates, bad effects and dot lists). The <strong>dot point</strong> list is more often than not <strong>your enemy</strong>. I (and anybody else in the audience who has learnt to read) can read your dot points faster than you can. <strong>While I&#8217;m reading, I&#8217;m not listening to you. </strong>If you spoke a cure for all forms of cancer just after having put a slide up filled with dot points&#8230; 90% of people will miss it.﻿</p>
<p>Now, dot points are an <strong>excellent</strong> way to remind you what the heck you&#8217;re meant to be talking about (and in what order). <strong>Use presenter notes!</strong> They are really useful.</p>
<p>If your laptop/presentation software doesn&#8217;t support a &#8220;presenter&#8221; mode that lets you view presenter notes but not the whole room, simply write them down, print them out, or anything like that. One simple practice run through will make you be able to do this seamlessly.</p>
<p>The last couple of presentations I did were completely assembled using <a href="http://280slides.com">280slides.com</a>. An excellent web app for doing presentations. It will import and export ODF (and other formats) so you&#8217;re not tied to a (unfortunately) non open source web app. That being said, it ran fine in my browser and unlike <a href="http://www.openoffice.org">OpenOffice.org</a>, did not make me want to stab people repeatedly every time I used it.</p>
<p>So, Stewart&#8217;s quick tips:</p>
<ul>
<li>Tell a <strong>story</strong>. How did you get to your conclusions?</li>
<li>Don&#8217;t just read. Use visuals to accompany the talk. Visuals aren&#8217;t the talk.</li>
<li>Practice. Just once or twice through will make things a lot smoother.</li>
</ul>
<p>Equipment:</p>
<ul>
<li>Make sure your equipment works beforehand. Nobody wants to see you fiddle around with your Windows/OSX laptop only to find out you didn&#8217;t bring the dongle or can&#8217;t operate the Displays control panel. (Interestingly enough, I see Linux &#8220;just work&#8221; more than Windows or OSX these days).</li>
<li>If there is a microphone, use it. I don&#8217;t want to struggle to hear you.</li>
<li>If you are constantly using a laser pointer you either have too much on your slides or the slide does not highlight the important information. (laser pointers are useful when people ask questions though)</li>
</ul>
<p>One blog I love on the subject is <a href="http://www.presentationzen.com/">Presentation Zen</a>. I&#8217;ll also recommend the book, but you can get so much just from the web site.</p>
<p>Some excellent recent presentations:</p>
<ul>
<li><a href="http://www.lca2010.org.nz/programme/schedule/view_talk/50240?day=thursday">Simplicity Through Optimization</a> &#8211; <a href="http://www.rdrop.com/users/paulmck/">Paul McKenney<br />
</a>Paul is able to explain RCU clearly and concisely through visuals. You are left with no doubt that this does really work. The visuals are not everything, they assist in the telling of the RCU story</li>
<li><a href="http://www.ted.com/talks/jamie_oliver.html">Teach every child about food</a> &#8211; <a href="http://www.jamieoliver.com/">Jamie Oliver<br />
</a>I watched this online. Note how not everything was smooth the whole way. Also note how this was still effective. Passion is an awesome tool. Check out the simple graph showing lead causes of death: simple and effective.</li>
<li>﻿<a href="http://www.ted.com/talks/bill_gates.html">Bill Gates on energy: Innovating to Zero!</a><br />
Historically, Bill Gates has not been the most engaging speaker. We can all forget the horrible PowerPoint slides with four hundred dot points about some release of something that nobody cared about. This is different. Clear, concise, engaging and simple visuals to make the point.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/02/23/on-presenting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First roll through the Nikon F80</title>
		<link>http://www.flamingspork.com/blog/2010/02/22/first-roll-through-the-nikon-f80/</link>
		<comments>http://www.flamingspork.com/blog/2010/02/22/first-roll-through-the-nikon-f80/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 07:14:06 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[f80]]></category>
		<category><![CDATA[film]]></category>
		<category><![CDATA[nikon]]></category>
		<category><![CDATA[photography]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1799</guid>
		<description><![CDATA[A little while ago I bit the bullet and bought a Nikon film body &#8211; a F80. May as well have a film body that&#8217;s a bit automatic and takes the same lens mount as my digital.
So, I got it and thought &#8220;hrrm&#8230; I better run a roll of film through it to make sure [...]]]></description>
			<content:encoded><![CDATA[<p>A little while ago I bit the bullet and bought a Nikon film body &#8211; a F80. May as well have a film body that&#8217;s a bit automatic and takes the same lens mount as my digital.</p>
<p>So, I got it and thought &#8220;hrrm&#8230; I better run a roll of film through it to make sure it works&#8221;. Off to the fridge i went to find the cheapest, shittiest roll of film possible&#8230; I found &#8220;Walgreens&#8221; brand film. Manufactured by one of many, bought for cheap, and run through the F80.</p>
<p>Some shots turned out pretty good. I have the full set (most of the roll) up on <a href="http://www.flickr.com/photos/stewartsmith/sets/72157623484192342/">flickr</a>. A few choice ones are:</p>
<p><a href="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000004.jpg"><img class="aligncenter size-large wp-image-1800" title="Michael, Beer, Hot Night." src="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000004-682x1024.jpg" alt="" width="450" height="675" /></a></p>
<p>Which due to some nice accident of lighting, turned out pretty good. IIRC this was pretty late at night and I was editing photos as Michael came over (bringing much needed beer).</p>
<p><a href="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000005.jpg"><img class="aligncenter size-medium wp-image-1801" title="Slides and Beer" src="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000005-300x200.jpg" alt="" width="300" height="200" /></a>Slides and beer, do you need anything else? I just like this because it&#8217;s a snapshot of what I was working on (well, kinda, I was mostly just manipulating digital images).</p>
<p><a href="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000007.jpg"><img class="aligncenter size-medium wp-image-1802" title="Leah" src="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000007-300x200.jpg" alt="" width="300" height="200" /></a>Leah and I went bushwalking&#8230; so had to snap a shot of her. I do like the Nikon 50mm as a portrait lens. The film&#8230; well&#8230; it was cheap, but not too bad actually.</p>
<p><a href="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000010.jpg"><img class="aligncenter size-medium wp-image-1803" title="greenery" src="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000010-300x200.jpg" alt="" width="300" height="200" /></a>A shallow depth of field can be a lot of fun. Although not entirely sure how I feel about the bokeh&#8230;.</p>
<p><a href="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000024.jpg"><img class="aligncenter size-medium wp-image-1805" title="dead leaf in the leaves" src="http://www.flamingspork.com/blog/wp-content/uploads/2010/02/f1000024-300x200.jpg" alt="" width="300" height="200" /></a>Which has some odd colours. Nice, but odd.</p>
<p>I like my &#8220;new&#8221; body. It&#8217;ll be fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/02/22/first-roll-through-the-nikon-f80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anti-features mean pirates get all the good things</title>
		<link>http://www.flamingspork.com/blog/2010/02/22/anti-features-mean-pirates-get-all-the-good-things/</link>
		<comments>http://www.flamingspork.com/blog/2010/02/22/anti-features-mean-pirates-get-all-the-good-things/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 23:53:31 +0000</pubDate>
		<dc:creator>Stewart Smith</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[antifeature]]></category>
		<category><![CDATA[antifeatures]]></category>
		<category><![CDATA[bluray]]></category>
		<category><![CDATA[dvd]]></category>
		<category><![CDATA[pirate]]></category>

		<guid isPermaLink="false">http://www.flamingspork.com/blog/?p=1796</guid>
		<description><![CDATA[Spotted on Boing Boing:

The worst is renting&#8230; the amount of times you have to press skip (or the damn disc doesn&#8217;t work) you do start to wonder if you would have had a much better user experience if you just downloaded it instead.
]]></description>
			<content:encoded><![CDATA[<p>Spotted on <a href="http://www.boingboing.net/2010/02/18/infographic-buying-d.html">Boing Boing</a>:</p>
<p><img class="alignnone" title="Pirate versus purchased" src="http://i.imgur.com/GxzeV.jpg" alt="" width="800" height="825" /></p>
<p>The worst is renting&#8230; the amount of times you have to press skip (or the damn disc doesn&#8217;t work) you do start to wonder if you would have had a much better user experience if you just downloaded it instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamingspork.com/blog/2010/02/22/anti-features-mean-pirates-get-all-the-good-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
