<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3371457440769633696</atom:id><lastBuildDate>Thu, 19 Dec 2024 03:26:38 +0000</lastBuildDate><category>Happenings</category><category>Games</category><category>Spore</category><category>Toys</category><category>Musings</category><category>iPhone</category><category>Programming</category><category>Delphi</category><title>Thoughts and other random synapse firings</title><description></description><link>http://taorsf.blogspot.com/</link><managingEditor>noreply@blogger.com (Ben Daniel)</managingEditor><generator>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-5663484417607453758</guid><pubDate>Sat, 07 Mar 2009 12:57:00 +0000</pubDate><atom:updated>2009-03-07T23:05:16.476+10:00</atom:updated><title>So long, farewell, auf wiedersehen, goodbye!</title><description>&lt;p&gt;I thought you should know that I’ve decided to move my blog so I’ll no longer be making posts at &lt;a href="http://bendaniel.name"&gt;bendaniel.name&lt;/a&gt;. I’ve created a new site with a &lt;strike&gt;fresh, new&lt;/strike&gt; look where I’ll be continuing my ramblings. You can check it out at: &lt;a href="http://www.programmingprimate.com" target="_blank"&gt;www.programmingprimate.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you’re a current subscriber then you’ll need to resubscribe at my new site to keep getting updates, which I hope you will. :-)&lt;/p&gt;  &lt;p&gt;Cheers, Ben&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2009/03/so-long-farewell-auf-wiedersehen.html</link><author>noreply@blogger.com (Ben Daniel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-8577480016795832389</guid><pubDate>Mon, 09 Feb 2009 16:04:00 +0000</pubDate><atom:updated>2009-02-10T02:05:55.250+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Games</category><category domain="http://www.blogger.com/atom/ns#">Happenings</category><category domain="http://www.blogger.com/atom/ns#">Toys</category><title>Guitar Hero World Tour</title><description>&lt;p&gt;Being fans of Guitar Hero 3 for X-Box 360 we decided to buy Guitar Hero World Tour.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_OhZqZIHDv74/SZBTEBVFi9I/AAAAAAAAAI4/S0nhHFNah04/s1600-h/GHWT%20Box%5B14%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="315" alt="GHWT Box" src="http://lh5.ggpht.com/_OhZqZIHDv74/SZBTJTS3r6I/AAAAAAAAAI8/DQE2725cRRk/GHWT%20Box_thumb%5B10%5D.png?imgmax=800" width="379" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;We bought the full kit which includes:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;A much &lt;strong&gt;better looking guitar&lt;/strong&gt;: check out that beautifully vanished plastic base!&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OhZqZIHDv74/SZBTRNzC_9I/AAAAAAAAAJA/w1eMl-5GY-U/s1600-h/New%20Guitar%5B11%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="239" alt="New Guitar" src="http://lh4.ggpht.com/_OhZqZIHDv74/SZBTTWL2QYI/AAAAAAAAAJE/kT9-qC73zc8/New%20Guitar_thumb%5B7%5D.png?imgmax=800" width="377" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;A rocking USB &lt;strong&gt;microphone:&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_OhZqZIHDv74/SZBTWoHrLtI/AAAAAAAAAJI/rcCwzuiS-XA/s1600-h/Microphone%5B17%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="353" alt="Microphone" src="http://lh4.ggpht.com/_OhZqZIHDv74/SZBTZgUZbxI/AAAAAAAAAJM/mt0WR2NUQfQ/Microphone_thumb%5B13%5D.png?imgmax=800" width="281" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;And perhaps most exciting: the &lt;strong&gt;drum kit:&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_OhZqZIHDv74/SZBTfuWPOzI/AAAAAAAAAJU/csCH5AsfVP8/s1600-h/Drums%5B7%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="332" alt="Drums" src="http://lh3.ggpht.com/_OhZqZIHDv74/SZBTinNUO4I/AAAAAAAAAJY/njQyq-BliHY/Drums_thumb%5B5%5D.png?imgmax=800" width="392" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4&gt;Star Power!&lt;/h4&gt; &lt;p align="left"&gt;&lt;a href="http://lh3.ggpht.com/_OhZqZIHDv74/SZBTnVZpviI/AAAAAAAAAJc/i22Xup28za8/s1600-h/Star%20Power%20Guitar%5B11%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="316" alt="Tool Power" src="http://lh6.ggpht.com/_OhZqZIHDv74/SZBTpwDGzLI/AAAAAAAAAJg/IP1a14A_-ZM/Star%20Power%20Guitar_thumb%5B7%5D.png?imgmax=800" width="244" align="right" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;If you've played Guitar Hero before you'll be familiar with Star Power.&lt;/p&gt; &lt;p align="left"&gt;It's basically a power up which doubles the amount of points you earn while playing.&lt;/p&gt; &lt;p align="left"&gt;Tilting your guitar up activates star power (acting like a tool is optional).&lt;/p&gt; &lt;p align="left"&gt;Also once activated, electricity shoots off your character and for a moment everything tastes blue.&lt;/p&gt; &lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt; &lt;h4&gt;Star Power on the drums?&lt;/h4&gt; &lt;p align="left"&gt;So it doesn't take a genius to work out if tilting one's axe activates star power for a guitarist then tilting the drum kit must activate it for a drummer!&lt;/p&gt; &lt;p align="left"&gt;&lt;a href="http://lh4.ggpht.com/_OhZqZIHDv74/SZBTuQmKhiI/AAAAAAAAAJk/d6-rG5utqQU/s1600-h/Drums%20-%20Ben%5B6%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="326" alt="Drummer Noob" src="http://lh4.ggpht.com/_OhZqZIHDv74/SZBTxMRzFAI/AAAAAAAAAJo/1ERBi_7ghdY/Drums%20-%20Ben_thumb%5B4%5D.png?imgmax=800" width="319" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="left"&gt;Unfortunately I couldn't seem to activate star power on our &lt;em&gt;defective&lt;/em&gt; drum kit. In fact there must have been something really wrong with our drum kit because I was completely crap at it, lol.&lt;/p&gt; &lt;p align="left"&gt;At least that's what I thought until my diva wife pushed me off and jumped on! ;-)&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OhZqZIHDv74/SZBT3D7GRNI/AAAAAAAAAJs/QCwEP-xSpC0/s1600-h/Drums%20-%20Jules%5B6%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="303" alt="Jules Grohl" src="http://lh6.ggpht.com/_OhZqZIHDv74/SZBT8AuptRI/AAAAAAAAAJw/dv6a_pFQ1dw/Drums%20-%20Jules_thumb%5B4%5D.png?imgmax=800" width="389" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="left"&gt;In all seriousness though, we had the kids on the weekend and all four of us played in a band together. It was great family fun. Chloe played lead guitar, Alex played bass, I played the drums (mainly cause neither of the kids wanted to, lol) and Jules showed us she's a closet rapper on the mic! Her rendition of &lt;a title="Youtube - No Sleep Til Brooklyn" href="http://www.youtube.com/watch?v=RI2IyHXJo5M" target="_blank"&gt;"No Sleep Til Brooklyn"&lt;/a&gt; would have made the Beasty Boy's proud! lol ;-)&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2009/02/guitar-hero-world-tour.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh5.ggpht.com/_OhZqZIHDv74/SZBTJTS3r6I/AAAAAAAAAI8/DQE2725cRRk/s72-c/GHWT%20Box_thumb%5B10%5D.png?imgmax=800" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-4713966971458281937</guid><pubDate>Fri, 30 Jan 2009 22:35:00 +0000</pubDate><atom:updated>2009-01-31T08:35:09.965+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Happenings</category><title>Dumb and Dumber</title><description>&lt;p&gt;This is gold. Two hand-cuffed men fleeing from a New Zealand court-house had their escape plan foiled by a lamp post when they ran by either side of it.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8c430d88-6d12-48e4-936e-f28765562a5e" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 384px; padding-top: 0px"&gt;&lt;div&gt;&lt;object width="384" height="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-v5WPW_Dexs"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/-v5WPW_Dexs" type="application/x-shockwave-flash" wmode="transparent" width="384" height="320"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Not able to comprehend simple laws of physics the men apparently expected the lamp-post to slice in half as they ran by it.&lt;/p&gt; &lt;p&gt;If I were the judge I would have made the two share the same cell as part of their sentence, lol.&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2009/01/dumb-and-dumber.html</link><author>noreply@blogger.com (Ben Daniel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-1203973427605793889</guid><pubDate>Mon, 19 Jan 2009 22:13:00 +0000</pubDate><atom:updated>2009-01-20T08:13:02.874+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Happenings</category><title>Two men survived at sea in a giant esky</title><description>&lt;p&gt;This is a true story, though it sounds like the plot for a joke! Two men were rescued from sea after surviving in a &lt;strong&gt;giant esky&lt;/strong&gt; for 25 days when their fishing boat sank.&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OhZqZIHDv74/SXT66ThxdXI/AAAAAAAAAIw/xqoT4h4FICQ/s1600-h/Esky%5B5%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="261" alt="Esky" src="http://lh4.ggpht.com/_OhZqZIHDv74/SXT67a6qocI/AAAAAAAAAI0/aMQcmI9ZpyM/Esky_thumb%5B3%5D.jpg?imgmax=800" width="369" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;When asked what went through their mind when they realised their fishing boat was sinking they said their first thought was "Save the beer!!".&lt;/p&gt; &lt;p&gt;The men said they survived the past 25 days mostly by keeping up their liquids and eating the occasional shark that wanted to pick a fight with them. They said one of the sharks was "this big". When asked how they passed the time they said they were kept occupied by chatting up the local mermaids.&lt;/p&gt; &lt;p&gt;The two men are being charged for navigating a vessel with a blood alcohol content 3 times over the legal limit.&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2009/01/two-men-survived-at-sea-in-giant-esky.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh4.ggpht.com/_OhZqZIHDv74/SXT67a6qocI/AAAAAAAAAI0/aMQcmI9ZpyM/s72-c/Esky_thumb%5B3%5D.jpg?imgmax=800" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-1317114705157718400</guid><pubDate>Sat, 03 Jan 2009 05:35:00 +0000</pubDate><atom:updated>2009-01-03T15:35:01.125+10:00</atom:updated><title>New Years Resolutions</title><description>&lt;p&gt;Happy New Year everyone! So have you all worked out your resolutions for the year ahead? Yeah I know it's dumb - you never end up achieving what you set out to do, do you? Well this year I've decided rather than privately setting some goals I'll publicly announce what I aim to achieve for the new year, so that way I have more pressure and motivation to actively work on my goals because if I fail I'll look quite the fool in front of my peers.&lt;/p&gt; &lt;p&gt;So here they are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Lose 5 kilos.  &lt;li&gt;Write and sell a useful iPhone application that helps organise people's busy lives and making me dozens of dollars. I'll be a dozenaire!  &lt;li&gt;Lose 10 additional kilos.  &lt;li&gt;Win a second prize in a beauty pageant, collect $10.  &lt;li&gt;Discover people are idiots: write and sell another iPhone application that uses numerology to tell you if you and your pet are compatible, making me ten thousands of dozens of dollars.  &lt;li&gt;Pay off mortgage.  &lt;li&gt;Get a bigger mortgage.  &lt;li&gt;Develop a 6-pack.  &lt;li&gt;Develop 2 more pack thingies, totaling an 8 pack.  &lt;li&gt;Develop my peck muscles enough that I can flex them in time to the Can Can music.  &lt;li&gt;Develop them more so I can use them to play the drums in Rock Band.  &lt;li&gt;Screw all this exercise crap and get a robot body so I don't have to use my own muscles all the damn time (plus a robot body would keep beat better). &lt;li&gt;Win Nobel Peace Prize for discovering the 12th dimension. Much to the worlds surprise I'll find it at the bottom of my socks and undies drawer (no doubt where my socks keep disappearing to). &lt;li&gt;Create a giant robotic fortress on legs, like in that crappy movie Wild Wild West or like the giant crab-shaped mobile oppression palace in that one episode of Futurama. I'll build it out of Lego.  &lt;li&gt;Become the first cybernetic King of Earth - Obama, eat your heart out!&lt;/li&gt;&lt;/ul&gt; &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OhZqZIHDv74/SV7489_V9JI/AAAAAAAAAIo/zfkEeceMjeU/s1600-h/Robot%20King%5B8%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="381" alt="Robot King" src="http://lh6.ggpht.com/_OhZqZIHDv74/SV75AWCyNSI/AAAAAAAAAIs/cKViT_sbxGI/Robot%20King_thumb%5B6%5D.png?imgmax=800" width="413" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;What the hell, if I'm not going to achieve my new year resolutions, I may as well not achieve big ones! &lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2009/01/new-years-resolutions.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh6.ggpht.com/_OhZqZIHDv74/SV75AWCyNSI/AAAAAAAAAIs/cKViT_sbxGI/s72-c/Robot%20King_thumb%5B6%5D.png?imgmax=800" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-8867331209061175410</guid><pubDate>Wed, 31 Dec 2008 00:35:00 +0000</pubDate><atom:updated>2009-02-01T20:17:25.327+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Happenings</category><category domain="http://www.blogger.com/atom/ns#">Toys</category><title>Prezzies!</title><description>&lt;p&gt;Another thing that's been consuming our time over Xmas has been this prezzy that I bought Jules. It's called &lt;a title="Check out Khet at Games Paradise" href="http://www.gamesparadise.com.au/product_view.asp?pid=1413" target="_blank"&gt;Khet&lt;/a&gt; (formerly known as Deflexion).&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OhZqZIHDv74/SVq91mIiB7I/AAAAAAAAAIM/wveHoh2Nz4c/s1600-h/Khet15.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="364" alt="Khet" src="http://lh4.ggpht.com/_OhZqZIHDv74/SVq9-ha7DyI/AAAAAAAAAIQ/5RVH6u0zT-A/Khet_thumb11.png?imgmax=800" width="380" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;It's a board game played by 2 people. Each player has a laser on their end of the board and most of the pieces have mirrors on them. You move or rotate your pieces to manipulate how the laser beams bounce around the playing field. When a piece is struck by a laser and it doesn't have a mirror or it's mirror is facing away from the laser then that piece is removed from the board. The end-goal of the game is to blast a hole through your opponents pharaoh (the symbolic equivalent of a king in chess).&lt;/p&gt; &lt;p&gt;Sadly the lasers in the game are a little weak - it only slightly tingles when you put your tongue on them! So I raided all the remote controls around the house and wired the lasers directly into a huge 128 array of AA batteries!&lt;/p&gt; &lt;p&gt;It says on the box not to stare directly into the lasers so I made sure to only stare at the reflection of them, you know, to see if there would be any new side effects yet. In short, the good news is we were able to sell our toaster this week, lol. ;-)&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OhZqZIHDv74/SVrBiZAXOgI/AAAAAAAAAIg/bDCtTMnVhxw/s1600-h/Toasty%5B10%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="312" alt="Toasty" src="http://lh5.ggpht.com/_OhZqZIHDv74/SVrBrwY3xOI/AAAAAAAAAIk/xFssbZKxpBU/Toasty_thumb%5B8%5D.png?imgmax=800" width="402" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/12/prezzies.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh4.ggpht.com/_OhZqZIHDv74/SVq9-ha7DyI/AAAAAAAAAIQ/5RVH6u0zT-A/s72-c/Khet_thumb11.png?imgmax=800" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-6076170794716789409</guid><pubDate>Tue, 30 Dec 2008 05:42:00 +0000</pubDate><atom:updated>2008-12-30T15:42:26.073+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Happenings</category><title>Xmas Experimentation - Part 2</title><description>&lt;h4&gt;Experiment 2: Creating Quicksand&lt;/h4&gt; &lt;p&gt;After the giant worm moved into a neighbours garden we began our next project - creating quicksand.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_OhZqZIHDv74/SVm0PCNei9I/AAAAAAAAAHs/I2Q812WTavw/s1600-h/IMG_02674.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="260" alt="Our failed quicksand attempt" src="http://lh3.ggpht.com/_OhZqZIHDv74/SVm0Q2Ty-8I/AAAAAAAAAHw/PZ6x1vQ23F8/IMG_0267_thumb2.jpg?imgmax=800" width="200" align="right" border="0"&gt;&lt;/a&gt;We were surprised to learn that quicksand is a mixture of various molecules (none of which is sand) consisting mainly of H&lt;sup&gt;2&lt;/sup&gt;O and Cf&lt;sup&gt;5&lt;/sup&gt; (A.K.A. cornflour).&lt;/p&gt; &lt;p&gt;Unfortunately my poor skills in the kitchen translated to an inability to mix the cornflour and water which resulted in a consistency of, well, water. :(&lt;/p&gt; &lt;p&gt;So after completely exhausting the cornflour supplied with the kit we raided the kitchen cupboard for more raw materials.&lt;/p&gt; &lt;p&gt;After adding several spoons of cornflour and finally achieving the ideal consistency we were ready to test our creation. Fortunately the science kit comes with a willing test subject: an innocent and naive miniature giraffe.&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OhZqZIHDv74/SVm0VpIfQ6I/AAAAAAAAAH0/NEExQ1WM_xc/s1600-h/GiraffeTestSubject5.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="342" alt="Giraffe Test Subject" src="http://lh3.ggpht.com/_OhZqZIHDv74/SVm0Yu5DXiI/AAAAAAAAAH4/qACq4-OFcoE/GiraffeTestSubject_thumb3.png?imgmax=800" width="347" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;Much to our disappointment the giraffe survived the quicksand...so we intervened and decided to study the effects of a giant wooden spoon beating down on his vulnerable giraffe body...in the name of science of-course...mwwoohaahaaahaahaaaaa!&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_OhZqZIHDv74/SVm0dnup-_I/AAAAAAAAAH8/6ITPUuWjwAk/s1600-h/DeadGiraffe19.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="342" alt="Dead Giraffe" src="http://lh4.ggpht.com/_OhZqZIHDv74/SVm0m_43iUI/AAAAAAAAAIA/6x_WSqawgYs/DeadGiraffe_thumb17.png?imgmax=800" width="345" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;Unfortunately, due to a miscalculation in quicksand &amp;amp; spoon dynamics, the giraffe DNA combined with the corn flour molecules to create a fire-breathing super giraffe!&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_OhZqZIHDv74/SVm0srEYGgI/AAAAAAAAAIE/f1Zv1yOuf5Q/s1600-h/KillerGiraffe22.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="300" alt="Killer Giraffe" src="http://lh5.ggpht.com/_OhZqZIHDv74/SVm0vvZBx8I/AAAAAAAAAII/1P8P5H3ZXps/KillerGiraffe_thumb14.png?imgmax=800" width="408" border="0"&gt;&lt;/a&gt;&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/12/xmas-experimentation-part-2.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh3.ggpht.com/_OhZqZIHDv74/SVm0Q2Ty-8I/AAAAAAAAAHw/PZ6x1vQ23F8/s72-c/IMG_0267_thumb2.jpg?imgmax=800" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-7395711489915794550</guid><pubDate>Sun, 28 Dec 2008 10:50:00 +0000</pubDate><atom:updated>2008-12-28T21:23:35.095+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Happenings</category><title>Xmas Experimentation - Part 1</title><description>&lt;p&gt;Man what a week it's been...for science! I've been home with the kids and to pass the time we've been working through a science kit that Alex got for Christmas. It contains a bunch of different experiments ranging from making your own worms to building The Hadron Collider. Of-course, in true scientificness we documented our findings.&lt;/p&gt; &lt;h4&gt;Experiment 1: Creating our own worms (aka, Playing God)&lt;/h4&gt; &lt;p&gt;Like all good scientists we approached this experiment with extreme caution, trying not to expose ourselves to the highly toxic worm goo (Wg&lt;sup&gt;2&lt;/sup&gt;).&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_OhZqZIHDv74/SVdZqGu8mMI/AAAAAAAAAHQ/HqMm6QYlHxw/s1600-h/BewaretheGoo6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="293" alt="Beware the Goo" src="http://lh5.ggpht.com/_OhZqZIHDv74/SVdZs_mepaI/AAAAAAAAAHY/QVIcnL2LJSA/BewaretheGoo_thumb4.png?imgmax=800" width="375" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In fact it only took us a few minutes while exposed to the radioactive chemicals before we discovered the safety equipment we were meant to be wearing.&lt;/p&gt; &lt;p&gt;Sadly, after successfully creating a couple small worms, Alex's God-like command over the creation of worms went to his head and he became mad with power!...&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_OhZqZIHDv74/SVdZw6-9X_I/AAAAAAAAAHc/rCppqBW0Hqw/s1600-h/MadScientist4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="373" alt="Mad Scientist" src="http://lh5.ggpht.com/_OhZqZIHDv74/SVdZzQUQOWI/AAAAAAAAAHg/fxmMtIx8guA/MadScientist_thumb2.png?imgmax=800" width="288" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;...and in hind-sight his tripling the dosage of radioactive worm goo was a mistake.&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_OhZqZIHDv74/SVdZ2cvPC3I/AAAAAAAAAHk/6nk_cNQ74Es/s1600-h/GiantWorm4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="257" alt="Giant Worm" src="http://lh5.ggpht.com/_OhZqZIHDv74/SVdZ4mOvpUI/AAAAAAAAAHo/VizWAztsPhk/GiantWorm_thumb2.png?imgmax=800" width="374" border="0"&gt;&lt;/a&gt;&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/12/xmas-experimentation-part-1.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh5.ggpht.com/_OhZqZIHDv74/SVdZs_mepaI/AAAAAAAAAHY/QVIcnL2LJSA/s72-c/BewaretheGoo_thumb4.png?imgmax=800" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-8233232062253907831</guid><pubDate>Wed, 12 Nov 2008 22:17:00 +0000</pubDate><atom:updated>2008-12-28T21:24:00.337+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programming</category><title>Experts Exchange is a @#*% tease</title><description>&lt;p&gt;You ever google for the solution to a difficult and rare technical problem that only you and your Russian speaking human equivalent seem to share? If you said yes, than chances are that you, like me, hate &lt;a href="http://www.experts-exchange.com/" target="_blank"&gt;Experts Exchange&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;It seems that the more difficult and buried a solution is to a problem the greater the chance that one of the search results from google will be a link to experts exchange. You follow the link which leads to a post that describes someone having the exact same problem you're experiencing. Immediately you're filled with a sense of relief that you're not the only person on the planet with this problem so you scroll down some more and it says "Sign in to see the solution". Okay, no biggy so you click the link to register for the site and suddenly all your hopes come crashing down when you see you HAVE TO PAY FOR MEMBERSHIP?! WTF?! What freaking so-called "experts" would agree to PAY for a site to share their solutions when you can share your knowledge for the benefit of your fellowman in free forums?! Damn it!&lt;/p&gt; &lt;p&gt;After you have this experience once, you despise Experts Exchange more and more each time you see their brief teaser describing your problem exactly in your google search results. Bastards!&lt;/p&gt; &lt;p&gt;Well, in a particular moment of desperation, after searching on many different keyword combinations and exhausting the free search results I decided to bite the bullet, follow the E.E. link and start a trial membership. Of-course you have to enter all your credit card details before you can start your trial, something else I really object to. The whole time during the sign up process I'm thinking "hehe, I'll show them - as soon as this trial starts and they let me see the solution to my problem I'll be cancelling this membership, haha suckers".&lt;/p&gt; &lt;p&gt;So my trial membership started and I navigated straight to the post which described my problem and scrolled down to the expert solution, which read along the lines of:&lt;/p&gt; &lt;p&gt;&lt;em&gt;"There is no way you can do what you want to do, sorry."&lt;/em&gt;&lt;/p&gt; &lt;p&gt;NnnnnoooooOOOOO!!! DAMN YOU EXPERTS EXCHANGE!!&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/11/experts-exchange-is-tease.html</link><author>noreply@blogger.com (Ben Daniel)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-873689754534438497</guid><pubDate>Tue, 02 Sep 2008 14:28:00 +0000</pubDate><atom:updated>2008-09-03T00:28:09.322+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Games</category><category domain="http://www.blogger.com/atom/ns#">Spore</category><title>Spore has landed (unofficially?)</title><description>&lt;p&gt;I'm not sure how but as I write this post I have a totally legit copy of Spore currently installing on my machine even though my count-down timer is telling me there's still another 24 hours until it's officially released. :)&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/bendaniel/SL1Nb1-xzGI/AAAAAAAAAGA/Wv92es4I8W4/s1600-h/SporeBoxSet13.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="200" alt="Spore Box Set1" src="http://lh4.ggpht.com/bendaniel/SL1NcsxguvI/AAAAAAAAAGE/WjVmDzFrg3s/SporeBoxSet1_thumb1.jpg?imgmax=800" width="260" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I picked up Spore today (the 2nd of September) but I was sure the official release date was the &lt;em&gt;4th of September&lt;/em&gt;, so I checked out Spore.com for the release date and it says it's &lt;strong&gt;not actually released until the &lt;em&gt;7th of September!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Well when I got a call from Electronics Boutique today to let me know my preorder had arrived and that I could pick it up, I wasn't about to ask if they were actually supposed to release it yet, lol. Haha suckers, by the time everyone else in the world installs Spore I'll have already taken over the universe with my unstoppable race of killer bovines!!&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/bendaniel/SL1NdFVLm8I/AAAAAAAAAGI/2dPHJTRJe48/s1600-h/Daisy%20Family%5B13%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="258" alt="Daisy Family" src="http://lh6.ggpht.com/bendaniel/SL1Nd83JRlI/AAAAAAAAAGM/b5oSdXd_jGA/Daisy%20Family_thumb%5B9%5D.jpg?imgmax=800" width="388" border="0"&gt;&lt;/a&gt;&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/09/spore-has-landed-unofficially.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh4.ggpht.com/bendaniel/SL1NcsxguvI/AAAAAAAAAGE/WjVmDzFrg3s/s72-c/SporeBoxSet1_thumb1.jpg?imgmax=800" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-3690991179954110665</guid><pubDate>Fri, 11 Jul 2008 05:25:00 +0000</pubDate><atom:updated>2008-07-11T15:25:17.765+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">iPhone</category><title>Bow before my awesome iPhone you plebs</title><description>&lt;p&gt;Move over hot celebrities and get me a coffee because I have arrived. From now on you can just call me Ben Coolio Daniel, unless of-course you're not in the hip crowd yourself, in which case I may answer to "your awesomeness" and only if you're marvelling at my coolness/fetching me something at the time.&lt;/p&gt; &lt;center&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/bendaniel/SHbut0-kuBI/AAAAAAAAAFg/aB9dhYrBf30/s1600-h/BenIsCoolNow%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="260" alt="BenIsCoolNow" src="http://lh3.ggpht.com/bendaniel/SHbuvFZAMpI/AAAAAAAAAFk/MwpNjxwJVlI/BenIsCoolNow_thumb%5B1%5D.png?imgmax=800" width="218" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I saw you marvelling!&lt;/p&gt;&lt;/center&gt; &lt;p&gt;&lt;/p&gt;&lt;code&gt;&amp;lt;/joke&amp;gt; ;)&lt;/code&gt;  </description><link>http://taorsf.blogspot.com/2008/07/bow-before-my-awesome-iphone-you-plebs.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh3.ggpht.com/bendaniel/SHbuvFZAMpI/AAAAAAAAAFk/MwpNjxwJVlI/s72-c/BenIsCoolNow_thumb%5B1%5D.png?imgmax=800" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-6386430152005301696</guid><pubDate>Fri, 11 Jul 2008 01:06:00 +0000</pubDate><atom:updated>2008-07-11T15:30:21.484+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">iPhone</category><title>The iPhone 3G is here</title><description>&lt;p&gt;And I've just got home with mine after after waiting for a couple hours in a queue at Optus with about 10 other elite nerds, lol.&lt;/p&gt; &lt;p&gt; &lt;center&gt;&lt;a href="http://lh5.ggpht.com/bendaniel/SHa9cpuQ64I/AAAAAAAAAFY/xjY_NUhQyYw/s1600-h/iPhone%20Bag%5B3%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="260" alt="iPhone Bag" src="http://lh6.ggpht.com/bendaniel/SHa9dfpmZDI/AAAAAAAAAFc/eTAVD7Xw_Pg/iPhone%20Bag_thumb%5B1%5D.jpg?imgmax=800" width="177" border="0"&gt;&lt;/a&gt;&lt;/center&gt; &lt;p&gt;I'm about to unwrap it &amp;amp; plug it into my computer for the first time to unlock it through iTunes but before I do so I just wanted to write a quick post to say that although the iPhone is totally cool and stylish I promise to not let it go to my head and turn me into a pretentious, materialistic, stylish, techno snob and will remain the humble and vulnerable geek you know and love... ;)&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/07/iphone-3g-is-here.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh6.ggpht.com/bendaniel/SHa9dfpmZDI/AAAAAAAAAFc/eTAVD7Xw_Pg/s72-c/iPhone%20Bag_thumb%5B1%5D.jpg?imgmax=800" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-7514264317754546436</guid><pubDate>Thu, 03 Jul 2008 10:05:00 +0000</pubDate><atom:updated>2008-07-03T20:06:20.276+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Games</category><category domain="http://www.blogger.com/atom/ns#">Spore</category><title>Arrrghh, all praise be to the Flying Spaghetti Monster!</title><description>&lt;p&gt;Awesome - yet another tribute to the flexibility of Spore's creature creator!&lt;/p&gt;  &lt;p&gt;   &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:b68c9111-3662-4ac0-bc24-84827fc4f834" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 398px; padding-top: 0px"&gt;&lt;div&gt;&lt;object width="398" height="332"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Qvxpe8ili0c"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Qvxpe8ili0c" type="application/x-shockwave-flash" wmode="transparent" width="398" height="332"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/07/arrrghh-all-praise-be-to-flying.html</link><author>noreply@blogger.com (Ben Daniel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-1545571745556157108</guid><pubDate>Mon, 23 Jun 2008 13:56:00 +0000</pubDate><atom:updated>2009-02-01T20:17:25.328+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Games</category><category domain="http://www.blogger.com/atom/ns#">Spore</category><category domain="http://www.blogger.com/atom/ns#">Toys</category><title>More spore</title><description>&lt;p&gt;Well, I've had a bit more time to play around with the Spore Creature Creator and as promised I've uploaded some pics of my creature dudes. Meet my babies!&lt;/p&gt; &lt;table width="400"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://lh4.ggpht.com/bendaniel/SF-rIvsyKHI/AAAAAAAAAEc/4GVoCaZ4iFA/s1600-h/Bumblebutt%5B19%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="260" alt="Bumblebutt" src="http://lh3.ggpht.com/bendaniel/SF-rKEJ7HNI/AAAAAAAAAEg/_LvtdEnweqM/Bumblebutt_thumb%5B13%5D.png?imgmax=800" width="192" border="0"&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://lh3.ggpht.com/bendaniel/SF-rNCjvlGI/AAAAAAAAAEk/IMTUd0Bg2BI/s1600-h/Garth%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="260" alt="Garth" src="http://lh3.ggpht.com/bendaniel/SF-rOimVcVI/AAAAAAAAAEo/pP13lBTJr-U/Garth_thumb%5B1%5D.png?imgmax=800" width="201" border="0"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;It's pretty cool what you can do with limbs. You can attach just about any part to the end of any limb. For example with this next creature I attached a couple arms to it's head, made them tiny, and replaced the hands with eyes.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/bendaniel/SF-rS4efiXI/AAAAAAAAAEs/8cJ6UOxqB2Y/s1600-h/Buggy%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="227" alt="Buggy" src="http://lh6.ggpht.com/bendaniel/SF-rUR8FE-I/AAAAAAAAAEw/mel_4hL4jEo/Buggy_thumb%5B1%5D.png?imgmax=800" width="260" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;table width="400"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="161"&gt;Same principle with this next guy, except the top of his back-bone has 5 limbs coming off it, each with it's own head.&lt;/td&gt; &lt;td width="226"&gt; &lt;p align="right"&gt;&lt;a href="http://lh4.ggpht.com/bendaniel/SF-rWn7mm5I/AAAAAAAAAE0/ojZQjPIvVJY/s1600-h/Manyheads%5B7%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="260" alt="Manyheads" src="http://lh5.ggpht.com/bendaniel/SF-rX0w6ONI/AAAAAAAAAE4/bqGKnLe5Vmo/Manyheads_thumb%5B3%5D.png?imgmax=800" width="212" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;The editor is so easy to use and it's pretty amazing how quickly you can knock these things up even without any artistic ability - but it's so much fun you end up spending ages tweaking your creature to get it just right. I love this next one - he's just so freaky-deeky!&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/bendaniel/SF-raqSQIQI/AAAAAAAAAE8/DiLTO0cDtDk/s1600-h/Wierdy%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="260" alt="Wierdy" src="http://lh4.ggpht.com/bendaniel/SF-rcDd0zcI/AAAAAAAAAFA/fN2spL7BYrI/Wierdy_thumb%5B1%5D.png?imgmax=800" width="232" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;And what can I say, as soon as I realised I could, I couldn't resist but create Jar Jar! lol&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/bendaniel/SF-rlNhWXlI/AAAAAAAAAFE/A9BnZ3hvJ_g/s1600-h/JarJar%5B4%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="437" alt="JarJar" src="http://lh4.ggpht.com/bendaniel/SF-rnBJchRI/AAAAAAAAAFI/3xoomMBSpbU/JarJar_thumb%5B2%5D.png?imgmax=800" width="319" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;...Don't tell him but when I get the full game I plan to populate a planet with his species, lower them into a full sense of security and then blam! I genocise them with my doom ray! Muhahahaaaaa.&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/06/more-spore.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh3.ggpht.com/bendaniel/SF-rKEJ7HNI/AAAAAAAAAEg/_LvtdEnweqM/s72-c/Bumblebutt_thumb%5B13%5D.png?imgmax=800" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-3287908205705095565</guid><pubDate>Thu, 19 Jun 2008 16:15:00 +0000</pubDate><atom:updated>2009-02-01T20:17:25.329+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Games</category><category domain="http://www.blogger.com/atom/ns#">Spore</category><category domain="http://www.blogger.com/atom/ns#">Toys</category><title>EA Released Creature Editor for Spore</title><description>&lt;p&gt;Today Electronic Arts have given us a taste of what's to come in their highly anticipated, evolution-themed game "Spore" by releasing the creature editor application for the game.&lt;/p&gt; &lt;p&gt;The creature editor is revolutionary. What would previously take professional 3D artists dozens of man hours to design, model, texture and animate a 3D creature, anyone can now do in mere minutes using this creature editor for Spore.&lt;/p&gt; &lt;p&gt;You start out by shaping the back-bone of your creature which determines it's body shape. Then you simply drag and drop limbs and features onto your creature. You can get really creative - your creature might have 3 legs, four arms and 2 mouths and you can attach any body part just about anywhere. Finally you choose what markings and colours you want for your creature and your done. Then based on your creatures body-layout, centre of gravity, etc, the game will automatically work out how to animate your creature all for you. It's really amazing.&lt;/p&gt; &lt;p&gt;Here's a creature I based on one of our cats.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/bendaniel/SFqGBWVWxhI/AAAAAAAAAEA/c9dRaM-hTZg/s1600-h/WemblysaurusStretching%5B16%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="348" alt="The Mighty Wemblysaurus!" src="http://lh3.ggpht.com/bendaniel/SFqGEHD8CEI/AAAAAAAAAEE/SDQd2aqq8-s/WemblysaurusStretching_thumb%5B14%5D.png?imgmax=800" width="352" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;And here's a photo of... him relieving himself??? Well as long as he covers it up when he's done, lol.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/bendaniel/SFqGG99kSCI/AAAAAAAAAEI/6eO3TLcPIIk/s1600-h/WemblysaurusFarting%5B4%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="312" alt="Flatulent Feline!" src="http://lh5.ggpht.com/bendaniel/SFqGK7m_z2I/AAAAAAAAAEM/n6isSVymj_M/WemblysaurusFarting_thumb%5B2%5D.png?imgmax=800" width="352" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I'll create and share some more imaginative creatures on my blog when I'm feeling more creative (and when it's not 2am in the morning) to show you how flexible the editor application really is. I'd also love to see what creatures other people come up with! If you're interested you can &lt;a href="http://www.spore.com/trial" target="_blank"&gt;&lt;strong&gt;download the editor&lt;/strong&gt;&lt;/a&gt; and try it out yourself - it's easy to use and great fun!&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/06/ea-released-creature-editor-for-spore.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh3.ggpht.com/bendaniel/SFqGEHD8CEI/AAAAAAAAAEE/SDQd2aqq8-s/s72-c/WemblysaurusStretching_thumb%5B14%5D.png?imgmax=800" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-3252485125856248806</guid><pubDate>Sun, 18 May 2008 22:00:00 +0000</pubDate><atom:updated>2008-06-11T08:03:09.830+10:00</atom:updated><title>I want to believe</title><description>&lt;p&gt;Here's a nice surprise for all the old x-file fans out there: the sequel to the X-Files movie!&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:434e2ad5-6dab-4a2b-8160-545818aa9961" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 374px; padding-top: 0px"&gt;&lt;div&gt;&lt;object width="374" height="312"&gt;&lt;param name="movie" value="http://www.youtube.com/v/y5HrxAXvQ6A"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/y5HrxAXvQ6A" type="application/x-shockwave-flash" wmode="transparent" width="374" height="312"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;It's hard to tell from the trailer but it seems mysterious forces prevent Scully from having a period and Mulder starts noticing grey hairs on his head - government conspiracy or those meddling aliens again? We'll find out on July 25th!&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/05/i-want-to-believe.html</link><author>noreply@blogger.com (Ben Daniel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-6494947393905603354</guid><pubDate>Sun, 18 May 2008 13:44:00 +0000</pubDate><atom:updated>2009-02-01T20:17:25.330+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Games</category><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">Spore</category><category domain="http://www.blogger.com/atom/ns#">Toys</category><title>Shiny, glowy toys just around the corner</title><description>&lt;p&gt;Well, I'm a toy-boy and there are a couple goodies I've been watching closely for over a year, salivating for their arrival, and now they're just around the corner!&lt;/p&gt;  &lt;h4&gt;The Apple iPhone&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/bendaniel/SDAyt83-tOI/AAAAAAAAADw/XIjBlsHgE4g/s1600-h/iPhone%5B8%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="Why are there fish in my bowl of grapes?" src="http://lh6.ggpht.com/bendaniel/SDAyu83-tPI/AAAAAAAAAD4/x1Zl8Y0QJhY/iPhone_thumb%5B4%5D.png?imgmax=800" width="131" align="right" border="0" /&gt;&lt;/a&gt; My wife tells me I that actually have a mobile phone that I never use - I tell her it's just for emergencies...the type of emergencies that I can plan for a day or so ahead so I have time to charge my phone first.&lt;/p&gt;  &lt;p&gt;But if I had an iPhone we would be inseparable. I would regularly have meaningful conversations through her, caress her body gently and take her out to cafes (so long as they are a wifi hotspot).&lt;/p&gt;  &lt;p&gt;Seriously it's so freaking sweet because it's essentially a multi-touch, large screen, wifi, video iPod with a phone built in plus apps like games, instant messaging, web-browsing, email, etc! After months of rumors, there are now lots of reports agreeing on a 3G iPhone being released in Oz late June 2008. Woot!&lt;/p&gt;  &lt;h4&gt;Spore&lt;/h4&gt;  &lt;p&gt;Spore is a game by Will Wright at Maxis (the lead designer behind the highly popular &amp;quot;Sim City&amp;quot; and &amp;quot;The Sims&amp;quot; games). It's another simulation game this time based on life itself and evolution. You start out with a single cell organism in the tidal pool and strive for survival by avoiding larger organisms and consuming smaller ones. You gain points this way and when you have enough you open the 'creature editor' and can customize your organism by adding/removing limbs, eyes, mouths, etc, essentially evolving your creature. Eventually you move out of the tidal pool and onto land, evolving your creature at milestones such as starting a tribe, using tools, building a civilization, warring with other civilizations until you rule that planet and eventually master space-travel technology to seek out other planets to colonize. I really love the idea and my words don't do the game justice...so here's a preview!&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:2e2c4d78-004f-4d22-9199-00e8a12c6497" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 396px; padding-top: 0px"&gt;&lt;div&gt;&lt;object width="396" height="330"&gt;&lt;param name="movie" value="http://www.youtube.com/v/T8dvMDFOFnA"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/T8dvMDFOFnA" type="application/x-shockwave-flash" wmode="transparent" width="396" height="330"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;It's due out on PC in September, though game programmers are programmers all the same and aren't immune from bad ETAs so I wouldn't be surprised if it's later. As if this couldn't get any cooler though, to help Apple show off how easy it is to write applications for the iPhone, EA ported the tidal pool phase of Spore to the Apple iPhone! I don't know if they plan to release Spore for the iPhone but either way it's good times ahead. I can't wait. :)&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/05/shiny-glowy-toys-just-around-corner.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh6.ggpht.com/bendaniel/SDAyu83-tPI/AAAAAAAAAD4/x1Zl8Y0QJhY/s72-c/iPhone_thumb%5B4%5D.png?imgmax=800" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-6725289036873000618</guid><pubDate>Wed, 30 Apr 2008 10:06:00 +0000</pubDate><atom:updated>2008-05-18T23:53:16.692+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Happenings</category><title>Fooies</title><description>&lt;p&gt;Jules and I went and saw the Foo Fighters live in concert last night. It's the second time we've gone to see them and both times Ticketek sold out of decent tickets within minutes and we were reduced to buying tickets for 'restricted viewing seats'. And even though we were seated so far away from the stage that the sound reached us seconds after the stage light did, it was possibly the best concert I've ever been to.&lt;/p&gt;  &lt;p&gt;They had an interesting setup - there was a runway stretching out from the main stage reaching to a circular runway in the center of the hall. The circular runway was a bit strange as it seemed lower in the center, was covered with a sheet and had cables running up to the ceiling. It kinda looked like a trampoline death-trap type thing. About a third of the way into the act all was revealed as we noticed the ceiling above the &amp;quot;death-trap&amp;quot; lowering: a second stage already set up with a bunch of instruments was lowering from the ceiling, and the band moved over there. Pretty sweet.&lt;/p&gt;  &lt;p&gt;They had extras that played with them during their Skin and Bones tour there so they had extra instruments like a violin and a big ass bass guitar and played stuff from all their albums. To top it all off, for their encore, they played 10 extra songs - 21 songs all up. Jules and I were completely buggered by the end of the night and we didn't do anything, lol, I can only imagine how Dave Grohl felt running from one stage to the other all night while playing guitar and screaming in tune at the top of his voice! lol&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh6.ggpht.com/bendaniel/SBhEuzcmCGI/AAAAAAAAADg/_VoXiquUf9A/DaveGrohl%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="Dave Grohl" src="http://lh4.ggpht.com/bendaniel/SBhEvTcmCHI/AAAAAAAAADo/QoNink9sDxM/DaveGrohl_thumb%5B1%5D.jpg" width="260" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I'm sorry you couldn't make it Shanmiester! &lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/04/fooies.html</link><author>noreply@blogger.com (Ben Daniel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://lh4.ggpht.com/bendaniel/SBhEvTcmCHI/AAAAAAAAADo/QoNink9sDxM/s72-c/DaveGrohl_thumb%5B1%5D.jpg" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-5158432926224531754</guid><pubDate>Fri, 25 Apr 2008 07:22:00 +0000</pubDate><atom:updated>2008-04-25T17:37:11.552+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Musings</category><title>The half-life of chewing gum</title><description>&lt;p&gt;I was in a long car trip the other day chewing on gum and wondering to myself if chewy gum is biodegradable. I like to think so as then I feel comfortable in spitting it out the window. I am strongly against littering and would never throw trash out the window unless it was food like an apple core that I know would quickly degrade outside and only if I was on a highway. I rarely go wild and hit the streets throwing apple cores at random pedestrians &lt;em&gt;in town&lt;/em&gt;!&lt;/p&gt; &lt;p&gt;So I'm in two minds about chewing gum. On one hand I'm lead to believe that it does break down. Sometimes you can chew on a piece of gum for what seems like forever and it's still a chewy mass with no sign of breaking down - but I can tell you first hand that if you're dumb enough not to spit the damn thing out after a couple hours of it tasting like a wet wad of kitchen paper, then it eventually liquefies! I've been stuck in a church service before chewing on a piece of gum - I really wanted to spit it out but had no where to put it and didn't want to walk out in the middle of the sermon as I felt that would be rude. So eventually the damn thing liquefied in my mouth and I was no longer chewing but trying not to swallow/gag on this awful liquid that was occupying half my mouth while waiting for the sermon to finish. Well, you may have noticed on the back of some chewing gum it says "Excess consumption may cause a laxative effect" - they weren't kidding about that and I ended up decidedly power-walking my ass as quickly outta there mid-way through the sermon after all - heading straight for the gents!&lt;/p&gt; &lt;p&gt;So getting back to the point, that experience suggested that gum does break down. But on the other hand, having done my share of helping move pews and tables around at church events I am all too familiar with the feel of gum lodged under a table/seat - you feel something under your fingers that just doesn't feel consistent with the rest of the table so you feel around some more until you realise you're fondling a ball of pre-chewed gum! Thankfully, I've rarely stumbled across a "fresh" one that was still moist, which leads me to my next point - that most of them &lt;em&gt;were petrified!&lt;/em&gt; Those things were so rock hard that I swear you couldn't chip 'em off with a jack hammer!&lt;/p&gt; &lt;p&gt;So maybe it all depends on the right environmental conditions for it to either break down or remain solid. I guess I'll continue to spit them out the car window along the highway either way. They'll either break down from the sun &amp;amp; rain and all will be well with the world &lt;em&gt;OR&lt;/em&gt; they'll fossilise trapping some of my saliva and leaving a chance of scientists thousands of years in the future finding it and being able to extract my DNA and bring me back to life! No doubt on a remote island theme park the future scientists would create a whole bunch of me but make me all girls so none of us could do it and get each other preggers in the wild (we'd all be lesbians - sweet!).&amp;nbsp; ...but life would find a way. &lt;em&gt;&lt;font color="#808080"&gt;&amp;lt;queue the Jurassic Park theme music&amp;gt; Dah daaah, dah daaaah, dah dah daaah dah dah dah daaaaah....&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/04/half-life-of-chewing-gum.html</link><author>noreply@blogger.com (Ben Daniel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-7426965033291863948</guid><pubDate>Fri, 25 Apr 2008 06:08:00 +0000</pubDate><atom:updated>2008-04-30T20:09:12.510+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Musings</category><title>Phobias</title><description>&lt;p&gt;They had a segment on Sunrise (a breakfast TV show) this week where they were talking about unusual fears and kept mentioning a lady who has a fear of buttons. I immediately thought, any minute now they're going to say &amp;quot;and here she is!&amp;quot; and start interviewing one of our friends who has this very fear! I figure the fear is so unique that it could only be her! Then I started thinking &amp;quot;I can't believe she didn't tell us she was going to be on Sunrise&amp;quot;!&lt;/p&gt;  &lt;p&gt;But to much disappointment and surprise they later said that she lived in the UK - okay not her. Later still in the show they said that someone else had emailed in about their small child who also has a fear of buttons saying that their bed has a blanket with buttons all around the edge and because of it their son will never come into their room to talk with them and instead insist on yelling down the hall from a safe distance, lol.&lt;/p&gt;  &lt;p&gt;Wow, I was so surprised to learn that at least 3 people in the world has this phobia! It's even got a name (though I would probably swallow my tongue if I tried to pronounce it): &amp;quot;Koumpounophobia&amp;quot;!&lt;/p&gt;  &lt;p&gt;I think I'd like to have an irrational fear that's unique enough to make me special but common enough that it has a name so I wasn't a complete freak, lol. I figure &lt;strong&gt;lots&lt;/strong&gt; of people probably share my completely rational fear of aliens jumping out of dark hallways and probing me and that it's likely already got a name (Probeuphobia?) but maybe I'm unique with my fear of going to the toilet, being half-way through my business there and having a frog jump out from under the toilet rim! Eyew - I shudder just thinking about it! That fear is deeply rooted since it actually happened to me as a kid living on a farm house - it literally scared the...well you know the saying!&lt;/p&gt;  &lt;p&gt;Anyone else care to share an unusual / irrational fear they have? Just leave a comment. :)&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/04/phobias.html</link><author>noreply@blogger.com (Ben Daniel)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-3020307817553147032</guid><pubDate>Sun, 20 Apr 2008 14:02:00 +0000</pubDate><atom:updated>2008-04-30T20:10:45.946+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><title>Raising exceptions for invalid user input</title><description>&lt;p&gt;Firstly, let me say this post is just in regards to Delphi Windows apps, not other platforms. &lt;/p&gt;  &lt;p&gt;Recently I was involved in a lively discussion on exceptions with my work mates. At least a few of them (if not all) felt that exceptions should not be used to alert the user to invalid user input and a message box should be used instead. For example: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#0080c0"&gt;procedure&lt;/font&gt; TEditForm.Save();        &lt;br /&gt;&lt;font color="#0080c0"&gt;begin&lt;/font&gt;        &lt;br /&gt;&amp;#160; &lt;font color="#0080c0"&gt;if&lt;/font&gt; Length(txtName.Text) &amp;gt; 50 &lt;font color="#0080c0"&gt;then         &lt;br /&gt;&amp;#160; begin&lt;/font&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ShowMessage('Name too long');        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; exit;        &lt;br /&gt;&amp;#160; &lt;font color="#0080c0"&gt;end&lt;/font&gt;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;/font&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&amp;#160; &lt;font color="#008000"&gt;// Save the record, etc         &lt;br /&gt;&lt;/font&gt;&amp;#160; qrySave.Post;        &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I believe every time you have a function (or procedure) that fails you should be raising an exception, even if it is in your form code. It would look like this:&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#0080c0"&gt;procedure&lt;/font&gt; TEditForm.Save();        &lt;br /&gt;&lt;font color="#0080c0"&gt;begin         &lt;br /&gt;&amp;#160; if&lt;/font&gt; Length(txtName.Text) &amp;gt; 50 &lt;font color="#0080c0"&gt;then&lt;/font&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0080c0"&gt;raise&lt;/font&gt; Exception.Create('Name too long');&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;       &lt;br /&gt;&amp;#160; &lt;font color="#008040"&gt;// Save the record, etc&lt;/font&gt;        &lt;br /&gt;&amp;#160; qrySave.Post;        &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;;&lt;/font&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you just show a message box and exit, then there's no way any code calling your Save method will know that it failed. For example let's say you have a procedure called SaveAndNew, which calls your Save method and then puts the form into a state ready for another new record: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#0080c0"&gt;procedure&lt;/font&gt; SaveAndNew();        &lt;br /&gt;&lt;font color="#0080c0"&gt;begin&lt;/font&gt;        &lt;br /&gt;&amp;#160; Save;        &lt;br /&gt;&amp;#160; New;        &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;;&lt;/font&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Without Save raising an exception, SaveAndNew will happily try to start a new a record without knowing whether Save succeeded or failed, making the message box approach actually quite hazardous. Okaaaay, that's not entirely true, there's a whole bunch of ways of letting your calling code know that your Save method failed without using exceptions, but I'm going to show you why all those ways suck monkey butt. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Alternative 1: Turn the Save method into a function which returns whether it saved or not.&lt;/strong&gt;    &lt;br /&gt;Okay that can work in this simple example, but what if your Save method was already a function returning a useful value. If it was returning the name that got saved you could return an empty string to show it failed, or if it was returning the identity field as an integer you could perhaps return a negative number. &lt;/p&gt;  &lt;p&gt;But what if the name is optional, then you can't rely on an empty string meaning it's failed or what if you return an integer and it's possible to have negative identity numbers that are perfectly valid? Sure you can return a special value meaning it failed using an unlikely result like &amp;quot;Sir Poopy Pants The Second&amp;quot; or -9999999999999 but I think we'd both agree that's really inelegant. &lt;/p&gt;  &lt;p&gt;There are other alternatives similar to this like reserving the first letter of the string-based result to indicate success/failure or making the function return a record/class with one of the members being the result and another indicating success/failure, but these get even less elegant! &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Alternative 2: Have an 'out/var Success: boolean' parameter&lt;/strong&gt;    &lt;br /&gt;Which indicates whether the function worked or not. The downside here is that now you have to declare and pass an extra variable in your calling code everywhere you call your function. And there are bound to be times when you don't care to know whether your function worked or not and times that do care. But either way you have to declare that damn variable. &lt;/p&gt;  &lt;p&gt;Also, what if you're adding validation to some existing function which previously didn't have any checks, you now have to change the parameters of that function to include your var: Success parameter and change the way it gets called everywhere that the function gets called. If you're calling the function 50 times in your application, then you've got 50 calls to change! No thanks! &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Alternative 3: Have a global Success variable in your application/form.&lt;/strong&gt;    &lt;br /&gt;Which gets set to true or false depending on whether your function worked or not. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;TEditForm = &lt;font color="#0080c0"&gt;class&lt;/font&gt;(TForm)        &lt;br /&gt;...        &lt;br /&gt;&lt;font color="#0080c0"&gt;private&lt;/font&gt;        &lt;br /&gt;&amp;#160; Success: boolean;        &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;... &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#0080c0"&gt;procedure&lt;/font&gt; TEditForm.Save();        &lt;br /&gt;&lt;font color="#0080c0"&gt;begin&lt;/font&gt;        &lt;br /&gt;&amp;#160; Success := False; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&amp;#160; &lt;font color="#0080c0"&gt;if&lt;/font&gt; Length(txtName.Text) &amp;gt; 50 &lt;font color="#0080c0"&gt;then&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#0080c0"&gt;&amp;#160; begin&lt;/font&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ShowMessage('Name too long');        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; exit;        &lt;br /&gt;&amp;#160; &lt;font color="#0080c0"&gt;end&lt;/font&gt;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;/font&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&amp;#160; &lt;font color="#008040"&gt;// Save the record, etc         &lt;br /&gt;&lt;/font&gt;&amp;#160; qrySave.Post; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&amp;#160; Success := True;       &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;/font&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#0080c0"&gt;procedure&lt;/font&gt; SaveAndNew();        &lt;br /&gt;&lt;font color="#0080c0"&gt;begin&lt;/font&gt;        &lt;br /&gt;&amp;#160; Save();        &lt;br /&gt;&amp;#160; &lt;font color="#0080c0"&gt;if not&lt;/font&gt; Success &lt;font color="#0080c0"&gt;then&lt;/font&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; exit;        &lt;br /&gt;&amp;#160; New();        &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;; &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I know some people who do this and while it works, the code feels disconnected/disjointed and still inelegant to me. Like, I call this method over here and then have to check this other variable over here to know whether I should continue on doing what I'm doing. On the other hand if the Save method raised an exception then we wouldn't have to check any variable in our SaveAndNew method to know whether we should call New or not as the exception will cause the program flow to jump right over our New code. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Alternative 4: Show your message box but then call Abort() afterwards&lt;/strong&gt;    &lt;br /&gt;This is probably the best out of all the alternatives because Abort is at least raising an exception (an EAbort exception) causing all your calling code to stop running too, so SaveAndNew won't end up calling New - this is good! This is nearly as good as using your own exception in the first place except that if any calling code wants to know more about why it failed, it can handle the exception but it won't get any details out because it's just an empty EAbort exception and while you can create the EAbort error with a message yourself and manually raise it this method still has one flaw that all of the above alternatives share: &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;One bad thing about all these alternatives&lt;/strong&gt;    &lt;br /&gt;Lets say you have some code that calls your Save method but doesn't want Save to show a message box if it failed! Then you'd have to have an extra flag somewhere, either as a parameter in the Save function or a global variable somewhere to say that you don't want Save to show a message box. Again that is unnecessary and inelegant compared to Save raising an exception. If Save raises an exception any calling code can decide to handle the exception preventing the message box appearing, or if they do want the message box to be shown they just don't handle the exception which would be the default. This is a consistent way of silencing validation messages without resorting to declaring extra flags and extra logic. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Okay, enough of these lame alternatives! But Exceptions also suck for their own reasons...right?     &lt;br /&gt;&lt;/strong&gt;Okay, that's all the alternatives I care to explore here and if you can think of other alternatives that are not variations of the four above then before suggesting them I'd be asking if they are any more elegant and consistent than the ones above. Okay so the alternatives are not great, but Exceptions aren't perfect either are they?! Well, I think they just about are! But here are some &lt;strong&gt;&lt;em&gt;perceived &lt;/em&gt;&lt;/strong&gt;downsides to exceptions that I think deter people: &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Perceived Downside 1: &amp;quot;But exceptions are meant to be exceptional&amp;quot;&lt;/strong&gt;    &lt;br /&gt;Why would you say exceptions are meant to be exceptional? Can you back up your reasoning? Someone in the public eye/ear said this and it seems to be a phrase that just caught on. But was he talking about Delphi Windows Programs? I don't know but I doubt it. Maybe he was referring to dot net apps, maybe he was referring to web applications. I'm pretty sure I've heard someone briefly argue this point on DotNetRocks or HanselMinutes and he went on to say that all exceptions should be handled and that it should be really exceptional for an error to ever reach the user. Do you really agree with that? Do you see what implications are? Try imagining having to put try-except blocks around every UI event that you wrote and now tell me if you agree with that statement? How costly and counter-productive would that be for the programmer? And to what gain? A user will see a message box whether it's handled or not. And remember, when you write those exception handler blocks and show a message box, you're denying any other UI code that might be calling your UI code from knowing there was an error! Anyway, I still don't see why this argument is of any relevance to us Delphites - as &lt;em&gt;all exceptions are in fact eventually handled&lt;/em&gt; so there's really no difference to the end user as you'll soon see. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Perceived Downside 2: Exceptions should be reserved for &amp;quot;genuine&amp;quot;, unexpected errors, not validating user input (right tool for the right job)     &lt;br /&gt;&lt;/strong&gt;Errr...why? Really, what's so different between a function in your UI code and a function in the VCL? How would you feel if TQuery.Execute didn't raise an exception when it failed but instead showed a message box to the user and returned false if it failed. Man that would suck! lol You wouldn't have any control over whether the user got the message or not and your program would have no idea what sort of error caused the problem. &lt;/p&gt;  &lt;p&gt;So I can guess what you're thinking now - you might agree with me here when it comes to framework classes and functions but my form is at the top of the call stack - it's the &amp;quot;UI Layer&amp;quot; so why can't I simply use message boxes for validation errors there? Well because you never know when another bit of code will end up calling what you thought were &amp;quot;top level&amp;quot; functions in your form - suddenly they can become just like TQuery.Execute showing a message box except that perhaps you haven't got anything in place to say whether it failed or not. And the new code calling your code will happily continue on, oblivious to the fact that your Save method actually failed. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Perceived Downside 3: But I don't want the error message box to have a cross on it for measly validation errors&lt;/strong&gt;    &lt;br /&gt;Okay, this a valid issue but fortunately it's easily solved. First of all, what I do in my code is have a custom exception class just for validation errors. It looks something like this: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;EValidationError = &lt;font color="#0080c0"&gt;class&lt;/font&gt;(Exception)        &lt;br /&gt;&lt;font color="#0080c0"&gt;public         &lt;br /&gt;&amp;#160; constructor&lt;/font&gt; Create(AControl: TWinControl;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160; AMessage: string);       &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;/font&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#0080c0"&gt;constructor&lt;/font&gt; EValidationError.Create(&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&amp;#160; AControl: TWinControl; AMessage: string);       &lt;br /&gt;&lt;font color="#0080c0"&gt;begin&lt;/font&gt;        &lt;br /&gt;&amp;#160; &lt;font color="#0080c0"&gt;if&lt;/font&gt; CanFocus(AControl) &lt;font color="#0080c0"&gt;then&lt;/font&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; AControl.SetFocus();        &lt;br /&gt;&amp;#160; &lt;font color="#0080c0"&gt;inherited&lt;/font&gt; Create(AMessage);        &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As you can see, you can pass in the TWinControl that failed validation and it will set focus to it for you. So my Save code would look like this: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#0080c0"&gt;procedure&lt;/font&gt; TEditForm.Save();        &lt;br /&gt;&lt;font color="#0080c0"&gt;begin         &lt;br /&gt;&amp;#160; if&lt;/font&gt; Length(txtName.Text) &amp;gt; 50 &lt;font color="#0080c0"&gt;then&lt;/font&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0080c0"&gt;raise&lt;/font&gt; EValidationError.Create(&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtName, &lt;/font&gt;&lt;font face="Courier New" color="#000000"&gt;'Name too long');&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;/font&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&amp;#160; &lt;font color="#008040"&gt;// Save the record, etc         &lt;br /&gt;&lt;/font&gt;&amp;#160; qrySave.Post;        &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;;&lt;/font&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So how do you get rid of that cross? &lt;/p&gt;  &lt;p&gt;Okay typically all exceptions in a Delphi Windows app actually do get handled whether you handle them or not. You read me. &amp;quot;Unhandled&amp;quot; in a Delphi Windows app really just means unhandled by &lt;em&gt;your &lt;/em&gt;code. There's a loop somewhere in TApplication very high up in the call stack that checks for new windows messages and passes them onto our forms and controls, which in turn raise button click events and the like for us. Unhandled exceptions cause problem flow to flow back up our call stack right so all unhandled exceptions eventually hit this loop high up in the call stack where TApplication then handles the exception and shows the message box with the cross. But there's a way we can handle all unhandled exceptions just before the VCL shows this message box. &lt;/p&gt;  &lt;p&gt;You drop a TApplicationEvents component onto your form/data module (one per application) and handle the OnException event, this event will get called every time an exception has gone unhandled by your code! It passes down the Exception object and a Handled boolean which you can set to True to stop the VCL from showing it's message box. So you can write code like the following to show validation errors without the cross: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#0080c0"&gt;procedure&lt;/font&gt; &lt;/font&gt;&lt;font face="Courier New" color="#000000"&gt;ApplicationEvents1Exception(       &lt;br /&gt;&amp;#160; AException: Exception; &lt;font color="#0080c0"&gt;var&lt;/font&gt; Handled: boolean);        &lt;br /&gt;&lt;font color="#0080c0"&gt;begin&lt;/font&gt;        &lt;br /&gt;&amp;#160; &lt;font color="#0080c0"&gt;if&lt;/font&gt; AException &lt;font color="#0080c0"&gt;is&lt;/font&gt; EValidationError &lt;font color="#0080c0"&gt;then&lt;/font&gt;        &lt;br /&gt;&amp;#160; &lt;font color="#0080c0"&gt;begin&lt;/font&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008040"&gt;// Show a message box without the cross&lt;/font&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ShowMessage(AException.Message);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Handled := True;        &lt;br /&gt;&amp;#160; &lt;font color="#0080c0"&gt;end         &lt;br /&gt;&amp;#160; else&lt;/font&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008040"&gt;// For any other sort of error,&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#000000"&gt;&lt;font color="#008040"&gt;&amp;#160;&amp;#160;&amp;#160; // let the VCL show handle it         &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160; Handled := False        &lt;br /&gt;&lt;font color="#0080c0"&gt;end&lt;/font&gt;; &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you log all unhandled exceptions and don't want to log validation errors, then you can easily discriminate between validation errors and other errors using the same check as above. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Perceived Downside 4: But I don't want Delphi to pause my program every time an exception occurs that's just for some trivial validation error.&lt;/strong&gt;    &lt;br /&gt;Fair enough. Fortunately you can tell Delphi which type of exceptions it shouldn't break on. It's found under Tools, Debugger Options. You'll notice that EAbort is in the list of exceptions that Delphi doesn't break on. Just add your EValidationError to the list and Delphi won't break on it. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To Sum Up&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You should not assume your &amp;quot;top level&amp;quot; UI methods won't get called by other code &lt;/li&gt;    &lt;li&gt;Simply showing a message box and then exiting     &lt;br /&gt;without providing any way for calling code to know that your function failed       &lt;ul&gt;       &lt;li&gt;is dangerous and can and will lead to buggy code! &lt;/li&gt;        &lt;li&gt;normally doesn't give the calling code any say in whether the message box should be shown or not! &lt;/li&gt;        &lt;li&gt;requires extra work to satisfy the 2 points above&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Raising exceptions for invalid user input      &lt;ul&gt;       &lt;li&gt;is more elegant and often less code than it's alternatives &lt;/li&gt;        &lt;li&gt;is safer than it's alternatives &lt;/li&gt;        &lt;li&gt;can be tweaked with very little code to look just like a normal message box to the end user &lt;/li&gt;        &lt;li&gt;is consistent with what functions and classes in the VCL already do &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;is a good practice&lt;/strong&gt; for all the above reasons&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Wow I'm impressed you made it this far...or did you just skip to the end? lol Well, I hope that if you didn't already agree with this logic (even without realising it) that I got you to at least consider converting your practices. :-) &lt;/p&gt;  &lt;p&gt;....or at the very least that I never have to use your code because it'll be my code that eventually fails when yours doesn't raise an exception! lol jk ;-)&lt;/p&gt;  </description><link>http://taorsf.blogspot.com/2008/04/raising-exceptions-for-invalid-user.html</link><author>noreply@blogger.com (Ben Daniel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3371457440769633696.post-859632953032533701</guid><pubDate>Tue, 25 Mar 2008 01:50:00 +0000</pubDate><atom:updated>2008-04-25T17:37:54.258+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Musings</category><title>Hello World</title><description>&lt;span style="font-family:arial;"&gt;The blog reader slouched over their computer in an ape like stance, wondering to themselves how badly this blog would suck when all of the sudden and without warning a deadly, mutant, cybernetic, ninja kangaroo hopped into the room behind them!...also he had a bomb.&lt;br /&gt;&lt;br /&gt;I remember hearing somewhere that when writing a book, the author has to get the reader interested within that first paragraph. Frankly if that didn't get you interested...what do you mean it didn't? Well did I mention the kangaroo was...&lt;span style="font-style: italic;"&gt;his father! &lt;/span&gt;It does so make sense.&lt;br /&gt;&lt;br /&gt;Anyway, I've decided to start a blog for a few reasons, mostly to get some of the brain things inside my head down onto a more reliable media but also to share some of my views on life, technology, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;programming, A.I., religion&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;ethics&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &amp;amp; the future and hopefully generate some good feedback/discussion.&lt;br /&gt;&lt;br /&gt;Some topics like religion might be a little edgy for some people but keep in mind I don't mean to offend, rather just to share my opinions and I look forward to hearing yours! Just try to keep them civil &lt;span style="font-style: italic;"&gt;ALL RIGHT?!&lt;/span&gt; ;-)&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Ben&lt;br /&gt;&lt;/span&gt;</description><link>http://taorsf.blogspot.com/2008/03/hello-world.html</link><author>noreply@blogger.com (Ben Daniel)</author><thr:total>0</thr:total></item></channel></rss>