<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Ron Hitchens&apos;s Blog</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/" />
<modified>2008-05-09T10:47:07Z</modified>
<tagline></tagline>
<id>tag:weblogs.java.net,2008:/blog/ronhitchens/54</id>
<generator url="http://www.movabletype.org/" version="3.01D">Movable Type</generator>
<copyright>Copyright (c) 2008, ronhitchens</copyright>
<entry>
<title>In With The New</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2008/05/in_with_the_new.html" />
<modified>2008-05-09T10:47:07Z</modified>
<issued>2008-05-09T10:46:42Z</issued>
<id>tag:weblogs.java.net,2008:/blog/ronhitchens/54.9760</id>
<created>2008-05-09T10:46:42Z</created>
<summary type="text/plain">New APIs, new algorithms and new programming language.  Want more can a geek ask for?</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>JavaOne</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>
Thursday was an interesting day, but tiring.  The third day of a conference always seems to be the roughest in terms of comfort level.  One or all of the following is guaranteed to be aching at any given time:
<ul>
<li>Feet: From standing around talking to people or waiting in line</li>
<li>Back: From lugging around the asymptotically increasing contents of your backpack</li>
<li>Butt: From sitting on those innocent-looking, but evil, chairs</li>
</ul>
</p>
<p>
My morning started off with an informative presentation by Alan Bateman, the Spec Lead for JSR-203.  JSR-203 is also known as NIO.2, the long-awaited update to the New I/O APIs first introduced in Java 1.4.  I naturally have an interest in NIO since I wrote the book <a href="http://www.oreilly.com/catalog/javanio/"></i>Java NIO</i></a> for O'Reilly a few years ago.
</p>
<p>
NIO hasn't gotten much JDK love in the intervening years but that's finally about to change.  The code for NIO.2 has just recently been approved for inclusion in the <a href="http://openjdk.java.net/">OpenJDK</a> and is now available on java.net.  NIO.2 includes datagram multicast, an extensive new filesystem API (file metadata, tree traversal, change notification, etc) and an asynchronous I/O framework for doing overlapped I/O with (optional) completion handler callbacks.  As well as a host of smaller additions and tweaks.
</p>
<p>
Cliff Click's talk about developing lock-free data structures was fascinating.  Intense, but fascinating.  The secret to the highly scalable, massively concurrent algorithms he described is a rather simple Finite State Machine.  By carefully defining how and when changes are made, hundreds or even thousands of threads can safely read and write a shared data structure without fear of reading stale information or clobbering another thread's update - and without using <b>any</b> locks.  Read more about it on <a href="http://blogs.azulsystems.com/cliff/">Cliff's blog</a>. 
</p>
<p>
As if that wasn't enough yummy goodness for one day.  I met up with several friends for dinner, including Bill Venners who's co-authoring a forthcoming <a href="http://www.artima.com/shop/forsale">book on Scala</a>.  And who does Bill bring along but <a href="http://people.epfl.ch/martin.odersky">Martin Odersky</a> himself, the creator of <a href="http://www.scala-lang.org/">Scala</a>.  When Martin learned that I'd written a book on NIO, he perked up and said that Scala (especially Scala Actors) fit together with NIO very nicely.  I beleve that Scala could turn out to have a serious impact on the Java/JVM world over the next few years.  I'd like to see it getting more attention at next years JavaOne.
</p>
<p>
That's it for now.  Time to trundle off to bed to rest my various aching body parts.  
</p>]]>

</content>
</entry>
<entry>
<title>Hehe, 3-D Stuff Is Cool</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2008/05/hehe_3d_stuff_i.html" />
<modified>2008-05-08T08:42:56Z</modified>
<issued>2008-05-08T08:42:50Z</issued>
<id>tag:weblogs.java.net,2008:/blog/ronhitchens/54.9745</id>
<created>2008-05-08T08:42:50Z</created>
<summary type="text/plain">Now with 50% more dimensions that 2-D</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>JavaOne</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>
I don't get to do a lot of whizzy graphical stuff in my day-to-day work.  I mostly do the typical back-end, multi-threaded server kind of thing.  I spend most of my time thinking about API design, framework architecture, robustness, correctness and so on.  I <a href="http://weblogs.java.net/blog/ronhitchens/archive/2008/05/you_are_correct.html">blogged yesterday</a> about some excellent sessions that address those sorts of concerns.
</p>
<p>
But I also like to look into other interesting stuff, even if I don't have a particular need for it.  I attended a couple of intriguing sessions yesterday and today that show off Java's ability to do some really stunning 3D visualization.
</p>
<p>
On Tuesday I went to the <i>Project Wonderland</i> talk.  <i>Project Wonderland</i> is a virtual world, reminiscent of Second Life, that enables multiple people to interact in a virtual, real-time 3-D environment.  It's built on top of <i>Project DarkStar</i> which is a Java-based multiplayer gaming engine.  You can simulate a typical office setting, where you move about from one place to another, encountering and conversing with other people as you go.  Or you can create entirely synthetic spaces to represent any "information space" that it would be helpful to "get into".
</p>
<p>
Today I attended a very interesting talk about the <i>NASA World Wind</i> project.  World Wind is a Google Earth-like earth browser written entirely in Java that makes use of the JOGL library to achieve blistering render speed. World Wind has been presented before at JavaOne, but it's now been packaged so that it's easy to embed in just about any Java application or applet.  I was impressed by how easy it is to setup and customize.
</p>
<p>
As I listened to each of these talks my imagination ran ahead, thinking of fun - or possibly even useful - things I could do with these tools.  For me, that "What if..." response is always a good sign.
</p>
<p>
<ul>
<li><a href="https://lg3d-wonderland.dev.java.net/">Project Wonderland</a></li>
<li><a href="http://worldwind.arc.nasa.gov/">NASA World Wind</a></li>
<li><a href="http://worldwind.arc.nasa.gov/java/demos">NASA World Wind Online Demos</a></li>
</ul>
</p>]]>

