<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.ancient-workshop.com/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>ancient wisdom</title>
  <link>http://blog.ancient-workshop.com/</link>
  <atom:link href="http://blog.ancient-workshop.com:82/feed/rss2" rel="self" type="application/rss+xml"/>
  <description>the development blog of Ancient Workshop.</description>
  <language>en</language>
  <pubDate>Fri, 06 Jan 2012 18:57:52 +1300</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Weather Station Hacking</title>
    <link>http://blog.ancient-workshop.com/post/2011/12/10/Weather-Station-Hacking</link>
    <guid isPermaLink="false">urn:md5:a59f8f2a80ca4d42a2d035eb2cd3a847</guid>
    <pubDate>Sat, 10 Dec 2011 13:34:00 +1300</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;The missus got a weather station for her birthday. I mounted it on a
convenient sturdy post at the end of the garden, and it started gathering
data.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.ancient-workshop.com/public/.IMG_5235_m.jpg&quot; alt=&quot;Weather Station&quot; title=&quot;Weather Station, Dec 2011&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(That fence is on a bit of a slope, and the post is wonky, but thanks to
some carefully engineered wedges the weather station is level.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now, there's not much point gathering data if you don't upload it somewhere.
It's a pretty heavy duty unit (a Davis Vantage Pro2), so I expected it to be
easy to interface to a PC. Surprisingly, it doesn't come with that ability out
of the box - you have to buy a little dongle and some software for 290 NZD, or,
if you want it to upload its results automatically without a PC, 500 NZD. That
seemed on the outrageous side to me, so I went and googled for cheap
alternatives.&lt;/p&gt;
&lt;p&gt;It didn't take long to find this &lt;a href=&quot;http://madscientistlabs.blogspot.com/2011/01/davis-weatherlink-software-not-required.html&quot;&gt;
blog post&lt;/a&gt; from someone who'd worked out how to interface to the unit
without the dongle. It uses a 3.3v serial connection, which you can get pretty
cheaply - but that's still not cheap enough for me, and still requires a PC
always on to upload the data to the web.&lt;/p&gt;
&lt;p&gt;Luckily, I had an old Linksys WRT54G sitting around. It's a classic
hacker-friendly device, very easy to install linux on, and, most usefully, has
a connector inside that handles serial at 3.3v. It's been sitting in my study
acting as a dumb switch since it was superseded by the AirPort. Time to dust it
off and give it some gainful employment.&lt;/p&gt;
&lt;p&gt;I installed &lt;a href=&quot;http://openwrt.org&quot;&gt;OpenWRT&lt;/a&gt; on it, drilled a hole
in its case, soldered some wires in, and hooked it up to the Davis console.
Fired up minicom, typed some commands, and - hey presto! - it worked. I spent
some time happily turning the console's backlight on and off. This was too
easy!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.ancient-workshop.com/public/.IMG_1956_m.jpg&quot; alt=&quot;Linksys&quot; title=&quot;Linksys, Dec 2011&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Jony Ive eat your heart out.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Well yes. As it turned out, it was too easy. Getting from this stage to
having something which would automatically update a website with the results
turned out to be quite a slog. Still, I did it so that you don't have to!&lt;/p&gt;
&lt;p&gt;My original notion was to install the wview daemon on the router. This
handles all sorts of weather stations, serves up its own web pages, and can
forward the results to a variety of other weather sites. But to build wview, I
first had to build the OpenWRT toolchain, and stuff the firmware full of the
relevant dependencies. After a couple of brickings (including one that I could
only recover by &lt;a href=&quot;http://www.linksysinfo.org/index.php?threads/the-wrt54g-revival-guide.15815/&quot;&gt;jamming
a fork in&lt;/a&gt; the router), I realised that I simply wasn't going to get
something the size of wview crammed into the 4MB of flash available to me.&lt;/p&gt;
&lt;p&gt;Next I looked to the various Perl scripts that people have written for
communicating with their weather stations. But it turned out that I couldn't
even fit Perl into the firmware. It was clear that I had to look at the problem
from the other side - see what was available on the router, then try to use
that. As it turned out, Lua was already included, so that's what I had to
use.&lt;/p&gt;
&lt;p&gt;Armed with the documentation for the &lt;a href=&quot;http://www.davisnet.com/support/weather/download/VantageSerialProtocolDocs_v230.pdf&quot;&gt;
Davis serial protocol&lt;/a&gt; and the &lt;a href=&quot;http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol&quot;&gt;upload
protocol&lt;/a&gt; for &lt;a href=&quot;http://www.wunderground.com/&quot;&gt;wunderground&lt;/a&gt; (which
we'd decided on as a Good Site to host the data), I set about writing my own
solution.&lt;/p&gt;
&lt;p&gt;The next problem turned out to be communicating over the serial connection.
It had been straightforward using minicom, but accessing /dev/ttyS1 from within
Lua gave very inconsistent results. It turns out that by default, Unix still
assumes that a serial port exists so that dumb terminals can connect to it.
When it sees data coming in, it tries to respond to it on that assumption. So
the Davis console would start sending its data, and the router would
immediately start responding &amp;quot;OH HAI HOW ARE YOU TODAY&amp;quot;, which would cause the
console to cancel in confusion.&lt;/p&gt;
&lt;p&gt;I built a new version of the firmware with stty enabled, and that let me
apply these intuitive settings:&lt;/p&gt;
&lt;pre&gt;
&amp;gt; stty -F /dev/ttyS1 -a
speed 19200 baud;stty: /dev/ttyS1
 line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = &amp;lt;undef&amp;gt;; eol2 = &amp;lt;undef&amp;gt;; swtch = &amp;lt;undef&amp;gt;; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
&lt;/pre&gt;
&lt;p&gt;The final hurdle was that Lua doesn't seem to offer a non-blocking read or a
way to spawn new threads, and I was worried that the script could too easily
get hung up waiting for data from the console. My solution was a little clunky,
but should be robust; I have two separate scripts - one periodically sending a
request for more data, and the other constantly reading the serial port looking
for anything it recognises as a valid packet.&lt;/p&gt;
&lt;p&gt;The request script is incredibly simple - it sends a carriage return to wake
up the console, waits a second, then requests a single LOOP packet:&lt;/p&gt;
&lt;p&gt;davissnd.sh:&lt;/p&gt;
&lt;pre&gt;
echo &amp;gt; /dev/ttyS1
sleep 1s
echo LOOP 1 &amp;gt; /dev/ttyS1
&lt;/pre&gt;
&lt;p&gt;and an entry in /etc/crontab to run it every 5 minutes:&lt;/p&gt;
&lt;pre&gt;
*/5 * * * * /root/davissnd.sh &amp;gt; /dev/null
&lt;/pre&gt;
&lt;p&gt;The receiving script has a bit more work to do. It looks for the start of a
loop packet (&amp;quot;LOO...&amp;quot;), pulls in enough data for a whole packet, then checks
that it has a valid CRC. If so, it picks out the relevant data and sends it on
to wunderground. It should err on the side of quietly dropping data if there's
a problem, rather than sending bad data to the web.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.ancient-workshop.com/public/davisrcv.lua&quot;&gt;davisrcv.lua&lt;/a&gt; (If you use it, you'll have
to edit the script to add your own station id and password)&lt;/p&gt;
&lt;p&gt;All that's left is to kick it off on startup, by adding the following to
/etc/rc.local:&lt;/p&gt;
&lt;pre&gt;
stty -F /dev/ttyS1 0:0:cbe:0:3:1c:7f:15:1:0:0:0:11:13:1a:0:12:f:17:16:4:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
lua /root/davisrcv.lua &amp;amp;
&lt;/pre&gt;
&lt;p&gt;And here are the &lt;a href=&quot;http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IWELLING58&quot;&gt;results&lt;/a&gt;!&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2011/12/10/Weather-Station-Hacking#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2011/12/10/Weather-Station-Hacking#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/654499</wfw:commentRss>
      </item>
    
  <item>
    <title>Another Competition</title>
    <link>http://blog.ancient-workshop.com/post/2010/10/29/Another-Competition</link>
    <guid isPermaLink="false">urn:md5:1211e4dc4296885bad319b48379130df</guid>
    <pubDate>Fri, 29 Oct 2010 11:13:00 +1300</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;Palm held a &lt;a href=&quot;http://www.palmhotapps.com&quot; hreflang=&quot;en&quot;&gt;competition&lt;/a&gt; to promote their PDK. &lt;em&gt;Ancient Frog&lt;/em&gt; was eligible,
but (possibly because it had passed its peak before the competition started)
didn't fare as well as I'd hoped.&lt;/p&gt;
&lt;p&gt;On the other hand, there was a category for free apps, and for a while the
number of entrants was smaller than the number of prizes on offer. This looked
like a good opportunity to bang out some free apps - it meant I might win
something, I could experiment with what genres of app generate the most
interest, and I could have a bit of fun doing some rapid prototyping. All
models of Pre and Pixi have OpenGL ES2.0 hardware, so I could go to town with
shaders.&lt;/p&gt;
&lt;p&gt;I gave myself no more than two days per app. The speed of development and
the limited scale of what I expected to achieve meant that it was a proper
hackfest. All the code went into one ugly C file. Magic numbers, hard-coded
data, copy-and-paste coding - everything that shaves a few minutes off writing
a bit of code at the expense of making it unmaintainable, bug-prone and
difficult to build upon. I felt simultaneously dirty and liberated.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.ancient-workshop.com/public/earthnow.jpg&quot;&gt;&lt;img src=&quot;http://blog.ancient-workshop.com/public/.earthnow_t.jpg&quot; alt=&quot;Earth Now&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; title=&quot;Earth Now, Oct 2010&quot; /&gt;&lt;/a&gt;The first thing I made was &lt;a href=&quot;http://developer.palm.com/webChannel/index.php?packageid=com.ancient-workshop.earthnow&quot; hreflang=&quot;en&quot;&gt;Earth Now&lt;/a&gt;. It shows a 3D view of the Earth (rendered using
NASA satellite imagery, including normal mapping from the height data and
specular mapping for water / ice), and downloads the latest global cloud cover
imagery to display on top. I thought it would be a quick app to ease myself in
to things, but it ended up taking two days - most of which was locating a
decent source of cloud imagery, and writing my own http code to get at it
through its content network.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.ancient-workshop.com/public/liquidplanet.jpg&quot;&gt;&lt;img src=&quot;http://blog.ancient-workshop.com/public/.liquidplanet_t.jpg&quot; alt=&quot;Liquid Planet&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; title=&quot;Liquid Planet, Oct 2010&quot; /&gt;&lt;/a&gt;The next one was a sandpit app called
&lt;em&gt;Liquid Planet&lt;/em&gt;. It combined a bunch of tricks that I found useful in
museum interactives - GPU-based interactive water and earth, with a bathymetric
model of the Earth that you can flood and drain. It's quite fun drowning
continents, or seeing just how much land there was during the last ice age (New
Zealand was huge!). This one took less than a day, but was unfortunately a bit
too demanding of the phone's GPU. (I'm used to doing this sort of thing on
high-end PC gaming cards, and while it's impressive how much you can do in a
shader on a Pre, it can't really handle the number of textures I wanted).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.ancient-workshop.com/public/tonalpool.jpg&quot;&gt;&lt;img src=&quot;http://blog.ancient-workshop.com/public/.tonalpool_t.jpg&quot; alt=&quot;Tonal Pool&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; title=&quot;Tonal Pool, Oct 2010&quot; /&gt;&lt;/a&gt;Then, a music app called &lt;a href=&quot;http://developer.palm.com/webChannel/index.php?packageid=com.ancient-workshop.tonal&quot; hreflang=&quot;en&quot;&gt;Tonal Pool&lt;/a&gt;. I've traditionally been very bad at handling
sound in my games, generally seeing it as the area responsible for the majority
of the game's data footprint, the majority of the annoying configy crashy bugs,
and the least important part of the experience. (Throughout my time in the
games industry, I'd hear people repeatedly argue that it's the most important
part of the experience, but really - try playing a game with the speakers
turned off. Oh, you already do! Now try playing with the screen turned
off.)&lt;/p&gt;
&lt;p&gt;Anyway, it's time I made my peace with that particular sense, so I decided
to make an app that was all about the sound - a &lt;em&gt;Tenori-On&lt;/em&gt;-style
sequencer. Of course, I still didn't trust it to survive on sound alone, so
it's framed in a nice little GPU-based interactive water pool, with ripples
going off as each peg sounds. I was pleased with the result - one day of work,
and I had several nice emails about it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.ancient-workshop.com/public/banner.jpg&quot;&gt;&lt;img src=&quot;http://blog.ancient-workshop.com/public/.banner_t.jpg&quot; alt=&quot;Banner&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; title=&quot;Banner, Oct 2010&quot; /&gt;&lt;/a&gt;&lt;em&gt;Banner&lt;/em&gt; came next. It was a bit of an
experiment - I wanted to see if I could create a software version of those
light sticks that you wave to spell out messages using persistence of vision.
The screen can only handle 60fps, which is definitely at the low end of what
you need to pull off the trick, and there's an accelerometer to help sort out
synchronisation.&lt;/p&gt;
&lt;p&gt;You draw your design on the screen with a rudimentary paint application,
then start waving the phone. It automatically senses this, and starts flashing
a line of dots to recreate your image in the air. It works, but only in a
really dark room, and it takes some practice to get good results. After a day
on it, I decided that it was never going to be good enough to meet the Free App
Downloader's expectations, and rather than get slaughtered in the comments, I
decided not to publish it. (Search the iPhone app store for similar apps if you
want to read how people respond to basic physical limitations...)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.ancient-workshop.com/public/ancientpond.jpg&quot;&gt;&lt;img src=&quot;http://blog.ancient-workshop.com/public/.ancientpond_t.jpg&quot; alt=&quot;Ancient Pond&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; title=&quot;Ancient Pond, Oct 2010&quot; /&gt;&lt;/a&gt;Finally, my favourite: &lt;a href=&quot;http://developer.palm.com/webChannel/index.php?packageid=com.ancient-workshop.fish&quot; hreflang=&quot;en&quot;&gt;Ancient Pond&lt;/a&gt;. (Yes - I liked it so much I gave it the
&lt;em&gt;Ancient&lt;/em&gt; seal of quality). It's your basic fish pond app, using (ahem)
that GPU water effect again, this time with a nice flocking algorithm running
under it to make fish dart and swim about. It took a couple of days, and then
another day or so updating it to add different themes and do some tweaking of
the experience. I managed to keep the framerate up to an acceptable level
(particularly on the Pixi, which, surprisingly, handles it better than the Pre)
by strictly limiting the effects. So there's a theme which has shadows and
refraction on the water, and a theme which instead has specular highlights and
caustics.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ancient Pond&lt;/em&gt; took off really well - there's clearly an interest in
this sort of app, and I really enjoyed myself writing it. It's very tempting to
turn it into a real app, cross-platform, with downloadable creatures and
ornaments and so on. I'm still mulling over whether to put &lt;em&gt;Blue Comb&lt;/em&gt;
on hold and do this first.&lt;/p&gt;
&lt;p&gt;In the meantime, it would be nice to add a few more features, but it's right
up against the hack-it-now-and-never-look-back approach I used to create it. To
do anything more to it at all would really mean tearing it down and starting
again properly.&lt;/p&gt;
&lt;p&gt;So, how did I fare in the competition?&lt;/p&gt;
&lt;p&gt;Well, the &lt;a href=&quot;http://www.palmhotapps.com&quot; hreflang=&quot;en&quot;&gt;results&lt;/a&gt;
don't seem to be up yet, but I've had an email which confirms that my placement
in the leaderboard was accurate. &lt;em&gt;Ancient Frog&lt;/em&gt; snagged one of the $1000
HP store credit prizes, as did &lt;em&gt;Ancient Pond&lt;/em&gt; and &lt;em&gt;Tonal Pool&lt;/em&gt;.
Both of them hovered tantalisingly in the $10,000 actual money prize category,
but were finally beaten out. &lt;em&gt;Earth Now&lt;/em&gt; and the free version of
&lt;em&gt;Ancient Frog&lt;/em&gt; were also in the running until the last few days of the
competition. &lt;em&gt;Liquid Planet&lt;/em&gt; fizzled, and I ended up pulling it from the
store.&lt;/p&gt;
&lt;p&gt;I had a lot of fun, and I have a nice little purse which I &lt;em&gt;have&lt;/em&gt; to
spend on fun things, so that's great. And since the HP store sells Canon
lenses, and I &lt;em&gt;live&lt;/em&gt; for Canon lenses, I'm a happy man.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2010/10/29/Another-Competition#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2010/10/29/Another-Competition#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/557897</wfw:commentRss>
      </item>
    
  <item>
    <title>Epic Win</title>
    <link>http://blog.ancient-workshop.com/post/2010/09/15/Epic-Win</link>
    <guid isPermaLink="false">urn:md5:348994b7cb870fa1fbb55bf4eb0bee68</guid>
    <pubDate>Wed, 15 Sep 2010 12:33:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;Ancient Frog &lt;a href=&quot;http://appdeveloper.intel.com/en-us/contest/intel-atom-developer-challenge-winners&quot; hreflang=&quot;en&quot;&gt;won another award&lt;/a&gt; - &amp;quot;Most Elegant Application&amp;quot; in the Intel
