<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1073774700575250720</atom:id><lastBuildDate>Fri, 08 Nov 2024 15:19:41 +0000</lastBuildDate><category>Linux</category><category>Java</category><category>Week in Review</category><category>grails</category><category>Database</category><category>Web</category><category>Media center</category><category>ubuntu</category><category>mythtv</category><category>appengine</category><category>testing</category><category>Corporate Development</category><category>Python</category><category>android</category><category>griffon</category><category>groovy</category><category>oracle</category><category>podcast</category><category>selenium</category><category>wordpress</category><category>Hardware</category><category>Software Development</category><category>agile</category><category>apache</category><category>error</category><category>firefox</category><category>sound</category><category>Windows</category><category>digitaltv</category><category>hibernate</category><category>junit</category><category>logging</category><category>mobile</category><category>music</category><category>p6spy</category><category>spring</category><category>sql</category><category>svn</category><category>tomcat</category><category>virtualbox</category><category>vps</category><category>amazon</category><category>ant</category><category>arcgis</category><category>arcsde</category><category>blogger</category><category>books</category><category>bower</category><category>brunch</category><category>businessobjects</category><category>change</category><category>classpath</category><category>commons</category><category>crystal</category><category>ddd</category><category>dell</category><category>design</category><category>disk</category><category>dvd</category><category>eclipse</category><category>eps</category><category>framework</category><category>ftp</category><category>galaxy</category><category>gimp</category><category>gnome</category><category>gpodder</category><category>grooveshark</category><category>hosting</category><category>icons</category><category>intellij</category><category>ios</category><category>ipad</category><category>irc</category><category>javafx</category><category>javascript</category><category>jdbc</category><category>jetty</category><category>jobs</category><category>joomla</category><category>jpa</category><category>jsf</category><category>layers</category><category>linkedin</category><category>log</category><category>mail</category><category>maven</category><category>mediacenter</category><category>memory</category><category>mock</category><category>mp3</category><category>mutt</category><category>mysql</category><category>mythbuntu</category><category>nautilus</category><category>netbeans</category><category>networkmanagement</category><category>networkmanager</category><category>nuvexport</category><category>optus</category><category>osx</category><category>phone</category><category>photo</category><category>prototype</category><category>queue</category><category>remotecontrol</category><category>report</category><category>roo</category><category>rss</category><category>soundjuicer</category><category>string</category><category>subversion</category><category>support</category><category>swap</category><category>task</category><category>tdd</category><category>technology</category><category>telecommuting</category><category>test</category><category>transaction</category><category>trinidad</category><category>twitter</category><category>video</category><category>view</category><category>virgin</category><category>vista</category><category>vlc</category><category>wakaleo</category><category>work</category><category>youtube</category><title>Java Thinking</title><description></description><link>http://java-thinking.blogspot.com/</link><managingEditor>noreply@blogger.com (Unknown)</managingEditor><generator>Blogger</generator><openSearch:totalResults>196</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-7909679191332121387</guid><pubDate>Fri, 17 Aug 2018 04:10:00 +0000</pubDate><atom:updated>2018-08-17T14:10:41.609+10:00</atom:updated><title>Testing on Windows IE/Edge</title><description>I&#39;m using a MacBook Pro, so I don&#39;t have easy access to a windows machine for testing web applications on Internet Explorer - or so I thought...&lt;br /&gt;
&lt;br /&gt;
Microsoft have made available &lt;a href=&quot;https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/&quot; target=&quot;_blank&quot;&gt;virtual machine images&lt;/a&gt; (for VirtualBox, Parallels, Vagrant, VMWare, HyperV) of Windows 7 through to 10 so you can run IE and Edge easily.&lt;br /&gt;
&lt;br /&gt;
Note that the VMs expire after 90 days, but if you take a snapshot when you first install the VM you can roll it back later and start again.&lt;br /&gt;
&lt;br /&gt;
Perfect!</description><link>http://java-thinking.blogspot.com/2018/08/testing-on-windows-ieedge.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-157243460212763031</guid><pubDate>Thu, 16 Aug 2018 10:38:00 +0000</pubDate><atom:updated>2018-08-16T21:36:45.874+10:00</atom:updated><title>Slow, Buffering, Stuttering Udemy Video</title><description>Udemy video has been completely unusable from my home broadband connection. Videos would take minutes to start playing and then continuously stutter and buffer.&lt;br /&gt;
&lt;br /&gt;
Searching for a solution I came across this &lt;a href=&quot;https://www.reddit.com/r/Udemy/comments/8uytb5/is_video_streaming_slow_for_you_on_udemy/&quot; target=&quot;_blank&quot;&gt;Reddit post&lt;/a&gt; - and I found the solution was to change my DNS to use &lt;a href=&quot;https://blog.cloudflare.com/announcing-1111/&quot; target=&quot;_blank&quot;&gt;CloudFlare&lt;/a&gt; (1.1.1.1).&lt;br /&gt;
&lt;br /&gt;
After changing my AppleTV from automatic DNS to manual and using 1.1.1.1 video playback from the Udemy app has been as you would expect. I don&#39;t know why this helps, but it seems to have so far.</description><link>http://java-thinking.blogspot.com/2018/08/slow-buffering-udemy-video.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-6390461929309431716</guid><pubDate>Mon, 29 Dec 2014 21:55:00 +0000</pubDate><atom:updated>2014-12-30T08:57:00.365+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">disk</category><category domain="http://www.blogger.com/atom/ns#">osx</category><title>Enabling FileVault on Yosemite</title><description>&lt;div class=&quot;tr_bq&quot;&gt;
Read the full details here before doing anything:&amp;nbsp;&lt;a href=&quot;http://support.apple.com/kb/PH18637?viewlocale=en_US&quot;&gt;http://support.apple.com/kb/PH18637?viewlocale=en_US&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Enabling disk encryption on OSX Yosemite turns out to be a straightforward process. Simply enable it through Setting/Security &amp;amp; Privacy/FileVault - if you chose not to let your iCloud account unlock your disk (for when you&#39;ve forgotten your password) you&#39;ll have to keep a safe record of the recovery key (it sounds like you only get one oppourtunity to record this) - this triggers a reboot, and then when you log back in you&#39;ll be able to monitor the progress of file encryption from the same settings panel.&lt;br /&gt;
&lt;br /&gt;
I have 2 MacBooks:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;July &lt;b&gt;2014 Apple MacBook Pro&lt;/b&gt;, 2.6GHz Quad-core Intel Core i7, Turbo Boost up to 3.8GHz, 16GB 1600MHz DDR3L SDRAM, 512GB PCIe-based Flash Storage&lt;/li&gt;
&lt;li&gt;January &lt;b&gt;2011 Apple MacBook Air&lt;/b&gt;, 13 inch display, Core 2 Duo 1.86GHz, 4 Gig RAM 1067 MHz DDR3, 256 Gig SSD&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Since disk speed is king, I wanted to measure the effect of enabling FileVault so I found this benchmark script to hopefully capture a meaningful before and after state:&amp;nbsp;&lt;a href=&quot;http://www.amsys.co.uk/2013/blog/using-command-line-to-benchmark-disks/#.VKDxQsAGA&quot;&gt;http://www.amsys.co.uk/2013/blog/using-command-line-to-benchmark-disks/#.VKDxQsAGA&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Unfortunately the purge command now needs to be run as sudo - before I enabled FileVault I ran it without sudo so I didn&#39;t get accurate read results. I hope though that the write values are accurate - I did multiple runs just to capture a feel for the variability:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Before FileVault (without sudo purge, read results were invalid)&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
MacBook Air:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Write Speed is: 211.474 MB/sec&lt;/li&gt;
&lt;li&gt;Write Speed is: 211.479 MB/sec&lt;/li&gt;
&lt;/ul&gt;
MacBook Pro:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Write Speed is: 749.875 MB/sec&lt;/li&gt;
&lt;li&gt;Write Speed is: 747.208 MB/sec&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;After FileVault (with sudo purge, read results look reasonable)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
MacBook Air:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Read Speed is: 177.373 MB/sec&lt;/li&gt;
&lt;li&gt;Read Speed is: 179.464 MB/sec&lt;/li&gt;
&lt;li&gt;Write Speed is: 162.953 MB/sec&lt;/li&gt;
&lt;li&gt;Write Speed is: 162.258 MB/sec&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
MacBook Pro:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Read Speed is: 764.053 MB/sec&lt;/li&gt;
&lt;li&gt;Read Speed is: 762.525 MB/sec&lt;/li&gt;
&lt;li&gt;Write Speed is: 665.999 MB/sec&lt;/li&gt;
&lt;li&gt;Write Speed is: 692.193 MB/sec&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;IF&lt;/b&gt; this benchmark is valid, taking the BEST case (smallest difference) for write speed on the MBP (747-692) indicates I&#39;ve lost 55 MB/sec or approximately 7%. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I was hoping for a more negligible difference, but the real test that matters will be if I notice any significant degradation.&amp;nbsp;&lt;/div&gt;
</description><link>http://java-thinking.blogspot.com/2014/12/enabling-filevault-on-yosemite.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-3500041451920861510</guid><pubDate>Fri, 26 Dec 2014 04:18:00 +0000</pubDate><atom:updated>2014-12-30T08:57:42.060+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bower</category><category domain="http://www.blogger.com/atom/ns#">brunch</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Customising what gets included from bower dependencies (Brunch)</title><description>Sometimes you&#39;ll find you need to customise which files get included from a bower dependency.&lt;br /&gt;
&lt;br /&gt;
For example, when using the &lt;a href=&quot;http://momentjs.com/&quot; target=&quot;_blank&quot;&gt;moment.js&lt;/a&gt; library, you&#39;ll see (in bower_components/moment/bower.json) that by default &#39;moment.js&#39; is the only file included:&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/00bebc140845003bd09e.js&quot;&gt;&lt;/script&gt;

