<?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-19278217</id><updated>2011-12-14T18:50:11.118-08:00</updated><title type='text'>.java</title><subtitle type='html'>musings on java and object oriented software development</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19278217.post-1864684604028108072</id><published>2007-08-28T05:35:00.000-07:00</published><updated>2007-08-28T06:01:16.519-07:00</updated><title type='text'>Implicit declaration / short instance creation in Java 7</title><content type='html'>So today I'm reading &lt;a href="http://tech.puredanger.com/java7#shortinstance"&gt;Alex Miller's blog &lt;/a&gt;about proposed features of Java 7. I noticed something he refers to as "Short instance creation" and has a few links to other bloggers&lt;a href="http://blogs.sun.com/jag/entry/scripting_flamewar"&gt;.&lt;/a&gt; I then notice some of the dates on the linked blogs, some in 2006, some in 2007.&lt;br /&gt;&lt;br /&gt;I'm thinking "hang on, didn't I post something, somewhere, about this ages ago?".&lt;br /&gt;&lt;br /&gt;So I googled for "implicit declaration java distiller" and, sure enough, I'd posted to &lt;a href="http://forums.java.net/jive/message.jspa?messageID=999#999"&gt;a Sun forum about new language features &lt;/a&gt;in October 2004. &lt;span style="font-size:130%;"&gt;2004 !&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I'm not suggesting that I was the first to &lt;span style="font-style: italic;"&gt;ever&lt;/span&gt; write this, but way back on October 7 2004 I posted to that forum about the ":=" syntax and got shot down from folks who thought the world would end if such evilness was ever brought into the language. I honestly hadn't seen that syntax or read about the concept anywhere before that, but I'd implemented it in the now defunct project UCL (Universal Class Language) about 5 or 6 years ago.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.sun.com/jag/entry/scripting_flamewar"&gt;&lt;span style="font-weight: bold;"&gt;Even James Gosling is suggesting it !&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;I still think it is good idea.&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;Objectopia.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-1864684604028108072?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/1864684604028108072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=1864684604028108072' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/1864684604028108072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/1864684604028108072'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2007/08/implicit-declaration-in-java-7.html' title='Implicit declaration / short instance creation in Java 7'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-47646570467587107</id><published>2007-08-28T05:13:00.001-07:00</published><updated>2007-08-28T05:29:45.174-07:00</updated><title type='text'>PowerBook narcolepsy - Part II</title><content type='html'>My sincere &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;apologies&lt;/span&gt; to those who have posted comments on this issue and I've not published them. I hadn't received any comments because I think when blogger changed their account management to be part of the Google framework, they forced people to re associate their accounts with the blogs.  In the mean time, no comments go through to my gmail account. I hadn't logged in for a while and only noticed this today.&lt;br /&gt;&lt;br /&gt;Anyway, I've been away from this blog for a while and have been running my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;PBook&lt;/span&gt; for almost 10 months now and it is has not spontaneously caught on fire !&lt;br /&gt;&lt;br /&gt;The rough guide ( this was back in October 2006 so my memory is a little hazy):&lt;br /&gt;&lt;br /&gt;The crucial bit is in the xnu source, in&lt;br /&gt;iokit/Kernel/IOPMrootDomain.cpp look for the "emergency overtemp signal" line.&lt;br /&gt;&lt;div style="direction: ltr;"&gt;&lt;br /&gt;I just commented out the sleepSystem() call, though in theory you could write something better to deal with it.&lt;br /&gt;&lt;br /&gt;You'll need to get : [ this list is probably a little out of date, I'm currently running 10.4.10 but still with the patched kernel ]&lt;br /&gt;&lt;br /&gt;IOKitUser-277.8&lt;br /&gt;Libstreams-24.1&lt;br /&gt;bootstrap-cmds-49&lt;br /&gt;cctools-622.5.1&lt;br /&gt;kext_tools-65.2.1&lt;br /&gt;switch_kernel.sh&lt;br /&gt;xnu-792.12.6&lt;br /&gt;&lt;br /&gt;from the apple opensource site and build the kernel corresponding to&lt;br /&gt;Apples instructions (which may not fully work for you).&lt;br /&gt;&lt;br /&gt;You'll need to tell the boot loader to use the new kernel, so you'll have to do something like this (this differs per system)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;nvram boot-file="pci2/ata-6@D/@0:3,mach_kernel_10_4_8"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;reboot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;You can get this figure by typing&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;nvram boot-device&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family: times new roman;"&gt;and using the bit before the comma, e.g. mine says&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;pci2/ata-6@D/@0:3&lt;/span&gt;,\\:tbxi&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;----------&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Objectopia&lt;/span&gt;.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-47646570467587107?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/47646570467587107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=47646570467587107' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/47646570467587107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/47646570467587107'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2007/08/powerbook-narcolepsy-part-ii.html' title='PowerBook narcolepsy - Part II'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-116127608918811875</id><published>2006-10-19T09:13:00.000-07:00</published><updated>2007-04-10T14:12:44.193-07:00</updated><title type='text'>PowerBook narcolepsy issue hack</title><content type='html'>A few months ago, when doing some photo editing, I noticed that my 1-year-old PowerBook G4 1.67 was a bit sluggish. So I had a look at the available RAM on the machine and sure enough the maximum RAM reported was 512MB, rather than the 1GB that I had installed. I had a look at the memory slots in the System Profiler and one of the memory banks indicated that it was empty.&lt;br /&gt;&lt;br /&gt;After a bit of research I found that this was a fairly common problem and Apple were repairing the problem free of charge. So I sent it to a local shop and got it fixed. ( The fix, it turns out, is to replace the Logic Board).&lt;br /&gt;&lt;br /&gt;About a week later, my laptop suddenly went to sleep with out warning. It would wake, when you hit the keys, then go back to sleep soon after. Eventually the only way to get it awake was to pull out the battery and power cord. After this cold reboot (which was irritating because you had to reset the clock all the time), it would work fine for an hour or so then the pattern would repeat it self.&lt;br /&gt;&lt;br /&gt;I searched about the issue and found that it is a problem with the Trackpad temperature sensor on the PowerBook. The sensor would sporadically display 100+ degrees C, causing the system to think it will melt if it doesn't shut down. The system.log will show a message "Power Management received emergency overtemp signal." prior to it going to sleep.&lt;br /&gt;&lt;br /&gt;Very frusted, I searched on the net and tried various remedies which involved removing Kernel Extensions that monitor the temperature of the trackpad. I don't think these extensions actually stop anything, just allow third-party apps to read the temperature sensors, because the fixes didn't make any difference.&lt;br /&gt;&lt;br /&gt;After trying all of the fixes, I thought I'd take matters into my own hands (a hardware repair was out of the question because the laptop is out of warranty), so I downloaded the mach kernel source, found the block of code that sleeps after displaying the "emergency overtemp signal" message and commented it out. After rebuilding the kernel, I pointed Open Firmware to the new kernel and rebooted.&lt;br /&gt;&lt;br /&gt;I wouldn't recommend anybody doing this because it is potentially very dangerous!. You might ignore real overtemp signals, your PowerBook could catch on fire!&lt;br /&gt;&lt;br /&gt;Several minutes after the restart I got the dreaded "emergency overtemp signal" message twice within seconds of each other, while watching the temperature of the trackpad with the very handy app "Temperature Monitor". Because I had commented out the sleep code, the system did not sleep. The temperature of the trackpad temporarily went to 102.5 C, then back to a cool 37 C.&lt;br /&gt;&lt;br /&gt;Problem solved ! In future I will change the code so that it is safer, i.e. keep a history of the fluctuation so that random 100+ degress C temperatures can be put in some perspective and only ignoring overtemp signals coming from the Trackpad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-116127608918811875?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/116127608918811875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=116127608918811875' title='46 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/116127608918811875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/116127608918811875'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2006/10/powerbook-narcolepsy-issue-hack.html' title='PowerBook narcolepsy issue hack'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>46</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-115824915431974337</id><published>2006-09-14T08:31:00.000-07:00</published><updated>2006-09-14T10:24:07.743-07:00</updated><title type='text'>Taxophobia: the fear of class-ification</title><content type='html'>My workplace is being overrun by taxophobics or classphobics - those who believe it to be expensive to create new classes, they fear refactoring and would rather stick all their methods in one, gigantic, manager class.&lt;br /&gt;&lt;br /&gt;A taxophobic would rather have a single class with 5 similar sounding methods than 5 classes sharing a common interface with one method in it.&lt;br /&gt;&lt;br /&gt;A taxophobic believes that there is some inherit cost in creating new files; they're self appointed byte-conservationists.&lt;br /&gt;&lt;br /&gt;Taxophobics will try to convince you of their infantile designs based on an argument of "pragmatism". "Refactoring" is a dirty word. They love static methods and they hate unit-testing.&lt;br /&gt;&lt;br /&gt;I've been facing an uphill battle trying to convince these people that that doing something like this : &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;           Validator.validateX();&lt;br /&gt;           Validator.validateY();&lt;br /&gt;           Validator.validateZ();&lt;br /&gt;           Validator.validate....();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;would be much better replaced with something more generic : &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;          for(Validator v : validators){&lt;br /&gt;              v.validate();&lt;br /&gt;          }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;But you know what ? I realised that you &lt;i&gt;can't&lt;/i&gt; argue with these people because they have no sense of style. They've got no hope either because you can't be taught style. &lt;br /&gt;&lt;br /&gt;My belief is that you can't have style forced on you, you've got to come to your own enlightenment, your own epiphany, though I hope I'm wrong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-115824915431974337?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/115824915431974337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=115824915431974337' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/115824915431974337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/115824915431974337'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2006/09/taxophobia-fear-of-class-ification.html' title='Taxophobia: the fear of class-ification'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-115813953008108440</id><published>2006-09-13T01:59:00.000-07:00</published><updated>2006-09-14T01:44:06.930-07:00</updated><title type='text'>Apple pricing anomaly</title><content type='html'>I'm living in London at the moment and I'm considering a trip to New York for some christmas shopping. I want to buy a SLR lens for my Nikon plus some Christmas presents for myself/wife and others.&lt;br /&gt;&lt;br /&gt;I've got 3 Apple things on my shopping list. A 80gb iPod and iMac 24" for myself and a 15" MacBook Pro for my mother who lives in Australia.&lt;br /&gt;&lt;br /&gt;So I did some pricing comparisons between the 3, taking into account current exchange rates, £/$US of 1.87 plus NYC sales tax of 8.375%  and  £/$AU of 2.49.&lt;br /&gt;&lt;br /&gt;Below is a table, all prices are converted to £ sterling :&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;th&gt;&amp;nbsp;&lt;/th&gt;&lt;th&gt;US&lt;/th&gt;&lt;th&gt;UK&lt;/th&gt;&lt;th&gt;AU&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;80gb ipod&lt;/td&gt;&lt;td&gt;202&lt;/td&gt;&lt;td&gt;&lt;b&gt;259&lt;/b&gt;&lt;/td&gt;&lt;td&gt;200&lt;/td&gt;&lt;tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;mbp 2.16 1gb&lt;/td&gt;&lt;td&gt;1448&lt;/td&gt;&lt;td&gt;1699&lt;/td&gt;&lt;td&gt;1606&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;mbp 2.0 0.5 gb&lt;/td&gt;&lt;td&gt;1158&lt;/td&gt;&lt;td&gt;1399&lt;/td&gt;&lt;td&gt;1284&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;24" iMac 2.16 1gb 250gb&lt;/td&gt;&lt;td&gt;158&lt;/td&gt;&lt;td&gt;1349&lt;/td&gt;&lt;td&gt;1204&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;pimped 24" iMac 2.33 *&lt;/td&gt;&lt;td&gt;1633&lt;/td&gt;&lt;td&gt;1899&lt;/td&gt;&lt;td&gt;1718&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;(* 2.33Ghz, 2GB RAM, 500GB HDD, 256MB graphics, Wireless keyboard / mouse )&lt;br /&gt;&lt;br /&gt;Two things stood out above. Firstly the UK iPod is almost 30% more expensive than US or AU cost. Secondly, yes it is cheaper to buy in the US compared to Australia, but it isn't as much as I had thought ( around 10% ). (Why it would be 10% is another matter since Australia is a very close to Thailand or Shanghai where some products Apple are assembled).&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;Objectopia.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-115813953008108440?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/115813953008108440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=115813953008108440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/115813953008108440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/115813953008108440'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2006/09/apple-pricing-anomaly.html' title='Apple pricing anomaly'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-115165650537933344</id><published>2006-06-30T01:12:00.000-07:00</published><updated>2006-06-30T01:37:28.276-07:00</updated><title type='text'>How is your Google-print ?</title><content type='html'>When I meet somebody new at work, I often google them to get a feel for their "google-print" (I think I just made this term up!), their online presence.&lt;br /&gt;&lt;br /&gt;How well they "score" depends on a lot of things. Having a common name obviously doesn't help. Posting on mailing lists makes a big difference. Sharing a name with somebody famous is not going help your cause. People involved in IT have a bit of advantage because they will often post to mailing-lists/news groups.&lt;br /&gt;&lt;br /&gt;Being a bit vain, I occasionally google my self to see how I'm scoring. I used to be about more than 70% of the first 3 pages, but this has gone down recently. I suspect Google has tweaked their algorithms for removing duplicate identities from these sorts of searches.&lt;br /&gt;&lt;br /&gt;So, I'm possibly doing some contract work with somebody who, according to the company website, seems to have a really impressive CV. So I google him and don't come up with much at all. Is it because he has a common name (not really) or is it because he doesn't "get out" on the 'net much ?&lt;br /&gt;&lt;br /&gt;Proceed with caution I suspect !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-115165650537933344?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/115165650537933344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=115165650537933344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/115165650537933344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/115165650537933344'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2006/06/how-is-your-google-print.html' title='How is your Google-print ?'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-114863312532356361</id><published>2006-05-26T00:49:00.000-07:00</published><updated>2006-06-30T01:48:36.860-07:00</updated><title type='text'>Choice is not the problem with Java</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Much has been said recently in the Java world about the problems with Java, particularly &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;the problem with choice.&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=40611"&gt;Java Succumbing to .NET in my Organization&lt;/a&gt; &lt;/span&gt;          Neil Chaudhuri         says that there are two many frameworks, too many IDEs, too many app servers etc. and that is why his organization is moving to .NET.  According to Neil choice is a bad thing.&lt;br /&gt;&lt;br /&gt;His answer, at least to the IDE "problem", is more standardization, but I believe the source of the standard must come from something that already works, a de-facto standard not a committee standard.&lt;br /&gt;&lt;br /&gt;The problem with Java is not choice, but rather that the early standards were created by committee and Sun's "Not invented here" mentality.&lt;br /&gt;&lt;br /&gt;Take, for example,  EJB.&lt;br /&gt;&lt;br /&gt;EJB 1.0/.1 was a fairly pitiful effort. Just horrid, like they gave the job of designing it to an intern. All sorts of (anti-)patterns were born out of 1.1.&lt;br /&gt;&lt;br /&gt;EJB 2.0 is a classic example of something born from committee. It mostly did what you wanted to do, but the extra 10% was hard and messy. It promised so much, yet did not deliver and people turned to alternate persistence mechanisms such as Hibernate.&lt;br /&gt;&lt;br /&gt;Now with EJB 3.0, Sun has done the right thing; taken something (Hibernate) that works, that people like and makes them productive and turned it into a standard. Yet, they still try to re-invent the wheel with respect to Dependency Injection.&lt;br /&gt;&lt;br /&gt;Another example of this is JSF. They formed a committee to define a new web framework, cocked it up and now are already up to 1.2 of the specification. (It probably didn't help that they had the creator of the worst web framework of all, Struts, on the committee).&lt;br /&gt;Why couldn't they have taken something like Tapestry and made it a standard ?&lt;br /&gt;&lt;br /&gt;The underlying problem is that Sun have had a real "Not invented here" mentality. They realised a while ago that they couldn't implement anything that was usable (e.g. AWT, then early Swing) so that they started going specification mad. Yet they failed to realise that writing specifications is really hard, harder in fact than writing an implementation.&lt;br /&gt;&lt;br /&gt;What should they have been doing all along ? Adopting open-source projects that are de-facto standards and making them into official standards.&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;Objectopia.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-114863312532356361?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/114863312532356361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=114863312532356361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/114863312532356361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/114863312532356361'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2006/05/choice-is-not-problem-with-java.html' title='Choice is not the problem with Java'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-114854653259452919</id><published>2006-05-25T01:07:00.000-07:00</published><updated>2006-09-14T09:01:10.503-07:00</updated><title type='text'>Google Web Toolkit Angst</title><content type='html'>I've been using Google Web Toolkit for the last week or so. I'm really liking it, it is really productive and once you getting it working everything is sweet.&lt;br /&gt;&lt;br /&gt;The problem is, getting it working is kinda hard, particularly if you want to use Eclipse. I struggled for a day or so to create my own project from scratch but gave up and just copied the DynaTable example and changed a few things. All this is because GWT has these unwritten conventions for stuff that is almost impossible to figure out without days of trial and error.&lt;br /&gt;&lt;br /&gt;GWT tries to be all Rails like with "Convention over configuration", which is fine, if you can find out what the convention is.&lt;br /&gt;&lt;br /&gt;Another thing that is annoying is the self-righteousness of the tools :&lt;br /&gt;&lt;code&gt;&lt;br /&gt;c:\dev\gwt-windows-1.0.20&gt;junitCreator -junit c:\dev\eclipse\plugins\org.junit_3.8.1\junit.jar -eclipse project -out c:\dev\workspace\project com.xyz.project.DataImportViewTest 'com.xyz.project.DataImportViewTest': Please use 'test' as the final package, as in 'com.example.foo.test.MyTest'. It isn't technically necessary, but this tool enforces the best practice.&lt;br /&gt;Google Web Toolkit 1.0.20&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Whose best practice are they referring to? I hate the term "Best Practice" - it implies that the currently accepted best way of doing something is the final say on the topic, so don't even bother trying to think of something better. It is arrogant and is like saying "trust us, we are bigger and better than you, go away and leave the real thinking to us".&lt;br /&gt;&lt;br /&gt;Anyway, I had thought that this ".test" package style had gone out of favour a long time ago, but it doesn't matter really whether it is best practice or not, what is with the arbitrary conventions ?&lt;br /&gt;&lt;br /&gt;I'm sure (and  hope) , over time Google will listen to the criticism and make GWT better. It is  very good at the moment, but I think it is probably only about 95% there. Another 5% with Maven, Eclipse integration and more configuration options (with sensible defaults ) will truly make it rock !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;Objectopia.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-114854653259452919?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/114854653259452919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=114854653259452919' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/114854653259452919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/114854653259452919'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2006/05/google-web-toolkit-angst.html' title='Google Web Toolkit Angst'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-114710113731802358</id><published>2006-05-08T07:55:00.000-07:00</published><updated>2006-05-08T08:12:17.326-07:00</updated><title type='text'>Back into AspectJ</title><content type='html'>I'm getting back into using AspectJ after a long hiatus. AJDT was pretty dodgy at one point so I had to stop using it and without proper IDE support, doing stuff AspectJ is fiddly because I like to get feedback on what exactly is being advised.&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://howardlewisship.com/blog/2006/04/gambling-on-aspectj.html"&gt;Howard Lewis Ship has noted&lt;/a&gt;, AJDT seems to work mostly except that occasionally the "advises" arrow don't reflect what is actually be advised (tends to say that a pointcut isn't being matched when it is).  Like HLS says, a fuild rebuild will usually fix this but this can get a little irritating after a while. I also get the disappearing aspect thingy happening. All these things seem to stem from the AJDT plugin not AspectJ itself. Its getting much better from what it was, I'd say it is in the high 90% complete whearas, late 2005 I guess it was somewhere in the 80%-90% mark.&lt;br /&gt;&lt;br /&gt;I'm always of the opinion that if an open source project has problems, you should never whinge about it, rather find something better or make some sort of contribution so that it can get to where it is useable for you, even if this just means filing a bug report. If you've got the skills then  supplying a patch is a lot better. You can't have your cake and eat it: you're getting something for free, don't expect the developers priorities to be the same as yours.&lt;br /&gt;&lt;br /&gt;Anyway, I'm pleased where AJDT has gotton to. It works (most of the time) and doesn't give throw random NullPointerExceptions everytime you want to do a build. It also seems reasonably snappy on my PowerBook now.&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;Objectopia.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-114710113731802358?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/114710113731802358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=114710113731802358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/114710113731802358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/114710113731802358'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2006/05/back-into-aspectj.html' title='Back into AspectJ'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-113872786463781129</id><published>2006-01-31T08:17:00.000-08:00</published><updated>2006-01-31T09:48:53.243-08:00</updated><title type='text'>Ruby zeolots: why do you hate us so much ?</title><content type='html'>I'm getting so bored of such glaringly obvious flamebait like &lt;a href="http://www.indicthreads.com/content/view/390/0/1/0/"&gt;"Let Java retire from the spotlight of web applications in dignity"&lt;/a&gt;. Really, isn't there something more productive you could be doing with your time than to diss Java developers ?&lt;br /&gt;&lt;br /&gt;Bloggers like this are just adwhores - I mean, after visiting www.indicthreads.com I almost came away with a rash there was so many google adwords occupying every available space and adlinks popuping up at every hover.&lt;br /&gt;&lt;br /&gt;Anyway it seems to be two types of Ruby enthusiast out there:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;the Moderates: these guys like the language, use it as the best tool for whatever job they're doing, understand its strengths and weaknesses and;&lt;/li&gt;   &lt;li&gt;the Zealots: these are the kind of people that who, blindly, at every opportunity go on about Ruby this and Ruby that simply because they like being cutting-edge or think they are 1337.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; Even though I don't know much about it, I'm starting to get into Ruby, especially Nitro &amp;amp; Og 'cause the developers on the mailing lists don't seem to be the Zealot types.&lt;br /&gt;&lt;br /&gt;Zealot types are just a turn off, but I guess that is what their intent is: to keep their little niche exclusive. I've worked with a few over the years and they tend to be the types who don't last that long.&lt;br /&gt;&lt;br /&gt;You've got to be pragmatic not just about programming in a particular language but, but the programming language you choose. For career development its better to develop general software engineering skills than to throw all of your eggs into a particular basket.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-113872786463781129?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/113872786463781129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=113872786463781129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/113872786463781129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/113872786463781129'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2006/01/ruby-zeolots-why-do-you-hate-us-so.html' title='Ruby zeolots: why do you hate us so much ?'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-113679783734647759</id><published>2006-01-09T01:03:00.000-08:00</published><updated>2006-01-09T01:14:50.016-08:00</updated><title type='text'>Tapestry on Slashdot: the troll magnet</title><content type='html'>&lt;a href="http://howardlewisship.com/blog/2006/01/tapestry-on-slashdot.html"&gt;Howard Lewis Ship mentions&lt;/a&gt; that &lt;a href="http://developers.slashdot.org/article.pl?sid=06/01/07/2231246&amp;tid=185&amp;amp;tid=8"&gt;Tapestry has made slashdot&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Makes me laugh how it only takes 3 posts (when viewed on the default threshold) before someone mentions Fortran / C or some other archaic language. Gotta love slashdot and its troll magnet effect.&lt;br /&gt;&lt;br /&gt;Anyway, Tapestry has finally made 4.0 after many months of betas. It must be said, though that Tapestry x.0 releases are generally very stable, unlike lots of other OSS.&lt;br /&gt;&lt;br /&gt;Tapestry 4.0 is a lot easier to learn than previous versions and probably still the best web framework for Java out there, so congrats to all involved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-113679783734647759?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/113679783734647759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=113679783734647759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/113679783734647759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/113679783734647759'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2006/01/tapestry-on-slashdot-troll-magnet.html' title='Tapestry on Slashdot: the troll magnet'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19278217.post-113403816435274248</id><published>2005-12-08T02:35:00.000-08:00</published><updated>2006-06-30T01:54:00.066-07:00</updated><title type='text'>Ruby Array vs. Java List, Human Interface etc.</title><content type='html'>I'm coming into the discussion about &lt;a href="http://martinfowler.com/bliki/HumaneInterface.html"&gt;Martin Fowler's post about Ruby Array vs. Java List &lt;/a&gt;a bit late I guess, and &lt;a href="http://www.cafeaulait.org/oldnews/news2005December6.html"&gt;this&lt;/a&gt; post and &lt;a href="http://www.cafeaulait.org/#news2005December7"&gt;follow up &lt;/a&gt;on Cafe au Lait because I thought it was obvious that the discussion was an irrellevent apples and oranges comparison:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Array is a class, List is an interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Obviously these are seperate concepts, one cannot go adding new methods to an interface without breaking all the implementors of said interface. Also, the burden of implementing a large amount of methods in an interface would be too great.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;A different way&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is a solution however, have an facade class to represent the "human interface" in Fowler's parlance and an &lt;span style="font-family:courier new;"&gt;interface &lt;/span&gt;that represents the raw access to the underlying structure. Most people would only deal with the facade, but implementors of data structures would design to the interface.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;For that to work the List interface would need to be richer, with methods that hint at the most efficient way to traverse the underlying structure (for instance it's not so efficient to randomly access a LinkedList). This is kind of like the &lt;span style="font-family:courier new;"&gt;spi&lt;/span&gt;interfaces in the java.security package.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19278217-113403816435274248?l=dotjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotjava.blogspot.com/feeds/113403816435274248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19278217&amp;postID=113403816435274248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/113403816435274248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19278217/posts/default/113403816435274248'/><link rel='alternate' type='text/html' href='http://dotjava.blogspot.com/2005/12/ruby-array-vs-java-list-human_08.html' title='Ruby Array vs. Java List, Human Interface etc.'/><author><name>Chris Burnley</name><uri>http://www.blogger.com/profile/01841605177332571378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
