It's Damo!

My present to myself for my birthday :)

Source: Tumblog



My present to myself for my birthday :)

My present to myself for my birthday :)

Source: Tumblog



My present to myself for my birthday :)

Way to have a lunch break! Nice view on Boulder, from Betasso.

Source: Tumblog



Way to have a lunch break! Nice view on Boulder, from Betasso.

Unibroue!

Source: Tumblog



Unibroue!

Unibroue!

Source: Tumblog



Unibroue!

It felt like summer on Sunday, and well, riding in this...

Source: Tumblog



It felt like summer on Sunday, and well, riding in this morning…

Life size Jenga with workmates!

Source: Tumblog



Life size Jenga with workmates!

Finally got my new bike by Paul Budnitz!

Source: Tumblog



Finally got my new bike by Paul Budnitz!

Omnomnomnom

Source: Tumblog



Omnomnomnom

Ruby meetup at the Pivotal labs office!

Source: Tumblog



Ruby meetup at the Pivotal labs office!

xdissent/ievms - GitHub

Source: Delicious

Awesome installer for Virtual Machines with IE 6 to 9 provided by Mircosoft.

How to Enable Local SMTP (Postfix) on OS-X Leopard | Fresh Blurbs

Source: Delicious

No need to install Exim, Postfix is already there...

Well that sure made the bike ride interesting!

Source: Tumblog



Well that sure made the bike ride interesting!

Woohoo Kwak! Belgian beer.

Source: Tumblog



Woohoo Kwak! Belgian beer.

So… it snowed yesterday. My first snow in a very long...

Source: Tumblog



So… it snowed yesterday. My first snow in a very long time!

I am saved! Cheese and buckwheat flour acquired.

Source: Tumblog



I am saved! Cheese and buckwheat flour acquired.

Concurrency in JRuby - GitHub

Source: Delicious

Awesome explanations on concurrency and how it works in Jruby

Having a beer, with this incredible view in the mountains…

Source: Tumblog



Having a beer, with this incredible view in the mountains…

Don’t know what that is, but in about to drink some!

Source: Tumblog



Don’t know what that is, but in about to drink some!

Eeeeeeeeeeel! <3 <3 <3

Source: Tumblog



Eeeeeeeeeeel! <3 <3 <3

Birthday dinner, wine and cheese!

Source: Tumblog



Birthday dinner, wine and cheese!

Good morning Nowra!

Source: Tumblog



Good morning Nowra!

Approximating Priority With RabbitMQ | Doug Barth

Source: Delicious

Cool article on how to handle priorities in RabbitMQ, need to play with that!

Lotsa people for France vs Wales!

Source: Tumblog



Lotsa people for France vs Wales!

Customizing web forms with CSS3 and WebKit - (37signals)

Source: Delicious

Nice reference on customizing forms in webkit... and subsequently other browsers

How to speed up the Android Emulator by up to 400%

Source: Delicious

Need to try that, how to run an x86 optimized version of Android in Virtual Box, and use it as a phone emulator.

geelen's gist: 590895 — Gist

Source: Delicious

geelen's gist: 590895 — Gist

Source: Delicious

As it says: "Idiot-Proof git aliases"

Golden Grid System

Source: Delicious

Golden Grid System

Source: Delicious

Need to try applying that to SoManyFeeds

So apparently this is only an appetizer!

Source: Tumblog



So apparently this is only an appetizer!

Tour bus in Boulder, and then… Drinks!

Source: Tumblog



Tour bus in Boulder, and then… Drinks!

Time for breakfast! And drinking what they call coffee here :P

Source: Tumblog



Time for breakfast!

And drinking what they call coffee here :P

You can tell I’m not in Sydney right?

Source: Tumblog



You can tell I’m not in Sydney right?

Thursday night delight!

Source: Tumblog



Thursday night delight!

Little Bay

Source: Tumblog



Little Bay

Literate Programming - Nobody Understands REST or HTTP

Source: Delicious

Almost lost that link, so better bookmark it!

Literate Programming - Nobody Understands REST or HTTP

Source: Delicious

4 Apple screens

Source: Tumblog



4 Apple screens