In my case, I&#39;m using &lt;a href=&quot;http://brunch.io/&quot; target=&quot;_blank&quot;&gt;brunch&lt;/a&gt; to build the project and I&#39;d prefer to include moment.min.js - plus I want to selectively pick which moment local files to include.&lt;br /&gt;
&lt;br /&gt;
This turns out to be quite easy - brunch understands bower overrides, so in your projects bower.json all you have to do is include an override which tells it which files to use from your dependencies:
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/e286880bb98c5d83db60.js&quot;&gt;&lt;/script&gt;</description><link>http://java-thinking.blogspot.com/2014/12/customising-what-gets-included-from.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-5698354880672371783</guid><pubDate>Fri, 26 Dec 2014 03:37:00 +0000</pubDate><atom:updated>2014-12-30T08:57:16.774+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><title>Resetting your android device pin</title><description>If you&#39;ve forgotten the PIN for your android device, you can reset it at&amp;nbsp;&lt;a href=&quot;https://www.google.com/android/devicemanager&quot;&gt;https://www.google.com/android/devicemanager&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This page lets you choose from your registered devices (if you have more than one). From here you can see when it was last used, and where. You have the option of &#39;Ring&#39;, &#39;Erase&#39;, and &#39;Lock&#39;. Choosing &#39;Lock&#39; lets you provide a new pin - so next time you access it the new pin should be active.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://java-thinking.blogspot.com/2014/12/resetting-your-android-device-pin.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-8653788891429360115</guid><pubDate>Fri, 29 Aug 2014 05:25:00 +0000</pubDate><atom:updated>2014-08-29T15:25:50.209+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">intellij</category><title>Intellij tip - Joining multiple lines into one</title><description>There are times when you have some code with each statement on its own line, and you want to move it all onto one line.&lt;br /&gt;
&lt;br /&gt;
CSS is where I&#39;ve needed this the most.&lt;br /&gt;
&lt;br /&gt;
You start off with some code like this:&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/3aa0b0e24977101bb052.js&quot;&gt;&lt;/script&gt;

And really want this:&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/a9a27c8bd1889a8ed10e.js&quot;&gt;&lt;/script&gt;

Intellij has a very simple way to do this by using Ctrl-Shift-J - for more information, see

&lt;a href=&quot;http://www.jetbrains.com/idea/webhelp/joining-lines-and-literals.html&quot;&gt;http://www.jetbrains.com/idea/webhelp/joining-lines-and-literals.html&lt;/a&gt;
</description><link>http://java-thinking.blogspot.com/2014/08/intellij-tip-joining-multiple-lines.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-8923545243059742212</guid><pubDate>Mon, 10 Feb 2014 08:42:00 +0000</pubDate><atom:updated>2014-02-11T09:59:58.461+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ios</category><category domain="http://www.blogger.com/atom/ns#">ipad</category><title>Finding a use for an iPad 1</title><description>I&#39;d noticed that most of the recent applications in the App Store won&#39;t install on my iPad 1 anymore. They either need a gyroscope or IOS 6 or 7. My iPad is stuck on IOS 5.&lt;br /&gt;
&lt;br /&gt;
The first problem with this is that I haven&#39;t found a way to browse the App Store for applications that ARE compatible. This is incredibly frustrating, since its just left to trial and error finding some that will work.&lt;br /&gt;
&lt;br /&gt;
I&#39;d heard about the &#39;&lt;a href=&quot;http://support.apple.com/kb/ht5919&quot; target=&quot;_blank&quot;&gt;download the latest version that is compatible&lt;/a&gt;&#39; feature, so decided that since my iPad is in awesome condition I&#39;d gift it to my parents - who wouldn&#39;t be needing the latest and greatest features.&lt;br /&gt;
&lt;br /&gt;
This hasn&#39;t been so simple, and I suspect others might have the same problem so I&#39;ve tried to document what I&#39;ve found:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Doing a &#39;reset&#39; to erase the iPad (before gifting it to someone) will leave you in the unfortunate situation of not being able to install many applications very easily.&lt;/li&gt;
&lt;li&gt;At this point, it doesn&#39;t seem possible to install applications requiring &amp;gt; IOS 5 via the device - its not compatible so not allowed.&lt;/li&gt;
&lt;li&gt;So to work around this, you can use iTunes to &#39;purchase&#39; applications. Since using iTunes doesn&#39;t seem to be aware of your devices, it&#39;ll let you purchase anything.&lt;/li&gt;
&lt;li&gt;Now you have some purchases, you can return to your device and open the App Store. Go to the &#39;Purchased&#39; tab and then individually install each application. Hopefully at this point you&#39;ll get the&amp;nbsp;&#39;download the latest version that is compatible&#39; message.&lt;/li&gt;
&lt;/ol&gt;
A couple of notes here:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I did all of this while connected over the cable to the computer running iTunes.&lt;/li&gt;
&lt;li&gt;When I first did it, the applications seem to hang while installing, and never completed installing properly. The solution to this was to delete the applications from the device, then return to the &#39;Purchased&#39; tab and reinstall. (I think the first installation of the apps may have been due to an iTunes sync which failed and never recovered - presumably because they are not compatible. By deleting them and reinstalling them from the iPad itself via the purchased tab, I got the &#39;install latest compatible&#39; message which resulted in success).&lt;/li&gt;
&lt;li&gt;Update 1: I am experiencing a lot of crashes on the device - mainly with the App Store and iTunes. I don&#39;t know if this happened before I reset/erased the iPad or if it has just started happening now.&lt;/li&gt;
&lt;/ul&gt;
Some obvious things could be improved here:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;The App Store could let you filter by &#39;compatible with device x&#39; e.g. only show me those applications that will work on my &#39;iPad 1&#39;&lt;/li&gt;
&lt;li&gt;When you install apps from the device, it could just install the latest compatible version right there (bypassing the need to do anything special).&lt;/li&gt;
&lt;/ol&gt;
If I&#39;ve got any of this wrong, I&#39;d love to hear. It would be extremely useful to be able to EASILY continue using the iPad 1.&lt;br /&gt;
&lt;br /&gt;</description><link>http://java-thinking.blogspot.com/2014/02/finding-use-for-ipad-1.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-193882697776506337</guid><pubDate>Sat, 17 Aug 2013 09:05:00 +0000</pubDate><atom:updated>2013-08-17T19:05:15.095+10:00</atom:updated><title>Using Selenium WebDriver to select JSF/PrimeFaces selectOneMenu options</title><description>I&#39;m using JBehave with Selenium WebDriver to test my PrimeFaces (JSF2) application. Selecting an option from a SelectOne option list isn&#39;t standard though because of the HTML markup generated by the JSF component.&lt;br /&gt;
&lt;br /&gt;

