China loot

China loot

After spending a month in China here is the loot that Adriana and I acquired. It includes things made of silk, many types of tea and ways to drink it, obligatory panda stuff, and ingredients for cooking Sichuan food. All good.

Tracks from a honeymoon

While over in Italy for our Honeymoon back in 2010, I used my trusty G1 for all our navigation.  Two years later, I finally got around to uploading the GPS tracks into Google Maps.  I had to use a trick to get the map into one page (typically, Google Maps tends to split the tracks over several pages, so you don’t see the whole view), but phew, I finally did it.

(Hit the ‘view larger map’ link below).

View Larger Map

Things to note:

  1. There is a straight line going from Venice to Bologna.  At this point, I switched off guidance and ‘did it live’.
  2. There are a few times I was literally going around in circles.  You’d have to zoom in to see it, but for example the Cinqueterre area has a few loops where we couldn’t figure out where the exit was (on the map, this is just a little to the South-East of Genoa).  I swear it was just crazy confusing.  I also did a lap or two around the hill our accommodation was on in Florence.
  3. The top speed I reached in our rental, a Fiat Punto, was 119 km/h.  That’s pretty tame by my morning commute standards, and I’m actually a bit disappointed that’s the fastest I drove in Italy… given it’s Italy (drivers seemed to be in some sort of race I didn’t know about).  The coolest thing about the driving over there  – only people going fast were in the fast lanes.  Florida – you suck at driving.

Photos from this trip are all here:

Some scavenger hunt photos

I recently participated on a photo scavenger hunt on Google+ arranged by the awesome Chrysta Rae.  The idea behind the hunt is that you have about a month to take photos of ten different subjects.  The use of Photoshop/Lightroom is encouraged, although I didn’t explore heavy editing that much.   You cannot use photos you’ve previously taken – they have to be taken during that month.  At the end of the month, Chrysta compiles the photos from everyone (500 people are in the group, with about two-thirds of that participating),  and the photos are judged (Chrysta is not one of the judges, of course).

I ended up taking six photos, and of those, the two below are the only ones of mine that I really liked.


The above photo, “balloon”, is of a water-filled balloon popping.  Here is a dump of the text I wrote alongside this photo in the hunt: shot with my Nikon D90 on a tripod, wired remote control, remote flash on another tripod, and my favourite lens – a 50mm prime.  I situated the flash to the right of the shot.  I was standing behind the flash, holding a long stick with a pin in one hand and the remote in the other. I tied the balloons to a plant hanger and situated the flash and camera to focus on the bottom of the balloon.  Then it was just timing… and a whole pack of balloons and wet feet.  I was really aiming to retain the shape of the balloon – it’s amazing how many completely-not-a-balloon shapes came out.  The remains of the balloon had flown outside of the shot, as I gave the water a little time to settle and drop down before the shot was taken.  You don’t see the stick-and-pin (or my hand) I used to pop the balloon as they’re behind and above, and also outside the flash focus.  I processed the shot in Lightroom –  mainly just sharpness and contrast adjustments, with a bit of oomph to the black levels.

This second photo, “smoke”, was of Adriana blowing smoke with flash situated behind and to the left of her.  I made minor adjustments to black levels and a graduated exposure filter was used to even out the brightness levels (which originally decreased from bottom left to top right).



You can get in on the action by circling Chrysta on Google Plus:

Signup for the next hunt is on the 29th of June:

A dynamic texture engine for Frex

This moment has been a long time coming.  The first step I’d taken on this journey, and shown in previous posts, was to create a fractal scene piece-by-piece and then simply paste all the pieces together to create a final image.  The image was zoom-able but did not allow the user to pan in any direction.   I thought a good way to enable panning was to create a tile-based engine.  That is, the scene would be divided up into equal-sized square tiles and if the user panned from the left to the right, tiles to the left of the screen boundary would appear while visible tiles near the boundary to the right would disappear.   That seemed ok, and followed what existing tile-based game engines do (think Metroid or Super Mario Bros).  However with engines like that the tiles used to create the final image already exist.  For fractals, and their infinite nature, that can’t be done.

All the above lead me to create my own 2-dimensional dynamic tile engine using OpenGL ES, a programming interface for hardware-accelerated graphics on mobile devices.   For my method I create the required number of tiles (or polygons) to fill the screen (plus some buffer tiles around each edge), and then map onto each polygon an image (texture) with what the fractal would look like in that region. As the user swipes around the screen, a simple translation matrix is used to update the position of each polygon on the screen by the same amount.  If a polygon is moved off the screen, it will be translated to the opposite side of the screen with an updated texture representing that region of the fractal.  This gives the user the impression that they are panning around the fractal.

The below image represents the proof-of-concept stage of the tile engine.  Each square is 32 by 32 pixels and is textured by a bitmap of random colour.

Although the image is 800 x 480 pixels in size (the resolution of my phone screen), the OpenGL resolution is 480 x 320 pixels, explaining why there are only ten 32 x 32 squares horizontally. Currently it runs at around 70 frames per second. As it’s not doing any of the hard maths to generate fractal imagery yet (theoretically I can just plug-in the fractal generation routines I’ve already written), more interesting times are ahead if the frame rate is to stay high. For now I’ll be working with this simple version to weed out any obvious performance bottlenecks and ensure that zooming also works as intended before creating another fractal image.

I’m curious to find other ways of achieving my goals that I’m not aware of yet. Hopefully I’ll stumble across them in my googling.  As it stands, I really had to learn a lot about OpenGL to get this far; any previous experiences with it proved useful but completely inadequate in the end, and much swearing was done.  C’est la vie.