</content>
</entry>
<entry>
<title>You Are Correct, Sir</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2008/05/you_are_correct.html" />
<modified>2008-05-07T10:56:48Z</modified>
<issued>2008-05-07T10:56:41Z</issued>
<id>tag:weblogs.java.net,2008:/blog/ronhitchens/54.9727</id>
<created>2008-05-07T10:56:41Z</created>
<summary type="text/plain">Writing code that compiles: easy.  Writing code that&apos;s correct: not so much.</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>JavaOne</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>
The big announcements today were centered around JavaFX and Blu-Ray, as expected.  Neil Young was entertaining (I guess that's not surprising, he is an entertainer after all).  There was the usual execu-speak about initiative-this and monetize-that.  OK, fine.  Whatever.
</p>
<p>
I focused today on fundamentals - specifically code correctness.
</p>
<p>
First up was a talk by Josh Bloch, <i>More Effective Java</i>, which highlighted several new topics from the forthcoming update to his seminal book <i>Effective Java</i>.  I had the honor of leading an online discussion of Josh's book four years ago <a href="http://www.java.net/cs/user/forum/cs_disc/1768">right here</a> on java.net.  The book is a must-read for any Java programmer who cares about getting the code right, first time and every time.  I'm personally looking forward to the reading the updated edition, Real Soon Now.
</p>
<p>
I also attended Bill Pugh's cleverly titled <i>Defective Java</i> later in the day.  Bill is the creator of <a href="http://findbugs.sourceforge.net/">FindBugs</a>, a scary-good software tool that statically analyses your compiled bytecode looking for known problems.  The thesis of the talk is that every coding mistake is a learning opportunity.  Rolling those learned lessons back into FindBugs lets others benefit from your effort.  If you're not already a FindBugs user, go get it and run it on your code.  You will be amazed (and perhaps a little depressed) at what it turns up.
</p>
<p>
Late in the day it was Brian Goetz' talk about concurrency in general and the new fork/join framework that's coming in Java 7 in particular.  Brian is the lead author of <i>Java Concurrency In Practice</i>, another must-read for any serious Java Programmer.  The proliferation of multiple core machine means that, like it or not, we will all need to deal with concurrency - and get it right - sooner rather than later.  The fork/join classes, particularly ParallelArray, will make it relatively easy to automatically apply parallelism to tasks that would otherwise be approached linearly. 
</p>
<p>
These three guys are all leading lights in the Java world.  They are (a few of) the people that have made Java what it is today and are shaping what it will be tomorrow.  Any time you have an opportunity to learn from them, don't let it pass you by.
<ul>
<li>Josh Bloch's <i>Effective Java</i> will be repeated on Friday at 10:50am.</li>
<li>Bill Pugh's <i>Defective Java</i> will be repeated on Thursday at 2:50pm and a second talk, <i>Using FindBugs in Anger</i> is at 9:30am the same day.</li>
<li>Brian's fork/join talk will not be repeated but he's co-presenting <i>JVM Challenges and Directions in the Multicore Era</i> with Cliff Click (yet another Java luminary that you should always listen to) at 4:10pm on Friday.</li>
</ul>
</p>
<p>
As the saying goes: if a job is worth doing, it's worth doing right.
</p>]]>

</content>
</entry>
<entry>
<title>Make Your Network</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2008/05/make_your_netwo.html" />
<modified>2008-05-06T09:00:16Z</modified>
<issued>2008-05-06T09:00:08Z</issued>
<id>tag:weblogs.java.net,2008:/blog/ronhitchens/54.9702</id>
<created>2008-05-06T09:00:08Z</created>
<summary type="text/plain">Make it to the tech sessions, but make a few friends while you&apos;re at it</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>
Holy smokes, is it JavaOne again already?  Didn't we just do this a few months ago?
</p>
<p>
I work at a fast-paced <a href="http://marklogic.com">startup</a> and have only just returned from a two-week vacation.  So I feel as though this JavaOne is sort of taking me by surprise because I haven't prepared for it as much as I usually do. And yet I already feel as though I'm right back into the swing of things.  
</p>
<p>
The announcements and technical sessions at JavaOne have always had a lot of value, but for me the true value of JavaOne has always been about the people.  It's the best venue I know of for making new friends and reconnecting with old ones. 
</p>
<p>
Example: This evening (Monday) I drove up to San Francisco to pick up my badge so I would have it for the morning.  I met up with a group of folks who are blogging for JavaOne.  The group included Daniel Steinberg (an old friend and the former editor of java.net), Chris Adamson (the current editor of java.net whom I've met a few times before) as well as a few people I'd never met before including Josh Marinacci (sleep deprived) and Robert Cooper (beer deprived).
</p>
<p>
We hung out at a local eatery.  Talked a little about Java, griped a little about Sun and marveled a little about iPhones.  We talked a lot about books and the strange state of the publishing industry (turns out we're all book authors).  Basically we sat around enjoying each others company, chatting about whatever came to mind.  Friends, old and new, sharing common interests.
</p>
<p>
JavaOne is the place to be for Java people.  But there is more to it than just Java.  Your interest in Java is what you have in common with the 10s of thousands of other people here.  You're among friends -- even the ones you haven't met yet.
</p>]]>