mir.aculo.us JavaScript with Thomas Fuchs » Blog Archive » How to play a sound in a web browser (it ain’t easy)

Source: Delicious

mir.aculo.us JavaScript with Thomas Fuchs » Blog Archive » How to play a sound in a web browser (it ain’t easy)

Source: Delicious

Good for baking, but good for drinking too!

Source: Tumblog



Good for baking, but good for drinking too!

Omnomnom Cannelés I just baked : D

Source: Tumblog



Omnomnom Cannelés I just baked : D

Woohoo my mountain bike is fixed! Who is up for Manly Dam on...

Source: Tumblog



Woohoo my mountain bike is fixed! Who is up for Manly Dam on Saturday or Sunday?

Odd coffee mug…

Source: Tumblog



Odd coffee mug…

Broken chain… fucking pissed!

Source: Tumblog



Broken chain… fucking pissed!

Joyeuse fête des mères maman! <3

Source: Tumblog

Joyeuse fête des mères maman! <3

The Architecture of Open Source Applications

Source: Delicious

I really need to go through *all* of this!

The Architecture of Open Source Applications

Source: Delicious

Autumn

Source: Tumblog



Autumn

thedailywhat: Also: It’s Rapture Day! [kissmenoworgtfo.]

Source: Tumblog



thedailywhat:

Also: It’s Rapture Day!

[kissmenoworgtfo.]

Now I need to survive that!

Source: Tumblog



Now I need to survive that!

Sauterne of 1975… Fuck Yeah!

Source: Tumblog



Sauterne of 1975… Fuck Yeah!

Common Android Virtual Device Configurations

Source: Delicious

Good to know some basics of the devices available out there!

Common Android Virtual Device Configurations

Source: Delicious

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Photo

Source: Flickr

Strict Mode for HAML!

Source: Tumblog

I’m quite picky when it comes to coding in HTML and CSS. And I really like writing good markup, particularly semantic one whenever I can. And it’s even more important if you want to adopt HTML5!

I use HAML a lot, and I really like how it makes writing markup easy… probably a bit too easy. I noticed that people who are not “experts” in HTML (I probably should say “as picky as me”?), tend to overuse the # and . shortcuts in HAML. Thus creating dozens of

tags and nesting them a lot.

So I decided it would be a good idea to have a strict HAML mode that would disable those shortcuts. This way, hopefully people will try and use more appropriate markup.

module Haml::Precompiler
          
            def render_div(line)
              raise SyntaxError.new "Haml running in strict mode, # and . shortcuts disabled"
            end
          
          end

Gist on Github 

Ceaser - CSS Easing Animation Tool - Matthew Lein

Source: Delicious

No need to calculate animations and transitions for css3 :)

Ceaser - CSS Easing Animation Tool - Matthew Lein

Source: Delicious

Just a very standard schnitzel…

Source: Tumblog



Just a very standard schnitzel…

eigenclass - Changes in Ruby 1.9

Source: Delicious

Comes in handy when migrating from ruby 1.8

eigenclass - Changes in Ruby 1.9

Source: Delicious

Enjoying the terrace of the new house :)

Source: Tumblog



Enjoying the terrace of the new house :)

How To Get Rails 3 and RSpec 2 Running Specs Fast (From Scratch)

Source: Delicious

Any new Rails 3 app should use that... also a good reference for other Rack based apps.

How To Get Rails 3 and RSpec 2 Running Specs Fast (From Scratch)

Source: Delicious

Rule #32 - Enjoy the little things

Source: Tumblog



Rule #32 - Enjoy the little things

4pm lunch! Perfect with this weather and all the moving out...

Source: Tumblog



4pm lunch! Perfect with this weather and all the moving out action!

Confessions of a Ruby Sadist sudo gem install flog

Source: Delicious

Confessions of a Ruby Sadist sudo gem install flog

Source: Delicious

Write better code!

Isotope

Source: Delicious

Very funky javascript layout library!

One of the rare moments I’m on the slack line

Source: Tumblog



One of the rare moments I’m on the slack line

Ad for the latest Intel i5, one of the best ads I’ve seen...

Source: Tumblog



Ad for the latest Intel i5, one of the best ads I’ve seen in a while!