&lt;br /&gt;
The facelets code to place the selectOneMenu uses the ID &#39;state&#39;:&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/6255965.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
This generates HTML div blocks with id&#39;s prefixed with this components id:&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/6255971.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
To select an option, I use a method which manipulates the appropriate divs - this can be used as illustrated below:&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/6255979.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
To reuse this type of utility method, I put it in a base Page Object class:&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/6255912.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://java-thinking.blogspot.com/2013/08/using-selenium-webdriver-to-select.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-802492816526799614</guid><pubDate>Mon, 12 Aug 2013 11:15:00 +0000</pubDate><atom:updated>2013-08-12T21:15:30.296+10:00</atom:updated><title>Some user feedback</title><description>I was exporting my banking transactions the other day. It&#39;s a much more tedious process than it has to be and after using this for years and not seeing any updates to the site I thought I&#39;d send some feedback - written as stories:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As an Online Banking Customer, I want the system to remember my export preferences so that I can efficiently export my transactions ­&amp;nbsp;&lt;ul&gt;
&lt;li&gt;currently I have to set everything every time (even if you navigate from a selected account, you still have to pick an account) ­&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;file format (i.e CSV) ­&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;date format (dd/mm/yycc)&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As an Online Banking Customer, I want to export transactions for all my accounts in one go so that I can efficiently export my transactions ­ so I don&#39;t have to do them one at a time&lt;ul&gt;
&lt;li&gt;ideally multiple accounts in one file&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As an Online Banking Customer, I want to be able to access more than 12 months worth of transactions so that I don&#39;t have to export so often. ­&amp;nbsp;&lt;ul&gt;
&lt;li&gt;not much history is available online ­and transactions can easily be lost if you don&#39;t remember to export frequently enough&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
And after getting confirmation of my feedback - where everything was on a single line of text without any of the formatting I used:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
As an online user, I want formatting to be preserved when I provide feedback so that it can be clearly read and understood. ­&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;ul&gt;
&lt;li&gt;my last feedback suggestion removed all cr/lf so it was all printed on one line and not clearly readable ­&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;ul&gt;
&lt;li&gt;perhaps you could use the markdown format (customers wouldn&#39;t need to know, but it may provide an easily way to have some formatting without complicating things)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
I was surprised to get a response - most companies don&#39;t bother. They reckon they&#39;ll be updating the site this year or next year - sounds like a BIG BANG approach, after not much in the way of incremental improvements for years. I guess I&#39;ll just have to continue with the tedium for a while yet.</description><link>http://java-thinking.blogspot.com/2013/08/some-user-feedback.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-9186821496481928143</guid><pubDate>Sat, 25 May 2013 11:54:00 +0000</pubDate><atom:updated>2013-05-25T21:54:04.310+10:00</atom:updated><title>Exposing the version of your Maven built web application</title><description>Sometimes its useful to expose the version of your web application - I find it useful so &lt;a target=&quot;_blank&quot; href=&quot;http://vs-console.appspot.com/&quot;&gt;vsConsole&lt;/a&gt; can display the version of the deployed application for each environment on the dashboard. If you build your app with Maven, you can use this code to get the version, and simply wire up a controller/rest endpoint to return it as text/plain.

&lt;script src=&quot;https://gist.github.com/prule/5572715.js&quot;&gt;&lt;/script&gt;


To expose the version of your maven built spring web application, you can use a REST controller like that shown below. Note, you won&#39;t see a valid version while running in the IDE - it&#39;ll only work when running the Maven built WAR.

&lt;script src=&quot;https://gist.github.com/prule/5648809.js&quot;&gt;&lt;/script&gt;

If you want to add the Jersey dependencies to your spring application try using the following dependency declaration.

&lt;script src=&quot;https://gist.github.com/prule/5648830.js&quot;&gt;&lt;/script&gt;</description><link>http://java-thinking.blogspot.com/2013/05/exposing-version-of-your-maven-built.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-4115352342882624214</guid><pubDate>Mon, 06 May 2013 07:40:00 +0000</pubDate><atom:updated>2013-05-06T17:40:28.727+10:00</atom:updated><title>Avoid embedding database connection information in your code</title><description>I&#39;ve seen projects where the application code base contains database connection information - passwords and all, or, WAR files are rebuilt for each environment with properties substituted appropriately for the target environment.&lt;br /&gt;
&lt;br /&gt;
Rather than putting database information in the application code, it makes more sense to use a JDNI data source provided by the container. This way the exact same application code is deployed to all environments, and we don&#39;t encounter any exposed passwords - since the owner of the container (in production environments the infrastructure/support team) define the data source themselves.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Database access via JNDI data source in Tomcat&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In your application server you want to define a data source which points to the database server and schema of your choice. Here, I&#39;m using the&lt;a href=&quot;http://www.h2database.com/&quot; target=&quot;_blank&quot;&gt; H2 database&lt;/a&gt;, and assuming this is the DEV Tomcat server, I point it to the DEV schema - &lt;a href=&quot;http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html&quot; target=&quot;_blank&quot;&gt;define this resource in the Tomcat context.xml&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;&amp;lt;Resource name=&quot;&lt;b&gt;jdbc/app1db&lt;/b&gt;&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;maxActive=&quot;100&quot; maxIdle=&quot;30&quot; maxWait=&quot;10000&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;username=&quot;sa&quot; password=&quot;&quot; driverClassName=&quot;org.h2.Driver&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;url=&quot;jdbc:h2:tcp://devDbServer/~/dev&quot;/&amp;gt;&lt;/blockquote&gt;
In your TST, UAT, PRD servers you define similar data sources, pointing to the appropriate schemas, all with the same name.&lt;br /&gt;
&lt;br /&gt;
Your application server MUST have the database driver on its classpath, so you will want to add the appropriate driver jar to TOMCAT_HOME/lib.&lt;br /&gt;
&lt;br /&gt;
Other containers such as GlassFish, WebLogic, WebSphere and JBoss will have equivalent ways of&amp;nbsp;achieving&amp;nbsp;this same configuration.&lt;br /&gt;
&lt;br /&gt;
Now, in your application all you need to do is define the JNDI data source, which never changes:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;bean id=&quot;dataSource&quot; class=&quot;org.springframework.jndi.JndiObjectFactoryBean&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;property name=&quot;jndiName&quot; value=&quot;java:comp/env/&lt;b&gt;jdbc/app1db&lt;/b&gt;&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/bean&amp;gt;&lt;/blockquote&gt;
&lt;div&gt;
With the database connection information encapsulated within the container, you don&#39;t need these details in the source code, you don&#39;t expose passwords to anyone and you don&#39;t need to repackage your application for each environment - deployment is simple.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Another similar use-case is for the &lt;a href=&quot;http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html#JavaMail_Sessions&quot; target=&quot;_blank&quot;&gt;mail server&lt;/a&gt;. You may also want to expose a String which could point to a properties file or server address - this can then be referenced in your spring application context.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Below are xml snippets of a Tomcat configuration which exposes some resources and a Spring application context file that uses those resources.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/5523793.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/5523826.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;</description><link>http://java-thinking.blogspot.com/2013/05/avoid-embedding-database-connection.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-5026430232743264893</guid><pubDate>Thu, 02 May 2013 03:43:00 +0000</pubDate><atom:updated>2013-05-02T13:43:16.093+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">maven</category><category domain="http://www.blogger.com/atom/ns#">tomcat</category><title>Deploying to Tomcat 7 with Maven</title><description>It&#39;s sometimes nice to be able to update a development Tomcat 7 server from Maven - this makes it simple to hook automatic deployment into a CI server or just update the dev server as a developer.&lt;br /&gt;
&lt;br /&gt;
First, the Tomcat manager application needs to be installed (check Tomcat&#39;s webapps directory for the manager application) and configured with the appropriate user credentials:&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/5480031.js&quot;&gt;&lt;/script&gt;

Now, I needed to define the server admin credentials in my maven settings (~/.m2/settings.xml):&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/5480058.js&quot;&gt;&lt;/script&gt;

Then, I updated the POM to configure the &lt;a href=&quot;http://tomcat.apache.org/maven-plugin.html&quot; target=&quot;_blank&quot;&gt;maven tomcat plugin&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/5480080.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
Now, using &#39;mvn tomcat7:redeploy&#39; lets me update the dev server.&lt;br /&gt;
&lt;br /&gt;
Note however, on Windows you may have some problems with undeploying the application - after an undeploy command, some jars may be left over in the webapps/appname directory. When you try to redeploy your app you&#39;ll see an error containing &quot;&lt;b&gt;cannot invoke tomcat manager fail - unable to delete...&lt;/b&gt;&quot;.&lt;br /&gt;
&lt;br /&gt;
To work around this, you can change the TOMCAT_HOME/conf/context.xml to include the &#39;antiJARLocking&#39; attribute like so:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;Context antiJARLocking=&quot;true&quot;&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
The &lt;a href=&quot;http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Standard_Implementation&quot; target=&quot;_blank&quot;&gt;documentation&lt;/a&gt; points out though that this will impact start up times of applications.&lt;br /&gt;
&lt;br /&gt;
In my case, I noticed problems when doing a redeploy to Tomcat - most likely unrelated to Maven and/or the maven tomcat plugin and more to do with PermGen (I saw perm gen OutOfMemory: PermGen space errors in the tomcat7-stderr logs, and the Tomcat process was consuming 100% cpu). Adding the following switches to the Tomcat JVM settings seems to have fixed it for now:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:PermSize=64m -XX:MaxPermSize=128m -Xmx992M&lt;/blockquote&gt;
&amp;nbsp;(In this instance, I&#39;m running Tomcat 7 as a Windows service on JDK7 with a 50MB WAR file).</description><link>http://java-thinking.blogspot.com/2013/05/deploying-to-tomcat-7-with-maven.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-6971422591542301482</guid><pubDate>Tue, 23 Apr 2013 07:42:00 +0000</pubDate><atom:updated>2013-04-23T17:42:57.371+10:00</atom:updated><title>Exception: AbstractMethodError requires c3p0 upgrade</title><description>&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; margin-left: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT9p80ei9CkVAlyPomje-5tSIsD80-1pzyhLOPEYBqP02XnfCRv6W97iZtzQyEVFKL5InhsSAFuHWqa30PNY7i3fufrpQbiJx39Mrl7lOhc2SP274le2B8mzefvnDcwDa_CJ1DRjyQ-PQp/s1600/large__4771833129.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT9p80ei9CkVAlyPomje-5tSIsD80-1pzyhLOPEYBqP02XnfCRv6W97iZtzQyEVFKL5InhsSAFuHWqa30PNY7i3fufrpQbiJx39Mrl7lOhc2SP274le2B8mzefvnDcwDa_CJ1DRjyQ-PQp/s1600/large__4771833129.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;photo credit: &lt;a href=&quot;http://www.flickr.com/photos/markchadwick/4771833129/&quot;&gt;markchadwickart&lt;/a&gt;&lt;br /&gt;
via &lt;a href=&quot;http://photopin.com/&quot;&gt;photopin&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/&quot;&gt;cc&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
I just encountered this exception:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Exception in thread &quot;main&quot; java.lang.AbstractMethodError: com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setCharacterStream(ILjava/io/Reader;J)V&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$4$1.doBind(ClobTypeDescriptor.java:114)&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:92)&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/13885906/is-c3p0-connection-pool-is-required-with-hibernate-in-jboss-as-7&quot; target=&quot;_blank&quot;&gt;It turns out&lt;/a&gt; that upgrading c3p0 does the trick (from 0.9.1.2 to 0.9.2.1):&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;dependency&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;groupId&amp;gt;com.mchange&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;artifactId&amp;gt;c3p0&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;version&amp;gt;0.9.2.1&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</description><link>http://java-thinking.blogspot.com/2013/04/photo-credit-markchadwickart-via.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT9p80ei9CkVAlyPomje-5tSIsD80-1pzyhLOPEYBqP02XnfCRv6W97iZtzQyEVFKL5InhsSAFuHWqa30PNY7i3fufrpQbiJx39Mrl7lOhc2SP274le2B8mzefvnDcwDa_CJ1DRjyQ-PQp/s72-c/large__4771833129.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-4964367812343868919</guid><pubDate>Tue, 16 Apr 2013 02:52:00 +0000</pubDate><atom:updated>2013-04-16T12:52:44.976+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Week in Review</category><title>Week in Review - 2013-16</title><description>&lt;h4&gt;
&lt;/h4&gt;
&lt;h4&gt;
&lt;/h4&gt;
&lt;h4&gt;
Print to Google Drive&lt;/h4&gt;
I just noticed &#39;Save to Google Drive&#39; in my &#39;Print&#39; options in Chrome! This is awesome - when you want to save something for reference, and you don&#39;t want to go through thousands of bookmarks, this is exactly what I wanted!&lt;br /&gt;
&lt;h4&gt;
Media Problems&lt;/h4&gt;
&lt;div&gt;
Here is a &lt;a href=&quot;http://kryogenix.org/days/2013/04/09/watching-films-on-ubuntu-in-england&quot; target=&quot;_blank&quot;&gt;great blog post&lt;/a&gt; about trying to find a decent movie streaming service. Now I have FetchTV (this lets me buy movies to stream, much like the Google Play option) I&#39;m considering turning my MythTV media center off, but I still need an option for playing music/displaying photos/etc. There are lots of options, from AppleTV to Western Digital et al media players. Props to Google for actually selling us here in Australia movies and music - unlike Amazon (we still can&#39;t buy movies and music from Amazon in 2013).&lt;br /&gt;
&lt;h4&gt;
Andrew Chen quits RSS - WTF!&lt;/h4&gt;
Andrew Chen just &lt;a href=&quot;http://andrewchen.co/2013/04/15/rss-i-quit-you-please-subscribe-to-email-updates-for-this-blog-instead/&quot; target=&quot;_blank&quot;&gt;announced&lt;/a&gt; that he&#39;s quitting RSS in favour of email notifications. Look at the comments though, and there isn&#39;t a single positive response (and they are all quite sensible reactions). Presumably this was provoked by Google Reader being retired, but the unanswered question for Andrew is why does Reader == RSS ? I&#39;ve switch to &lt;a href=&quot;http://www.feedly.com/&quot; target=&quot;_blank&quot;&gt;Feedly&lt;/a&gt;&amp;nbsp;(which has a seamless process to migrate your reader account) and I&#39;m liking it so far. I won&#39;t even notice Reader go offline.&lt;/div&gt;
&lt;h4&gt;
Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.android.com/filetransfer/&quot;&gt;http://www.android.com/filetransfer/&lt;/a&gt; - copy files from MacOS to your Android device&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://portableapps.com/&quot; target=&quot;_blank&quot;&gt;http://portableapps.com/&lt;/a&gt;&amp;nbsp;- portable applications you can run from a memory stick (or run without having to use an installer)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://photopin.com/&quot;&gt;http://photopin.com/&lt;/a&gt; - find pictures for your blog&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://plus.google.com/u/0/+TreyRatcliff/posts/8nWA8DZDhnk&quot; target=&quot;_blank&quot;&gt;Awesome photographs&lt;/a&gt;&amp;nbsp;of New Zealand&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://kryogenix.org/days/2013/04/09/watching-films-on-ubuntu-in-england&quot;&gt;http://kryogenix.org/days/2013/04/09/watching-films-on-ubuntu-in-england&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://andrewchen.co/2013/04/15/rss-i-quit-you-please-subscribe-to-email-updates-for-this-blog-instead/&quot;&gt;http://andrewchen.co/2013/04/15/rss-i-quit-you-please-subscribe-to-email-updates-for-this-blog-instead/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><link>http://java-thinking.blogspot.com/2013/04/week-in-review-2013-16.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-2258265544277702312</guid><pubDate>Thu, 11 Apr 2013 23:20:00 +0000</pubDate><atom:updated>2013-04-12T09:20:02.990+10:00</atom:updated><title>AspectJWeaver with JDK 7 - error - only supported at Java 5 compliance level or above</title><description>&lt;br /&gt;
&lt;br /&gt;
I came across this problem with an older project - when I switched from jdk6 to jdk7, when the application started I encountered:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;nested exception is org.springframework.beans.factory.BeanCreationException:&amp;nbsp;Error creating bean with name &#39;org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0&#39;:&amp;nbsp;Initialization of bean failed; nested exception is java.lang.IllegalArgumentException:&amp;nbsp;&amp;nbsp;&lt;b&gt;error annotation type patterns are only supported at Java 5 compliance level or above&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
I didn&#39;t want a purely maven solution because during development I run the app in Tomcat via the IDE (Intellij IDEA).&lt;br /&gt;
&lt;br /&gt;
In the end I just upgraded my aspectjweaver dependency to 1.7.2 (it was 1.5.4)&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.aspectj&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;aspectjweaver&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;1.7.2&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;/blockquote&gt;
&lt;div&gt;
Everything seems okay now.&lt;/div&gt;
</description><link>http://java-thinking.blogspot.com/2013/04/aspectjweaver-with-jdk-7-error-only.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-103062313425273466</guid><pubDate>Mon, 25 Mar 2013 00:34:00 +0000</pubDate><atom:updated>2013-04-01T21:26:12.721+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Week in Review</category><title>Week in Review - 2013-13</title><description>&lt;h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; margin-left: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmArQMinw2161DBwZtRLXCoThoHgMljUZJQejVEHUtSK8BuCO7E9OIUWt8bZx8UV0N5E9muZwvANczcbD77sPWVt5MbuyVFHjaqmB2OXiAMBPXTjGaFwZHHdR_XJWH5tj2jSWjQUjXrSzQ/s1600/large__3107120908.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmArQMinw2161DBwZtRLXCoThoHgMljUZJQejVEHUtSK8BuCO7E9OIUWt8bZx8UV0N5E9muZwvANczcbD77sPWVt5MbuyVFHjaqmB2OXiAMBPXTjGaFwZHHdR_XJWH5tj2jSWjQUjXrSzQ/s1600/large__3107120908.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;photo credit: &lt;a href=&quot;http://www.flickr.com/photos/doug88888/3107120908/&quot;&gt;@Doug88888&lt;/a&gt;&lt;br /&gt;
via &lt;a href=&quot;http://photopin.com/&quot;&gt;photopin&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/&quot;&gt;cc&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Installing Windows Vista&lt;/h4&gt;
For the first time since I bought it, my old Dell Inspiron 1525 has Windows Vista back on it. It&#39;s been running Ubuntu Linux since I got it, so why does it now have Windows again? My children are using computers at school now and they are using Windows - mainly Office. So rather than confuse them with different operating systems it seems more constructive to just give them some consistency and let them have their own computer set up like it is at school. I&#39;m going to have to buy Microsoft Office for them - which after seeing how Libre Office handles clip art, I&#39;m quite happy to do! (MS Office has a nice search and browse for clipart which the kids love and can use well. Libre Office didn&#39;t seem to have any search and you were left to click into each folder one at a time to see the clipart - not particularly useful).&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Downloading statements&lt;/h4&gt;
&lt;div&gt;
I&#39;ve just noticed PayPal have an interesting feature - you can download your transaction history, by date range, OR just the transactions since your LAST DOWNLOAD. Awesome - many sites are missing this feature. Some of the online banking sites don&#39;t even remember ANYTHING - date range, file type (csv etc) - from one export to another - you have to enter everything for every account. Just amazing.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Nexus 7 Android Tablet&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
I finally have an Android tablet - I&#39;ve been thinking about getting a Kindle for a long time as a way to catch up on reading during my daily commute. The paperwhite looked good but I couldn&#39;t order it from Amazon because they aren&#39;t shipping it to Australia and Dick Smith only just started selling it at $169. So when &lt;a href=&quot;http://www.shoppingexpress.com.au/&quot; target=&quot;_blank&quot;&gt;ShoppingExpress&lt;/a&gt; had the Nexus 7 16GB for $199 plus postage, I thought that&#39;d be good. A full tablet instead of an eReader, and a little bit heavier, but I think its a good compromise and I can use it for so much more.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
New screen protector for my phone&lt;/h4&gt;
When I got my HTC Incredible S (on an Optus plan) they put a screen protector on it before giving it to &amp;nbsp;me. So I never saw the screen without it. The protector had a kind of grainy-ness to it but the screen looked okay. Recently the protector started looking pretty bad and it was time for a new one - and WOW, what a difference. This protector is different, not grainy, totally clear but I assuming its not too good for reflection! It was also very easy to put on since it is a stiffer plastic and doesn&#39;t bubble. Right now my screen is looking totally awesome and like a brand new one!&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://jetstrap.com/&quot;&gt;http://jetstrap.com/&lt;/a&gt; - build Bootstrap based screens in your browser! &amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.humblebundle.com/&quot;&gt;https://www.humblebundle.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gittip.com/&quot;&gt;https://www.gittip.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://workforpie.com/&quot;&gt;https://workforpie.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://playground.webflow.com/&quot;&gt;http://playground.webflow.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://java-thinking.blogspot.com/2013/03/week-in-review-2013-13.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmArQMinw2161DBwZtRLXCoThoHgMljUZJQejVEHUtSK8BuCO7E9OIUWt8bZx8UV0N5E9muZwvANczcbD77sPWVt5MbuyVFHjaqmB2OXiAMBPXTjGaFwZHHdR_XJWH5tj2jSWjQUjXrSzQ/s72-c/large__3107120908.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-5203532781345311678</guid><pubDate>Tue, 19 Mar 2013 03:38:00 +0000</pubDate><atom:updated>2013-03-27T23:11:34.348+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linkedin</category><category domain="http://www.blogger.com/atom/ns#">podcast</category><category domain="http://www.blogger.com/atom/ns#">Week in Review</category><title>Week in Review - 2013-12</title><description>&lt;h4&gt;
Google Reader and Listen&lt;/h4&gt;
&lt;div&gt;
I&#39;ve been using Google Listen for listening to podcasts since I got my Android phone. It worked well, I would just subscribe to podcasts via Google Reader and drop it in the &#39;Listen Subscriptions&#39; folder. But now with &lt;a href=&quot;http://lifehacker.com/5990456/google-reader-is-getting-shut-down-here-are-the-best-alternatives&quot; target=&quot;_blank&quot;&gt;Google announcing the end of Reader&lt;/a&gt;, and &lt;a href=&quot;http://www.androidcentral.com/google-listen-officially-dead&quot; target=&quot;_blank&quot;&gt;Listen has long been abandoned&lt;/a&gt;, I&#39;m looking for a suitable alternative. I really liked how I simply had to subscribe to a feed online - if I have to subscribe to things via an app, I&#39;m stuck if I ever want to switch apps. Maybe I&#39;ll try &lt;a href=&quot;https://play.google.com/store/apps/details?id=au.com.shiftyjelly.pocketcasts&quot; target=&quot;_blank&quot;&gt;Pocket Casts&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;
LinkedIn Groups&lt;/h4&gt;
I&#39;ve noticed that when contributing to LinkedIn groups, its not immediately obvious to others from your profile. Recent comments might show up in your activity stream but they&#39;ll soon disappear. If you view your profile, you&#39;ll see a Groups section that shows the groups you have joined. Click on one of those and you&#39;ll be taken to the Group page and at the top there will an area where you can start a discussion - on the left will be your picture and under that is a tiny link to &#39;Your activity&#39;. Click on this and you&#39;ll be able to navigate your history within this group. You can link to this page using the group id and your &amp;nbsp; member id. Mine link to Agile and Lean Software Development looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://linkd.in/YlG0HZ&quot; target=&quot;_blank&quot;&gt;http://www.linkedin.com/groups?viewMemberFeed=&amp;amp;gid=37631&amp;amp;memberID=6153403&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
If you are viewing a discussion, you can click on the picture of a commenter to see their activity.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I&#39;d prefer it if the groups section of my profile had a link to my activity, so it was easy to see. At the moment no prospective employer would ever find it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;
Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.marochess.de/chess/tools/jlaunch/&quot; target=&quot;_blank&quot;&gt;JLaunch&lt;/a&gt;&amp;nbsp;- windows java launcher&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.personalkanban.com/pk/personal-kanban-101/&quot; target=&quot;_blank&quot;&gt;Personal Kanban&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://spiderscribe.net/&quot;&gt;SpiderScribe.net&lt;/a&gt; - online mind maps (also see&amp;nbsp;&lt;a href=&quot;http://www.tripwiremagazine.com/2011/06/online-mind-mapping-and-brainstorming-tools.html&quot;&gt;15 Useful Online Mind Mapping and Brainstorming Tools&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.tldrlegal.com/license/gnu-lesser-general-public-license-v3-(lgpl-3.0)&quot; target=&quot;_blank&quot;&gt;TLDR Legal&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description><link>http://java-thinking.blogspot.com/2013/03/week-in-review-2013-12.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-9017358316464145657</guid><pubDate>Mon, 18 Mar 2013 04:49:00 +0000</pubDate><atom:updated>2013-03-18T15:49:18.302+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">podcast</category><category domain="http://www.blogger.com/atom/ns#">rss</category><title>Living without Google Reader and Listen</title><description>&lt;br /&gt;
Since I got my Android phone, I&#39;ve been using Google Listen to listen
 to podcasts. I really liked this solution since adding another podcast 
to my collection was as simple as adding it to my &#39;Listen subscriptions&#39;
 folder in Google Reader. All from within my browser, all at the click 
of a button. Awesome.&lt;br /&gt;
&lt;br /&gt;
Listen may not have been the best
 podcast player - it didn&#39;t let you speed the playback up and didn&#39;t 
have a sleep timer. But it was simple and worked. Pity it was &lt;a href=&quot;http://www.androidcentral.com/google-listen-officially-dead&quot; target=&quot;_blank&quot;&gt;discontinued&lt;/a&gt; last year.&lt;br /&gt;
&lt;br /&gt;
Now &lt;a href=&quot;http://lifehacker.com/5990456/google-reader-is-getting-shut-down-here-are-the-best-alternatives&quot; target=&quot;_blank&quot;&gt;Reader is on its way out&lt;/a&gt; I&#39;ve had to find a new solution to consume my podcasts. And I&#39;ve found it in &lt;a href=&quot;https://play.google.com/store/apps/details?id=au.com.shiftyjelly.pocketcasts&quot; target=&quot;_blank&quot;&gt;Pocket Casts&lt;/a&gt;.
 This does allow you to speed up playback and set a sleep timer - 
something particularly useful since I&#39;ve found podcasts distract me so 
much I can fall asleep very quickly. I&#39;ve imported my Reader OMPL file 
by doing the following:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Read how to export Google Reader feeds here &lt;a href=&quot;http://lifehacker.com/5990456/google-reader-is-getting-shut-down-here-are-the-best-alternatives&quot;&gt;http://lifehacker.com/5990456/google-reader-is-getting-shut-down-here-are-the-best-alternatives&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Now email the subscriptions.xml file to yourself&lt;/li&gt;
&lt;li&gt;Open the email on your phone and save the subscriptions.xml 
attachment to your phone - if you are using Gmail you might need to use 
something like &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.poofinc.gmailattach&quot;&gt;GMail Attachment Download&lt;/a&gt; to save the attachment&lt;/li&gt;
&lt;li&gt;Use a file manager like &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.estrongs.android.pop&quot;&gt;ES File Explorer&lt;/a&gt; to move the file into the /PocketCasts/opml_import directory&lt;/li&gt;
&lt;li&gt;Go to Pocket Casts settings and select the Import &amp;amp; Export 
option, then click on the &#39;Import OPML file&#39; option and let it do its 
stuff.&lt;/li&gt;
&lt;/ol&gt;
I really would like it if they had a web interface where I could
 add and manage subscriptions as easily as I did with Reader - hopefully
 they&#39;ll get there.&lt;br /&gt;
&lt;br /&gt;
To get the subscribed podcasts to 
automatically download, I had to create a playlist, containing All 
Podcasts, with &#39;Auto Download&#39; and &#39;Only on WiFi&#39; selected.&lt;br /&gt;
&lt;br /&gt;
For RSS consumption, I&#39;m trying &lt;a href=&quot;http://www.feedly.com/&quot; target=&quot;_blank&quot;&gt;Feedly&lt;/a&gt; - so far I&#39;m impressed by the presentation and its across all of the platforms - web, Android and IOS.&lt;br /&gt;
</description><link>http://java-thinking.blogspot.com/2013/03/living-without-google-reader-and-listen.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-3997989381071765554</guid><pubDate>Sat, 16 Mar 2013 10:21:00 +0000</pubDate><atom:updated>2013-03-17T15:05:44.888+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogger</category><category domain="http://www.blogger.com/atom/ns#">error</category><category domain="http://www.blogger.com/atom/ns#">wordpress</category><title>Fixing my server 500 errors</title><description>I&#39;m slowly working through my broken pages - which were broken during the conversion from WordPress to Blogger. I can see in Google Web Master tools I&#39;ve still got 22 server 500 errors left. There must have been more like 50 to start with. Its a slow painful process of copying the content from the broken post to a new post. I suspect it may be caused by the original WordPress post having comments - something the Wordpress2Blogger script must not be able to handle and therefore creates an corrupted post. Interestingly, the contents of the post are still viewable via the monthly archive page, but viewing the individual post errors - presumably as it tries to render the comments. If I had time, I&#39;d go look at my WordPress database to confirm this theory but all of my time is being taken with fixing the errors. I cannot recommend using the Wordpress2Blogger script, I&#39;m feeling a lot of pain and I had no help from Blogger support or groups.</description><link>http://java-thinking.blogspot.com/2013/03/fixing-my-server-500-errors.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-4069905900316570237</guid><pubDate>Wed, 13 Mar 2013 23:12:00 +0000</pubDate><atom:updated>2013-03-14T10:12:13.637+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">jobs</category><category domain="http://www.blogger.com/atom/ns#">Week in Review</category><title>Week in Review - 2013-11</title><description>&lt;h4&gt;
Job interview testing&lt;/h4&gt;
While job hunting, I&#39;ve come across one company that seems to have a very good filtering process. First off, you get a series of technical questions which are obviously aimed at finding out how you think or how much you know about technologies applicable to the&amp;nbsp;organisation. I&#39;m sure these questions have been custom written for their environment - which does to some extent convey some information about the potential role. If you pass that, you get an online 2 question &lt;a href=&quot;http://codility.com/&quot; target=&quot;_blank&quot;&gt;Codility&lt;/a&gt; test which you have exactly an hour to complete. This is where you actually write code and can verify it compiles and produces the right answers. If you haven&#39;t seen Codility before, have a look - as a programmer you can even complete tests to get a &#39;certificate&#39; you can put on your resume.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Job hunting sites&lt;/h4&gt;
Some interesting sites when job hunting:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.glassdoor.com/&quot; target=&quot;_blank&quot;&gt;http://www.glassdoor.com/&lt;/a&gt; Information about company salaries&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.snipey.com.au/&quot; target=&quot;_blank&quot;&gt;http://www.snipey.com.au/&lt;/a&gt; Find jobs advertised by companies or recruiters&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
LinkedIn group contributions&lt;/h4&gt;
I enjoy&amp;nbsp;participating&amp;nbsp;in the groups on LinkedIn, but does anyone know how you can view all of your contributions? Seems to me once you&#39;ve commented, its up to luck if you can ever find it again. If I&#39;m going to continue, I&#39;ll have to print the discussion to PDF so I can remember what I&#39;ve written. Contributions I&#39;ve made in the past (couple of years ago) seem to have gone, maybe these were part of the &lt;a href=&quot;http://www.linkedin-makeover.com/2013/01/21/linkedin-answers-alternatives/&quot; target=&quot;_blank&quot;&gt;discontinued LinkedIn Answers&lt;/a&gt;... I think linked in is missing an opportunity here, I&#39;d like my contributions to be easily found on my profile by potential employers and my network - similar to &lt;a href=&quot;http://stackoverflow.com/users/20242/prule&quot; target=&quot;_blank&quot;&gt;my StackOverflow profile&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.quora.com/Internet-Explorer/How-did-IE-get-to-be-so-bad-relative-to-Chrome-Safari-Firefox&quot; target=&quot;_blank&quot;&gt;How did IE get to be so bad (relative to Chrome, Safari, Firefox)?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://martinvalasek.com/blog/pictures-from-a-developers-life&quot; target=&quot;_blank&quot;&gt;Pictures from a developers life&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.droptask.com/&quot; target=&quot;_blank&quot;&gt;DropTask&lt;/a&gt; - Visual task management for individuals and teams&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
</description><link>http://java-thinking.blogspot.com/2013/03/week-in-review-2013-11.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-4960696738743641308</guid><pubDate>Fri, 08 Mar 2013 00:24:00 +0000</pubDate><atom:updated>2013-03-08T11:24:58.401+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">digitaltv</category><category domain="http://www.blogger.com/atom/ns#">griffon</category><category domain="http://www.blogger.com/atom/ns#">javafx</category><category domain="http://www.blogger.com/atom/ns#">Linux</category><category domain="http://www.blogger.com/atom/ns#">optus</category><category domain="http://www.blogger.com/atom/ns#">Week in Review</category><title>Week in Review - 2013-10</title><description>&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;An Optus representative came knocking the other week, and explained that by having an Optus home phone, broadband and mobile phone (which I have), I&#39;d qualify for a 25% discount and free &lt;a href=&quot;https://www.optus.com.au/shop/broadband/bundles/optustv/fetch&quot; target=&quot;_blank&quot;&gt;Fetch TV&lt;/a&gt;. Now, this is all GOOD. I had to upgrade my mobile plan from $29 to $30 (for which they wanted a $100 plan change fee), but hopefully my next bill will be 25% smaller (down from $80ish to $60ish). And, I&#39;m currently enjoying the Fetch TV experience. This set-top box has a 1T hard disk, and a pretty good interface for navigating the recordings and (free albeit old) IPTV movies. I&#39;m not saying its the best, but it does have me considering turning off the MythTV media center since it takes care of recording terrestrial TV (but I would need a DNLA alternative or similar for watching audio/video/dvds - maybe a NAS? or XBMC?). See &lt;a href=&quot;https://www.optus.com.au/shop/broadband/bundles/85&quot;&gt;https://www.optus.com.au/shop/broadband/bundles/85&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;An interesting point to note, now that I have FetchTV I can rent and stream movies for approx $6.50 - the price it used to cost to rent a new release DVD. However, the local video shop now has $1 Tuesdays - so, even though the convenience of streaming is AWESOME, $1 is even more so.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;I&#39;m working with Griffon on a JavaFX application, and I&#39;ve been having a bunch of strange, almost random problems. I finally thought I should find out what version of JavaFX I&#39;m using - turns out if was&amp;nbsp;javafx.runtime.version: 2.2.1-ea-b02 - not the latest! I&#39;m running jdk-1.7.0_07, so now I&#39;ve &lt;a href=&quot;http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html&quot; target=&quot;_blank&quot;&gt;downloaded the latest&lt;/a&gt; jdk-1.7.0_15, and now I have&amp;nbsp;javafx.runtime.version: 2.2.7-b01. To find out what version you have, use&amp;nbsp;System.getProperties().get(&quot;javafx.runtime.version&quot;). So far I&#39;ve found figuring out JavaFX with Griffon quite tedious and I&#39;m considering switching my Griffon app to Swing.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;While I&#39;ve working with Griffon and JavaFX, I&#39;ve found the following resources very useful:&lt;br /&gt;&lt;a href=&quot;http://svn.codehaus.org/gmod/groovyfx/trunk/groovyfx/src/demo/groovy/&quot; target=&quot;_blank&quot;&gt;GroovyFX demo source code&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://docs.oracle.com/javafx/2/api/index.html&quot; target=&quot;_blank&quot;&gt;JavaFX API&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html&quot; target=&quot;_blank&quot;&gt;JavaFX CSS Reference&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://stackoverflow.com/questions/tagged/griffon&quot; target=&quot;_blank&quot;&gt;Stackoverflow Griffon questions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;It turns out there is a simple way to find out what packages are included in an Ubuntu distribution &amp;nbsp;that doesn&#39;t even require you to be running Ubuntu (i.e. via web browser) - simply point your browser at&amp;nbsp;&lt;a href=&quot;http://packages.ubuntu.com/quantal/all/allpackages&quot;&gt;http://packages.ubuntu.com/quantal/all/allpackages&lt;/a&gt;&amp;nbsp;for a full list (looong page) of Ubuntu 12.10 packages. For other releases, just go to&amp;nbsp;http://packages.ubuntu.com/ and pick the version - this will show you package groupings, but at the bottom of the page you&#39;ll see a link to &#39;All packages&#39; and a &#39;compact compressed textlist&#39;. This makes it real easy to find out - say - what version of Jetty is included.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
</description><link>http://java-thinking.blogspot.com/2013/03/week-in-review-2013-10.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-1511814015589418856</guid><pubDate>Tue, 05 Mar 2013 03:35:00 +0000</pubDate><atom:updated>2013-03-05T14:38:46.267+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hosting</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">jetty</category><category domain="http://www.blogger.com/atom/ns#">Linux</category><category domain="http://www.blogger.com/atom/ns#">vps</category><title>Java on a $5 per month server from Digital Ocean</title><description>I just recently came across &lt;a href=&quot;https://www.digitalocean.com/&quot; target=&quot;_blank&quot;&gt;Digital Ocean&lt;/a&gt; - &quot;Simple Cloud Hosting&quot;. I was impressed by the pricing, much cheaper than my current VPS solution so I&#39;ve set up an Ubuntu 12.10 server with 512MB, 20GB SSD, for $5 USD per month. Since I&#39;ve moved almost everything to Google (from self hosted WordPress to Blogger and Google Docs) the only thing I really need a VPS for is to run my Java applications (there still is the option to use AppEngine with &lt;a href=&quot;http://www.playframework.com/documentation/1.2.5/home&quot; target=&quot;_blank&quot;&gt;Play 1.2.x&lt;/a&gt; if it makes sense to use DataStore).&lt;br /&gt;
&lt;br /&gt;
But for $5 a month, this means I can use &lt;a href=&quot;http://grails.org/&quot; target=&quot;_blank&quot;&gt;Grails&lt;/a&gt; or &lt;a href=&quot;http://www.playframework.com/&quot; target=&quot;_blank&quot;&gt;Play&lt;/a&gt; with a relational database - if it performs well enough.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Setting up a server with Digital Ocean really is simple. Once you&#39;ve signed up (check their &lt;a href=&quot;https://twitter.com/digitalocean&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt; posts for a coupon) and added a credit card, your server can be running in minutes. I chose Ubuntu 12.10, and then they have nice and clear instructions on what to do next to secure it:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.digitalocean.com/community/articles/initial-server-setup-with-ubuntu-12-04&quot; target=&quot;_blank&quot;&gt;Initial Server Setup with Ubuntu 12.04&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.digitalocean.com/community/articles/how-to-set-up-a-firewall-using-ip-tables-on-ubuntu-12-04&quot; target=&quot;_blank&quot;&gt;How to Set Up a Firewall Using IP Tables on Ubuntu 12.04&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Now, a couple of other things I did to get the server up to date and install Jetty8:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;sudo apt-get update&lt;/li&gt;
&lt;li&gt;sudo apt-get upgrade&lt;/li&gt;
&lt;li&gt;sudo apt-get install&amp;nbsp;openjdk-7-jre-headless&lt;/li&gt;
&lt;li&gt;sudo apt-get install jetty8&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
To get jetty to start, you&#39;ve got to edit /etc/default/jetty8 and change:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;NO_START=0&lt;/li&gt;
&lt;li&gt;JETTY_HOST=0.0.0.0&lt;/li&gt;
&lt;li&gt;JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/jre/&lt;/li&gt;
&lt;/ul&gt;
You can find the location of Java by using&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;ls -al /etc/alternatives/java&lt;/li&gt;
&lt;/ul&gt;
which should show you the linked path such as&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;lrwxrwxrwx 1 root root 45 Mar &amp;nbsp;5 01:58 /etc/alternatives/java -&amp;gt; /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java&lt;/li&gt;
&lt;/ul&gt;
Now start Jetty with&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;sudo service jetty8 start&lt;/li&gt;
&lt;/ul&gt;
and it should be running on port 8080. I still have to enable it on port 80, but first I&#39;ll see how well my applications run on it and how it goes with memory.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&#39;top&#39; is currently reporting 188MB free - not much, but to upgrade to 1G is only going to cost $10p/m - I&#39;ll just have to see how well the applications run...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;top - 03:27:04 up &amp;nbsp;1:29, &amp;nbsp;3 users, &amp;nbsp;load average: 0.00, 0.01, 0.04&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Tasks: &amp;nbsp;67 total, &amp;nbsp; 1 running, &amp;nbsp;66 sleeping, &amp;nbsp; 0 stopped, &amp;nbsp; 0 zombie&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;%Cpu(s): &amp;nbsp;0.0 us, &amp;nbsp;0.3 sy, &amp;nbsp;0.0 ni, 99.7 id, &amp;nbsp;0.0 wa, &amp;nbsp;0.0 hi, &amp;nbsp;0.0 si, &amp;nbsp;0.0 st&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;KiB Mem: &amp;nbsp; &amp;nbsp;&lt;b&gt;508396 total&lt;/b&gt;, &amp;nbsp; 319948 used, &amp;nbsp; &lt;b&gt;188448 free&lt;/b&gt;, &amp;nbsp; &amp;nbsp;16688 buffers&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;KiB Swap: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 total, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 used, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 free, &amp;nbsp; 250652 cached&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;(In the past I&#39;ve usually used Apache in front of Tomcat, but since I don&#39;t need all that flexibility any more, I&#39;m trying to simplify my setup and make the best use of my memory)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
</description><link>http://java-thinking.blogspot.com/2013/03/java-on-5-per-month-server-from-digital.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-2652990263686373425</guid><pubDate>Sat, 02 Mar 2013 10:51:00 +0000</pubDate><atom:updated>2013-03-05T11:27:18.004+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">griffon</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>Integration testing Griffon services</title><description>I wanted to create an integration test for some Griffon services - where I wanted to set up some data first, then check that the service produced the appropriate results. Therefore, I wanted the database working normally, but I needed access to a configured Griffon application and the required services.&lt;br /&gt;
&lt;br /&gt;
My issue was how to get hold of the services? They don&#39;t automatically get injected as I first expected. But luckily, &lt;a href=&quot;http://stackoverflow.com/questions/14927486/griffon-integration-tests-with-jpa&quot; target=&quot;_blank&quot;&gt;StackOverflow and&amp;nbsp;Andres&lt;/a&gt; to the rescue:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/prule/5070470.js&quot;&gt;&lt;/script&gt;</description><link>http://java-thinking.blogspot.com/2013/03/integration-testing-griffon-services.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-8112335650162070191</guid><pubDate>Thu, 28 Feb 2013 23:50:00 +0000</pubDate><atom:updated>2013-03-01T10:50:29.258+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">griffon</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><title>Griffon - restricting a textfield to numbers</title><description>With my latest Griffon+JavaFX application,&amp;nbsp;I wasn&#39;t having any luck &lt;a href=&quot;http://stackoverflow.com/questions/15047727/binding-a-textfield-to-a-number-with-griffon-and-javafx&quot; target=&quot;_blank&quot;&gt;binding a textfield to a &#39;float&#39;&lt;/a&gt; property in my model. So to work around it temporarily, I&#39;ve added a change listener which will veto any input that isn&#39;t a number.&lt;br /&gt;
&lt;br /&gt;
This example is basically using a very Java centric approach:
&lt;script src=&quot;https://gist.github.com/prule/5061089.js&quot;&gt;&lt;/script&gt;

Now, we can simplify this by using the Groovy way:
&lt;script src=&quot;https://gist.github.com/prule/5061107.js&quot;&gt;&lt;/script&gt;

See &lt;a href=&quot;http://groovy.codehaus.org/Groovy+way+to+implement+interfaces&quot;&gt;Groovy way to implement interfaces&lt;/a&gt; to understand how this is implementing the interface.
&lt;br/&gt;&lt;br/&gt;
If we want to have several text fields using the same logic, we can define the closure in the Controller and reference that in many places:
&lt;script src=&quot;https://gist.github.com/prule/5061164.js&quot;&gt;&lt;/script&gt;

Still, this is not optimal since I have to use Strings instead of Floats in my model - but it does let me continue with whats important right now. Hopefully the binding bug can be fixed soon.</description><link>http://java-thinking.blogspot.com/2013/03/griffon-restricting-textfield-to-numbers.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1073774700575250720.post-8222751880729387341</guid><pubDate>Wed, 27 Feb 2013 09:43:00 +0000</pubDate><atom:updated>2013-02-27T20:45:28.419+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Week in Review</category><title>Week in Review - 2013-09</title><description>&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I came across &lt;a href=&quot;http://www.backbox.org/&quot; target=&quot;_blank&quot;&gt;BackBox&lt;/a&gt; Linux - although it&#39;s not my area of expertise, I always find different distributions of Linux interesting. On the website it is described as follows:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;&lt;i&gt;&quot;BackBox is a Linux distribution based on Ubuntu. It has been developed to perform penetration tests and security assessments. Designed to be fast, easy to use and provide a minimal yet complete desktop environment, thanks to its own software repositories, always being updated to the latest stable version of the most used and best known ethical hacking tools.&quot;&lt;/i&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;I love listening to podcasts, and &lt;a href=&quot;http://www.shiftyjelly.com/android/pocketcasts&quot; target=&quot;_blank&quot;&gt;PocketCasts&lt;/a&gt; is an Android podcatcher that looks great! It supports variable speed playback, which if you haven&#39;t realised, you can easily play some podcasts at up to 1.5x without missing anything. Not sure if it does pitch correction to compensate, but I&#39;ll have to try it out.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;I have to admit to being a big Google+ fan. Whenever I scroll down my stream, I just find HEAPS of very cool interesting stuff. This is mostly because I found some circles (of scientists, photographers etc) that were shared by other people and now I&#39;m following a bunch of interesting people. Too many to keep up with, but whenever I go look at Google+, I&#39;ve got to time-box it.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;I&#39;ve also got to admit to loving the &lt;a href=&quot;http://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles&quot; target=&quot;_blank&quot;&gt;FireFox profile manager&lt;/a&gt;. This easily lets me fire up a browser that is isolated from other profile settings - useful if someone (family members, friends) wants to quickly do something on your computer. I normally use chrome for all my day to day activities, but to test things out as someone who is not logged in as me, or to let my wife check her email or&amp;nbsp;Facebook&amp;nbsp;account, I&#39;ll bring up FireFox which has profiles set up for these things. This can also be very useful at work, instead of clearing your cache or using &lt;a href=&quot;http://support.google.com/chrome/bin/answer.py?hl=en&amp;amp;answer=95464&quot; target=&quot;_blank&quot;&gt;incognito&lt;/a&gt; (another good alternative if you don&#39;t want history/settings to be persisted).&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;I tried writing a &lt;a href=&quot;http://developer.chrome.com/apps/about_apps.html&quot; target=&quot;_blank&quot;&gt;Chrome app&lt;/a&gt; a few months ago, but ultimately it didn&#39;t quite have the access to the local system that I needed to make my application effective. This paradigm is VERY interesting to me though, and if the restrictions were loosened up somewhat, then this could be an extremely effective platform (it already is, but I just need an app that suits).&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://java-thinking.blogspot.com/2013/02/week-in-review-2013-09.html</link><author>noreply@blogger.com (Unknown)</author></item></channel></rss>