</content>
</entry>
<entry>
<title>It&apos;s The JVM, Stupid</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2007/05/its_the_jvm_stu.html" />
<modified>2007-05-11T09:56:53Z</modified>
<issued>2007-05-11T09:56:45Z</issued>
<id>tag:weblogs.java.net,2007:/blog/ronhitchens/54.7364</id>
<created>2007-05-11T09:56:45Z</created>
<summary type="text/plain">Maybe we should start calling it JvmOne</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">

<![CDATA[<p>The theme I'm picking up from friends and associates, and from the sessions on the schedule, is that there seems to be a dearth of Java at JavaOne this year.</p>
  <p>There is a lot of interest in scripting languages like Ruby, JavaScript and the new JavaFX running in the JVM. NetBeans is sprouting direct authoring support for a growing number of languages other than Java. There are so many language choices now that you can build a very sweet Java application without ever writing any actual Java code.</p>
  <p>Is that a bad thing? Perhaps not.</p>
  <p>The real value of the Java Platform has always been the Java Virtual Machine (JVM), not the specific syntax of the Java Language. Java (the language) truly was a big step forward for its time, addressing the perceived excesses of C++. It inspired huge numbers of programmers, both new and old, to write better OO code. But of the components making up the Java Platform, it wasn't the one that mattered the most.</p>
  <p>It was the JVM that was the true enabler of the Java revolution. Compiling to a standardized intermediate byte code which can then be run in any compliant JVM was a huge innovation. It wasn't an original idea, nothing really is, it seems. But the Java VM was the first to become widely available on many hardware/OS combinations and thus the first to become ubiquitous.</p>
  <p>Robert Tolksdorf maintains 
  <a href="http://www.robert-tolksdorf.de/vmlanguages.html">a list</a> of dozens and dozens of languages that compile to Java byte code, or otherwise target the JVM.</p>
  <p>Java the language will be in use for many years to come. But it may also be the case that it's in the process of being supplanted by various other languages. Some of these languages are specialized, targeted at solving specific problems. Others bring different philosophies and world views as alternatives to Java's syntax. But they all have the JVM in common.</p>
  <p>Personally, I'm interested in the new language 
  <a href="http://www.scala-lang.org/">SCALA</a> (there is a session by SCALA's inventor, 
  <a href="http://lamp.epfl.ch/~odersky/">Martin Odersky</a>, on Friday at 1:30). It is an interesting mix of object orientated, functional and concurrency features. The syntax is concise yet type-safe and is designed to mesh smoothly with Java and the standard libraries inside the JVM. In my day job I deal extensively with XQuery, a functional language designed for querying and manipulating XML. XML is a data type that's built into SCALA, which makes for a logical bridge between my two worlds.</p>
  <p>It's the JVM that enables this goodness. Over the history of Java, the syntax of the language has evolved and the libraries have bulked up. But the JVM has remained remarkably constant. Over the course of more than a decade of general availability, the JVM's evolution has primarily been in terms of optimization, stability and tunability.</p>
  <p>Long after Java the language has fallen from fashion and faded into antiquity, the JVM, looking very much like it does today, will still be going strong. You may not recognize the languages in use then, but peek underneath and you'll find byte codes running in a JVM not too different from today's.</p>]]>
</content>
</entry>
<entry>
<title>The Core Problem: CPUs out the Wazoo</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2007/05/the_core_proble.html" />
<modified>2007-05-11T07:24:55Z</modified>
<issued>2007-05-11T02:19:54Z</issued>
<id>tag:weblogs.java.net,2007:/blog/ronhitchens/54.7358</id>
<created>2007-05-11T02:19:54Z</created>
<summary type="text/plain">You want more cores? Careful what you wish for.</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>JavaOne</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">

<![CDATA[<p>Yesterday I attended Brian Goetz' Effective Concurrency For Java and today I went to the companion session Testing Concurrent Java. Both build on topics from Brian's excellent book, 
  <a href="http://briangoetz.com/pubs.html">Java Concurrency in Practice</a>, which first went on sale one year ago, right here at JavaOne.</p>
  <p>Listening to these two sessions and chatting with a few folks here at the show, I'm more convinced than ever that concurrency is a looming problem that is, for the most part, going unrecognized.</p>
  <p>As Brian pointed out, CPU speeds are leveling off. CPUs are not getting faster, they're getting fatter. In a matter of about a year, dual core CPUs have become the norm. I'm typing this right now on a dual core MacBook Pro. Quad core is becoming a reality in pro-sumer systems and sixteen core servers are not uncommon.</p>
  <p>This sea change in the hardware space has many implications for we Java programmers. The first is the obvious one, that Java coders are going to have to get more sophisticated about concurrent techniques to get the most out of the runtime environments they will find themselves in.</p>
  <p>But there's a flip side - a darker side, perhaps. A correct, single-threaded program will run fine on a multi-core machine, making use of only one CPU core at a time. But many single-threaded programs out there harbor undiagnosed concurrency bugs that never, or rarely manifest on single core CPUs. Here's a hint: finalizers are evil.</p>
  <p>And then there are Java programs that are using multiple threads without well thought out locking strategies (or sometimes none at all!). On single core systems a tiny little race condition may never cause a problem. With more cores, more threads truly run in parallel, and more concurrency problems will come to light.</p>
  <p>More cores means more broken code. Have you planned for it? Have you even thought about it? Will your code run properly under load on a system with 256 cores? Something to think about.</p>]]>