Bug? in Chrome's Javascript console

Source: Tumblog

Same debug point in my javascript.

In Firefox:

>>> $('#flash')
          [ div#flash ]
          >>> jQuery('#flash')
          [ div#flash ]

In Chrome:

> $('#flash')
          null
          > jQuery('#flash');
          [​
…] > $ function () { return document.getElementById.apply(document, arguments) } > jQuery function (j,s){return new b.fn.init(j,s)}

In both browsers the javascript work as expected, which is the $ function is the same as the jQuery function.

Did I miss something about the Google Chrome javascript console? I’ve not tested in Safari, but I guess it’s the same problem…

CSS3 buttons / ubuwaits.github.com/css3-buttons

Source: Delicious

Nice buttons styled with CSS3

"L’amour est enfant de bohème, qui n’a jamais connu de loi."

Source: Tumblog

“L’amour est enfant de bohème, qui n’a jamais connu de loi.”

- Carmen, Bizet. Opera in the domain.

Komei Aoki. I had the chance to see him live yesterday at the...

Source: Tumblog



Komei Aoki. I had the chance to see him live yesterday at the Sydney Juggling Convention… incredible juggling and manipulation skills!

Everything You Need to Know About Unicorn | Engine Yard Ruby on Rails Blog

Source: Delicious

Everything is in the title!

Compiling Ruby 1.9.2 on Debian Lenny - Binary Balance

Source: Delicious

I like the fact this tutorial introduced me to "checkinstall". Compiling with the advantage of package management...

Compiling nginx on debian lenny | Tim Bowler

Source: Delicious

Setting up my Rackspace server :)

ZURB – Super Awesome Buttons with CSS3 and RGBA

Source: Delicious

Cool CSS3 future-proof rounded buttons!

Bicycle Path - Leichhardt to La Perouse - LBUG route at Bikely.com

Source: Delicious

Nice route to remember!

Pure CSS GUI icons (experimental) – Nicolas Gallagher – Blog & Ephemera

Source: Delicious

Awesome, will probably use soonish!

New Job at Blake Education

Source: Blog

Hello everyone,

as some of you may know I have changed job a few weeks back. The process has been rather long since I had to change sponsorship for my Working Visa. The new visa was approved one day before the previous one was to expire. So I started exactly four weeks after I left Front Foot, on August 31st.

I really enjoyed working for Front Foot for the past two years, I learnt a lot from everyone there. I had the chance to work on really interesting projects with them:

I would like to thank the Front Foot team for the two years working with them. I loved working on mobile technologies, and I really learnt a lot.

So what am I up to now?

I work at Blake Education as a Software Engineer, still working with Ruby on Rails, and other technologies around Ruby. Blake is a publishing company that specialises in education. We run the very successful website readingeggs.com, and we have more projects of course!

Working here is very different from my previous work, the main reason is that most projects I did in the past were just developed for a customer, then shipped. On the contrary readingeggs needs to evolve a lot according to the new needs of the customers.

Being able to re-factor bits of the application, constantly making sure performance is not altered by the addition of features and by the increasing number of customers, and also working on new projects that should re-use as much code as possible...

I really love software engineering, and software architecture, and I really want to be good at it. Of course I already have a decent level, but I feel like I'm going to learn so much at Blake. And it's already started!

I have two more blog posts I want to write about what's been going on lately, so stay tuned!

sudo gem install nokogiri-happymapper

Source: Blog

This is it, you can install my fork of happymapper using the above command! It's now available on Rubygems.org.

It's a replacement to happymapper, so you want to use it using:
require 'happymapper'

Thank you to Matt/GoodGets for using the fork and pushing me to publish it as a gem! Enjoy! :)

Change keyboard appearance of UISearchBar

Source: Blog

It's not built-in the API, so this piece of code will do. It makes your search bar display in black, and with transparency... enjoy! :)

Mapping UIWebview links to controller/delegate actions

Source: Blog

In an iPhone application I'm developing, there are some views that are quite complex to code... and I find them much easier to code in HTML/CSS. Since the Webkit engine available on the iPhone is quite powerful, I find it a much easier way to create complex views...