Atom Developer Challenge.&lt;/p&gt;
&lt;p&gt;I may not be smiling in that photo, but that's because I'm not very good
around cameras. I'm smiling over here though.&lt;/p&gt;
&lt;p&gt;The Intel Atom edition of Ancient Frog contains all the stuff that I
couldn't get running on iPad because of its limited fillrate. I submitted it
for the &amp;quot;Best of Games&amp;quot; part of the contest, but through my own incompetence I
missed that deadline. Winning a Grand Prize instead was a delightful
surprise.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2010/09/15/Epic-Win#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2010/09/15/Epic-Win#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/546114</wfw:commentRss>
      </item>
    
  <item>
    <title>Interview B</title>
    <link>http://blog.ancient-workshop.com/post/2010/08/23/Interview-B</link>
    <guid isPermaLink="false">urn:md5:bb820a53953590c997aaeb7aa84b500b</guid>
    <pubDate>Mon, 23 Aug 2010 13:10:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;And here I am again, shooting my mouth off to Intel:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://appdeveloper.intel.com/en-us/article/iphone-appup-porting-ancient-frog&quot; hreflang=&quot;en&quot;&gt;http://appdeveloper.intel.com/en-us/article/iphone-appup-porting-ancient-frog&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2010/08/23/Interview-B#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2010/08/23/Interview-B#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/541158</wfw:commentRss>
      </item>
    
  <item>
    <title>Interview</title>
    <link>http://blog.ancient-workshop.com/post/2010/08/05/Interview</link>
    <guid isPermaLink="false">urn:md5:711d5bf2002ec3439d7e4c0273c39582</guid>
    <pubDate>Thu, 05 Aug 2010 15:00:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;I was interviewed for Mac Format UK, although they only ended up using a