</content>
</entry>
<entry>
<title>JavaOne 2007: I Feel So Mature</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2007/05/javaone_2007_i.html" />
<modified>2007-05-09T09:50:44Z</modified>
<issued>2007-05-09T09:41:07Z</issued>
<id>tag:weblogs.java.net,2007:/blog/ronhitchens/54.7316</id>
<created>2007-05-09T09:41:07Z</created>
<summary type="text/plain">Open Sourcce, JavaFX and NetBeans. What Else?</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">

<![CDATA[<p>I missed the keynotes this morning. I planned to be there, I really did, but two sick kids and an hour-long BART ride conspired to keep me away. Luckily, other bloggers here have posted informative summaries. I did make it to Bob Brewin's technical keynote after lunch.</p>
  <p>I'm struggling a little bit to get a handle on what JavaOne 2007 is really 
  <i>about</i> this year. From what I can tell, it seems to boil down to three things: open source, JavaFX and NetBeans.</p>
  <p>Open sourcing the JDK is big. It's important and it will help insure Java's long-term survival. It's also going to take it in new directions. I'm glad to see it happen, finally. Five years ago it would have been a game-changing play, but today it's just the inevitable next step.</p>
  <p>NetBeans has come a long way in the last few years. I tried it out recently to do some Java code profiling. I was impressed by how much it had improved since the last time I tried it several years ago. I would choose it over Eclipse without hesitation. But I use IntelliJ/IDEA. NetBeans has become the best IDE that no one I know uses.</p>
  <p>That leaves JavaFX. I've only seen bits of it on stage. I don't really know any specifics about it and I'm sure a lot of very smart people devoted a lot of effort to it. But it gives me a sense of dejá vù. Why do we have yet another gratuitously incompatible JavaScript/Flex/ActionScript/Groovy/whatever kinda thing? I can't help but feel that Sun has reinvented another wheel. Five years ago, JavaFX would have rocked. Today it feels like me too and I fear that it will be an orphan tomorrow.</p>
  <p>But I suppose it's to be expected. This year falls between major JDK releases. There are a lot of incremental fixes and improvements but no great leaps forward. I guess this is what a maturing industry feels like.</p>
  <p>No worries, there are still lots of interesting sessions to attend and old and new friends to connect with. JavaOne is always a great place to be, even when you're not sure what it's about.</p>]]>
</content>
</entry>
<entry>
<title>Why Should I Bother Going To JavaOne 2007?</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2007/05/why_should_i_bo.html" />
<modified>2007-05-07T22:45:56Z</modified>
<issued>2007-05-07T22:45:52Z</issued>
<id>tag:weblogs.java.net,2007:/blog/ronhitchens/54.7268</id>
<created>2007-05-07T22:45:52Z</created>
<summary type="text/plain">This is JavaOne number six for me.  Why do I keep coming back?</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>JavaOne</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">

<![CDATA[<p>I've attended every JavaOne since 2002, which makes this my sixth in a row. It was in 2002 that I wrote 
  <a href="http://oreilly.com/catalog/javanio/">Java NIO</a> during that oddly quiet time following three roaring years of Internet frenzy. Java was king of the mountain and its future seemed brighter than ever. I was deep into Java and wasn't interested in anything else.</p>
  <p>But 2002 was a year when many things changed. It was the year when it became clear that the Internet bubble had burst, that .NET became a credible threat, Sun started losing money big-time and the bottom fell out of the technical book market - especially Java books.</p>
  <p>None of this was readily apparent at the time, of course. I had a great time at my first JavaOne. It's become a cliché I know, but JavaOne really is about the people. At that first JavaOne I met my O'Reilly editor for the first time in person. I met other authors as well as a wide cross-section of techies, visionaries, pundits and fools.</p>
  <p>It was great. I remember telling my wife that it wasn't just a show, JavaOne was an opportunity.</p>
  <p>And so I kept coming back each year. But things were changing. Sun continued to struggle and JavaOne diminished a little bit each year. Microsoft was gaining ground with .NET. New languages like Ruby and techniques like AJAX where stealing mindshare. People were openly speculating about what would come after Java.</p>
  <p>And I couldn't find a decent job.</p>
  <p>One of the O'Reilly authors I'd met at JavaOne was 
  <a href="http://www.oreillynet.com/pub/au/180">Jason Hunter</a>. Jason was doing some teaching about NIO and other topics. He offered to tech review my book and we stayed in touch, mostly by bumping into each other regularly at JavaOne. One day he got in touch to see if I might be interested in the company he'd recently gone to work for, 
  <a href="http://marklogic.com/">Mark Logic</a>.</p>
  <p>I was. In 2004 I made a fairly radical left turn career-wise and joined Mark Logic. It's been a total immersion in XQuery and XML on a scale I'd never imagined before. Our product is written in C++ and it presents an XQuery interface.</p>
  <p>That's not to say I never use Java anymore. There is a small Java component to our product and I continue my side interests in Java in general and NIO in particular - I've been a speaker at the last two JavaOne's in fact - but I can't really say that I earn my living with it day-to-day any longer.</p>
  <p>So this is the first year that I debated whether to even bother with JavaOne. In some ways, Java is suffering from its own success. It's familiar, reliable and ubiquitous. But it's no longer new and different. It's just good old Java. And that's a good thing. That's what mature industries are built on.</p>
  <p>I'm going to JavaOne this year. I'm going for the people. But I'm also going for the Java. I want to learn what Sun's open source strategy is. I want to learn about SCALA and I want to learn about dynamic minigrids. But mostly I want to learn by connecting with like-minded people and letting the waves of new ideas wash over me.</p>
  <p>JavaOne is people.</p>]]>
