tag:blogger.com,1999:blog-23117763556744591322009-07-07T17:07:13.801-07:00Michael's Barrel of MonkeysMichael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comBlogger52125tag:blogger.com,1999:blog-2311776355674459132.post-25269088047748170602009-05-17T18:16:00.000-07:002009-05-28T19:55:50.101-07:00JAOO - Sydney and BrisbaneI was fortunate enough to speak at the JAOO conferences in Sydney and Brisbane recently, my talk is below (thanks to slideshare).<br /><div style="width: 425px; text-align: left;" id="__ss_1449487"><br />JAOO is an impressive conference, with a good (and no doubt expensive) list of international speakers. I highly recommend it, as a "bring the world to you" local conference (next year will be Brisbane and Melbourne I hear) - although the full price is quite an ask in this day and age....<br /><br />Well my thoughts on interesting sessions I went to:<br /><br /><br /><span style="font-weight: bold;">How to build an iPhone app in 45 Mins (<a href="http://jaoo.com.au/sydney-2009/file?path=/jaoo-sydney-2009/slides/PatrickLinskey_HowToBuildAnIPhoneApplicationIn45Minutes.pdf">Patrick Linksey</a>):</span><br />Lots of fun - probably most popular session - a bit of an Objective C intro to those that didn't know it. I was quite enjoying the nuances of it until I realised the bits that were entertaining me was the manual management - I guess after almost 10 years of not worrying about it you forget the bad...<br /><span style="font-weight: bold;">Speeding Ducks (<a href="http://jaoo.com.au/sydney-2009/file?path=/jaoo-sydney-2009/slides/AviBryant_SpeedingDucks.pdf">Avi Bryant</a>):</span><br />Great talk on VM performance - the sydney one turned into a bit of discussion/hand wringing on who would pay for the development of advanced VMs for Ruby... interesting...<br /><br /><span style="font-weight: bold;">Consistency, Storage, and Reliability in the Cloud (Jonas S Karlsson)</span>:<br />Jonas introduced Google's Megastore, which introduces some interesting bits from RDBMS into googles big table storage system - including transactions etc... (its not "ACID" but it does allow things to scale in the way that google needs them to).<br /><br /><span style="font-weight: bold;">Deception and Estimation: How We Fool Ourselves (</span><a style="font-weight: bold;" href="http://jaoo.com.au/sydney-2009/file?path=/jaoo-sydney-2009/slides/LindaRising_DeceptionAndEstimationHowWeFoolOurselves.pdf">Linda Rising</a><span style="font-weight: bold;">):</span><br />This was more a shallow dive into psychology, why we willfully deceive ourselves, and why its probably a good thing... very interesting, and actually a lot of fun to listen to (I got the impression people felt relieved and uplifted by it).<br /><br />Of course <span style="font-weight: bold;">Josh Blocks puzzlers</span> was fun: note to self, don't ever ever use inheritance again if you can at all help it (all the questions are secret as he is doing the presentation I think at JavaOne).<br /><br /><span style="font-weight: bold;">Writing Large Applications in JavaScript (</span><a style="font-weight: bold;" href="http://jaoo.com.au/brisbane-2009/file?path=/jaoo-sydney-2009/slides/DouglasCrockford_WritingLargeApplicationsInJavaScript.pdf">Douglas Crockford</a><span style="font-weight: bold;">):</span><br />Great talk on javascript in general, the the hilarious way it inserts semicolons (a dirty hack even by my low standards !).<br /><br />A picture from the stunning conference centre in Sydney:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_KukQ8TlQMz8/Sh9OgN33CCI/AAAAAAAAAeY/DYeJf1B71z0/s1600-h/IMG_0093.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_KukQ8TlQMz8/Sh9OgN33CCI/AAAAAAAAAeY/DYeJf1B71z0/s320/IMG_0093.jpg" alt="" id="BLOGGER_PHOTO_ID_5341073998471432226" border="0" /></a><br /><br /><br /><br /><br /><a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/michaelneale/jaoo-michael-neale-09?type=powerpoint" title="Jaoo Michael Neale 09">Jaoo Michael Neale 09</a><object style="margin: 0px;" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jaoomichaelneale09-090517190918-phpapp02&stripped_title=jaoo-michael-neale-09"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jaoomichaelneale09-090517190918-phpapp02&stripped_title=jaoo-michael-neale-09" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration: underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration: underline;" href="http://www.slideshare.net/michaelneale">Michael Neale</a>.<br /><br /><br /><br /><br /><br /><br /><br /></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-2526908804774817060?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-81838974964920412902009-03-25T14:46:00.000-07:002009-03-25T15:05:16.217-07:00Single vendor hell - aka "one neck to choke"A colleague lamented the other day about the uber consolidation that is going on with the largest of IT vendors (and has been for some time).<br /><br />I can't help but think its the "IT consumers" who share part of the blame for this: For years, in the late 90's and early 2000's people wanted to have less vendors to deal with, less overlap and "one neck to choke", well, guess what:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_KukQ8TlQMz8/ScqpnqcVWyI/AAAAAAAAAdg/ZHlfnIrkn1A/s1600-h/mission-accomplished.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_KukQ8TlQMz8/ScqpnqcVWyI/AAAAAAAAAdg/ZHlfnIrkn1A/s320/mission-accomplished.jpg" alt="" id="BLOGGER_PHOTO_ID_5317248808937413410" border="0" /></a>It has kind of happened. But this is a terrible terrible thing for IT consumers: who on earth would think that it could work out well for "IT consumers" to have one vendor providing the full stack? Its a testament to the genius of the vendors that the convinced people that a single vendor providing all parts of "the stack" was a good idea and a worthy goal.<br /><br />Choice is a tiring thing to have, but its also a good thing, like exercise.<br /><br />Be careful what you wish for - it might just come true. So IT consumers will now need to be doubly diligent to have a few suppliers in the mix lest the obvious happen to them.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-8183897496492041290?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-49719738179244527562009-02-09T15:04:00.000-08:002009-02-09T15:26:25.722-08:00Back it upBacking up personal data is like flossing, you know you should do it...<br /><br />Personally I use time machine on the macs in the house, on other boxen (linux) I tend to copy/rsync home directories. But in many cases most data I care about is "in the cloud" (so I have washed my hands of responsibility of its safety - now is that a good thing ???).<br /><br />What does interest me though is all the many ways that specific server apps demand they be backed up. Isn't that annoying for operations people? They need to have DBA/specialists for every single app to know how to back it up, each has their own process.<br /><br />This is silly and not sustainable, thankfully modern filesystems can help. When you think about it, it is obvious. A backup really needs to help you out with 2 things: 1) allow you to recover in the event of a disaster of some sort - so you go back as recently as possible and continue processing. and 2) go back to a point in time.<br /><br />File system snapshotting (via <a href="http://blogs.sun.com/timf/entry/zfs_automatic_snapshots_0_8">ZFS</a>, or using virtual machines, whatever) seems good enough for most of this (#2 can be a bit of a problem - you need to keep sensible snapshots frozen in time, and be vigilant to watch out for data corruption inside an app - having versions of data inside an app can help this, but this is then not an IT infrastructure issue, no generic solution can help).<br /><br />Certainly a whole lot less hassle for IT if they can just reset elements of infrastructure back to how they were at a single point in time. Everyone wins.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-4971973817924452756?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-30796718766796113352009-02-04T16:38:00.000-08:002009-02-04T16:55:48.077-08:00Poor mans lambdasA lot of my recent work has been in scala (I try to do any "green fields" work now in scala) so closures/lambdas are very pretty and flow freely in scala.<br /><br />I did however read with interest about "lambda4jdt" a way of making code in java "look like" it is using a real lambda, but only really as a UI trick in eclipse. Interestingly I recall <a href="http://beust.com/weblog/">Cedric Beust</a> talking about this previously (that is, the idea that IDEs can change the appearance of code from the underlying character stream).<br /><a href="http://code.google.com/p/lambda4jdt/"><br />Lambda 4JDT</a>:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_KukQ8TlQMz8/SYo31pKQTmI/AAAAAAAAAcM/62oFQqVRxLY/s1600-h/Picture+1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 121px;" src="http://3.bp.blogspot.com/_KukQ8TlQMz8/SYo31pKQTmI/AAAAAAAAAcM/62oFQqVRxLY/s320/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5299109306276269666" border="0" /></a>So screw the dead JLS (Java Language Spec), just go an add it in as low cal eye candy ! I like it !<br />With some excitement I went to IntelliJ's bug tracker to put in a similar <a href="http://www.jetbrains.net/jira/browse/IDEADEV-34469">feature request</a> (I always struggled to explain what sort of "code folding" I wanted). I found out in a matter of minutes the feature is coming in IDEA 9 ! Nice !<br /><br />In early versions, they used an actual lambda character:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_KukQ8TlQMz8/SYo41jInBtI/AAAAAAAAAcU/7g7ah7PTs-4/s1600-h/21d3a98d6f0b6bf49e99aadd33c88f2802186d07.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 87px;" src="http://2.bp.blogspot.com/_KukQ8TlQMz8/SYo41jInBtI/AAAAAAAAAcU/7g7ah7PTs-4/s320/21d3a98d6f0b6bf49e99aadd33c88f2802186d07.png" alt="" id="BLOGGER_PHOTO_ID_5299110404170385106" border="0" /></a><br />(apparently it won't be exactly like that in the final version).<br /><br />In any case I prefer scala in almost all ways, but for existing/legacy code, nice to have smart IDEs to present things as they should be.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-3079671876679611335?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-64040029364846447502009-01-12T14:13:00.001-08:002009-01-12T14:13:51.461-08:00MySQL developers denied .au visas due to local competitionThis is madness: <a href="http://blogs.mysql.com/kaj/2009/01/12/on-open-source-and-open-competition-in-a-not-so-open-world">http://blogs.mysql.com/kaj/2009/01/12/on-open-source-and-open-competition-in-a-not-so-open-world</a><br /><br />Very disappointing.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-6404002936484644750?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-29287699638070484902009-01-05T19:00:00.000-08:002009-01-05T19:15:02.820-08:00Reading old codeI am mostly terrible at reading old code, ESPECIALLY my own. I sort of stare and curse at it for a while, eventually it makes sense. Normally having runnable unit tests make it much easier.<br /><br />However, I found some <a href="http://xircles.codehaus.org/projects/ruby-rules">old ruby code</a> of mine (a pre-historic simple rule engine, using YAML as the syntax - called "ruby rules"), and strangely it made sense (and I swear I have no recollection of writing it):<br /><br /><pre>- rule: Foo<br /> set: Driver, Vehicle<br /> if: driver.age < 21 and vehicle.high_performance<br /> then: reject application<br /><br /><br /><br />And a programmatic rule:<br /><br /><br />#now lets try it out<br />rule = Rule.new :declarations => ["a", "b"],<br /> :types => [String.class, String.class],<br /> :condition =>"a == '42' and b == '42'",<br /> :action => "puts 'PASSED RULE 1'"<br /><br /></pre>So what does this mean? I guess people smarter then me are right - ruby is a really friendly language. At least following the popular conventions for it leads to code that you could read well into the future (even without the comfort of static type guarantees).<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-2928769963807048490?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-22637718948027889382008-12-05T18:28:00.000-08:002008-12-05T18:30:26.352-08:00OSDC slides/presentation detailsI just got back from <a href="http://www.osdc.com.au">OSDC</a> and my slides are up on <a href="http://www.slideshare.net/michaelneale/osdc-michael-neale-2008-presentation">slideshare</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-2263771894802788938?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-64999568018227394732008-11-30T15:03:00.000-08:002008-11-30T15:08:10.893-08:003 year anniversaryIt was 3 years ago (way back in innocent 2005) that I joined JBoss (as it was then). Since that time quite a bit has happened - I am grateful to have traveled over lots of the world, met great people and had a whole lot of fun.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-6499956801822739473?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-68163701460311466382008-11-25T15:05:00.000-08:002008-11-25T15:13:46.153-08:00JavaScript and the Next Big Language - problemsSteve Yegge is famous for talking about <a href="http://steve-yegge.blogspot.com/2007/02/next-big-language.html">Javascript as the Next Big Language</a>.<br /><br />I believe he was talking about Javascript 2/ECMA Script 4, which is currently in a "holding pattern". I personally believe this is great for the browser implementers and the web, but terrible for javascript growing into a language suitable for programming in the large (which is what I was hoping for some time this year).<br /><br /><a href="http://blog.stackoverflow.com/">Joel S mentioned once</a> that he views C++ as a failure/disappointment (of course being a failure doesn't stop him and millions of others from using it) because it failued to have a String "type". In his words: <span style="font-weight: bold;">"String is too important to be left to library implementers"</span>.<br /><br />I would like to generalise this concept: while many popular languages can quite happily be "extended" by libraries, this doesn't mean that the language designers should leave out important features and leave it up to library writers to provide implementations just becuase they can (as it almost always turns into a zoo in about 30 seconds).<br /><br /><span style="font-style: italic;">Some features are just too important to be left to library writers </span>;)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-6816370146031146638?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-26133536552189235362008-10-29T19:23:00.000-07:002008-10-29T21:23:57.717-07:00The Real web apps stand upThere are 2 types of people in the world. Those that build user interfaces, and those that have an opinion on how they should be built (and unfortunately try to build frameworks).<br /><br />The term "web app" came to mean apps that you access through a web browser. Most of them are (still) not a whole lot more then <a href="http://en.wikipedia.org/wiki/IBM_3270">3270 screen apps</a> with colour. Actually 3270 devices were slightly smarter then most web apps. Even today, many web apps (and their supporting frameworks) follow this model. Since about 2000 people started using and abusing javascript to give these apps some of the responsiveness that we had back in the 70s. Yay. The term Ajax was coined when people realised they could fetch data in the background for these elements.<br /><br />GMail came along and showed the first "mainstream" Real web app. It is just one "page" - which then uses the browser as the powerful GUI platform it is to render itself, in the client, and handle user gestures, in the client. What a client was meant to be, what "MVC" was meant to be. Kind of a simplified version of what people did 1000's of years ago with those xerox smalltalk and lisp machines.<br /><br />This is not to say that the "ye olde" style web apps don't have a use - they certainly do. In fact the web is and should be mostly of this type of app/site (which is really a web site with dynamic content behind it). But they aren't really Applications from the user experience - at least not all they could be. Wonderful frameworks like rails seem to take things as far as they can go for content driven web sites - but most people find they want more (more importantly their users expect more) for richer apps (this is only a small subset of app out there). So you either have to find a front end Real app framework for your big complex app (like google and others do), or don't let your apps get complex, build smaller apps that can live as content driven web sites (like 37 signals do) - both are great approaches. Its just upsetting when people get confused (and you get a web site trying to be a big ugly complex app, or a hulking app for something simple that could have been done as a web site).<br /><br />Some popular examples:<br /><br /><ul><li>GMail - an app</li><li>Facebook - a web site with a little ajax (increasingly becoming an app - but it still relies on page refreshes)</li><li>Twitter - a web site (and rightly so, twitter is perfect as it is). </li></ul><br />Well, no one could say it better then the authors of the truly amazing <a href="http://cappuccino.org/">Cappuccino</a> framework:<br /><br /><h2 style="font-style: italic; text-align: justify;">Designed for Applications</h2><div style="font-style: italic; text-align: justify;"> </div><p style="font-style: italic; text-align: justify;">Nobody will deny that there is a distinct difference between a web site and a desktop application. Similarly, we believe there is a big difference between a static web page and a full fledged web application. Cappuccino is designed for applications, not web pages.</p><div style="font-style: italic; text-align: justify;"> </div><p style="font-style: italic; text-align: justify;">Instead of doing all or most of the work on the server, Cappuccino applications do as much as possible in the client. A typical application would never reload, but rather send and recieve data using traditional AJAX techniques and then present that data in the client code. <a href="http://280slides.com/">280 Slides</a> is the first Cappuccino application, and it's a showcase of what is possible with this new framework.</p><div style="font-style: italic; text-align: justify;"> </div><p style="font-style: italic; text-align: justify;">Instead of worrying about how to implement drag and drop, copy and paste (of text <em>and objects</em>), undo and redo, document saving, rich cross-browser drawing and graphics, and a slew of other features, developers are free to focus on specific problems like PowerPoint support, or Twitter integration, or whatever else makes their application unique and compelling.</p><div style="font-style: italic; text-align: justify;"> </div><h2 style="font-style: italic; text-align: justify;">How does Cappucino Compare to Other Frameworks?</h2><div style="font-style: italic; text-align: justify;"> </div><p style="font-style: italic; text-align: justify;">Cappuccino is <em>not</em> designed for building web sites, or making existing sites more "dynamic". We think these goals are too far removed from those of application development to be served well by a single framework. Projects like Prototype and jQuery are excellent at those tasks, but they are forced by their nature to make compromises which render them ineffective at application development.</p><div style="font-style: italic; text-align: justify;"> </div><p style="font-style: italic; text-align: justify;">On the other end of the existing frameworks are technologies like SproutCore. While SproutCore set out with similar goals to Cappuccino, it takes a distincly different approach. It still relies on HTML, CSS, JavaScript, Prototype, and an entirely new and unique set of APIs. It also requires special development software and a cumbersome compilation step. We think this is the wrong approach.</p><div style="text-align: justify;"><br /><br /><br /><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-2613353655218923536?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-43865275933839709182008-10-23T15:27:00.000-07:002008-10-23T15:43:30.266-07:00Bob on RailsMy good friend <a href="http://www.fnokd.com/">Bob McW</a> (Codehaus.org founder, who actually started Drools waaay back, and who is responsible for the name "Drools), is now back working in JBoss/Red Hat in Research and Prototyping. <br /><br />He is working on making Rails deployable "natively" (in place rails apps, using all the usual rails infrastructure and deployment stuff) to finely tuned JBoss AS (5). As a bonus he is making clustering easy, and demoing the whole lot on "The Cloud".<br /><br />It was <a href="http://michaelneale.blogspot.com/2007/10/rails-on-jboss.html">some time ago</a> that I noodled with getting Rails to run on JBoss on Fedora, but its nice to see bob taking this very seriously.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-4386527593383970918?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-53979911013148253922008-10-20T19:24:00.000-07:002008-10-20T23:28:53.682-07:00Cross platform iconsAnd by cross platform icons I don't mean some format that caters to all the whims of gnome, windows, or OSX etc.. but I mean icons that don't look too out of place on each platform.<br /><br />Eclipse !<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_KukQ8TlQMz8/SP1FqfVp4eI/AAAAAAAAAUs/_oc-Ywn-_Co/s1600-h/eclipse-icons.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_KukQ8TlQMz8/SP1FqfVp4eI/AAAAAAAAAUs/_oc-Ywn-_Co/s320/eclipse-icons.png" alt="" id="BLOGGER_PHOTO_ID_5259436536107753954" border="0" /></a><br />These can work quite well in a web app. Of course I have made the mistake in the past (well I still do) of only providing icons - the "hieroglyphic" user interface it is sometimes called. Whoops. Well they are nice complement to text, buttons, menus etc, if used sparingly can draw the eye to what matters, and provide a little consistency. Plus they don't look too out of place on different operating systems.<br /><br />The eclipse people have done a great job !<br /><br />Its all here in a <a href="http://www.michaelneale.net-a.googlepages.com/eclipse-icons.zip">zip.</a><br /><br />Probably the last blog post (hopefully) before I take some time off for "paternity" leave for child number 2.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-5397991101314825392?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-29600155570736177652008-08-17T22:38:00.000-07:002008-08-17T22:44:31.577-07:00GWT and closures talkI spoke the other day at the Sydney Java Users Group on my experiences with GWT, and I then attempted the dodgiest segway into the closures debate, with some examples in a variety of JVM languages (Scala, scheme, jython etc).<br /><br />Anyway, <a href="http://www.michaelneale.net-a.googlepages.com/SJUG_Aug_2008.ppt">here</a> are the slides. I believe it was video'd too, as the slides won't make a whole lot of sense without the context (I did a lot of live coding).<br /><br />My opinion on the closures debate depends on what mood I am in, and how much I am prepared to argue with people (in general I think the Java language needs a LOT of work, and it should happen, breaking backwards source capability if necessary).<br /><br />Following is the view off the back deck of my new office (the office itself has a deck, which is nice and sunny):<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_KukQ8TlQMz8/SKkMFZ1TGxI/AAAAAAAAARs/JvCFKjkkMsU/s1600-h/IMG_0624.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_KukQ8TlQMz8/SKkMFZ1TGxI/AAAAAAAAARs/JvCFKjkkMsU/s320/IMG_0624.jpg" alt="" id="BLOGGER_PHOTO_ID_5235729328768228114" border="0" /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-2960015557073617765?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-17457004568641851602008-08-09T20:16:00.000-07:002008-08-09T20:52:04.020-07:00Why is usability and user experience terrible in open source apps?I am a big fan of the <a href="http://www.drunkandretired.com/">Drunk and Retired podcast</a>. Recently they had some discussion on why proprietary software, in general, has a better user experience then equivalent open source software, which is a fair generalisation. <br /><br />I think Charles hit the nail on the head, its really painful work. Sometimes its quite hard, most times its just really really painful.<br /><br />And open source is generally built either by volunteers (as I do part time) or paid staff (as I do full time) - but generally even in the case of the latter it is with a fraction of the level of investment that commercial vendors bring to bear on equivalent products, hence user experience can tend to suffer for a bit (certainly its probably the last bit that gets looked at).<br /><br />Also - as different areas of software become “commoditised” its a great way for pay-for products to differentiate themselves - invest a lot in usability and it makes your product more likely to sell itself.<br /><br />But I think its also a bit of a lost art - for some reason its seen as unsexy to care about user interface, or user experience compared with “hard core” parts (eg linux kernel developers are revered as having some magical power).<br /><br />Furthermore, the web is to blame for a lot of this. In the 90’s .com goldrush graphic designers became web developers when following the money, but graphic design is only one small part of interface design and very little to do with user experience. However, the n-tiered approach to building apps meant that there was a “user interface layer” which became a detail to be worried about afterwards, (and often by people who would have been failed graphic designers in another life).<br /><br />I intend to do my best to reverse this imbalance.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-1745700456864185160?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-679388405032891312008-06-24T22:46:00.001-07:002008-06-24T22:53:24.039-07:00When is compiling not compilingI was annoyed by a post I read somewhere that talked about shells and compiling and why they don't like compiling etc...<br /><br />Its 2008, and practically no modern programming tools really can't be made interpreted, or compiled as needed. The differences are fading (eg Java, C++ can all be made to work in shells if you like).<br /><br />In my day job our rule engine is compiled, kinda. But to make the point that things can be totally interpreted, I wrapped a command line shell around the clips language module:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_KukQ8TlQMz8/SGHc5BVpHiI/AAAAAAAAAQU/ZxhE_2m99tc/s1600-h/Picture+1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_KukQ8TlQMz8/SGHc5BVpHiI/AAAAAAAAAQU/ZxhE_2m99tc/s320/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5215692715641609762" border="0" /></a>So there. Its actually becoming pretty handy. Also, Lisp dialects are soooo nice on the command line. Balanced expressions make the perfect unit to ship to the interpreter without trying to guess where it is up to.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-67938840503289131?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-75143027610554455062008-05-21T16:52:00.001-07:002008-05-22T18:21:08.327-07:00STOP THE LOGGING MADNESS PLEASE !!A personal pet peeve of mine is the proliferation of logging frameworks. Log4J was fine, but Sun had to go and not use it for the JDK. There is/was commons logging (which was not maintained) and now there is sl4j.<br /><br />90% of libraries that have logging requirements should not have logging in them. I don't mean that they shouldn't *be able* to log, but they should do it via a callback interface (what would be a "closure" where you pass in a bit of code to be called when a log event occurs).<br /><br />Instead what we have now are several jars needed to support different flavours of logging. Annoying.<br /><br />I know lots of people have opinions on logging, and they shouldn't, they are wrong. Its a symptom of the problem known as "<a href="http://www.unixguide.net/freebsd/faq/16.19.shtml">what colour should be the bike shed be</a>". (Which is to say if you are thinking about it, you are not really thinking about what is important, and often times people do that because its a form of procrastination - instead of solving the problem at hand they obsess over trivial details).<br /><br />So please, library authors, just stop it. Now. **<br /><br />** EDIT: This includes me, I am very guilty of terrible crimes against humanity in this area.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-7514302761055445506?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-90080992100493986082008-05-20T18:13:00.000-07:002008-05-20T18:31:54.878-07:00Tech that makes people crazyLately I have been implementing a WebDAV filesystem. OH the pain. The frustration in trying to make it work right on different platforms (I am looking at you, OSX finder). Something about filesystems makes you go insane. Just look at Hans Reiser.<br /><br />At the other extreme of the stack of technology, we have javascript. Something about JS makes people insane. I have lots of anecdotal evidence of crazy behaviour - DomAPI suddenly going proprietary, and of course the ExtJS fiasco where they tricked people into contributing to an LGPL project (with illegitimate and unenforceable additions to the LGPL licence) and then bait and switch to a GPL licence (upsetting as it took attention away from other toolkits which are under more liberal licences - heck if even started as a layer on YUI).<br /><br />Well, its open source, so Use the Fork, Luke !<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-9008099210049398608?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-69506080785028080272008-05-18T04:17:00.000-07:002008-05-18T05:22:06.454-07:00The tyranny of patentsI am a iphone user, and fan. Its my first experience with a "touch" user interface since I played with old HP machines back in the 80s (one of my school friends' dad was a HP executive and often had different models home to try out, which I loved).<br /><br />There has been some talk as to why it has taken 20 or 30 years for touch UI to be an "overnight success". I think a big part of the reason is the patents involved: http://en.wikipedia.org/wiki/Touchscreen#Development<br /><br />Patents are a terrible, terrible thing for innovation. Having an idea is such a small part of innovation, especially in software as well (where the idea is pretty close to the implementation).<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-6950608078502808027?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-62707044269186629902008-05-10T17:02:00.001-07:002008-05-10T17:15:15.656-07:00JavaOne 2008<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_KukQ8TlQMz8/SCY3ywZsbDI/AAAAAAAAAO4/xmMUkRCot_k/s1600-h/IMG_0453.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_KukQ8TlQMz8/SCY3ywZsbDI/AAAAAAAAAO4/xmMUkRCot_k/s320/IMG_0453.jpg" alt="" id="BLOGGER_PHOTO_ID_5198904164971473970" border="0" /></a><br />I made the trek across "the ditch" to San Francisco for JavaOne 2008. Its pretty convenient from Sydney, direct flight, comfortable. What is not comfortable is the jet lag. I have never had it so bad, unbelievably bad.<br /><br />Well the conference was not terribly exciting, but talking to everyone is always worth the effort. Its still very much Sun's conference, not the communities. Sun tend to have their influence everywhere - from their shoe-horning glassfish into all sorts of irrelevant places, and keynotes that "announce" tech that really have nothing to do with the community (JavaFX). That much is disappointing. Even the irrelevant fact that glassfish has a "kernel" of 98K was mentioned in the keynote ! What does that mean ! Nothing ! Its not really a kernel, but whatever. Sun seem to be driven partly out of spite, creating competing tech (or aquiring) - with no aim to make money, but only to compete etc.. Its not terribly surprising they are no longer making money - they had a terrible result recently. Terrible - makes me sad as they were a jewel of silicon valley once, and a good contributor to open source.<br /><br />I liked JavaFX, would consider using it if it took off.<br /><br />The most interesting thing all week was the Scala "lift off" conference I went to on saturday. I went with the express aim (and some preparation) to convince people how great it would be for scalac (compiler) to be able to have java and scala source mixed, including in IDE tooling. It turns out it is already on the way !<br /><br />With such a smart group of people working on and around scala, and funded, it has a bright future. And not a moment too soon.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-6270704426918662990?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-35110573825841851212008-04-06T16:03:00.000-07:002008-04-06T16:42:49.190-07:00Melbourne demosI was lucky enough to visit Melbourne, Australia's most livable city, and talk to a whole lot of people about drools stuff.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_KukQ8TlQMz8/R_lYktciKJI/AAAAAAAAANo/_Ksl4n0dYM0/s1600-h/Picture+1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_KukQ8TlQMz8/R_lYktciKJI/AAAAAAAAANo/_Ksl4n0dYM0/s320/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5186273833591646354" border="0" /></a><br /><br />Unfortunately I had a raging cold the whole time, and was barely lucid, but I got to see the new Red Hat office, put faces to names etc. Room service is really nice when you are sick as a dog in bed.<br /><br />One of the most interesting reflections I had on talking to people, was that open source isn't considered just because its open source (as in the fact that it is cheaper up front) but more on feature for feature merits. This is quite a change from years past.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_KukQ8TlQMz8/R_laD9ciKKI/AAAAAAAAANw/GGhNFxLM_GM/s1600-h/Picture+2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_KukQ8TlQMz8/R_laD9ciKKI/AAAAAAAAANw/GGhNFxLM_GM/s320/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5186275469974186146" border="0" /></a><br />The demonstrations of the BRMS and other new features went really well (surprisingly for me) - I was really happy with it (as were others).<br /><br />While there I also joined, remotely, a Dallas user group for rule based tech users. That was quite interesting (James Owen was speaking) - I will definitely join next month as the timezone is perfect for me. Lots to learn...<br /><br />I still have a nasty cold, but its on the mend, hopefully soon, as at the end of the week I am returning to Sydney (Blue Mountains to be more accurate). Whence I will spend my spare time scanning realestate.com.au and domain.com.au for a house to live in ;)<br /><br />There presentation I did is <a href="http://wiki.jboss.org/wiki/_Files/MichaelFromThomasRules/DroolsApril08.ppt">here</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-3511057382584185121?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-58504956067925775562008-03-24T15:19:00.000-07:002008-04-05T22:09:44.647-07:00Travel and talksI am speaking at the local ACS special interests group this Wednesday (the 25th). Next week I will be in Melbourne seeing various people, not sure if there are general meetups though (I have been ignoring email, a bad^H^H^H good habit of mine).<br /><br />The week after we are moving to Sydney (after 4 years in Brisbane) so the times, they are a-changing.<br /><br />Now I need to find some stuff to talk about (I really don't like demos - mostly cause I stop in the middle, crack open the code and change/fix something that is bugging me, not so great for the perplexed people watching).<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-5850495606792577556?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-37949581017420692522008-03-21T04:00:00.000-07:002008-03-21T04:05:14.391-07:00How a sewing machine works?As a frequent sufferer of insomnia - I like to think about trivial but unsolved tricks on how everyday things work (how a boat sails against the wind, how a sewing machine works for instance).<br /><br />Well, now I will have to find something else:<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_KukQ8TlQMz8/R-OWJtciKHI/AAAAAAAAANA/aWm7gX_0CQo/s1600-h/ani_lockstitch2.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_KukQ8TlQMz8/R-OWJtciKHI/AAAAAAAAANA/aWm7gX_0CQo/s320/ani_lockstitch2.gif" alt="" id="BLOGGER_PHOTO_ID_5180149089968466034" border="0" /></a><br />Well if a picture is worth 1000 words, an animated gif must be worth 10^6? I love that this is such a clear explanation to something that would be impossible to describe with words.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-3794958101742069252?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-25592761424037712812008-03-17T17:01:00.000-07:002008-03-17T17:05:32.996-07:00Stop iphone opening iphotoAs a part time mac-tard, and iphone user, it irritates me how it opens iPhoto. I saw some overcomplicated trick at 37 signals blog, but then found out that it is a setting in Image Capture.app ! (preferences of course).<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-2559276142403771281?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-21011655856322795232008-03-02T14:45:00.000-08:002008-03-02T14:56:24.743-08:00Writing a language in itselfI have always been fascinated by the art of writing programming languages themselves - in some ways, its an easier problem to wrap your head around. Well perhaps not easier in the technical sense, but in terms of requirements/design etc, mostly you can fit it all in your head at once (unlike solving say, a Real World problem !).<br /><br />I was curious about the newly minted OpenJDK6 source code that has been released (open sourced, finally), so I ran the trusty sloccount command line tool to count lines, here are the results:<br /><br /><span class="comment"><span style="color:#000000;"></span><p><span style="color:#000000;">java: 2393565 (72.63%) cpp: 462235 (14.03%) ansic: 419499 (12.73%) sh: 17089 (0.52%) asm: 1936 (0.06%) awk: 598 (0.02%) lisp: 449 (0.01%) cs: 72 (0.00%) jsp: 24 (0.00%) csh: 3 (0.00%)</span></p><p><span style="color:#000000;">There is lisp in there? I am betting elisp for an emacs major mode or something. But 72% Java. c/c++ would be for posix interfaces, and probably enough core VM code, and perhaps hotspot stuff.</span></p></span>Conclusion: Java is written mostly in Java, which is the way it should be (if you were looking at smalltalk, I bet it would be much much more then 70%, more like 95%). Compare to MRI ruby, which is 90% C, or JRuby, which is 90% Java.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-2101165585632279523?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.comtag:blogger.com,1999:blog-2311776355674459132.post-32960090722184618522008-02-13T15:03:00.000-08:002008-02-13T15:06:42.060-08:00IBM (and the old PwC) bankrupts 170 year old businessIt is with dismay I read this: <a href="http://blogs.zdnet.com/projectfailures/?p=583">http://blogs.zdnet.com/projectfailures/?p=583</a><br /><br />I am pretty sure I smell the stench of the Pricewaterhousecoopers trouble makers inside IBM services. Shame.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2311776355674459132-3296009072218461852?l=michaelneale.blogspot.com'/></div>Michael Nealehttp://www.blogger.com/profile/14670410000512777421noreply@blogger.com