couple of sentences. The full thing is &lt;a href=&quot;http://funambulism.com/2010/08/interview-james-brown-ancient-workshop/&quot; hreflang=&quot;en&quot;&gt;here&lt;/a&gt; - go and read it why don't you.&lt;/p&gt;
&lt;p&gt;(As you can tell from the final question, he'd asked my friend &lt;a href=&quot;http://www.cliffski.com&quot; hreflang=&quot;en&quot;&gt;Cliffski&lt;/a&gt; first, before settling on
me.)&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2010/08/05/Interview#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2010/08/05/Interview#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/537582</wfw:commentRss>
      </item>
    
  <item>
    <title>Ports Ports Ports</title>
    <link>http://blog.ancient-workshop.com/post/2010/05/11/Ports-ports-ports</link>
    <guid isPermaLink="false">urn:md5:34ed40b14676e964dd745267403a42fb</guid>
    <pubDate>Tue, 11 May 2010 16:24:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;&lt;img src=&quot;http://blog.ancient-workshop.com/public/.IMG_2644_m.jpg&quot; alt=&quot;IMG_2644.jpg&quot; title=&quot;IMG_2644.jpg, May 2010&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ancient Frog currently runs on all of the devices in this picture, and a few
more that happened not to be there when I was playing with my camera.&lt;/p&gt;
&lt;p&gt;The iPad port is out and failing to set the world alight. It did pretty well
in its first week, getting featured by Apple. But featured on the iPad in
launch week turns out to fall a long way short of featuring on the iPhone, and
when the week was up, it didn't have any momentum.&lt;/p&gt;
&lt;p&gt;The Palm Prē version is &lt;a href=&quot;http://developer.palm.com/webChannel/index.php?packageid=com.ancient-workshop.frog&quot; hreflang=&quot;en&quot;&gt;out&lt;/a&gt; too. I really enjoyed doing that one - I discovered at
GDC that Palm was opening up native development, got a Prē straight away, and
had something running in a couple of days. It's essentially the Windows build
in its iPhone-sized debugging configuration, with the OpenGL ES code and
textures from the iPhone version. Wonderfully painless, and with the crisper
screen, and the river-polished-stone feel of the Prē, it's beautiful. My
favourite version so far. It takes a while for the sales figures to come
through from Palm, so I don't really know how it's doing yet - but it doesn't
need to do anything spectacular to justify the effort.&lt;/p&gt;
&lt;p&gt;The Android port is still rumbling along. I have something that runs well on
the Nexus One, although it lacks sound, there are some situations where it
fails to recreate textures correctly, and the levels all need redoing (again).
(This time they need to be higher res and aspect-ratio agnostic versions of the
original iPhone levels - the iPad versions only make sense on a physically
larger screen). The textures also can't be compressed, because there's no
standard GPU on Android devices, and there's a silly restriction on how much
data you can fit in internal storage. So lots of bitty work to get it to run
reliably on a decent cross section of the various devices out there, and still
no way to charge money for it from New Zealand. I keep picking away at it
because at some point it'll probably be worth the pain to nail all of the
remaining problems.&lt;/p&gt;
&lt;p&gt;The desktop version, OS-X and Windows. I keep flip-flopping on this. I'm
just not sure what sort of market there is for a game like Ancient Frog on the
desktop. The App Store has lowered everyone's price expectations, and I don't
think I'd be able to sell nearly enough copies at $5-ish to be worth the
support hassles of getting it running on decade-old malware-ridden boxes.&lt;/p&gt;
&lt;p&gt;The netbook version. This is basically the desktop version, but with Intel
handling some of the config testing woes, and the possibility of prizes in
their competition, I'm tipped in favour of it.&lt;/p&gt;
&lt;p&gt;With all of this stuff, Ancient Frog continues to take up a couple of days a
week of my time. The rest of the time I'm working on two new game prototypes,
hoping to get one of them to a critical point where I can announce it and go
all in on it.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2010/05/11/Ports-ports-ports#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2010/05/11/Ports-ports-ports#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/515848</wfw:commentRss>
      </item>
    
  <item>
    <title>Ancient Frog HD</title>
    <link>http://blog.ancient-workshop.com/post/2010/04/15/Ancient-Frog-HD</link>
    <guid isPermaLink="false">urn:md5:42fcabc3cde0727ee78b1795f5a4b076</guid>
    <pubDate>Thu, 15 Apr 2010 12:01:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;I decided to take the plunge and release the iPad version of Ancient Frog on