</content>
</entry>
<entry>
<title>If things are so bad, why are things looking good?</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2004/05/if_things_are_s.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2004-05-25T08:28:09Z</issued>
<id>tag:weblogs.java.net,2004:/blog/ronhitchens/54.635</id>
<created>2004-05-25T08:28:09Z</created>
<summary type="text/plain">Thank you very much, but I already have a job.</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>Business</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>Offshoring accelerating, layoffs left and right, doom, gloom, oh me, oh my.</p>
<p>And yet, I just landed a terrific job at a great <a href="http://www.marklogic.com">startup</a> (thanks Jason).  The work's interesting, I'm learning lots of <a href="http://www.xquery.com">new stuff</a> and the people there are top-knotch.</p>
<p> I'm starting to get nuisance email solicitations from recruiters again.  My independent consultant friends are complaing that they've got too much work.  Things generally seem to be hopping.  Is it just me or is there a larger shift taking place?</p>
<p>Have things turned around in Silicon Valley?  Has the tech market finally begun another up cycle?  Is it a dead cat bounce? The quickening of the stream before plunging over the precipice?</p>
<p>My instinct tells me that something's up -- that currents are flowing below the surface.  Whether that means a sea-change for the better, choppy sailing or a tsunami approaching over the horizon, I can't be sure.  But I do believe that life in Silicon Valley is about to get interesting once again.</p>]]>

</content>
</entry>
<entry>
<title>Cringely on Microsoft, Sun, Java and El Presidente Schwartz</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2004/04/cringely_on_mic.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2004-04-22T02:20:05Z</issued>
<id>tag:weblogs.java.net,2004:/blog/ronhitchens/54.277</id>
<created>2004-04-22T02:20:05Z</created>
<summary type="text/plain">Has Sun been paying too little attention to Microsoft.  Or too much?</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>Business</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>I found <a href="http://www.pbs.org/cringely/pulpit/pulpit20040415.html">this week's Robert X. Cringely column</a> especially interesting.  They're always interesting, but this one is  about competing with Microsoft in general, and about Sun and Java in particular.  It's a continuation of the <a href="http://www.pbs.org/cringely/pulpit/pulpit20040408.html">previous week's column</a>, a rather sobering look at how Microsoft is effectively untouchable by the courts.</p>
<p>In this followup, Cringely suggests that the only way to beat Microsoft is to ignore them.  If you allow Microsoft to define the rules of the game, they'll always win.  Cringely contends that Sun is falling into the same trap with the recently announced Sun-Microsoft settlement.</p>
<p>He offers an audacious suggestion for Sun: Use Microsoft's settlement money to give every single Sun employee a paid six week sabbatical during which they must come up with new ideas to improve Sun, or leave.  Like him, I doubt they will do it.  But I wonder if the Sun of ten years ago would?</p>]]>

</content>
</entry>
<entry>
<title>Situated Software</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2004/03/situated_softwa.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2004-04-01T01:19:41Z</issued>
<id>tag:weblogs.java.net,2004:/blog/ronhitchens/54.115</id>
<created>2004-04-01T01:19:41Z</created>
<summary type="text/plain">How does the situation affect the nature of the software you build?</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>Patterns</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>A reference to <a href="http://www.shirky.com/writings/situated_software.html">this article</a> by <a href="http://www.shirky.com/bio.html">Clay Shirky</a> was posted to a Patterns mailing list I belong to.  I found the new perspective on software engineering so fascinating that I thought others would be interested as well.</p>
<p>Mr. Shirky describes his experiences while teaching at NYU and the approaches his students took when creating software for very specific, well-known social groups.  He's basically talking about the opposite end of the spectrum from highly general, scalable, enterprise web applications.</p>
<p>I found his observations about how the situation in which the software is to be developed and deployed to be most enlightening.  Should we learn to think outside the JVM?</p>]]>

