<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4619161095752757506</id><updated>2011-10-13T22:21:34.380+11:00</updated><title type='text'>The Naked Coder</title><subtitle type='html'>Detailing my programming learning experiences...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-157505451864636911</id><published>2011-06-14T18:32:00.000+10:00</published><updated>2011-06-14T18:32:23.565+10:00</updated><title type='text'>Maven Command Line from Eclipse</title><content type='html'>Eclipse comes with a bunch of maven support but if you want to avoid going back to the command line to type in your particularly obscure command you can use external tools configuration to get a prompt in Eclipse.&lt;br /&gt;&lt;br /&gt;In Eclipse click External tools -&gt; External Tools Configurations then add a new launch configuration. Then simply add:&lt;br /&gt;&lt;ul&gt;&lt;li/&gt;the location of your maven installation&lt;br /&gt;&lt;li/&gt;use ${project_loc} as your working directory&lt;br /&gt;&lt;li/&gt;use ${string_prompt} in arguments&lt;br /&gt;&lt;/ul&gt;Here's what my configuration looks like:&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3wCzFBFG5S0/Tfcb6m2B66I/AAAAAAAAACw/OJLl3PhZsXM/s1600/maven_tools.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="317" src="http://1.bp.blogspot.com/-3wCzFBFG5S0/Tfcb6m2B66I/AAAAAAAAACw/OJLl3PhZsXM/s320/maven_tools.png" /&gt;&lt;/a&gt;&lt;/div&gt;Now you can run that from the external tools drop down menu and you'll get a command prompt. Then just type in your favourite maven command. &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-n6XoK7YOr2Y/TfccZtvDwTI/AAAAAAAAAC4/f41bS43klWo/s1600/example.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="124" width="320" src="http://3.bp.blogspot.com/-n6XoK7YOr2Y/TfccZtvDwTI/AAAAAAAAAC4/f41bS43klWo/s320/example.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-157505451864636911?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/157505451864636911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=157505451864636911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/157505451864636911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/157505451864636911'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2011/06/maven-command-line-from-eclipse.html' title='Maven Command Line from Eclipse'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-3wCzFBFG5S0/Tfcb6m2B66I/AAAAAAAAACw/OJLl3PhZsXM/s72-c/maven_tools.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-5967631743927622169</id><published>2011-02-07T23:50:00.000+11:00</published><updated>2011-02-07T23:50:13.671+11:00</updated><title type='text'>Fixing Linux after installing Windows on dual boot system</title><content type='html'>My daughters are back to school this week so I decided I should install Windows 7 on a spare hard drive in my machine, as they say that sometimes they need to use Windows specific programs. In fact, one of their peers told me his IT homework consisted of following a step by step guide of clicking through a worksheet in a particular flavour of Office (I think it was 2010) and apparently he would fail by using any other version. If this is the case, its a sad state of affairs for IT learning but that's a whole other rant.&lt;br /&gt;&lt;br /&gt;Up until now, I've been super happy with Linux, specifically Mint although I've played with Ubuntu, Fedora and Suse but figured if I don't install it now the night that they've got some assignment to complete, I'll have to go through the install pain so might as well have it ready.&lt;br /&gt;&lt;br /&gt;Anyway in order to install Windows I had to unplug my main hard drive and leave just the soon to be Windows drive because apparently Windows has a drama if there is more than one drive present. This one drive had previously had Ubuntu on it. I booted from the CD and ran through the lengthy install process. Once it was all installed I rebooted a couple of more times to pick up any updates.&lt;br /&gt;Then I plugged my other hard drive back in, expecting to just need to update Grub and all would be fine. However I found that Windows deletes or installs Master Boot Record which overwrites grub. I turned to Google and found this problem was well documented. After trying a number of solutions with no joy, I found that grub needed to be installed on the Windows hard drive as this was the first drive being accessed during boot up. The process to reinstall grub was to boot from the live CD (in this case Mint 10) then mount the disk with the Mint partition. In this instance my Mint install was on sdb, and windows on sda. The trick is to install grub to sda. The full instructions are:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo fdisk -l&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo mount /dev/sdb6 /mnt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo grub-install --root-directory=/mnt /dev/sda&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;The first command lists your devices and you use this to work out which partition is your Linux installation. The second mounts that drive and the third funnily enough does the grub install. Note that we're installing grub on the first device, sda. After this a reboot and you should see the grub menu. If both partitions don't show up, boot into Linux and refresh the grub menu with&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo update-grub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This worked perfectly for me with Linux Mint 10.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-5967631743927622169?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/5967631743927622169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=5967631743927622169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5967631743927622169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5967631743927622169'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2011/02/fixing-linux-after-installing-windows.html' title='Fixing Linux after installing Windows on dual boot system'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-5751148610803873127</id><published>2011-01-04T23:12:00.000+11:00</published><updated>2011-01-04T23:12:59.938+11:00</updated><title type='text'>Vim..a n00b's experience</title><content type='html'>&lt;h4&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;a href="http://www.vim.org/"&gt;Vim&lt;/a&gt; is an improved version of the Vi text editor which has been kicking around since 1976. After some initial scepticism I've found that is an incredibly powerful and useful tool. I'm just learning but all ready feel that my productivity is increasing.&lt;/span&gt;&lt;/h4&gt;&lt;h4&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;/span&gt;Why Vim?&lt;/h4&gt;I never thought I'd feel excited enough about a text editor that I pony up the cash to pay for it. After all its just a text editor right? Well that's what I thought until I found &lt;a href="http://macromates.com/"&gt;Textmate&lt;/a&gt; for my Mac. This seemed to bring a whole slew of new features that made coding faster and easier. I'm sure that I wasn't even using a fraction of the available abilities. Then I moved to Linux and found gEdit which is just a plain old text editor. Now I spend a lot of time at work ssh-ing to unix boxes and if I need to view or edit a file my choices are limited. The commands used in less and more, translate to Vim so I needed to learn about more (bad pun intended) about it. I found that once you've learned relatively few commands you can navigate round a file in no time. I decided to see if Vim could be useful as my default editor at home as well. The &lt;a href="http://www.vim.org/"&gt;Vim website&lt;/a&gt; has binaries available for installing gVim (a Gui based version) for Linux, Mac and PC so I didn't have to code inside a terminal window. I also downloaded an excellent 4 part video tutorial from Net Tut's called &lt;a href="http://net.tutsplus.com/tutorials/other/venturing-into-vim-new-premium-video-series/"&gt;Venturing into Vim&lt;/a&gt; by Jeffrey Way. This series was very useful in explaining the basics (and some advanced stuff). If you're wanting to learn more I'd highly recommend this series.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;So what's so cool about it?&lt;/h4&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pIspW_pAKWQ/TSFgI7nLt2I/AAAAAAAAACk/9m24AvgpDpU/s1600/Screenshot-1.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="191" src="http://1.bp.blogspot.com/_pIspW_pAKWQ/TSFgI7nLt2I/AAAAAAAAACk/9m24AvgpDpU/s320/Screenshot-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;When I work I prefer to have my hands on the keyboard as much as I can. I don't like to be continually moving my hand off to grab the mouse. Vim lets me not only insert and edit text but also to navigate without having to wave my arm around. This translates to faster input. Once you're familiar with the Vim way, most commands are intuitive and seem to be the logical way to do things. Even though its text based you can still use tabs or split the screen vertically or horizontally (and multiple times). You can carve up your workspace to make it however you want. Check out this screenshot.&amp;nbsp; I defy you to do that in your vanilla flavoured editor. &lt;br /&gt;This is just one of the many flexible things you can do with Vim. Its not an IDE but its totally lightweight and can support syntax highlighting.&lt;br /&gt;&lt;br /&gt;The trick with Vim is that it is like a language all on its own. Once you've become familiar with it, it will quickly become second nature. Part of the curve is that Vim has a number of different modes: command, insert and visual. Depending on what mode you're in, keystrokes will mean different things. For example, in command mode [shift] + g will move you to the end of the document, while in insert mode it will give you a capital G. By default you start in command mode and you choose to enter text by one of the many insert commands. For example i to insert before the cursor, o to insert on the next line, a to insert after the cursor, A to insert at the end of the line. The options are plentiful. Do a quick google and you'll find any number of cheatsheets and shortcut lists available for Vim so I'll not repeat them here. The thing to remember is that once you've finished in insert mode hit [esc] to go back to command mode. This is a lesson that's learned from experience as I seemed to finish my text files with :w!&lt;br /&gt;&lt;br /&gt;You can change the colour scheme from the plain black and white to a number of provided colourful schemes. I'm using the quite dark "ron" scheme at the moment. If you want to set a scheme to load by default you can add a .vimrc file to your home directory. This can be used to customise your Vim with all sorts of things, such as line numbering, syntax highlighting (I've tested it with Java, Groovy and HTML) and auto indenting.&lt;br /&gt;&lt;br /&gt;I'll post more about Vim as I learn but so far I'm thinking that if you can type Vim might be the editor for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-5751148610803873127?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/5751148610803873127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=5751148610803873127' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5751148610803873127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5751148610803873127'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2011/01/vima-n00bs-experience.html' title='Vim..a n00b&apos;s experience'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pIspW_pAKWQ/TSFgI7nLt2I/AAAAAAAAACk/9m24AvgpDpU/s72-c/Screenshot-1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-5301942375373472516</id><published>2011-01-03T15:22:00.000+11:00</published><updated>2011-01-03T15:22:50.138+11:00</updated><title type='text'>Samsung NF210 Netbook Opinion</title><content type='html'>For Christmas 2010, we got my youngest daughter Em a Samsung NF210 netbook. She's a budding nerd and has been hacking away on some Python scripts and I really enjoy working on this together with her. She had previously been using a hand me down Powerbook but its best days are now long gone. I didn't want to spend a bucket of cash and she liked the funky shape of this particular model (girls really!!).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;The hardware&lt;/span&gt;&lt;br /&gt;This Sammy comes with a 1.66 GHz Atom process, 1 GB RAM and 250 GB hard drive. I'm not sure of the weight but it seems much much lighter than my Macbook. The screen is bright and battery life is quoted as up to 14 hours. Even taking out the usual marketing spin the battery life is awesome. Anything better than 8 hours is dynamite IMHO. In addition there's a built in web cam which is unnecessary for me but Em thinks its pretty cool.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;The software&lt;/span&gt;&lt;br /&gt;Ok so here's a bit of a negative, the shipped OS is Windows 7... Starter!! I had to hide my natural bias and told Em we'd see how it worked out. Em was excited because she'd be able to run all those programs that she couldn't run on the Mac. In actual fact, there really wasn't anything in this category aside from ridiculous smileys and other .exe malware. Em was disappointed that one of the unnecessary features removed from the Starter edition was the ability to change desktop backgrounds. &lt;br /&gt;So within 24 hours, Win 7 Starter was gone and Linux had been installed. We tried a bunch of different flavours, &lt;a href="http://meego.com/"&gt;Meego&lt;/a&gt;, &lt;a href="http://moblin.org/"&gt;Moblin&lt;/a&gt;, &lt;a href="http://susegallery.com/a/FbDcLt/smeegol"&gt;Smeegol&lt;/a&gt;, &lt;a href="http://linuxmint.com/"&gt;Mint&lt;/a&gt; (XCFE), &lt;a href="http://www.ubuntu.com/netbook"&gt;Ubuntu UNR&lt;/a&gt;. Meego and Moblin in particular have a beautiful interfaces for portable devices. Initially I couldn't get wifi working as the netbook uses proprietary Broadcom drivers (although I'm told these are now open). After much mucking around I finally got the drivers installed and it worked really well. I'd have to say that one of the big pluses for Meego is the community. It took a long time to get the wifi problem sorted but there were people willing to help on IRQ and twitter. (Particular thanks here to &lt;a href="http://andybleaden.blogspot.com/"&gt;Andy Bleaden&lt;/a&gt; &lt;a href="http://twitter.com/andybleaden"&gt;@andybleaden&lt;/a&gt; for his assistance). However I needed to get VLC working before the young one goes away to grandma's house and this involved a whole new round of pain. We've settled on Ubuntu UNR as the best fit between usability and functionality at the moment. I'm not particularly keen on the Unity interface and we'll sure have another look at Meego in the future.&lt;br /&gt;Ubuntu runs well but so far we've not found a solution for the non functioning brightness keyboard controls and the annoying trackpad which moves the cursor when bumped while typing. I'm sure there's a fix out there for that one somewhere though.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;The Verdict&lt;/span&gt;&lt;br /&gt;Its terrific and I want one. The screen is small but perfectly usable for web surfing on knocking up a script or two. While its no desktop replacement its perfect if you're on the road or want to have web access with you wherever you are. I've not used an iPad but can't see why you'd want an iPad when you could get one of these for so much more bang for your buck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-5301942375373472516?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/5301942375373472516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=5301942375373472516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5301942375373472516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5301942375373472516'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2011/01/samsung-nf210-netbook-opinion.html' title='Samsung NF210 Netbook Opinion'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-7059126762634623492</id><published>2010-12-30T21:04:00.001+11:00</published><updated>2010-12-30T21:48:10.427+11:00</updated><title type='text'>2011 New Year's Bucket List</title><content type='html'>Last year I got excited and said I'd try to blog once a week to make sure I stayed on track. But as you can tell from the listings here, I didn't make it very far. Aside from the controversial post about Linux there really hasn't been too much action&amp;nbsp;at least in the last 6 months anyway. Just like everyone else I'm really busy and finding the time to learn and experiment can be difficult. However with so many cool new and not so new technologies to play with, how can I not dabble. So with that in mind, in no particular order here's my bucket list for 2011:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HTML5 (looks so cool!!)&lt;/li&gt;&lt;li&gt;Python (my youngest daughter aged 12 is inspiring me here)&lt;/li&gt;&lt;li&gt;Grails&lt;/li&gt;&lt;li&gt;JQuery&lt;/li&gt;&lt;li&gt;Vim (I did say cool not so new technologies)&lt;/li&gt;&lt;li&gt;Scala&lt;/li&gt;&lt;li&gt;Android &lt;/li&gt;&lt;/ul&gt;In 2010, messed about with Linux as an OS (and found it fantastic), with Grails and JavaFX in the language space but didn't get to apply either to anything very substantial. Time management is a massive issue for me so I'll need to be pretty organised and set some specific goals. I've got a couple of projects in mind to apply some of this stuff to, so follow along and we'll see what we can learn.&lt;br /&gt;If you've got a suggestion for a cool technology let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-7059126762634623492?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/7059126762634623492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=7059126762634623492' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/7059126762634623492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/7059126762634623492'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/12/2011-new-years-bucket-list.html' title='2011 New Year&apos;s Bucket List'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-2922811166532503381</id><published>2010-07-14T20:29:00.000+10:00</published><updated>2010-07-14T20:29:38.296+10:00</updated><title type='text'>Lazy, stupid or insane?</title><content type='html'>There's never enough time to do all the things I know I should. Life is constant juggle to get stuff done. Work is the perfect example.. ridiculous deadlines tend to overtake the development process and (sometimes) code you're less than proud of gets out. So you'd think I'd learn when working on my own side projects.. right?&lt;br /&gt;&lt;br /&gt;Currently myself and another a likeminded dude are working on a grails based football (that's Australian football in case you're wondering) tipping application. The idea had been kicking around (bad pun intended) for a while. We were feed up with the main &lt;a href="http://www.afl.com.au/Default.aspx"&gt;AFL site&lt;/a&gt; which is based on flash. It does the job but each year they provided 'enhancements' which are unnecessary or just don't give us what we want. Anyway enough complaining, we'll build our own. We've given ourselves a very generous timeline to get this done so that it will be close to perfect at release.&lt;br /&gt;&lt;br /&gt;Herein lies the problem. Grails makes it so easy to get from "hey let's do this" to "wow look what I just made" that all my good intentions to do the right thing are forgotten. I've read enough material by learned people (like &lt;a href="http://blogs.bytecode.com.au/glen/2008/03/12/mockfor-march---unit-testing-grails-controllers.html"&gt;this&lt;/a&gt; and &lt;a href="http://www.wakaleo.com/blog"&gt;this&lt;/a&gt;) to know that I should be writing tests for my stuff. Preferably before or during development. However after being distracted by a couple of other side projects, I went back to the tipping project today only to find that the last great feature I'd implemented had busted some core functionality that had been working on early in the project. Lazy, stupid or insane... take your pick.&lt;br /&gt;&lt;br /&gt;So now that I've learned my lesson I'm off to install the &lt;a href="http://grails.org/plugin/code-coverage"&gt;grails cobertura plug in&lt;/a&gt; and see if I can get that percentage up and avoid future problems. &lt;br /&gt;&lt;br /&gt;As a side note what do people think is reasonable test coverage? 70%, 80%, (gulp) 100% ??&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-2922811166532503381?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/2922811166532503381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=2922811166532503381' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2922811166532503381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2922811166532503381'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/07/lazy-stupid-or-insane.html' title='Lazy, stupid or insane?'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-6135441844258150912</id><published>2010-06-07T22:50:00.000+10:00</published><updated>2010-06-07T22:50:39.519+10:00</updated><title type='text'>Version Control</title><content type='html'>Up until recently I've basically worked on my side projects on my own. I only ever needed version control to keep track of my own changes. Although I use CVS at work (don't laugh some of us have to use &lt;a href="http://www-01.ibm.com/software/awdtools/clearcase/"&gt;ClearCase&lt;/a&gt;) I decided to use something different. &lt;a href="http://git-scm.com/"&gt;GIT&lt;/a&gt; was my weapon of choice. Fast cheap branching.. too easy right? Ok so its (mostly) command line.. there's no drama with that. Most of what I'm doing is as simple as git branch, git merge, git status.. nothing too drastic at all. &lt;br /&gt;&lt;br /&gt;Recently I've started working with another bloke who, like me, is used to using Eclipse with CVS at work. I pushed (no pun intended) Git as I've had good experiences so far and didn't want to go setting up a CVS or Subversion repo on a separate machine. To be honest as much as I wanted this to work for us, we struggled. Making small changes then waiting while he pushed those to master and then I pulled them down only to find a bunch of clashes became tedious quickly. We've argued about what system to use:&lt;br /&gt;CVS? Subversion? Mercurial? Continue with Git?&lt;br /&gt;&lt;br /&gt;In the end we've decided to give Mercurial a try. It gives a chance to continue with the distributed mindset but importantly there is good tooling support in Netbeans. (I know there's a plugin for git but I couldn't get it to work on my machine). So far the extra tool support has been positive. We've moved our project to BitBucket from GitHub (higher storage limit for the free account too) and we're able to work collaboratively even in the free account. &lt;br /&gt;&lt;br /&gt;In the process of making this post I've had a couple of tweets reminding me that there is git support in Netbeans (and Eclipse). I had been using Netbeans 6.9 RC2 on 64 bit Linux and couldn't get the plugin to work. All good with mercurial so far. &lt;br /&gt;&lt;br /&gt;Version Control is something some people get passionate about. I'm not proposing one is better than another just that for us this time Mercurial has been a better experience. As we get more used to the distributed aspect I guess we'll be better able to adapt to GIT. But if Mercurial is doing the job why change?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-6135441844258150912?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/6135441844258150912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=6135441844258150912' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6135441844258150912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6135441844258150912'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/06/version-control.html' title='Version Control'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-5536520186245780763</id><published>2010-05-26T20:50:00.000+10:00</published><updated>2010-05-26T20:50:20.055+10:00</updated><title type='text'>Auscert 2010</title><content type='html'>So much for blogging once a week! Work has been totally hectic and unfortunately I've got a bunch of cool projects that have been bumped to the backburner. However I'm not complaining because I've just back from my first conference which was the security focused AusCert 2010. If I had to summarize in one word... awesome!!&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;But for those who want more details&lt;/h3&gt;So not having been to one of these before I wasn't sure what to expect. It was held on the beautiful Gold Coast at the lavish Royal Pines Resort. The basic idea was a number of speaking sessions to attend per day combined with vendors detailing their wares. Most sessions overlapped and you generally had a choice of about 4 different topics to attend each hour. The speakers spoke to varying subjects and I was determined to take a few notes to share things with colleagues. Interestingly I thought I'd rate my level of interest in speakers also and found that after each session I was writing "this was the best so far!". &lt;br /&gt;&lt;br /&gt;For me the standouts were Roger Dingledine (Tor Project), Marcus Rannum (Tennable Network Security), Crispin Cowan (Microsoft) and Scott McIntyre (XS4ALL). These guys were passionate about their projects and terrific speakers. That's not to say that I agreed with everything they said but they really made me think. These guys were just a few of many great presentations. There were a couple of snoozers for me but to be fair these might have been more suitable to someone else. &lt;br /&gt;&lt;br /&gt;The venue was beautiful, the conference was very well run with free wifi, food and coffee on tap, and I learned heaps. If I got the chance to go again I do it in heartbeat. Possibly next time I'd spend some more time networking with some of the other like minded people there. I was surprised to see so many 'booth babes' at a nerd fest like this. To paraphrase Marcus Rannum, its hard to imagine people being influenced to buy security hardware and software by scantily clad young women. Not that I'm complaining. &lt;br /&gt;&lt;br /&gt;If you ever get the opportunity to get there, I couldn't recommend it more highly particularly if the speakers are as great as the ones I heard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-5536520186245780763?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/5536520186245780763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=5536520186245780763' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5536520186245780763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5536520186245780763'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/05/auscert-2010.html' title='Auscert 2010'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-6700551053412070954</id><published>2010-04-24T13:53:00.001+10:00</published><updated>2010-04-24T21:55:35.303+10:00</updated><title type='text'>Book Review: JavaFX in Action</title><content type='html'>To be honest I really only bought &lt;a href="http://www.manning.com/morris/"&gt;JavaFX in Action&lt;/a&gt; because I could get it cheap from Manning via their Twitter deal of the day. I'd tossed up a couple of Manning books and decided that UI app's would be an interesting diversion to the web app space that I usually play in. The book shipped quickly and the price was great ($AUD35 including postage) which included the paperback and the PDF version.&lt;br /&gt;One small Manning criticism is the way they handle PDF's. I managed to delete the PDF twice as I skipped from OS to OS (I know I know I should be more careful). Manning make the pdf download link available for 5 days only which is ok until you lose the pdf. You can contact them to open up another 5 day link but I think some of the other publishing houses do it better with an online library that you can download whenever. I like the idea of being able to log in on the web and pull down my reading material regardless of the machine I'm on. Maybe they'll look at this in the future. &lt;br /&gt;The pdf version comes with your name on each page to prevent piracy which is a good idea. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;JavaFX&lt;/h4&gt;JavaFX is really the first graphical technology that I've started to play with other than say Swing. There seems to be a bunch of options.. Silverlight, AIR, Flex, Swing, and (yes Apple) Flash. Because I haven't done much with these its difficult for me to comment on how JavaFX compares but it seems to have a relatively easy learning curve if you're from a Java background and what you can build is very impressive. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;JavaFX in Action the book&lt;/h4&gt;The book is an easy read and the author has a very relaxed style with good use of humour. It covers the basics of JavaFX before diving deeper. I wouldn't say its for programming beginners but those with some programming experience will pick it up quickly. I really liked the examples particularly later in the book where you get to build an Enigma code machine and a Flickr client. The examples are also very varied as you're exposed to the different areas that JavaFX could be applied to. The one criticism I would have of the examples is that it seemed to take quite a while before any more impressive than hello world was demo'd. There's only so much reading I can do before I want to be experimenting and I think I had to wait until Chapter 4 or 5 before I found something that excited me. Early examples and quick wins that demonstrated what can be done were one of the great things about &lt;a href="http://www.manning.com/gsmith/"&gt;Grails in Action&lt;/a&gt; which remains my favourite Manning title so far.  Having said that when I finally got to them they were very impressive. Instead of the usual way of implementing new features to one project throughout the book, here you got to build different things in each of the advanced chapters. I guess this had to be done to demonstrate the power of JavaFX and the variety really kept me interested and keen to get onto the next chapter just to see what else could be achieved. There are plenty of "oh wow" moments as you build the examples. &lt;br /&gt;&lt;br /&gt;Another issue for me was that the author tried to remain IDE agnostic throughout the book. Only at the end does he use an IDE for the examples. This is ok but really most of are using IDE's now and Netbeans is totally free, runs on all platforms so why not just encourage readers to download it to develop the examples. I notice on the author's forum there is mention of examples that won't run from an IDE but will from the command line due to package configuration. He replied that he was trying to keep the IDE complexity out but IMHO we're going to be developing our apps in an IDE so might as well broach it.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The verdict&lt;/h4&gt;The bottom line here is that I really liked this book. I think its easy reading style and good bang for coding buck examples encourage the reader to experiment with the technology. As mentioned the examples are varied and each one offers different tricks to learn. I'd certainly recommend this book to those interested in seeing what can be done with JavaFX.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-6700551053412070954?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/6700551053412070954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=6700551053412070954' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6700551053412070954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6700551053412070954'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/04/book-review-javafx-in-action.html' title='Book Review: JavaFX in Action'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-8619659962316749356</id><published>2010-03-12T22:46:00.000+11:00</published><updated>2010-03-12T22:46:43.964+11:00</updated><title type='text'>Operating systems are like gyms...</title><content type='html'>After the rage around my last post I decided to give the Linux thing a go. While I found that it didn't have all the shiny 'it just works' of Apple I'm totally hooked. I'm not sure if its totally customizable environment or the massive amounts of free stuff that do everything I need but there just seems to be something totally cool about being able to do whatever you want however you want. This is something that is pretty new to me after living in the polished dictatorship that is Apple. &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;What I tried&lt;/h3&gt;First I thought I'd try a bunch of different flavours to see what the difference was. On my trusty old Macbook I installed:&lt;br /&gt;&lt;ul&gt; &lt;li/&gt;Ubuntu&lt;br /&gt; &lt;li/&gt;Kubuntu&lt;br /&gt; &lt;li/&gt;OpenSuse&lt;br /&gt; &lt;li/&gt;Mint&lt;br /&gt; &lt;li/&gt;Fedora 12&lt;br /&gt;&lt;/ul&gt;None of this was very taxing, more a splash around than a deep dive. Along the way I managed to find solutions to some of the problems I'd experienced with Linux before (see previous post 'Enter the Koala'). The multiple monitor issue was solved by turning the visual effects off completely in Gnome. Things were definitely workable and all the things that I needed were available to me. I was particularly impressed with Banshee. I know its available on OS X but iTunes had always seemed to do the job so I'd never looked at other alternatives.  The end result of the Macbook experiment was that there didn't seem to be anything that I could do on my Mac that I couldn't do on Linux. My Mac hardware is getting a little old now with my Macbook being my only Intel based machine so it was time to look at a new tower.Anyway so I've gone out and got myself a new desktop. Nothing too fancy but compared to my PowerPc based Macs and my Macbook much more band for my buck -- Quad 2.5 4GB RAM 512MB graphics card (for under half the cost of the cheapest Apple laptop). After the very quick testdrive of Linux flavours I've decided to go with Ubuntu (Gnome not KDE so far). Its taken a couple of days but I've got everything I think I'll need to tinker:&lt;ul&gt; &lt;li/&gt;Groovy / Grails&lt;br /&gt; &lt;li/&gt;Sun Java including JavaFX (also got the Open JDK)&lt;br /&gt; &lt;li/&gt;Netbeans&lt;br /&gt; &lt;li/&gt;Git&lt;br /&gt; &lt;li/&gt;STS (Springsource's Eclipse which also includes Spring Roo which I'll blog about in the future)&lt;br /&gt;&lt;/ul&gt;&lt;h3&gt;Operating systems are like gyms&lt;/h3&gt;When I was younger I started going to the gym. At first I went to the hippest gym which had shiny weights and mirrors everywhere. Music pumped through the place while overtanned overmuscled instructors/sales people tried to convince to join up for another 12 months. Then after a time I got feed up with the high cost and overcrowding and went down to my local YMCA. The gym here was dusty and smelly. Equipment was old and worn. &lt;br /&gt;But the Y had a vibe about it. It was about the sport.. about getting things done. There were no posers here it was all about the hard work. You left the place exhausted, people encouraged each other to lift more, push harder and you encouraged them to do the same. I worked much harder here, it was just the expectation that you spilled as much sweat as you could and became stronger for it.&lt;br /&gt;&lt;br /&gt;Linux is that old gym. Sure it has more of a curve but once you begin to learn you become proud of the new skills you develop. The thousands of forums and blogs are testament to the community spirit that's out there. I know its only an operating system but after the locked in Apple approach it sure feels like I'm sticking it to the man now. I see why my previous post elicited such passionate responses. Now its my turn to live the Linux dream.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-8619659962316749356?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/8619659962316749356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=8619659962316749356' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/8619659962316749356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/8619659962316749356'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/03/operating-systems-are-like-gyms.html' title='Operating systems are like gyms...'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-9177739823018513906</id><published>2010-02-14T11:03:00.000+11:00</published><updated>2010-02-14T11:03:06.416+11:00</updated><title type='text'>RANT: Is the Linux dream a myth?</title><content type='html'>How many times have you heard the arguments about operating systems and why mine is better than yours etc? Now I admit to even starting a few of these talkfests myself.. things quiet at work or new guy starting.. asking what OS they use and watch the smackdown begin (its almost as good as &lt;a href="http://au.ufc.com/"&gt;UFC&lt;/a&gt;). There'll be your Mac people espousing how "everything just works" and your Windows types saying "the world uses Windaz" so its the best. And then there's the "you should use Linux because its free man" tech guru wannabe hippy types looking all smug and self righteous because the rest of the clowns paid for their OS and he's using his for free. Or is he? In my experience these people are all PC gamers therefore Windoze users.&lt;br /&gt;&lt;br /&gt;I've met a few characters that are living the Linux dream or at least claiming to. But here's the rub... is there anyone who's exclusively using it? I don't mean "I've got Linux installed on my USB stick" or "I dual boot". Is there anyone who is actually using Linux as there sole operating system. Booting into everyday to check their email, write their documents, develop their code, surf the web and yes.. play their games. I fear there is not.&lt;br /&gt;&lt;br /&gt;Maybe I'll concede and say having a Windaz virtual machine is still living the dream. Is there anybody doing that? I know of one bloke (who we'll call 8Ball to protect his privacy) who uses Ubuntu for work because "its got all the tools I need to get things done". But even he has to use a Windows VM to run iTunes to sync his iPhone. &lt;br /&gt;&lt;br /&gt;Now before you fire up your email clients to deluge me with hate mail, I'm no Linux hater, far from it. Currently I'm using a Mac but my Mac fanboy-ism has really worn off since my first iMac and with the price of PC hardware so good, my next purchase will be a beige box. My next OS will be linux.. not sure what flavour yet.. and I'm going to see if I can live the dream. Can I do all the things that I currently do on my Mac? Will the temptation of slick PC gaming be too strong? My new hardware is probably going to be a few months away yet but I'll be sure to update you when it happens and we'll see if I can live the Linux dream.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-9177739823018513906?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/9177739823018513906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=9177739823018513906' title='45 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/9177739823018513906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/9177739823018513906'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/02/rant-is-linux-dream-myth.html' title='RANT: Is the Linux dream a myth?'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>45</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-5116892012754889365</id><published>2010-01-24T15:42:00.001+11:00</published><updated>2010-01-24T15:44:33.478+11:00</updated><title type='text'>Relationships, testing and non project problems</title><content type='html'>&lt;h4&gt;Relationships&lt;/h4&gt;So far this week I've looked into issues with relationships between races and swimmers. In order to represent this correctly I've created a raceRecord which belongs to race and also to a swimmer. I struggled with how to do this but I found the answer in Grails In Action (page 87 in case you're curious). Simply:&lt;br /&gt;&lt;br /&gt;static belongsTo = [Race, Swimmer]&lt;br /&gt;&lt;br /&gt;When the controllers and views are generated all seems to be as it needs to be. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Testing&lt;/h4&gt;Ok so I want to believe in the whole Test Driven Development (TDD) ideal but Grails just seems to be so easy to whip stuff up and tests are just not sexy to write. However I've promised myself that I'm going to do things right. I spent some time writing a couple of basic tests for the constraints on the domain classes. It was here that I added a grails plug in (the code coverage plugin). This allows me to run test-app -coverage to see stats on the amount of test coverage I have which I find pretty motivating. Now time for a little rant...&lt;br /&gt;&lt;br /&gt;I know that test coverage in and of itself is not a concrete guarantee of code perfection but its got to be better than not testing at all. Yes the quality of the tests is fundamentally important but its not enough to say that just because tests can be poorly written so why even bother having them. Surely this goes to your own integrity to make sure your code (and your tests) does what its supposed to do. If it sounds like I'm excited, let's just say that this has been a bone of contention in my day job recently. Anyway the swim project will not progress any further until all domain classes have tests for constraints to start with. I've updated to the new &lt;a href="http://github.com/alkemist/Groovy-Grails.tmbundle"&gt;Grails Textmate bundle&lt;/a&gt; too so this should make my test writing quicker. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;OS and other disasters&lt;/h4&gt;I'd previously partitioned my MacBook hard drive to allow me to install Windows 7. After a couple of days I ditched it for Ubuntu and had been happy with that but with no time for OS experimentation decided to reclaim the partition for OS X. However I couldn't simply re attach the rogue partition and had to wipe and reinstall everything. I do have an external hard drive but its partition as FAT32 and therefore cannot be used by OS X's Time Machine. Therefore I had to manually copy my files over and then copy them back. This was a significant time cost and I think with such cheap hard drives I think I'll get another for Time Machine to avoid this drama next time. The whole process was made easy with &lt;a href="http://www.macports.org/"&gt;MacPorts&lt;/a&gt; though.&lt;br /&gt;&lt;br /&gt;In better news, I've started following this &lt;a href="http://opensourcerobot.blogspot.com"&gt;great blog&lt;/a&gt; from a mate of mine about his quest to build a python driven robot. Its well worth the read.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-5116892012754889365?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/5116892012754889365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=5116892012754889365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5116892012754889365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5116892012754889365'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/01/relationships-testing-and-non-project.html' title='Relationships, testing and non project problems'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-2765134596751739912</id><published>2010-01-17T18:03:00.000+11:00</published><updated>2010-01-17T18:03:17.452+11:00</updated><title type='text'>SwimClub: Steps 1 and 2</title><content type='html'>The swim project is to create a web app to host the swim club results. My weapons of choice are:&lt;br /&gt;Framework - Grails (1.2)&lt;br /&gt;Versioning - Git&lt;br /&gt;Server - Tomcat&lt;br /&gt;IDE - Netbeans although to date I've only needed Textmate&lt;br /&gt;&lt;br /&gt;My first goal was to create a skeleton and then find something to host the site so that my mate (client) can check it out and provide feedback as we go. I've got an idea of where I'm going with the app but its really going to be quite fluid as I receive feedback. As mentioned in an earlier post we're trying to flesh out functionality here and will worry about the look and feel later.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Basic Structure&lt;/h4&gt;In order to think the structure through I've decided to create a bunch of basic domain classes. So far I've got a &lt;b&gt;Meet&lt;/b&gt; which has many &lt;b&gt;Race&lt;/b&gt;s. These in turn have many &lt;b&gt;RaceRecord&lt;/b&gt;s. A &lt;b&gt;RaceRecord&lt;/b&gt; has a &lt;b&gt;Swimmer&lt;/b&gt; and a time. Eventually I'll refactor the Swimmer class so that it inherits from a User class as there will be other types of users not just the actual swimmers. Using scaffolding I've got basic CRUD operations for each of these domain classes. So far so good..&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Hosting&lt;/h4&gt;Although this is just under development I still need to be able to host the app so that I can receive feedback as we go. I've decided to just host it locally and use DYNDNS to manage the dynamic IP. I followed the excellent instructions &lt;a href="http://www.malisphoto.com/tips/tomcatonosx.html"&gt;here&lt;/a&gt; to install Tomcat. No real issues so far. My only concern is stress on my old PowerPC iMac as its used by the family in addition to the hosting. It has only 1.5 GB Ram and I've created a completely new user for the test server to keep it all separate. Previously I've used Glassfish but that seems a little like overkill at this point, maybe later when I need something that's production worthy.&lt;br /&gt;&lt;br /&gt;With all this done things are progressing nicely. Now I'm just waiting on some answers to questions for some fundamentals before progressing. BTW using Google Wave for this as it project work seems to be the only thing its good for. If you're keen let me know and I'll add you to the wave.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-2765134596751739912?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/2765134596751739912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=2765134596751739912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2765134596751739912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2765134596751739912'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/01/swimclub-steps-1-and-2.html' title='SwimClub: Steps 1 and 2'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-3584858092465569156</id><published>2010-01-13T15:46:00.002+11:00</published><updated>2010-01-13T16:49:19.284+11:00</updated><title type='text'>Rant: The 4 Programmers You Meet In Heaven</title><content type='html'>Recently I finished reading Mitch Albom's &lt;a href="http://www.amazon.com/Five-People-You-Meet-Heaven/dp/0786868716/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1263358175&amp;sr=1-1"&gt;The Five People You Meet In Heaven&lt;/a&gt;, a wonderful thought provoking book. It got me thinking about the people that have influenced my own life and more specifically those that have influenced my programming career. Now rather than embarrass these people by naming names I decided to rant about the types of people you meet in your programming journey. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The Kung Fu Zealots&lt;/h4&gt;&lt;br /&gt;These people I first encountered at Uni but I've meet a few since. They're passionate about their craft to the point that their ideas and way is better than anyone else's. It reminds me of the old time &lt;a href="http://en.wikipedia.org/wiki/Fist_of_Fury"&gt;kung fu movies&lt;/a&gt; where rival schools battle it out because their way is the only true way. Their programming skills are an essential part of their identity so a criticism of their language/framework/way is a slur on them. &lt;br /&gt;The reason these people make it to programming heaven is that they are so enthusiastic about their language and so can learn heaps from them. If only they could open their minds to other ideas...&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The Soldiers&lt;/h4&gt;&lt;br /&gt;I am lucky enough to work with a couple of these guys. They're the ones who don't make a fuss, don't see what the big deal is, they just get stuff done. Programming might just be their job and perhaps they really enjoy it but they've got more going on in their life. Unlikely to ever been seen in a meeting, they're just about getting the result. &lt;br /&gt;The reason they'll make it to programming heaven is their no muss no fuss attitude. Its not about ego its just about results. Much can be learned from the soldiers.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The Rock Stars&lt;/h4&gt;&lt;br /&gt;Few people fit into this category but fortunately I've met one. Brimming with energy for the programming craft regardless of style, their enthusiasm is infectious. Sure they may have a specific speciality but they're open to new ideas and new thinking. They're keen to hear about what you're into, how you do stuff and don't judge, only encourage. &lt;br /&gt;Pretty obvious why these people make it to programming nirvana. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The non programming programmers&lt;/h4&gt;&lt;br /&gt;Ok I know it sounds weird but these are the people that just inspire you to learn more. Practical, hands on, these people could be rock stars if they'd gone down the programming track. They could be from any industry but its not their occupation that's important but they're attitude to learning. They just can't get enough knowledge. &lt;br /&gt;These people make it due to the fact that their eagerness to think something through and understand the how and why of anything also inspires. &lt;br /&gt;&lt;br /&gt;So that's my take so far. I hate to violate the &lt;a href="http://en.wikipedia.org/wiki/DRY"&gt;DRY principle&lt;/a&gt; but all of these types of people have been inspirational to me. No doubt others have had different experiences and I know people shouldn't be put in boxes. Hopefully you've got sources of inspiration in your life too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-3584858092465569156?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/3584858092465569156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=3584858092465569156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/3584858092465569156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/3584858092465569156'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/01/rant-4-programmers-you-meet-in-heaven.html' title='Rant: The 4 Programmers You Meet In Heaven'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-6732375256595008007</id><published>2010-01-05T20:28:00.002+11:00</published><updated>2010-01-17T17:58:00.789+11:00</updated><title type='text'>New year .. new project</title><content type='html'>So its the New Year, a time when I usually make a resolution to lose weight and then after a couple of weeks its back to business as usual. This year I thought I'd like to bypass the diet resolve and make myself more accountable by blogging more. There probably aren't that many readers to this blog but the act of documenting the week to week progress of a project helps to keep me motivated. &lt;br /&gt;&lt;br /&gt;Now what will I be blogging about? Well I've got a bit of a personal policy that I won't blog about my work at all however I'll keep all posts technical or IT related. I'm going to detail the whole start to (hopefully) finish of my next project - a record keeping system for a swim club. In addition to this I'll throw in the occasional rant just to keep it interesting. &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Problem&lt;/h3&gt;&lt;br /&gt;My mate is a swimming coach and he needs to be able to record times from meets and competitions. Sure he could use a spreadsheet but ideally he wants to link the data to a site that swimmers can access and track their own progress. Cost is an issue too so the hosting solution needs to be cheap (Google App Engine did you say?) I've looked a this problem before and time became an issue. Following the squash ladder project I think I've learned some more tricks so hopefully my productivity will be much improved. &lt;br /&gt;&lt;br /&gt;More to follow soon...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-6732375256595008007?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/6732375256595008007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=6732375256595008007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6732375256595008007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6732375256595008007'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2010/01/new-year-new-project.html' title='New year .. new project'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-2495965908551303544</id><published>2009-11-01T14:49:00.002+11:00</published><updated>2009-11-01T15:06:16.945+11:00</updated><title type='text'>Enter the Koala</title><content type='html'>I've been wanting to get away from Apple for a while. Now don't get me wrong I think their stuff is super cool but the idea of complete freedom really appeals. I've a household that has 2 iMacs, an old powerbook and a macbook. So the quest for freedom means Linux and I've chosen Ubuntu for no reason in particular. My personal machine is used for development stuff (Netbeans, Eclipse, Textmate) and the usual web surfing stuff. I also keep my music on this machine and sync it to my iPhone.&lt;br /&gt;Now I tried to switch away to Interpid Ibex but found a number of problems:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;My Microshaft Bluetooth Mouse wouldn't pair&lt;/li&gt;&lt;li&gt;Sound quality was dodgy&lt;/li&gt;&lt;li&gt;Couldn't drive my external 24 inch monitor (deal breaker)&lt;/li&gt;&lt;/ol&gt;After getting annoyed with some Snow Leopard problems (trouble loading images from sites in 10.6 but these work fine in 10.5), I decided to try again with the latest Ubuntu, Karmic Koala.&lt;br /&gt;&lt;br /&gt;My initial findings were really positive, the install process was easy as always, and relatively quick even compared to Snow Leopard. The bluetooth mouse paired without incident and I was really impressed with the look and feel. The number of free software packages is outstanding and really I haven't been able to find anything that I'm missing.&lt;br /&gt;&lt;br /&gt;However, my poor old Macbook (mid 2007 model) can't push the pixels required for the external monitor even when turning off the native display. This is a blocker for me as I need the extra screen real estate with my failing eyesight. Another small issue is that while sound plays out of the inbuilt speakers, it wouldn't play from a headphones or line out to external speakers. I'm sure with a little digging I could find a solution for that but without the graphical power to use my extra monitor I'm going to have to go back to Apple.&lt;br /&gt;&lt;br /&gt;This being said I feel that Karmic Koala is totally awesome and I'd happily move to it if my hardware would do the job. Given PC prices are cheap in Oz at the moment, I might consider getting a box and using that as my main machine. (PS I blogged this from Karmic and felt totally free while doing it).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-2495965908551303544?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/2495965908551303544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=2495965908551303544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2495965908551303544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2495965908551303544'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/11/enter-koala.html' title='Enter the Koala'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-4960243292754352516</id><published>2009-10-11T19:49:00.002+11:00</published><updated>2009-10-11T20:03:00.130+11:00</updated><title type='text'>Cool Podcasts</title><content type='html'>I haven't fallen off the blogging planet just been busy enjoying life. Family's great, friends' great, work's great (although challenging). So I've been looking for some more cool podcasts to listen to while commuting to work or performing repetitious tasks. I find I can't listen to stuff while concentrating but if something is a little monotonous I enjoy a good podcast (when not listening to classic hair metal!). Here are some of my favourite podcasts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the Grails Podcast - my favourite all time podcast. Glen and Sven bring cool Groovy and Grails news whilst at the same time remaining positive and funny. I would listen to this even if I wasn't into Grails.&lt;/li&gt;&lt;li&gt;Software Engineering Podcast - this is a somewhat more sombre podcast but very educational. This is not so much a news podcast as teaching podcast.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hak5 - This is a vidcast and covers a bunch of different stuff. Its got a little bit of product promotion and sponsorhip recognition but nothing that seems to compromise its integrity. Also really entertaining with a great vibe between the presenters.&lt;/li&gt;&lt;li&gt;Elegant Code Cast - I wasn't sure about this one. Its not java orientated and I have zeroo .net and c# experience but interestingly they cover some good topics. I've only listened to a couple of these but I'm going to stay on it for a bit longer.&lt;/li&gt;&lt;li&gt;Network Security Podcast - Stock standard security podcast (and I've listened to a few) and pretty informative. I like this more than Security Now (too much advertising in that one).&lt;/li&gt;&lt;/ul&gt;I look for casts that are interesting, short (ideally 30-40 mins) and entertaining. Got any suggestions? Let me know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-4960243292754352516?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/4960243292754352516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=4960243292754352516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4960243292754352516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4960243292754352516'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/10/cool-podcasts.html' title='Cool Podcasts'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-7568545706711790300</id><published>2009-07-11T19:48:00.003+10:00</published><updated>2009-07-11T20:06:39.234+10:00</updated><title type='text'>When does it end?</title><content type='html'>So its been awhile since I last blogged. Things have been going swimmingly with the squashLadder with basic functionality built and I find myself questioning when I should call it finished. I have a number of other ideas for interesting projects so when do I walk away from this one? I find these phases of a project difficult to get past. The app is pretty much at a 1.0 stage and is usable, indeed is being used to record our work squash games so is it time to move on?&lt;br /&gt;&lt;br /&gt;Normally I could seek counsel and direction from the &lt;a href="http://blogs.bytecode.com.au/glen"&gt;great Grails sage&lt;/a&gt; but alas he's on sabbatical. Therefore prior to sitting at the keyboard tonight, I tried to channel the Kenobi like advice that I thought he may have provided and this is what I came up with.&lt;br /&gt;&lt;br /&gt;The original purpose of the app was just to learn not necessarily to build a plain old app. Rather than just being satisfied with the mediocre app, I should push the boundaries and do the extra stuff that make the learning worthwhile. Here's a list of stuff that would be cool:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;add line chart to front page showing win percentage trends for each player&lt;/li&gt;&lt;li&gt;add some sort of cool fade in transition on the stats page to cycle between a players matches &amp;amp; wins / trending vs players and form-o-meter&lt;/li&gt;&lt;li&gt;remember me functionality&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ability to add groups of games (via checkboxes) rather than having to individually enter each game.&lt;/li&gt;&lt;/ul&gt;I guess building another app would reinforce some of the things that I've learned so far but the ladder has been such a great vehicle for learning that I should continue with it.&lt;br /&gt;&lt;br /&gt;If you've got suggestions for features that you think would be cool, please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-7568545706711790300?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/7568545706711790300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=7568545706711790300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/7568545706711790300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/7568545706711790300'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/07/when-does-it-end.html' title='When does it end?'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-3862556710271109467</id><published>2009-06-07T17:45:00.002+10:00</published><updated>2009-06-07T17:58:51.882+10:00</updated><title type='text'>JSecurity</title><content type='html'>In a moment of madness I suggested to some work colleagues that they could check out the 0.1 version of the squash ladder app. Naturally it took them no time at all to crash my app server (with a divide by zero error). I'd been meaning to add some security to it and this forced my hand. There seem to be a few options to securing your grails app:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;authentication plugin&lt;/li&gt;&lt;br /&gt;&lt;li&gt;jsecurity&lt;/li&gt;&lt;br /&gt;&lt;li&gt;spring security&lt;/li&gt;&lt;br /&gt;&lt;li&gt;and simply building your own&lt;/li&gt;&lt;br /&gt;I pondered this on Twitter and &lt;a href="http://fbflex.wordpress.com/"&gt;Tomas Lin&lt;/a&gt; responded giving me an order of simplest to most complex (this is the order of the list above, removing the final option of course). I decided to go with JSecurity although it was possibly a bit of overkill for my pretty basic app.&lt;br /&gt;&lt;br /&gt;Installing the plugin was totally simple, &lt;code&gt;grails install-plugin jsecurity&lt;/code&gt;. I decided against the quick-start option as I was following the example in &lt;a href="http://www.apress.com/book/view/1590597583"&gt;TDGTG&lt;/a&gt;. I also used &lt;a href="http://blogs.bytecode.com.au/glen/2009/04/09/retrofitting-jsecurity-to-your-existing-tables.html"&gt;this Glen Smith's article&lt;/a&gt; as I'd incorporated basic login into my existing classes. The whole thing was completed in a couple of days (ok so I'm pretty slow when I do stuff. Most moderately experienced people would knock this over in hours).&lt;br /&gt;&lt;br /&gt;The big lesson out of this was testing. As much as believe the whole test driven development philosophy I haven't followed it this time. I really need to spend more time testing but Grails is just so easy to produce stuff that I get carried away. Anyway I've unleashed the colleagues so we'll see what they come up with.&lt;br /&gt;&lt;br /&gt;My next step is to add some more Google charts action to show off the stats.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-3862556710271109467?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/3862556710271109467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=3862556710271109467' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/3862556710271109467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/3862556710271109467'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/06/jsecurity.html' title='JSecurity'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-669056068715393372</id><published>2009-05-31T19:49:00.003+10:00</published><updated>2009-05-31T20:09:21.846+10:00</updated><title type='text'>Enter the Glassfish</title><content type='html'>Okay I didn't want to admit it but the whole Grails/JDO thing turned out to be a pain. The Google hosting plan sounded awesome but what I found was that trying to recode my all ready underdone project was an exercise in futility. Therefore I had to think about other hosting solutions. I thought briefly about Grails Podcast sponsor &lt;a href="http://www.mor.ph/"&gt;Morph Labs&lt;/a&gt; only to find out that free developer accounts had just been discontinued. Really the only feasible solution was to host it myself.&lt;br /&gt;&lt;br /&gt;I had previously set up dynamic dns server as my ISP doesn't have static ip's (unless you pay more of course), so only had to think about an App Server. Based on a &lt;a href="http://blogs.bytecode.com.au/glen/2008/07/24/grails--jetty--glassfish-and-jndi-data-sources.html"&gt;friend's experiences&lt;/a&gt; and recommendation I decided to give Glassfish a try. Given the early adopter issues I had with Google App Engine I chose V2.1 over the V3 prelude (what's a prelude anyway?).&lt;br /&gt;&lt;br /&gt;Set up was relatively easy as there are plenty of guides on the web. After &lt;code&gt;grails war&lt;/code&gt; I was away. There were a couple of things that needed addressing though:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;url contained port number&lt;/li&gt;&lt;li&gt;only using hsql file based db&lt;/li&gt;&lt;/ul&gt;The first issue was addressed with the virtual server in my router by changing all incoming port 80 requests to 8080 for the app server. The second was a little trickier. If I changed the db to mysql or postgresql or whatever, I didn't want to store the db username and password in the datasources config file of my project because being open sources any one could access it. Using advice from the &lt;a href="http://blogs.bytecode.com.au/glen/"&gt;great grails sage&lt;/a&gt; I've used a jndi datasource and all is good. Setting this up was also fairly straight forward and all is working well.&lt;br /&gt;&lt;br /&gt;Whilst I would like to go back to GAE at some stage, I have definitely learned quite a bit from having my own app server and think that until the project is completely finished I'll keep with Glassfish. After that maybe I look at porting it over again. Next big thing for this app will be security. At this point I'm thinking of using the JSecurity plugin so will let you know how it all goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-669056068715393372?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/669056068715393372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=669056068715393372' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/669056068715393372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/669056068715393372'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/05/enter-glassfish.html' title='Enter the Glassfish'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-6422432813231566256</id><published>2009-05-20T23:22:00.002+10:00</published><updated>2009-05-20T23:40:13.402+10:00</updated><title type='text'>My first google app-engine grails app</title><content type='html'>Free hosting appeals and you can't beat Google's hardware firepower so Google's App Engine sounds like a great hosting solution. The thing is, now that app-engine supports Java would it do the job for my grails app?&lt;br /&gt;This question was basically answered with the release of grails 1.1.1 which includes support for an app-engine plugin. I decided to give it a try with the squash ladder app as it currently stands.&lt;br /&gt;The first issue I found was that my current project name had already been taken or was not suitable. I probably could have just changed the config file in my current project but I decided to create a new app and if all turned out to be easy, I'd be able to paste in my current code. However all was not easy. I tried following &lt;a href="http://blog.springsource.com/2009/05/14/grails-111-released-with-google-appengine-support/#comment-166410"&gt;Graeme Rocher's  screencast&lt;/a&gt;  but got errors when trying to generate controllers and views.&lt;br /&gt;&lt;br /&gt;This bug is described in the comments on the screencast page and in a nutshell, you need to reinstall the hibernate plugin, generate-all, then uninstall the hibernate plug in again. Its a only a minor hiccup and once you're done it pretty much works as described.&lt;br /&gt;&lt;br /&gt;So now I've got a shell of an app with CRUD, hosted and using JDO instead of hibernate. Life is looking pretty sweet. Graeme's comments indicate that GORM is not supported so far, so it will be interesting to see how the rest of my hibernate-luvin code goes. The app is &lt;a href="http://squash-ladder.appspot.com/"&gt;here&lt;/a&gt; and I'll post the progress of translating the current code to Google also. Exciting times ahead!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-6422432813231566256?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/6422432813231566256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=6422432813231566256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6422432813231566256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6422432813231566256'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/05/my-first-google-app-engine-grails-app.html' title='My first google app-engine grails app'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-3820587154456459917</id><published>2009-05-05T21:22:00.003+10:00</published><updated>2009-05-05T21:31:42.352+10:00</updated><title type='text'>Solution for transient problem</title><content type='html'>After much head scratching and reference searching I've come up with a solution to the previously mentioned transient problem. Basically I've changed the list action in the Player controller to:&lt;br /&gt;- check to see if the user is trying to sort by percentage,&lt;br /&gt;- if so a closure sorts based on the getPercentage() method.&lt;br /&gt;- then if the order was supposed to be descending, we call reverse on the list.&lt;br /&gt;&lt;br /&gt;Here's the list action code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;def list = { params.max = Math.min( params.max ? params.max.toInteger() : 10, 100)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   if(params.sort=="percentage"){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   def players = Player.list().sort {player -&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      player.getPercentage()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     if(params.order=="desc"){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      println params.order&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      players = players.reverse()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     return [ playerInstanceList: players, playerInstanceTotal: Player.count() ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    else{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     return [ playerInstanceList: Player.list(params), playerInstanceTotal: Player.count() ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Quick and dirty tests look good so far. I'm sure there's probably a more elegant solution out there, if so let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-3820587154456459917?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/3820587154456459917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=3820587154456459917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/3820587154456459917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/3820587154456459917'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/05/solution-for-transient-problem.html' title='Solution for transient problem'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-2670303807508220250</id><published>2009-05-03T15:41:00.003+10:00</published><updated>2009-05-03T21:02:57.090+10:00</updated><title type='text'>Tricky transient problem</title><content type='html'>Following on with squash ladder project, I've come across a particularly patience ending problem. I need to display a view that contains a sortable column based on a transient property. My ladder needs to be sorted by winning percentage and this value is transient (calculated and not persisted). A google search shows me a few different posts but nothing that I could get working. Ideally I want the user to be able to customise their view by sorting the columns so in the interests of getting it working I've persisted the winning percentage value. &lt;br /&gt;&lt;br /&gt;For this project the additional database isn't going to be particularly taxed but in the interest of learning there must be a grails solution to this. I'll post any solution if I find one, but if you've got a solution let me know. I'm off to cruise Nabble ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-2670303807508220250?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/2670303807508220250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=2670303807508220250' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2670303807508220250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2670303807508220250'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/05/tricky-transient-problem.html' title='Tricky transient problem'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-5334616523561921415</id><published>2009-04-29T21:21:00.002+10:00</published><updated>2009-04-29T21:34:21.532+10:00</updated><title type='text'>Quick Project</title><content type='html'>During conversation at work today we joked about the need for web app to track lunchtime squash results. I've decided to give this a go (using Google App Engine). I spent 5 minutes thinking about the relationships required and the basic app was created in less time than it takes to start a portal server.&lt;br /&gt;&lt;br /&gt;So far I've created 2 domain classes (Player and Game). Basically we want to record the date a game was played, who won and who lost. This was pretty much done with just scaffolding. Ideally we'd like to keep a ladder perhaps sorted by winning percentage. With only 10 minutes of work the basics are there. I'll need to manipulate the views so that dates are more concise and links are by name rather than id. Also I'll need to create a couple of more views (such as the ladder) and a validator to ensure that the winner can't also be the loser! &lt;br /&gt;&lt;br /&gt;Not sure how well Google App Engine copes with Grails yet but I believe there are a couple of tutorials out there. This is a pretty simple app so not anticipating any big issues. I'll post progress...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-5334616523561921415?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/5334616523561921415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=5334616523561921415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5334616523561921415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/5334616523561921415'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/04/quick-project.html' title='Quick Project'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-6692859221702397855</id><published>2009-04-27T15:18:00.002+10:00</published><updated>2009-04-27T15:29:52.298+10:00</updated><title type='text'>The next big thing...</title><content type='html'>Ok so I'm still working on the grails comp but I've begun to get excited about the next project.. a football tipping site. I know there are heaps of them around the web all ready but I want to make my own with the features that my friends and family want. I think it will be an excellent learning vehicle. And that brings me to my dilemma... what do I use to build it?&lt;br /&gt;&lt;br /&gt;Grails is very exciting and produces results fast but I'm a java developer by day and really could use the extra experience developing with Spring and Hibernate. I feel like I'm missing out because at work we use Java 1.4 and therefore I haven't used annotations, enums or any of the new post 1.4 goodness. This might be a good opportunity.&lt;br /&gt;&lt;br /&gt;On the other hand, should I give Ruby a go? I've messed with Python before and enjoyed it but haven't touched Django or TurboGears. Dynamic or static language? Which offers the best learning experience? My goal here is to learn and develop my overall programming skills. I have no time limit although before next footy season starts would be good (March 2010).&lt;br /&gt;Do I continue with Grails to cement what I've learned all ready? What would you do? Continue with Grails, go back to Java or try something new? I'm interested in any and all opinions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-6692859221702397855?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/6692859221702397855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=6692859221702397855' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6692859221702397855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6692859221702397855'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/04/next-big-thing.html' title='The next big thing...'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-6243371372139301582</id><published>2009-04-21T21:35:00.003+10:00</published><updated>2009-04-21T21:45:52.888+10:00</updated><title type='text'>On to CSS</title><content type='html'>After going all "scorched earth" on the grails comp and basically beginning again from scratch, I've managed to get through the many to many problem. The solution turned out to be much simpler than I'd anticipated (at least with Grails 1.1 anyway). I became confused after reading posts and sites some of which were pre grails 1.1. Anyway a sneak peak at the upcoming Grails in Action (can't wait for the full version!) and all is now good.&lt;br /&gt;&lt;br /&gt;With a far degree of smugness I've decided to look at the CSS for the public facing pages. I'll admit to not having any design flair at all so its quite challenging. I've been using Adobe's Kuler to try and get an agreeable colour scheme and initial results are promising. Kuler allows you to upload an image and it picks out complimentary colours from that image. If you're design challenged its really useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-6243371372139301582?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/6243371372139301582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=6243371372139301582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6243371372139301582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6243371372139301582'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/04/on-to-css.html' title='On to CSS'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-793808169835635170</id><published>2009-04-08T16:36:00.004+10:00</published><updated>2009-04-08T17:02:39.714+10:00</updated><title type='text'>Grails Unit and Integration Tests</title><content type='html'>I was unexpectedly free today and decided to add some tests to the competition project. Initially I thought some nice simple domain class tests would be good. After whipping some up, I ran grails test-app and produced my test report. &lt;br /&gt;However it seems that integration tests take precedence over unit tests as I get clear results even though my unit tests fail:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pIspW_pAKWQ/SdxGr7LbqDI/AAAAAAAAABQ/6Te6P-IQNwY/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 96px;" src="http://1.bp.blogspot.com/_pIspW_pAKWQ/SdxGr7LbqDI/AAAAAAAAABQ/6Te6P-IQNwY/s320/Picture+1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322206580079044658" /&gt;&lt;/a&gt;&lt;br /&gt;This would seem to be pretty poor form. I would have hoped to see failures for all tests unit and integration. If anyone has struck this problem before let me know...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt;After reading the doc's at grails.org I've found that running the tests using grails test-app -unit solves my problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-793808169835635170?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/793808169835635170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=793808169835635170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/793808169835635170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/793808169835635170'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/04/grails-unit-and-integration-tests.html' title='Grails Unit and Integration Tests'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pIspW_pAKWQ/SdxGr7LbqDI/AAAAAAAAABQ/6Te6P-IQNwY/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-2868587737144068373</id><published>2009-04-01T20:22:00.002+11:00</published><updated>2009-04-01T20:43:47.926+11:00</updated><title type='text'>Griffon</title><content type='html'>I know I haven't posted for a while but I have been plugging away at the Comp code. Mistakes have been made and new solutions uncovered. Its a great learning experience but time is always limited. I have guests about to stay soon so tonight I didn't want to get too involved in something that I can't play with again for a few days. So...&lt;br /&gt;&lt;br /&gt;I found that MEAP has published (for free) the first chapter of a new book "Griffon in Action". Belonging to the same family as "Groovy in Action" and "Grails in Action" I'm thinking its also going to be of a high standard. The sample chapter unfortunately only goes into why use Griffon rather than the fulfilling 'dive in' approach of "Grails in Action". I understand the second chapter does this but sadly that's not a free one.&lt;br /&gt;&lt;br /&gt;The big upside is the subject. Griffon is yet another framework but is for desktops apps instead of web apps. Totally awesome concept and something that has interested me since Uni. I've played with a few desktop applications before and honestly in Java it seems to be such a chore. Griffon cuts down on the code needed and brings convention to the party. It (Griffon) is still in its infancy (only version 0.1) but usable. Its certainly on the list of things to have a crack at...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-2868587737144068373?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/2868587737144068373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=2868587737144068373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2868587737144068373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2868587737144068373'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/04/griffon.html' title='Griffon'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-1719653651140369165</id><published>2009-02-22T09:07:00.003+11:00</published><updated>2009-02-22T09:10:49.432+11:00</updated><title type='text'>Relationships update</title><content type='html'>After talking to a colleague apparently Grails version 1.1 does cater for many to many relationships (I've been using 1.04 for my project so far). Version 1.1 is now in Release Candidate 1 so I'll grab this and have a look. &lt;br /&gt;In the meantime I think I'll continue with the new branch and work with Entrant objects. Old school I know but as they say there's no school like the old school..&lt;br /&gt;&lt;br /&gt;Floreat Pica&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-1719653651140369165?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/1719653651140369165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=1719653651140369165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/1719653651140369165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/1719653651140369165'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/02/relationships-update.html' title='Relationships update'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-3915100290849401389</id><published>2009-02-19T21:32:00.003+11:00</published><updated>2009-02-19T21:41:46.729+11:00</updated><title type='text'>Many to Many Relationships</title><content type='html'>Over the past few days I've been scratching my head over the competition project. Initially I had decided that a user would just enter their name and email and select a competition from a drop down box... easy right? Then it was suggested to me that there may be multiple open competitions at any one time. In this case ideally the user could select the competitions they want to enter using checkboxes. Still I thought this would be simple but it bought me face to face with many to many relationships.&lt;br /&gt;&lt;br /&gt;After much grief and experimentation I was about to give in and go back to plan A when I found &lt;a href="http://www.ibm.com/developerworks/web/library/j-grails04158/index.html"&gt;this article&lt;/a&gt; by Scott Davis. Here he explains how he had been given advice that there is no such thing as a many to many relationship instead there is usually another class that is missed when considering how the objects interact. With this sage like advice I've decided to reassess the competition design.&lt;br /&gt;&lt;br /&gt;Now I will use another class (the Entrant) to hold name, email and a set of Entry objects. These entry objects will each map to a competition thereby avoiding the need for a many to many relationship between entries and competitions. Now an entrant can have multiple entries ( 1 to m) and each competition has multiple entries (1 to m). &lt;br /&gt;&lt;br /&gt;Stay tuned for news on how this progesses...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-3915100290849401389?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/3915100290849401389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=3915100290849401389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/3915100290849401389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/3915100290849401389'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/02/many-to-many-relationships.html' title='Many to Many Relationships'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-8953410631601143176</id><published>2009-02-03T21:00:00.002+11:00</published><updated>2009-02-03T21:07:48.853+11:00</updated><title type='text'>Comp update</title><content type='html'>The biggest problem I have been having with the competition code is how to handle prizes and their relationship with competitions. Do the admin users create the prizes as they create the competition? Do they create prizes in a completely separate prize and then add it to the competition? So much choice!&lt;br /&gt;&lt;br /&gt;I guess the lesson learned here was the value of a pencil and piece of paper. I drew out roughly what I was after and whilst the answer didn't come to me straight away it was much easier to visualise. So I've decided to let the admin user create the comp and then on completion of that process add the prizes in the next step. I think this will work so now its time to think about the views. At last progress is being made...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-8953410631601143176?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/8953410631601143176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=8953410631601143176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/8953410631601143176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/8953410631601143176'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/02/comp-update.html' title='Comp update'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-7715278070560850480</id><published>2009-01-16T07:59:00.002+11:00</published><updated>2009-01-16T08:13:15.817+11:00</updated><title type='text'>Back to the Grails Comp</title><content type='html'>I've recently been on holidays and contrary to what I had planned I have not touched any coding in the last week or so. So today it was time to get back on the coding horse. I'm planning to spend around an hour each day working on the grails comp project (without checking email, twitter or anything else). &lt;br /&gt;&lt;br /&gt;So today was the day to take stock and see where the project is at. Firstly I had previously had a working version0.1 and decided to merge that back to Master and then to work out of master. One of the problems I have is that I seem to have quite a few branches that I've experimented with so will need to check each of them and take the good bits. &lt;br /&gt;&lt;br /&gt;I spent some time ginning around with git and Netbeans this morning and had hoped to avoid this time wastage but am currently thinking that it will be good to use Netbeans power to assist with debugging down the track. I need to spend more time organising my versioning before diving into the next big issue. &lt;br /&gt;&lt;br /&gt;Following this, the next thing will be to work out how to have custom prize objects instead of using strings to describe a prize. Initially this seemed quite simple however its the creation of a new competition that requires a new prize at the same time that makes things tricky. This would seem to be a fairly common problem with any web app ie creating a new object that contains a new object of another type so it will be great to get this problem solved. If you're interested download the code and/or follow along &lt;a href="http://github.com/deanmac5"&gt;here at Github&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-7715278070560850480?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/7715278070560850480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=7715278070560850480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/7715278070560850480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/7715278070560850480'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2009/01/back-to-grails-comp.html' title='Back to the Grails Comp'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-8841103254883689106</id><published>2008-12-31T18:10:00.003+11:00</published><updated>2008-12-31T18:25:20.913+11:00</updated><title type='text'>Comp 0.1</title><content type='html'>I've finally got enough of the comp project completed to make a dodgy initial release. I feel I've made enormous progress over the holiday period and the following functionality is in place:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;users can add an entry to a competition&lt;/li&gt;&lt;li&gt;admin can create a competition&lt;/li&gt;&lt;li&gt;admin can generate random winners&lt;/li&gt;&lt;li&gt;winners are generated for each prize that the competition has&lt;/li&gt;&lt;/ul&gt;There are still many things to do but this version contains all the basic functions. So far the learning experience has been huge. I've read heaps of articles and a couple of grails books but it wasn't until I actually applied the knowledge that I really started to learn.&lt;br /&gt;&lt;br /&gt;In addition to grails/groovy, the other big win for me out of the project so far has been Git. I can't speak highly enough of it and the cool way branches can be created for very little storage cost. I have been creating new branches willy nilly to experiment with different strategies. If things don't work out, I have been able to easily revert to any other version. The low cost comes because Git creates a hash of each file and then references those hashes instead of duplicating files in each new branch. Brilliant really!&lt;br /&gt;&lt;br /&gt;Also in other news, I've just been using a plain old text editor (well the quite awesome Textmate) instead of Netbeans so far. Don't get me wrong I like Netbeans but Grails is so simple that I don't really need the Netbeans power at this stage. There is only a beta git plug in for Netbeans too, so in reality even if using Netbeans I would still have been 'gitting' from the command line.&lt;br /&gt;&lt;br /&gt;Have a happy and safe New Year everyone, more dev news next year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-8841103254883689106?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/8841103254883689106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=8841103254883689106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/8841103254883689106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/8841103254883689106'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/12/comp-01.html' title='Comp 0.1'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-6742405494264980672</id><published>2008-12-22T20:59:00.002+11:00</published><updated>2008-12-22T21:07:52.297+11:00</updated><title type='text'>Competition Progress</title><content type='html'>After the always pleasing initial progress you make with a Grails project, I thought I'd try branching and setting up my tests. This process was simple using Git however I seem to have made a few mistakes and resorted to my old habits of deleting everything and starting again. This is a n00&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;b's&lt;/span&gt; action for sure. After going over old ground I realised that I hadn't needed to start again from scratch. &lt;div&gt;Git to the rescue... and now I'm back with my previously half completed project. I think now I will be more judicious with branching and less inclined for scorched earth. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As far as the project itself, the domain classes have been created and I basically have a site that will let you create a competition, create an entry, generate a winner. My next step is to CRUD prizes. More to follow... we'll after Christmas anyway... Merry Christmas (especially to you Pablo my only confirmed reader)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-6742405494264980672?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/6742405494264980672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=6742405494264980672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6742405494264980672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6742405494264980672'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/12/competition-progress.html' title='Competition Progress'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-6684668261990835783</id><published>2008-12-13T18:30:00.002+11:00</published><updated>2008-12-13T18:44:50.279+11:00</updated><title type='text'>Git</title><content type='html'>I have been tinkering with a grails app for fun and was just going to run it on my local box. I decided to show it to a mate and had to cart it into work for a show and tell. It was suggested that I upload the code to GitHub, an online code repo. At first I thought this would be yet another time consuming exercise but it was really simple. To get going all I had to do was create an account, download git (there is an easy OS X installer) and that was pretty much it.&lt;br /&gt;I didn't bother reading the full instructions but it was all really intuitive. Safe to say its all now online and very happy. If you got collaborative code check out &lt;a href="http://github.com/"&gt;GitHub&lt;/a&gt;, its awesome. Also if you want a quick and dirty (that's figurative) screencast check Jeff Brown's also excellent &lt;a href="http://www.g2one.com/quickcasts/"&gt;screencast.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally if you want to have a play on my &lt;a href="http://github.com/deanmac5/grailscomp/tree/master"&gt;grails app&lt;/a&gt;, feel free to check it out.&lt;br /&gt;&lt;br /&gt;Btw the grails app is a competition registration app. Basically its to allow people to sign up to an online competition to win stuff. There's no other activity except registering to win. It has been a good exercise and I was inspired to develop this after listening to those crazy dudes at &lt;a href="http://www.grailspodcast.com/blog/list"&gt;Grails Podcast&lt;/a&gt; who are running this type of competition. I choose to develop in Grails over Java as I want to push my development in that area. (I considered Django but I really like the cross compatibility between Grails and Java [no flame wars I know Groovy is Java]. Besides it would seem wrong to develop a Python web app for the Grails Podcast!).&lt;br /&gt;The app is open source so can be played with by anyone and I welcome any thoughts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-6684668261990835783?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/6684668261990835783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=6684668261990835783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6684668261990835783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6684668261990835783'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/12/git.html' title='Git'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-4751921372269231561</id><published>2008-11-27T19:40:00.002+11:00</published><updated>2008-11-27T19:51:29.284+11:00</updated><title type='text'>Perfect code</title><content type='html'>This morning I wrote perfect code. It was elegant, extensible and dependency injected. I was so proud. How happy was I? It was time for a happy dance and a celebratory caramel latte. &lt;br /&gt;&lt;br /&gt;However it didn't do what the client wanted. I can't describe my disappointment when I discovered that my 'perfect' solution was not the answer. Instead a one line code changed was used to get the job done. &lt;br /&gt;&lt;br /&gt;I smiled on the outside but inside there were tears. &lt;br /&gt;&lt;br /&gt;As Bruce Lee said "it's like a finger pointing at the moon, don't focus on the finger or you'll miss all that heavenly glory". A valuable less on indeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-4751921372269231561?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/4751921372269231561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=4751921372269231561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4751921372269231561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4751921372269231561'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/11/perfect-code.html' title='Perfect code'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-2943268039651055066</id><published>2008-11-18T19:46:00.002+11:00</published><updated>2008-11-18T19:53:28.022+11:00</updated><title type='text'>Victory!</title><content type='html'>After the ongoing grief with Eclipse and Subversion I have finally been able to update the goodtimes project. I used a very cool Subversion GUI called &lt;a href="http://www.versionsapp.com/"&gt;Versions&lt;/a&gt; and it worked beautifully. I guess I'm not hardcore as I didn't use command line.&lt;br /&gt;&lt;br /&gt;Anyway the news now is that if anyone is interested you can check out the source build it, play with it, add to it and most importantly leave me feeback.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-2943268039651055066?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/2943268039651055066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=2943268039651055066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2943268039651055066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2943268039651055066'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/11/victory.html' title='Victory!'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-6196007581348748939</id><published>2008-11-17T20:55:00.002+11:00</published><updated>2008-11-17T21:01:56.179+11:00</updated><title type='text'>What a day...</title><content type='html'>I have begun refactoring GoodTimes and so far its working well with MigLayout. The biggest problem has been that subversion seems to be drastically out of sync so I am still yet to get the new code into the repo. I'm sure that I'll get past it soon (even if I have to do something drastic).&lt;br /&gt;&lt;br /&gt;Its side issues like this that gets frustrating initially but ultimately will be satisfying once its fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-6196007581348748939?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/6196007581348748939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=6196007581348748939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6196007581348748939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/6196007581348748939'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/11/what-day.html' title='What a day...'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-274220158029117538</id><published>2008-11-16T14:52:00.003+11:00</published><updated>2008-11-16T15:00:58.919+11:00</updated><title type='text'>Patience...</title><content type='html'>After the course on Wednesday night I attended the local Java Users Group meeting and saw some great presentations on Eclipse Rich Client Platforms and Spring's Rich Web Applications. Both of these shows were great and after each one I found myself saying "wow I've got to try that". &lt;br /&gt;However time is an issue and I really need to set priorities otherwise I'll never finish anything. So with this is in mind I've decided to head back to an open source project I was working on. Its nothing special just a children's times tables testing game that I started some time ago. Its available &lt;a href="http://code.google.com/p/goodtimes/"&gt;here&lt;/a&gt; if you're interested. &lt;br /&gt;Originally I used it to experiment with JFreeChart and NetBean's Matisse GUI Builder however I am now using it to test MigLayout as I really haven't found an easy to use GUI framework for swing. There seems to be too much choice and none of it (until MigLayout) seemed to be simple when coding by hand. &lt;br /&gt;I haven't committed my latest tinkerings yet but will endeavour to during the week sometime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-274220158029117538?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/274220158029117538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=274220158029117538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/274220158029117538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/274220158029117538'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/11/patience.html' title='Patience...'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-4231916786316772059</id><published>2008-11-10T19:15:00.002+11:00</published><updated>2008-11-10T19:22:49.149+11:00</updated><title type='text'>Course</title><content type='html'>Today fate smiled upon me and presented me with a last minute opportunity to attend a Websphere Application Server course. Now its not really part of principle role at work but its amazing how useful this info is going to be to me. All ready (after one day) I am starting to see why we do things certain ways and its cementing my knowledge. &lt;br /&gt;&lt;br /&gt;Prior to this I had primarily looked at extending my learning to actual programming topics rather than environmental issues. Seeing things from other points of via helps me to be less inclined to apportion blame and more likely to find solutions. &lt;br /&gt;&lt;br /&gt;Awesome!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-4231916786316772059?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/4231916786316772059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=4231916786316772059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4231916786316772059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4231916786316772059'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/11/course.html' title='Course'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-740423770938437807</id><published>2008-11-09T12:03:00.003+11:00</published><updated>2008-11-09T12:20:46.641+11:00</updated><title type='text'>IDE's</title><content type='html'>I know this is an age old question - which IDE is best? My experiences so far are these:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt; - I like the language support (Groovy/Grails) and the Matisse GUI editor. However it looks terrible on my Mac. The Swing components seem to take up too much space and take the focus off the code.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ Idea&lt;/a&gt; - Many people rave about this one. Whilst I haven't used it extensively (only for the 30 day evaluation period) I prefer its interface over NetBeans. However the deal breaker with this one is COST. Its not free like NetBeans and I can't justify paying AUD$200 for a tool that does the same thing as a free tool.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; - This workhorse remains my preferred option. Whilst it lacks the groovy/grails integration that NetBeans has, it is quick and unobtrusive. I may be biased as it is also what we use at work and I find it much easier to remember one set of shortcuts. Again as a free offering its hard to look past.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;As an aside I did outlay my hard earned to buy &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt; which is more a text editor than an IDE. While it is very nice and easy to use, I find myself not using it in favour of &lt;a href="http://www.vim.org/download.php#mac"&gt;MacVIM&lt;/a&gt; which gives me the power of vim and doesn't lock me into a particular platform. (I will rant someday soon about operating systems).&lt;br /&gt;It certainly seems to me that there are plenty of very competitive free options for someone working on their code projects. If anyone reads these posts, let me know what you think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-740423770938437807?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/740423770938437807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=740423770938437807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/740423770938437807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/740423770938437807'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/11/ides.html' title='IDE&apos;s'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-8238194581191543074</id><published>2008-11-08T11:56:00.003+11:00</published><updated>2008-11-08T12:04:57.603+11:00</updated><title type='text'>Agile? development</title><content type='html'>Ok so now I'm going to rage about Agile development and I know that this is probably just my inexperience showing but...&lt;br /&gt;&lt;br /&gt;Isn't Agile Development just another phrase for building before planning? If you're working to a deadline don't constantly changing requirements mean that code has to be consistently rewritten? It seems that 'agile' means don't worry about thinking through the design as the coders will build it and then you can tell them what you don't like and get them to change it.&lt;br /&gt;&lt;br /&gt;Surely a case of fire, ready, aim...&lt;br /&gt;&lt;br /&gt;What are your experiences?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-8238194581191543074?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/8238194581191543074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=8238194581191543074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/8238194581191543074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/8238194581191543074'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/11/agile-development.html' title='Agile? development'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-4087895911072743955</id><published>2008-11-04T13:44:00.000+11:00</published><updated>2008-11-04T13:45:49.247+11:00</updated><title type='text'>Groovy / Grails Magazine</title><content type='html'>Check it out&lt;br /&gt;&lt;br /&gt;&lt;p style='width: 180px; text-align: center'&gt;&lt;br /&gt;&lt;a href='http://www.groovymag.com' title='GroovyMag for Groovy and Grails developers'&gt;&lt;img src='http://www.groovymag.com/images/gmlogo.png' alt='Groovy Magazine for Groovy/Grails Developers' border='0'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href='http://www.groovymag.com' title='GroovyMag for Groovy and Grails developers'&gt;Groovy Magazine&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-4087895911072743955?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/4087895911072743955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=4087895911072743955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4087895911072743955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4087895911072743955'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/11/groovy-grails-magazine.html' title='Groovy / Grails Magazine'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-4609061351858304178</id><published>2008-11-03T20:21:00.003+11:00</published><updated>2008-11-03T20:32:09.959+11:00</updated><title type='text'>The Road Onward...</title><content type='html'>I haven't been coding anything since the last post, instead I've been concentrating on a new book Bruce Eckel's 'Thinking In Java'. I've been looking forward to getting into this one as in addition to being a good general Java refresher it will fill me in on some of the Java 5 features such as enums and annotations that I've missed. My Uni course was completed in a time when 1.4 ruled. I intend to do each of the exercises as well to cement the learning.&lt;br /&gt;At in excess of 1500 pages it will take me a while to get through!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-4609061351858304178?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/4609061351858304178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=4609061351858304178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4609061351858304178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4609061351858304178'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/11/road-onward.html' title='The Road Onward...'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-4217026864055741516</id><published>2008-10-22T21:29:00.002+11:00</published><updated>2008-10-22T21:41:05.866+11:00</updated><title type='text'>Book Review: Better Faster Lighter Java</title><content type='html'>This book is more of a philosophy book than a how to. The first half deals with these main principles:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Keep it simple&lt;/li&gt;&lt;li&gt;Do one thing and do it well&lt;/li&gt;&lt;li&gt;Strive for transparency&lt;/li&gt;&lt;li&gt;You are what you eat&lt;/li&gt;&lt;li&gt;Allow for extension&lt;/li&gt;&lt;/ul&gt; The remainder of the book deals with Hibernate and Spring and provides a practical example of how to apply the above principles. At times the author vents about current J2EE practices but on the whole I found it to be a very worthwhile read. In particular I like the way that the main principles are reinforced during each example.&lt;br /&gt;If you liked &lt;a href="http://www.pragprog.com/the-pragmatic-programmer"&gt;The Pragmatic Programmer&lt;/a&gt; you should like &lt;a href="http://oreilly.com/catalog/9780596006761/"&gt;Better Faster Lighter Java&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-4217026864055741516?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/4217026864055741516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=4217026864055741516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4217026864055741516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/4217026864055741516'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/10/book-review-better-faster-lighter-java.html' title='Book Review: Better Faster Lighter Java'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-2138842421782774656</id><published>2008-10-20T22:02:00.002+11:00</published><updated>2008-10-20T22:13:00.909+11:00</updated><title type='text'>Where to start?</title><content type='html'>With so many cool technologies where do you start to get the best learning experience? Spring, Hibernate, Maven, Griffon, Grails where's the best bang for my time? As I work in J2EE I want to try and understand things that will be job relevant but the projects I'm looking at aren't enterprise in nature.&lt;br /&gt;&lt;br /&gt;I guess that the way that I learn best is to do. I have a heap of ideas for projects which will allow me to try bits and pieces of particular languages and frameworks. I really want to avoid &lt;a href="http://projects.csail.mit.edu/gsb/old-archive/gsb-archive/gsb2000-02-11.html"&gt;yak shaving&lt;/a&gt; where possible but I suppose even this adds to the learning process.&lt;br /&gt;&lt;br /&gt;Stay tuned and I'll make a decision about which project to start on first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-2138842421782774656?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/2138842421782774656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=2138842421782774656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2138842421782774656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2138842421782774656'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/10/where-to-start.html' title='Where to start?'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4619161095752757506.post-2957158363868893726</id><published>2008-10-19T16:54:00.003+11:00</published><updated>2008-10-19T17:20:35.219+11:00</updated><title type='text'>Welcome</title><content type='html'>I recently read an article where somebody wondered where they could get the experience that would enable their programming career to take off. They were widely panned in the forum by other users but I thought it was a perfectly reasonable question. I remember thinking the same thing when in the final stages of Uni, "everybody wants people with experience but nobody is willing to give you a chance to get experience".&lt;br /&gt;&lt;br /&gt;Inspite of this, I have been lucky and landed on my feet in the perfect job where I get paid to do what I love and work with some awesome people. I relayed my thoughts to a colleague (who I shall refer to as &lt;a href="http://blogs.bytecode.com.au/glen"&gt;Grandmaster G&lt;/a&gt;) who said that when hiring its easier look at people have 1) contributed to open source software and 2) have a blog that he could read to learn more about them.&lt;br /&gt;&lt;br /&gt;While I'm not looking to work anywhere else I thought it would be good to share some of my experiences as I learn more about the art of programming. I intend to keep it up to date with my development experiences and hopefully others will find it interesting as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4619161095752757506-2957158363868893726?l=thenakedcoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thenakedcoder.blogspot.com/feeds/2957158363868893726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4619161095752757506&amp;postID=2957158363868893726' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2957158363868893726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4619161095752757506/posts/default/2957158363868893726'/><link rel='alternate' type='text/html' href='http://thenakedcoder.blogspot.com/2008/10/welcome.html' title='Welcome'/><author><name>Dean</name><uri>http://www.blogger.com/profile/06623321323624438367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_pIspW_pAKWQ/SU9kvMg9qGI/AAAAAAAAAAk/shtOYjOk2gM/S220/DSCF0106.JPG'/></author><thr:total>1</thr:total></entry></feed>