iPad launch day. It's a bit of a risk - I'm really not comfortable releasing
something that I haven't seen running on the actual target hardware - but I
thought it would be more likely to get noticed if it was in at the beginning.
It also did me good to have a tight and immovable deadline to work towards.
It's very hard to buckle down and finish a game, even one that's supposedly
already finished, and the launch deadline forced me to finally decide what's in
and what's out, and to polish off all the loose ends. To massacre a
metaphor.&lt;/p&gt;
&lt;p&gt;I did leave some stuff out. There's supposed to be interactive water, but I
was worried about the performance, so that's waiting for my iPad to turn up.
(It was a bit of a saga in itself, getting one shipped out to New Zealand, but
it's finally FedExing its way across the Pacific.) As soon as I've plugged in
all the missing stuff and buffed up the performance, I'll be releasing a lovely
update.&lt;/p&gt;
&lt;p&gt;I called the iPad version &lt;a href=&quot;http://itunes.apple.com/us/app/ancient-frog-hd/id364187960?mt=8&quot; hreflang=&quot;en&quot;&gt;Ancient Frog HD&lt;/a&gt;. This may have been a mistake - the HD suffix has been
applied to a lot of iPhone titles that have been lazily up-rezzed with no
regard to the different form factor and demands of the iPad. I like to think
that Ancient Frog HD is a significant upgrade to the original title (it
certainly took a significant amount of time &amp;amp; effort), and I'm not sure
that's the message that people are getting.&lt;/p&gt;
&lt;p&gt;It had a little feature in 'what's hot' for the first week, which produced
reasonable sales. However, the iPad app store is already crowded, and the user
base is still much smaller than the iPhone, so I'm hoping for a nice steady
slow burner.&lt;/p&gt;
&lt;p&gt;If you're lucky enough to have an iPad, you can check it out on iTunes
&lt;a href=&quot;http://itunes.apple.com/us/app/ancient-frog-hd/id364187960?mt=8&quot; hreflang=&quot;en&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2010/04/15/Ancient-Frog-HD#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2010/04/15/Ancient-Frog-HD#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/508911</wfw:commentRss>
      </item>
    
  <item>
    <title>Ancient Frog on the iPad</title>
    <link>http://blog.ancient-workshop.com/post/2010/01/29/Ancient-Frog-on-the-iPad</link>
    <guid isPermaLink="false">urn:md5:12c6fd81a9f6b518dba6a430053e2a4a</guid>
    <pubDate>Fri, 29 Jan 2010 19:09:00 +1300</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;You may have missed it - the news slipped out pretty quietly - but Apple has
announced a new product line.&lt;/p&gt;
&lt;p&gt;The iPad is essentially a scaled up iPod touch, so naturally I'm interested
in what it means for Ancient Frog.&lt;/p&gt;
&lt;p&gt;According to the announcement (and my experiments in the simulator), iPhone
apps work on the iPad straight out of the box, with no changes needed. However,
since the screen is higher resolution (1024x768 instead of 320x480), and a
different aspect ratio (4x3 instead of 2x3), such apps won't look their best.
Below are a couple of mockups of what you'd see if you had an iPad right now
and ran Ancient Frog on it. (All of the pictures are shrunk down to fit on your
screen - click on them to see them full res.)&lt;/p&gt;
&lt;p&gt;The first mode just runs the iPhone app at its original resolution, giving
you a little window in the middle of the screen:&lt;/p&gt;
&lt;a href=&quot;http://www.ancient-workshop.com/images/ipad/iphone1x.jpg&quot;&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/ipad/iphone1x.jpg&quot; alt=&quot;&quot; height=&quot;512&quot; width=&quot;384&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It also gives you the option to run it &amp;quot;2x&amp;quot; - doubling the size of each pixel
(in each direction), so the app uses more of the iPad's screen (640x960 of it).
This makes it bigger, but either blurry or blocky depending on whether or not
the device is going to filter the image when it scales up. I suspect they'll go
for blocky, which is what I've simulated here.&lt;br /&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ancient-workshop.com/images/ipad/iphone2x.jpg&quot;&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/ipad/iphone2x.jpg&quot; alt=&quot;&quot; height=&quot;512&quot; width=&quot;384&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, neither of these options is particularly elegant or attractive. With a
bit of fiddling around though, I can make the current iPhone application
recognise the iPad and behave more like a native application on that platform.
What I've done here is run it at 768x1024, but allowing it to letterbox
slightly to retain the original aspect ratio (luckily the ragged border gives
me a neat way to bring the edges in a bit, as well as a bit of room to lose
some pixels top and bottom). This already looks way better than the previous
shot - lots of elements are still blurry, but things that appear at varying
scales in the game are already at a higher resolution. This means the text, the
daisy and the particle effects are all crisp, which makes the whole thing seem
higher resolution.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ancient-workshop.com/images/ipad/ipad-native.jpg&quot;&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/ipad/ipad-native.jpg&quot; alt=&quot;&quot; height=&quot;512&quot; width=&quot;384&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
So that's good - I can put a bit of work into the current app, and release a
free update that makes it play nicely on the iPad. But it's still blurry - what
would be involved in making it look great on the new hardware?&lt;/p&gt;
&lt;p&gt;That's where it gets a bit tricky. The work involved suddenly goes up by an
order of magnitude. Every level has to be reworked, and I have to handle the
original aspect ratio, as well as two new ones for the iPad (for portrait and
landscape). The download size also goes up - currently I fit just under the
10MB limit that allows people to download over their phone. With the background
textures doubled up, I'm over 20MB and start to lose impulse buys (as well as
bloating out the app for everyone, regardless of whether they have an
iPad).&lt;/p&gt;
&lt;p&gt;So my plan is to leave it at that - an incremental upgrade to make the
experience worthwhile on the iPad - and offer a separate, HD, version for iPad
only. This will use the reworked levels I've been beavering away at for the
last few months, and make use of its groovy auto-aspect-ratio handling (the
desktop version can be stretched to all sorts of whacky resolutions without
breaking the effect).&lt;/p&gt;
&lt;p&gt;And here's the result:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ancient-workshop.com/images/ipad/ipad-hd-p.jpg&quot;&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/ipad/ipad-hd-p.jpg&quot; alt=&quot;&quot; height=&quot;512&quot; width=&quot;384&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It's work in progress (the lighting has yet to be graded correctly, and the
particles are missing), but you get the idea. The full screen is used, the frog
is back down to a more appropriate size for human fingers to prod at, and
there's some nice little environmental stuff going on for you to play with.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ancient-workshop.com/images/ipad/ipad-hd-l.jpg&quot;&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/ipad/ipad-hd-l.jpg&quot; alt=&quot;&quot; height=&quot;384&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It would be nice if there were a way to offer a cheap upgrade path for
people who already have the iPhone version, and I'm looking at whether there's
a clever way to do that.&lt;/p&gt;
&lt;p&gt;I can't wait to get my hands on the physical hardware. I think there's going
to be some very interesting times for gaming in the next few years.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2010/01/29/Ancient-Frog-on-the-iPad#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2010/01/29/Ancient-Frog-on-the-iPad#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/479977</wfw:commentRss>
      </item>
    
  <item>
    <title>Awards</title>
    <link>http://blog.ancient-workshop.com/post/2010/01/27/Awards</link>
    <guid isPermaLink="false">urn:md5:30947191d999cab8ff6f3728d07c17e3</guid>
    <pubDate>Wed, 27 Jan 2010 12:10:00 +1300</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;Some good news for Ancient Frog this month.&lt;/p&gt;