</content>
</entry>
<entry>
<title>What I learned at SD Expo West 2004</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2004/03/what_i_learned.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2004-03-22T07:50:29Z</issued>
<id>tag:weblogs.java.net,2004:/blog/ronhitchens/54.1317</id>
<created>2004-03-22T07:50:29Z</created>
<summary type="text/plain">Trade shows are a waste of time and money, right?  Maybe not.</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>Business</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<div><p
>I was lucky enough to spend all of last week at Software Development Expo West (<a
href="http://www.sdexpo.com/"
>SD West</a
>) in Santa Clara, California. I usually don&#39;t have the luxury of devoting so much time to a &#34;non-essential&#34; activity, but the stars just happened to align fortuitously. My wife is expecting our second child soon and I&#39;d scheduled myself to be voluntarily unemployed at this time anyway.</p
><p
>I can&#39;t remember when I&#39;ve learned more or had a better time at a technical conference. It&#39;s not only because I&#39;m more-or-less at leisure (and therefore don&#39;t have deferred work nagging at my subconscious) but also because of the people. As with so many things in life, it&#39;s the people that really matter.</p
><p
>I wrote <a
href="http://www.oreilly.com/catalog/javanio/"
title="Java NIO"
>a book</a
> for O&#39;Reilly and have done a little speaking at various groups and conferences as time and opportunity have permitted. Doing so has allowed me to rub elbows with many fascinating and well-known folks that I&#39;d never otherwise expect to meet. A bunch of them were at SD West.</p
><b
>Lords of the Ring</b
><p
>I spent so much time talking with so many people at this conference that I often found myself standing in rings -- slowly expanding rings -- talking to all sorts of people about all sorts of things. Most of them were wearing Speaker badges.</p
><p
>If you&#39;ve ever attended a conference and spotted a well-known author (or several) standing around on the show floor talking with colleagues but were intimidated to approach, don&#39;t be. Most speakers when attending a conference are more than happy to talk with you about their field of expertise -- that&#39;s why they&#39;re there. Join the ring. Step right up.  Introduce yourself. Odds are they&#39;re talking about email spam or something equally mundane and will be happy for a change of subject.</p
><p
>Good technical conferences (and SD Expo conferences are among the best) are extremely valuable resources. They bring together a critical mass of big thinkers and important information that you just can&#39;t find in any other venue. Exploit that resource. Jump in and interact with the like-minded people around you. Participate.</p
><b
>Everything I Know Is Wrong</b
><p
>So, what did I learn at this great conference that I&#39;m blathering on about? Let&#39;s begin at the end.</p
><p
>The last session I attended on Friday afternoon was by <a
href="http://www.holub.com/company/allen_holub.html"
title="Allen Holub"
>Allen Holub</a
>, with the provocative title &#34;Everything You Know Is Wrong: Why Extends and Get/Set Methods Are Evil&#34;. This talk was based on a series of <a
href="http://www.javaworld.com/"
title="Java World"
>JavaWorld</a
> articles written by Mr. Holub (<a
href="http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html"
title="Extends Evil"
>here</a
> and <a
href="http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html"
title="Get/Set Evil"
>here</a
>, also look <a
href="http://www.holub.com/publications/articles/index.html"
title="Holub Index"
>here</a
>). There are some deep insights here into the nature of Object Oriented vs procedural programming and how established practices are not always best practices.</p
><p
>At the end of this talk I knew I&#39;d made these same mistakes and knew that I should have known better. I learned that I should constantly examine my assumptions, especially those I&#39;m most comfortable with.</p
><p
>Rewind now to Day One. Most of the day I spent in a tutorial on <a
href="http://www.jdocentral.com/"
>Java Data Objects</a
> (JDO). JDO is a favorite topic of mine. I&#39;ve used it in commercial projects and given presentations on it here and in Europe. I believe JDO is a great, under-appreciated technology that has yet to reach its full potential.</p
><p
>The tutorial on Monday was led by Kieron McCammon, CTO of <a
href="http://www.versant.com/"
>Versant</a
> and a member of the JDO Expert Group. Even though I already know JDO very well, I still learned new things from Kieron. Later in the week, Craig Russell (<a
href="http://www.jcp.org/en/jsr/detail?id=12"
>Spec Lead for JDO</a
>) gave a presentation on the upcoming features planned for JDO 2.0. The forthcoming enhancements promise to make JDO a compelling solution for even the most demanding enterprise apps. </p
><p
>But the highlight of Monday was the lunchtime keynote by <a
href="http://www.stevemcconnell.com/"
title="Steve McConnell"
>Steve McConnell</a
>, whose upcoming book <a
href="http://www.stevemcconnell.com/cc2/cc.htm"
>Code Complete, 2nd Edition</a
> is highly anticipated. The first edition was published about a decade ago and the keynote was about how the software industry has evolved in that time. What I learned was that many of the principles underlying the Agile movement are not new and have manifested in diverse ways throughout the industry.</p
><p
>I also learned this week that Daniel Steinberg can never make it for lunch.</p
><b
>Jam-Packed Craniums</b
><p
> I won&#39;t bore you all with a complete rundown of my conference schedule for the week. But I do want to note a few don&#39;t-miss speakers that you should never pass up a chance to see.</p
><p
><a
href="http://www.objectmentor.com/aboutUs/bios/Robert%20C.%20Martin"
title="Uncle Bob"
>Robert C. (Uncle Bob) Martin</a
> led a fascinating free-form discussion on Friday. It pretty much followed the subject matter of his amazing book, <a
href="http://www.objectmentor.com/resources/bookstore/books/AgileSoftwareDevelopmentPPP"
title="Agile Software Development"
>Agile Software Development: PPP</a
>, but ranged from speculation about parallel <a
href="http://aca.mq.edu.au/PaulDavies/article_Universe.pdf"
>Hubble Bubble</a
> universes to the importance of <a
href="http://www.officemax.com/max/solutions/product/prodBlock.jsp?BV_UseBVCookie=yes&#38;expansionOID=-536879654&#38;prodBlockOID=52885"
>3x5 index cards</a
>. Bob Martin is one of the smartest (and apparently, nicest) people in this or any other Hubble Bubble. Whenever you have the opportunity, listen and learn.</p
><p
>I attended a very informative session by <a
href="http://www.poppendieck.com/people.htm"
>Mary Poppendieck</a
> on Wednesday about software productivity and lessons learned in recent years. Mary contends that the software industry is hurting right now primarily because of declines in productivity that have snuck up on us over the last few years, not so much because of recession or even offshoring. It&#39;s about process and processes in the software industry are often lacking when compared to more mature industries.</p
><p
><a
href="http://www.servlets.com/jason/index.html"
title="Jason Hunter"
>Jason Hunter</a
> gave a well attended talk on <a
href="http://www.xquery.com/"
title="XQuery"
>XQuery</a
>, a new <a
href="http://www.w3.org/XML/Query"
>W3C standard</a
> that&#39;s nearing completion. XQuery provides a standardized way of referring to and manipulating &#34;jagged data&#34; -- basically anything that can be represented as XML. XQuery is exciting because it could greatly simplify the task of working with the mountains of structured data that don&#39;t fit neatly into relational databases. XQuery is something to pay attention to (Jason too, for that matter).  From Jason I also learned of a good burrito place in Sunnyvale.</p
><p
>The most entertaining event of the week was the evening keynote by <a
href="http://www.pbs.org/"
>pbs.org</a
> columnist <a
href="http://www.pbs.org/cringely/"
title="Cringely"
>Robert X. Cringely</a
>. One of the first things he said was &#34;I used to be a developer -- now I&#39;m developed&#34;. Funny guy. Smart guy. I can&#39;t remember much else of what he said. I was laughing too hard. I learned that back in the day, Apple must have been a hell of a place. </p
><b
>What Did You Learn Today?</b
><p
>So why does my rambling about yet another tech conference matter? I think it matters, at least to me, because I was reminded this week that it&#39;s important to always keep learning. And to keep re-learning that you need to keep learning. It&#39;s very easy to settle into a comfort zone and engage the cruise control.</p
><p
>The software industry in general and the Java platform in particular are undergoing seismic shifts. To survive you need to stay current and learn to see the big picture. You need different perspectives, new ideas and the courage to take on new challenges in a world where the old rules may cease to apply, conventional wisdom may become foolish and Moore&#39;s Law can kick your ass.</p
><b
>Life Renews</b
><p
>A new life will be joining my family very soon. I look forward to teaching her. But more importantly I can&#39;t wait to learn something new from her each day.</p
><p
>What did you learn today? Who will you teach tomorrow?</p
></div>]]>