Now if you want this view to interact with your application it is a bit tricky... but not THAT much. Here is a piece of code I have in my controller... well in my UIWebViewDelegate.

Basically we catch the click on a link, and if the link is of the form file://...#action we then look for the selector action in the controller and trigger it if it exists.

It's THAT simple. :)

New portfolio iPhone App released!

Source: Blog

I've finally released my first iPhone app under the name Melion Design. This is a photographs portfolio for Andrew Hill. What I want with this app is to demonstrate the engine I've developed to manage your portfolio in your own iPhone application.

The application is free, it's called "The Frog Photos" and you can find it in the app store. Andrew can manage the photos available in the application through a web interface I've developed. It makes it easy to upload, and manage photos. The following features are available:

  • Amazon S3 photos storage:  fast download of photos.
  • Offline mode: user can still browse your photos when offline.
  • Customize the description of each photo.
  • Customize the perma-link of each photo.
  • Provide a link to your own website.

Don't hesitate to contact me if you're interested in having your own portfolio available in the appstore for everyone to see! :)

Lotto Results for iPhone, version 1.2 released!

Source: Blog

Yes, there it is! Version 1.2 has the following additional features:

  • Systems - record up to 18 of your favorite winning numbers assisting System Players
  • How to win - check what you require to win a division prize for each and every game
  • Odds - check the odds of winning each division for each and every game

I'm now working on even more exciting content, but I can't tell you yet what it is!

I just enjoy a lot working on this project. :)

You can find Lotto Result in the app store.

Presentation of my Happy Mapper fork at the last RORO Sydney

Source: Blog

Last November I did a presentation of the Happy Mapper fork I developed. The video is available on Vimeo. Unlike the description says, it is a fork using Nokogiri to replace XML Object, but watching it will clear everything out! It's a lightning talk, so I'm sure I won't waste too much of your time :)

You can also find all the videos from RORO on Vimeo. Enjoy!

Calling an authenticated controller action from a rake task

Source: Blog

Just wrote that little rake file:

I thought that would be useful for some people. It just calls an action from a Rails controller. This action is supposed to be accessed only by the admin user. We also prevent checking for authenticity token. This rake task will be called in a cron job.

Lotto Results for the iPhone

Source: Blog

I'm proud to announce my first iPhone application I developped at Front Foot has been released!

Winning Numbers is a mobile website adapted to all phones in australia, but you can enjoy it now as a native application for your iPhone under the name Lotto Results.

It provides for now the latest results and dividends for all of the major australian lottery games: Oz Lotto, Powerball, Lotto, Tattslotto, Gold Lotto, and more... You can also save your winning numbers to quickly find them in the latest results, enjoy!

Updated dam5s-happymapper to use Nokogiri

Source: Blog

I've updated my version of Happymapper to use Nokogiri. It should be faster. The original Happymapper had already been forked to use Nokogiri by Roland Swingler.

Nokogiri is a ruby gem to parse XML and HTML using XPath or CSS selectors. It's written mostly in C, and is very fast. I intend to use this version of Happymapper in an upcoming project with intensive parsing!

Asynchronous Tasks in your iPhone App

Source: Blog

One thing that as made web applications much easier to use in the last few years is the integration of Ajax into web pages. Before that, each click of the user would block the application until the next page loads... not really a great user experience.

Now when you want to trigger a long task in the background, you can use Javascript to trigger asynchronous requests... that is just great!

Well in standard applications design, it is also very handy to be able to do such thing, and we usually do it using threads. The iPhone platform obviously provides everything you need to perform that, and that's pretty simple! Just awesome! Here is how it works...

The documentation you want to read is the NSOperation Class it provides the tools to trigger a task in the background. And as the documentation says, you will most of the time want to manage a queue of operations rather than just a single operation. So the best thing to do (in my opinion) is to create a Manager (singleton) which owns a queue of operations: NSOperationQueue Class.

This way you can add operations to the queue, and they will all be treated in order. A good example of this kind of manager is the ConnectionManager of the ObjectiveResource library.

You can use it this way:

- (void)fileDownloaded: (NSData *)data {
              // Do stuff here
          }
          - (void)downloadFile: (NSUrl *)url {
              // Download file here
          
              [self performSelectorOnMainThread: @selector(fileDownloaded:)
                                     withObject: downloadedData
                                  waitUntilDone: YES];
          }

And somewhere in your code trigger the asynchronous download:

[[ConnectionManager sharedInstance] runJob: @selector(downloadFile:)
                                            onTarget: self
                                        withArgument: url];

That's it! So when you call runJob on the connection manager, it queues the job in the operation queue... so if you need to download ten files, they will be processed asynchronously one-by-one while the user is still using your app, without interruption.

Hope this was helpful!

Rails Routes according to the Domain

Source: Blog

Routing using Rails is quite simple, you define routes and where they point at. The order in which routes are declared defines their priority. Very simple.

Now Rails also provides conditions on routes according to the HTTP method used, and using the request_routing plugin we can use more conditions. We specially use it for the domain, or sub domain used for example. The Frontfoot website and the Frontfoot mobile site are the same rails application, they just use different routing according to the domain used.

map.connect '/:action',  :controller => 'mobile',
                                   :conditions => { :domain => /\.mobi/i }
          map.connect '/:action',  :controller => 'main'

That works well if the domain has only one TLD like frontfoot.mobi, but if the domain has two TLDs it doesn't work. In this case we do the test on frontfoot.mobi so it works well.

Now what if we have two domains like for example frontfoot.com.au and ffmobile.com.au. Well that doesn't work. The :domain option will test the domain against 'com.au' we could then use sub-domain to get 'frontfoot' but in that case if we use 'www' it won't work because the :subdomain option tests only the first sub-domain.

So here is the solution! I have written a fork of the plugin to add a :domain_2 option which just gets the domain considering it has 2 TLDs. And there you go you can write:

map.connect '/:action',  :controller => 'mobile',
                                   :conditions => { :domain_2 => /ffmobile\.com\.au/i }
          map.connect '/:action',  :controller => 'main'

Enjoy! It's tested and on my github. :)

XML Parsing in Ruby using Happy Mapper

Source: Blog

Part of my job consists in getting a lot of data from different sources. Whether it's a SOAP or REST webservice, a TCP Socket, or simply files on a FTP, most of this data is in XML format.

There are different libraries to parse XML in Ruby. We used to do with XML Object, but the resulting code is really difficult to read and maintain. We prefer Happy Mapper.

It is an XML to object mapping library. You can find the source on Github. I also created a fork to add support for text node in mapping objects. It also includes the changes from David Bolton.

The resulting code is very readable and easy to maintain... and the library can be used in most cases. It's also quite fast since it uses XML Object for the actual parsing. Examples are in the source tree, and the source itself is quite short and easy to understand.

Enjoy easy and happy XML parsing! :)

The iPhone application submission process

Source: Blog

Last Friday I submitted for Front Foot our first iPhone application. It's quite exciting to arrive at this stage of the project. I have worked so much on this app, our creative designer Deena Baxter did a really good job! I can't wait to show you the result of that work. But I would first like to share with you different tips you may find useful tp submit your own application. The submission process, once you've understood it, is quite simple. But there some parts that are not very well documented. So here are a couple links you may be interested in reading:

When you are compiling in Xcode make sure you use the good building profile and it refers correctly your entitlements for AdHoc distribution, also make sure to use the good provisioning profiles for Distribution and AdHoc distribution.

Now all my workmates have a version of the application on their iPhone, and the application is being reviewed by Apple. Tell you more when it's available!

Welcome to Melion Design's blog

Source: Blog

Well hello there!

Let me present myself, I'm Damien, software engineer for Front Foot Media Solutions in Sydney Australia.

Lately I've been working a lot on mobile platforms, whether it's for mobile websites with a strong back-end like Three Mobile's iPhone landing page: Planet 3, or for iPhone native applications.

I really enjoy developing for the iPhone, we focus a lot on ergonomics, providing the good features and making them easy and enjoyable for the user!

I also work on my own projects, and some free lancing as well for really small projects aside from work, which is what Melion Design is about! So don't hesitate to contact me if you want a good front-end and back-end developer for your web app.