&lt;p&gt;It was honourably mentioned twice in the &lt;a href=&quot;http://www.igfmobile.com/10mobilefinalists.html&quot; hreflang=&quot;en&quot;&gt;IGF Mobile&lt;/a&gt;
awards - Best Mobile Game Design, and Achievement In Art. I only just missed
the deadline for submitting last year, which is why it's appearing here so
late. (Interestingly, Ancient Frog was out on the App Store shortly before Zen
Bound, one of last year's winners. They clearly had a working build earlier
than I did. I remember I was in a tearing hurry to get something out the door
before Dylan was born, and pretty much released as soon as the levels were
ready.)&lt;/p&gt;
&lt;p&gt;I've also been nominated in the &lt;a href=&quot;http://www.imgawards.com/EN/the-nominees.php&quot; hreflang=&quot;en&quot;&gt;IMGA awards&lt;/a&gt; -
under Excellence In Design.&lt;/p&gt;
&lt;p&gt;It's nice getting this recognition - particularly the categories I'm falling
into. I'm an old (old, old) school game programmer, and was always one for
getting my teeth into every part of the creation of a game. Towards the end of
my time in the mainstream games industry I'd been pushed further and further
into a narrow niche, until I was just a middle-manager with a team of
programmers to look after. Getting nominated for 'art' and 'design' awards
helps take some of the bad taste of those times away.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2010/01/27/Awards#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2010/01/27/Awards#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/479175</wfw:commentRss>
      </item>
    
  <item>
    <title>Retrospective</title>
    <link>http://blog.ancient-workshop.com/post/2010/01/05/Retrospective</link>
    <guid isPermaLink="false">urn:md5:98cd1d8811ebb930fd16e876e65da3e2</guid>
    <pubDate>Tue, 05 Jan 2010 20:25:00 +1300</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;My thrashing around trying to pin down the details of project Blue Comb