</content>
</entry>
<entry>
<title>ESR to McNealy: Let Java Go</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2004/02/esr_to_mcnealy.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2004-02-14T01:17:13Z</issued>
<id>tag:weblogs.java.net,2004:/blog/ronhitchens/54.800</id>
<created>2004-02-14T01:17:13Z</created>
<summary type="text/plain">Sun says &quot;The open-source model is our friend&quot;.  Eric says &quot;Let Java go&quot;.</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>Community</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>Eric S. Raymond has posted an <a href="http://www.catb.org/~esr/writings/let-java-go.html">open letter</a> to Sun on the topic of open source and Java.  With typical ESR directness, he tells Sun that they need to choose between ubiquity or control.  They can't have it both ways.</p>
<p>I'm generally in agreement with Eric on this one.  I think Java needs to be open sourced to survive.  James Gosling has even made <a href="http://www.computerworld.com/developmenttopics/development/java/story/0,10801,82109,00.html">favorable statements</a> about open-sourcing Java.  The current situation, where Java is buffetted about by Sun's corporate concerns, seems not to be good for Java (or Sun, for that matter).</p>]]>

</content>
</entry>
<entry>
<title>Sun Wants Middleware To Go Away?</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2004/02/sun_wants_middl.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2004-02-10T19:35:23Z</issued>
<id>tag:weblogs.java.net,2004:/blog/ronhitchens/54.1153</id>
<created>2004-02-10T19:35:23Z</created>
<summary type="text/plain">Jonathon Schwartz has declared that middleware is history.  But it sounds like Sun is trying the old &quot;it&apos;s part of the OS&quot; trick.  Where have we heard that before?</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>J2EE</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>Java Developer Journal is running a <a href="http://sys-con.com/story/?storyid=43550&DE=1">press release, er, article</a> about Sun's latest marcom that "Middleware is History".  I suppose this phrase is in reaction to IBM's "Middleware is Everywhere" (witness the dueling billboards on Highway 101), but I don't think they're sending a positive message.  The followups posted to this article are near universally negative.</p>
<p>I realize that Sun is going through some tough times and are trying to reposition themselves, but I'm afraid they're hurting Java more than helping it as they go through these various jyrations.</p>
<p>We need less confusion in the market about the future of Java and J2EE, not more.  Redmond must just <i>love</i> this stuff.</p>]]>

</content>
</entry>
<entry>
<title>The End of the Beginning?</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/ronhitchens/archive/2003/12/the_end_of_the.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2003-12-30T10:13:41Z</issued>
<id>tag:weblogs.java.net,2003:/blog/ronhitchens/54.49</id>
<created>2003-12-30T10:13:41Z</created>
<summary type="text/plain">When we&apos;re no longer writing programs, do we still need programming languages?</summary>
<author>
<name>ronhitchens</name>