continues. I have decided on an art style, which is helping to frame the rest
of it. Ancient Frog started with a very simple and clear premise, but this new
project is just a collection of obsessions which I haven't yet managed to glue
together. I suspect something will need to get cut before I'm able to finish
it.&lt;/p&gt;
&lt;p&gt;I just received an email from Jef Armstrong, whose game &lt;a href=&quot;http://itunes.apple.com/app/mondrian/id347927621?mt=8&amp;amp;uo=6&quot;&gt;Mondrian&lt;/a&gt;
was recently released. Jef emailed me last year, shortly after Ancient Frog was
released, saying words to the effect that he liked my puzzle game, he was
writing his own puzzle game, so let's talk about puzzle games. Flicking back
through the emails, there's some blogworthy stuff about how I created the
levels in Ancient Frog:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Creating the puzzles was one of the big challenges with Ancient Frog. I've
been thinking about writing a blog article about it, because it's something I
personally find fascinating. A large proportion of all the code written for
Frog (possibly the majority - I should check) went into the tools for creating
the puzzles. However, I'm a bit wary about talking too much about it in public
because I suspect that some people would be disappointed to learn that it's not
all lovingly hand crafted by some sort of puzzle making master craftsman.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Seems a bit silly now. Let's hear the details!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The most important part of the toolset is the solver. This has two levels -
a quick pass to determine whether a particular layout has any solution at all,
and a slow pass to exhaustively determine the optimum solution. (In this
context, 'quick' means anything up to 15 seconds, and 'slow' can be up to 6
hours). There's nothing clever about the way it works. It uses brute force and
a fast computer to walk down the tree of possible moves. There's some
interesting optimisation, and stuff like exploiting symmetry, early-out, loop
detection and so on, but essentially it uses the approach that computer
scientists say is impossible. But that's because it's their job to come up with
general solutions which work for the worst cases in the biggest data sets. I'm
able to limit the problem space to something which is achievable by brute
force, and just skip puzzles which are taking too long to check.&lt;/p&gt;
&lt;p&gt;So the process for generating a puzzle goes like this:&lt;/p&gt;
&lt;p&gt;* I choose a start point and an end point, and a set of pegs from which it
can choose its route (this lets me put a particular move into a puzzle, but
often I'll just leave it to choose from all pegs)&lt;/p&gt;
&lt;p&gt;* I press the magic button&lt;/p&gt;
&lt;p&gt;* It goes through a loop where it removes a random peg and tests whether a
solution exists. If there is no solution, it replaces the peg and flags it as
required. This process is repeated until no peg can be removed without creating
an impossible puzzle.&lt;/p&gt;
&lt;p&gt;* It checks the result against all the previously generated puzzles to
ensure it's not a duplicate (taking into account simple translation, rotation
and mirroring)&lt;/p&gt;
&lt;p&gt;* If I like the look of the result, I press magic button #2 and generate the
optimum solution for it&lt;/p&gt;
&lt;p&gt;* I quickly step through the solution to see if I like the look of it. I
tend to reject puzzles that require too much walking backwards, or that push
the frog's head off the side of the screen or have the legs passing over the
fly.&lt;/p&gt;
&lt;p&gt;I like to generate a whole bunch in one sitting, then try to put them in
order based on how difficult I think they look, and how difficult the solver
reckoned they were (that's a bit of code that needs some work by the way - some
of my rankings are quite a bit off). Then I leave them for a day or so while I
get on with other stuff, so I can play them through without knowing how they're
solved. In my playthrough, I log how long it takes me to solve, how many dead
ends I go down, how many undos etc, all of which information also goes into the
difficulty ranking. Each time I play through, I'll generally shuffle levels
around a bit to improve the progression, but I also like having runs of very
similar layouts with increasingly difficult solutions.&lt;/p&gt;
&lt;p&gt;The tools also include stuff for applying backgrounds, frog species,
fine-tuning of board position, rotation &amp;amp; translation of the whole puzzle
and so on.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Interesting stuff!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Happy new year.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2010/01/05/Retrospective#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2010/01/05/Retrospective#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/473218</wfw:commentRss>
      </item>
    
  <item>
    <title>Naming Your Project</title>
    <link>http://blog.ancient-workshop.com/post/2009/12/18/Naming-Your-Project</link>
    <guid isPermaLink="false">urn:md5:2af1ac3718f0560c682a46aaf6c5e59c</guid>
    <pubDate>Fri, 18 Dec 2009 14:41:00 +1300</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;I'm currently experiencing a problem that's so common among game developers,