<email>ron@ronsoft.com</email>
</author>
<dc:subject>Business</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/ronhitchens/">
<![CDATA[<p>I love Java. I love writing Java code. I've even
written <a href="http://www.oreilly.com/catalog/javanio/">a Java book</a>. I've used zillions of
programming languages and Java is the one I like the best. But there's a question that's
been nagging at me lately: Does Java, or any programming language, really matter any more?</p><p>Having
been in the computer business for a very long time - the first computer I ever worked with used
punched cards and was as big as my first apartment - I've seen a lot of changes in the nature
and public perception of computing. And I can't shake this feeling that we're in the midst
of a profound, evolutionary change.</p><p>In his now famous article <i><a
href="http://searchcio.techtarget.com/originalContent/0,289142,sid19_gci905877,00.html">IT
Doesn't Matter</a></i>, <a href="http://www.nicholasgcarr.com/">Nicholas G. Carr</a> makes the
argument that the IT industry is maturing and has become effectively irrelevant to a company's
competitive strategy. In and of itself, Information Technology no longer has any intrinsic
competitive advantage. It's simply one of the essential ingredients needed to run a modern
corporation - like electricity, telephones and foosball tables.</p><p>But my nagging feeling is not
so much about business trends as it is about similar evolutionary forces acting on the technology of
software itself. Carr refers to earlier technologies that have transformed industry (steam engine,
railroad, telephone, etc). Throughout their lifecycles, each has initially transformed - or
disrupted - their environment and then themselves been transformed because of the changes they
brought about.</p><p>I believe software development is entering such a mid-life, transformative
stage - it's changing because of the changes it's caused in business and society.</p><p>Computers
are no longer exotic, science-fictional wonders, they're a part of our everyday lives. And, as
the off-shoring trend of recent years has made excruciatingly clear, programming is no longer a
rarefied skill exclusive to a gifted few. To a large extent it's become a routine trade that
almost anyone - anywhere - can perform. A commodity.</p><p>But the shifting economics of earning a
living as a programmer is not what I'm talking about either. That's a political and
sociological discussion. The thing that's nagging at me has to do with the programming itself.
The way we as humans communicate what we want a computer (or a system of computers) to do.</p><p>Software
has historically been inextricably linked to computer hardware design. Assembler languages gave us a
one-to-one translation of mnemonic symbols to the numeric codes that a CPU understands. Higher level
languages brought a more semantically rich set of symbols, and a more complex compiler to do the
translation, but we're still essentially expressing ourselves in terms a CPU can understand.</p><p>Object
technology helps us conceptualize things a little better. We don't feel so constrained to the
lock-step, linear instruction execution model. But when you look inside an object method, it's
still made up of those fine-grained marching orders for a CPU. We still seem to be tied to the
paradigm of writing text that's translated to the CPU's native language.</p><p>I've been
wondering lately if this notion, abstracted though it may be, of people writing text that's then
translated into opcodes isn't something we've outgrown. It's the 21st Century but the
way we as programmers communicate instructions to computers hasn't changed fundamentally since
<a href="http://en2.wikipedia.org/wiki/Grace_Hopper">Grace Hopper</a> started doing it nearly 60
years ago.</p><p>I saw a demo at SD West 2003 of the work <a
href="http://www.intentionalsoftware.com/">Intentional Software</a> is doing and have read a little
about the <a href="http://research.sun.com/features/ace/">Ace</a> and <a
href="http://research.sun.com/projects/jackpot/">Jackpot</a> projects at Sun, all of which are
exploring alternate ways of representing code. But I've actually been intrigued by this concept
<a href="http://www.oreillynet.com/pub/wlg/2108">since I decided to switch</a> to <a
href="http://www.intellij.com/">IntelliJ/IDEA</a> as my Java development environment.</p><p>IntelliJ
was the first IDE I used that was designed around the concept of language understanding rather than
text editing (it may not have been the first, it doesn't matter, it was the first one I
encountered). IntelliJ is such a great tool to use because it understands the Java language. It
instantly checks code as you type it both syntactically (is it well-formed) and semantically (does
this make sense in the context in which you're using it). It's the latter that's really
valuable - manipulating text is not what I care about, it's getting the code right that matters.</p><p>Once
I got up to speed with IntelliJ, I noticed a subtle but profound shift in my thought process. I
began to think of coding less as a text editing activity and more as an object crafting activity.
Because the tool understood the language I could trust it to do the mundane editing tasks while I
concentrated on the higher-level meaning of the code. This has far-reaching implications.</p><p>Rather
than thinking of the code as lines of text, I now conceptualize it as chunks of functionality that
can be split, combined or reshaped as needed. The chore of making changes to the text files is
handled by the tool. I'm able to devote my concentration to the more important aspects of
programming: responsibilities, relationships, cohesion, coupling, patterns, and all the other stuff
that makes for well engineered software. And when I see that something needs to be changed I
don't hesitate because the tool can make the change easily - even if that change may affect a
hundred source files. This makes for better code and it makes me a better coder.</p><p>Tools like
this use a sophisticated internal model to represent the code. Where there's a model,
there's usually a view of that model. And if there's one view, why can't there be
others? When a tool can present your code to you as UML diagrams, color selectors, tables, live GUI
widgets or whatever, the textual view we're all so familiar with starts to feel rather
constraining.</p><p>So this begs the question: If tools can liberate us from mundane text editing
and we code so much better when interacting with a more wholistic model, why do we bother to keep
the text file representations at all? In today's world, it certainly seems as though building
programs by manually munging text files is one of the least efficient - and most expensive - ways to
go about it.</p><p>I don't know what the next great innovation in programming will be. It may be
here already for all I know. But I do know that the labor-intensive, text-based programming method
we've been using for the last half century will wane - it's simply not going to be
economically viable much longer.</p><p>A friend of mine once pointed out that the majority of
business programming is done not in Java, C/C++, Cobol or even Visual Basic, but in Microsoft Excel.
I wouldn't consider a spreadsheet a programming language, but it certainly is an effective way
for humans to communicate to a computer what they want done.</p><p>This, I think, is where the
future lies. Finding the most appropriate way to communicate for any given problem domain. The era
of humans translating their thoughts into sequential steps for the CPU to execute is ending. Just as high level
languages supplanted assembler because they were more expressive and hid more of the details of the
execution environment, I believe the next phase will be to move beyond the textual representation of
programming logic for most applications.</p><p>Of course, conventional programming languages are not
going away overnight. I suppose what I'm really talking about here is a new sedimentary layer
being laid down atop what's come before. The future is alway built on the foundation of the
past. The programming languages of today will beget the next generation of programming tools.</p><p>I
believe we've reached the end of the beginning of the computer revolution. But we're nowhere
near the end. Just as printing technology evolved from letterpress to linotype to offset to laser
printer, the nature of programming must also evolve. It's going to be interesting to see which
mutations survive in this brave new Darwinian world. In any case, I'll be sad when I finally
have to say goodbye to my old friend, Java.</p>]]>

</content>
</entry>

</feed>