and so rarely talked about. My new game has the wrong name.&lt;/p&gt;
&lt;p&gt;To be clear, this is a very early prototype I'm talking about, and it's just
the name of the project - its directory on the disk and a handful of its files
- that's wrong. I don't even know what title it's going to have when it's
released. But once you've named your project, it's a lot of work to completely
rename it. For one thing, the locations of all the files will change, which
will cause you all sorts of problems if you're using version control software
(and if you're not, there's all sorts of other problems waiting for you right
there).&lt;/p&gt;
&lt;p&gt;If you've chosen a name that's a perfect fit for your game, and your game
changes, then every time you see it you find it a little bit jarring. It's not
a big problem, but it's a constant niggle.&lt;/p&gt;
&lt;p&gt;The brilliant solution I've come up with is to start using completely random
names for my projects. I've taken a leaf out of the 1950s British military's
book, and decided to use &lt;a href=&quot;http://en.wikipedia.org/wiki/Rainbow_code&quot; hreflang=&quot;en&quot;&gt;Rainbow Codes&lt;/a&gt;. A project is now named using a colour and a
noun. And to make my life easier, I've created a &lt;a href=&quot;http://www.ancient-workshop.com/rainbow.html&quot; hreflang=&quot;en&quot;&gt;web page&lt;/a&gt; to
choose the colour and noun at random.&lt;/p&gt;
&lt;p&gt;The problem I have now, of course, is that it's too convenient. I find
myself repeatedly hitting refresh, looking for the 'random' combination that
best suits what I have in mind. Does this game feel like &lt;em&gt;Blue Boy&lt;/em&gt;, or
is it more of a &lt;em&gt;Violet Pencil&lt;/em&gt;? I'll just keep going until I find the
perfect fit. And when I have a mid-project change of direction, well, it's not
going to be such a good fit any more.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/12/18/Naming-Your-Project#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/12/18/Naming-Your-Project#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/469395</wfw:commentRss>
      </item>
    
  <item>
    <title>Number 1!</title>
    <link>http://blog.ancient-workshop.com/post/2009/12/10/Number-1%21</link>
    <guid isPermaLink="false">urn:md5:366b99e1efe1759086a0d832bfe66f7d</guid>
    <pubDate>Thu, 10 Dec 2009 15:15:00 +1300</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;A couple of days ago I put &lt;a href=&quot;http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=304574714&amp;amp;mt=8&quot; hreflang=&quot;en&quot;&gt;Ancient Frog&lt;/a&gt; on sale ($1.99! Down from $4.99! This crazy
offer cannot last!) The last time it went on sale was back in May (with rather
&lt;a href=&quot;http://blog.ancient-workshop.com/post/2009/05/13/Off-Sale&quot; hreflang=&quot;en&quot;&gt;disappointing&lt;/a&gt; results),
and I thought it was worth trying again. The App Store is constantly evolving,
after all.&lt;/p&gt;
&lt;p&gt;I was impatient to see what effect the price drop was having, so I started
stat mining. Previously, I've tended only to look at the bigger markets -
originally the overwhelming majority of my sales came from the US and UK, later
adding Germany, Canada and Australia. Over time, though, the distribution has
started to flatten out more. The US is still the biggest of course, but it now
accounts for under 50% of my sales, and Japan is up to nearly 10%. With that in
mind, I decided to just grab everything - every ranking from every region - and
see how I was doing.&lt;/p&gt;
&lt;p&gt;One figure jumped out at me immediately: in one of the rows, Ancient Frog
was ranked at #1. The number 1 paid app! Woohoo! Still got it, 10 months after
release! Number 1... in the Family Games category... in Paraguay. But who cares
about the details? That's got to be worth a screenshot:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/marginalia/family.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In fact, digging further, I saw that in the Paraguay App Store I was not
just the #1 paid app in Family Games, but the #2 Puzzle Game, #2 Game overall,
and the #4 paid app in the entire region. I owned Paraguay! This is how
fortunes are made, right?&lt;/p&gt;
&lt;p&gt;Well, it turns out that to reach these dizzyingly high rankings, you only
need to sell one copy. I had a trawl through my stats, and precisely one
Paraguayan has bought Ancient Frog. (Thanks, whoever you are! If I'm ever in
Paraguay I'll buy you a drink.)&lt;/p&gt;
&lt;p&gt;Interesting, but probably not that surprising. But then I had a thought -
just how much ranking does one purchase get you in all of the other regions?
This price cut has led to a very broad but very shallow spread of new sales,
and in a number of regions I've just made my first sale. In the following
table, I've listed all of the regions where I've sold only one copy in at least
the last two weeks. The purchase generally took place in the last couple of
days, but I've listed some where I'm still ranked despite an interval of
several weeks. The positions noted are the highest that I saw - these can drop
off quite quickly (because we're necessarily dealing with regions with very
granular figures).&lt;/p&gt;
&lt;p&gt;So it's all a bit haphazard and imprecise, but I think it's interesting for
all that.&lt;/p&gt;
&lt;pre&gt;
App Store ranking achievable with a single sale:

Country        Family Puzzle Games Apps
_______________________________________
Paraguay       1      2      2     4
Czech Republic 18     39
Slovakia (1)   20     36     50    94
Finland        28     71
Hong Kong      31     60
Poland         41     83
Portugal (2)   42     91
UAE            54     92
Luxembourg (3) 59
China          67
Austria        72 
Kuwait         75
Singapore      84
Turkey         90
Thailand       92
Switzerland    98
&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;1 I saw it at #4 in Family in Slovakia, but when I took this set of
figures a day later, it had dropped to #20&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;2 Copy sold on Nov 21&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;3 Copy sold on Nov 28&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Now you might say that this isn't terribly useful or interesting information
- obviously regions with low sales won't take much to break into their
rankings. You might say that, but have you got the number 1 paid app in
Paraguay &lt;em&gt;(Games/Family subcategory)&lt;/em&gt;?&lt;/p&gt;
&lt;p&gt;No you haven't.&lt;/p&gt;
&lt;p&gt;I have.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/12/10/Number-1%21#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/12/10/Number-1%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/466768</wfw:commentRss>
      </item>
    
  <item>
    <title>Quitting The Day Job</title>
    <link>http://blog.ancient-workshop.com/post/2009/10/26/Quitting-The-Day-Job</link>
    <guid isPermaLink="false">urn:md5:3ccc97091556e3473787b23512f18485</guid>
    <pubDate>Mon, 26 Oct 2009 17:28:00 +1300</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;At about the time Ancient Frog came out, I started a new job for 4 days a
week. I'd always assumed Frog would would be a slow burner if it burned at all,
and the early app store gold rush hoopla had pretty much passed me by, so a bit
of steady income seemed like a good idea. The job involved creating museum
digital interactives, which I'd done before and enjoyed, and working for a guy
I'd worked for before and liked.&lt;/p&gt;
&lt;p&gt;As it turned out, Ancient Frog was featured by Apple and so made the
majority of its sales in the first couple of months, and the museum job turned
out to be a bit more workaday than I'd hoped. And the trouble with working for
someone you like is that you can't just tell them to take their job and shove
it when you decide it's not to your liking.&lt;/p&gt;
&lt;p&gt;So what with one thing and another, I've been looking forward to the time
when I'd be free of external obligations and able to jump back into the games.
That time has finally arrived. I spent the day working on the core technology
for my new game.&lt;/p&gt;
&lt;p&gt;Spring has arrived in my adopted hemisphere, and I do enjoy a new
beginning.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/10/26/Quitting-The-Day-Job#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/10/26/Quitting-The-Day-Job#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/454397</wfw:commentRss>
      </item>
    
  <item>
    <title>Nearly there...</title>
    <link>http://blog.ancient-workshop.com/post/2009/10/03/Nearly-there...</link>
    <guid isPermaLink="false">urn:md5:453456365a53e956f97969b1937f6bf9</guid>
    <pubDate>Sat, 03 Oct 2009 09:48:00 +1300</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;Back from an extended visit to the UK. It was good catching up with all the
people I haven't seen since I moved to NZ, and showing off the son and
heir.&lt;/p&gt;
&lt;p&gt;I'm rapidly approaching the end of some paying work, and when it's finished
I'm planning to go full time on Ancient Workshop. It's been really annoying
this year, watching opportunities drifting past for my own games while I work
on somebody else's stuff. Definitely time to give it the attention it
deserves.&lt;/p&gt;
&lt;p&gt;Meanwhile, here's Ancient Frog on a list of &amp;quot;&lt;a href=&quot;http://www.cultofmac.com/gallery-10-of-the-most-beautiful-iphone-ipod-touch-apps/17665/3&quot;&gt;10
of the Most Beautiful iPhone &amp;amp; iPod Touch Apps&lt;/a&gt;&amp;quot; - makes my day.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/10/03/Nearly-there...#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/10/03/Nearly-there...#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/446460</wfw:commentRss>
      </item>
    
  <item>
    <title>Level 80</title>
    <link>http://blog.ancient-workshop.com/post/2009/08/25/Level-80</link>
    <guid isPermaLink="false">urn:md5:e80351b0962ef8d3a772f322d2bc00df</guid>
    <pubDate>Tue, 25 Aug 2009 09:33:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;By request...&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-000.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-001.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-002.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-003.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-004.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-005.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-006.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-007.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-008.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-009.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-010.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-011.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-012.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-013.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-014.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-015.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-016.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-017.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-018.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-019.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-020.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-021.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-022.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-023.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/hints/080-024.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/08/25/Level-80#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/08/25/Level-80#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/429112</wfw:commentRss>
      </item>
    
  <item>
    <title>1.10</title>
    <link>http://blog.ancient-workshop.com/post/2009/08/22/1.10</link>
    <guid isPermaLink="false">urn:md5:a4707cfa394df29fdc712c6fcca28732</guid>
    <pubDate>Sat, 22 Aug 2009 21:13:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;I'm continuing to eke out Ancient Frog's tail with little incremental bumps.
1.10 adds another level. I'll probably keep going at this rate on it for a
while yet, giving me some space to get the last of the museum work out of the
way and finish up at least one other platform.&lt;/p&gt;
&lt;p&gt;I'm champing at the bit to get going on something brand new and shiny, but
while there's still life in the Frog, it makes sense to feed it.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/08/22/1.10#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/08/22/1.10#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/428581</wfw:commentRss>
      </item>
    
  <item>
    <title>BritishIndie.com</title>
    <link>http://blog.ancient-workshop.com/post/2009/08/11/BritishIndie.com</link>
    <guid isPermaLink="false">urn:md5:23cb5e8d37326bd34ebfbbe4778adb25</guid>
    <pubDate>Tue, 11 Aug 2009 15:02:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;I was interviewed at &lt;a href=&quot;http://britishindie.com/2009/08/ancient-workshop-interview/&quot; hreflang=&quot;en&quot;&gt;BritishIndie.com&lt;/a&gt; - I have a bit of a grump about working in the games
industry, but it's all better now.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/08/11/BritishIndie.com#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/08/11/BritishIndie.com#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/425830</wfw:commentRss>
      </item>
    
  <item>
    <title>1.09</title>
    <link>http://blog.ancient-workshop.com/post/2009/07/27/109</link>
    <guid isPermaLink="false">urn:md5:a1babd1a417dd70e51e7c2e2146c7191</guid>
    <pubDate>Mon, 27 Jul 2009 13:31:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;Removing the free version had no immediate effect. Sales trundled on
unchanged for about a week, then started dropping - which they were probably
due to do anyway. I put LE back on the store, and have released the 1.09
update.&lt;/p&gt;
&lt;p&gt;1.09 contains a brand new level (albeit in an existing habitat), as well as
the latest version of the Ancient Engine.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/07/27/109#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/07/27/109#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/421209</wfw:commentRss>
      </item>
    
  <item>
    <title>Fiddling with the App Store</title>
    <link>http://blog.ancient-workshop.com/post/2009/07/16/Fiddling-with-the-App-Store</link>
    <guid isPermaLink="false">urn:md5:660b88515dca2e38bd2080b24f866917</guid>
    <pubDate>Thu, 16 Jul 2009 20:48:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;Sales of Ancient Frog are at a stable level at the moment, with no new
reviews or updates to perk them up (the 1.08 update was completely buried in
the 4th of July glut). It seems like a good time to try removing the free
edition (Ancient Frog LE) from the App Store, and seeing what effect that has.
I've been unconvinced by its value as a sales tool - for a start, sales dropped
when I first released it - so I'd like to do a little more investigation.&lt;/p&gt;
&lt;p&gt;I wouldn't rule out putting the light edition back in the store if it seems
justified, but I'd like to give it a while to let any latency work its way
through the system.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/07/16/Fiddling-with-the-App-Store#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/07/16/Fiddling-with-the-App-Store#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/418582</wfw:commentRss>
      </item>
    
  <item>
    <title>1.08</title>
    <link>http://blog.ancient-workshop.com/post/2009/07/06/108</link>
    <guid isPermaLink="false">urn:md5:01a71cbe2cda28f32091069f39db781d</guid>
    <pubDate>Mon, 06 Jul 2009 16:56:00 +1200</pubDate>
    <dc:creator>James</dc:creator>
            
    <description>    &lt;p&gt;1.07 was so long in Apple QA that I'd finished a nice clutch of UI
improvements by the time it came out. I decided to push it through immediately,
to see what would happen if I got out an update while the boost in visibility
was still in effect from the previous one - whether there'd be any advantage to
it. As it turned out, it got buried in the mass of updates they got through
while clearing the decks for the 4th of July (apparently some sort of cause for
celebration in the US), so it didn't really do me any good.&lt;/p&gt;
&lt;p&gt;1.08 fixes some nasty flickering that could happen when turning the page in
the UI, improves performance (or at least battery life), and adds better
feedback to the buttons. The buttons in the game started life on a mouse-based
machine, and they didn't give terribly good feedback when deprived of a mouse
hover condition. This meant you could be left wondering whether you'd actually
pressed them or whether the game had hung or what. Now there's a glow effect
that pops up the moment they activate, and stays there if the game has to lurch
for a moment loading data. It's something that really should have been in from
the start. Better late than never.&lt;/p&gt;
&lt;p&gt;I haven't started on the next update, but there will be one. It seems to be
the most successful way to keep the game visible. Downloads of Ancient Frog LE
show a step up followed by mathematically perfect logarithmic decay after an
update. (Downloads of Ancient Frog itself are low enough that the noise spoils
the perfection of the curve.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.ancient-workshop.com/images/update.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.ancient-workshop.com/post/2009/07/06/108#comment-form</comments>
      <wfw:comment>http://blog.ancient-workshop.com/post/2009/07/06/108#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.ancient-workshop.com/feed/atom/comments/416358</wfw:commentRss>
      </item>
    
</channel>
</rss>
