ODTUG Kaleidoscope 2007

As you probably saw in Ernt’s earlier post, we exhibited at ODTUG Kaleidoscope this year. It was our first year at the show, but I don’t think it will be our last. To me the show was more valuable than Oracle Open World which we’ve exhibited at for the past 3 years. It may be that as a vendor, exhibiting at OOW is a necessity, but as a developer, exhibiting at the ODTUG show was much better.

What was most encouraging was being able to demo our products to a wide range of people who understood what we were talking about and what our products are trying to achieve. I believe that anyone who believes in code generation as a viable “enhancement’ to custom development should take a look at Rev and see what it can do. I was encouraged to speak to one person who said that he believed we are getting to the point where everything can be done by code generation. I certainly believe that any software project that persists data to a database can benefit from code generation.

Enough about Rev. We had the chance to demo Evo to a number of folks who had some great insight and advice. To me, that was what made the conference such a success. The ability to be able to network with such a great community of people who really want to see a product that can do things right was encouraging.

I had long wanted to speak with Wilfred van der Deijl about his solution to the ADF/Forms integration problem and get his impression on Forms to ADF conversions. At this conference I had the chance to do that. Even though I missed his presentation (the time had changed and I didn’t check the board), he was kind enough to stop by the booth and show it to us personally. It’s a great solution for a problem that we have been asked about many times. If you are into Forms or ADF developement, you should definitely check out his blog. It was nice to see from his blog that he believes we are on the right path.

Peter Ebell over at AMIS in the Netherlands stopped by. If you are into hardcore ADF development, checkout the AMIS blog where Peter is a contributor. Anyway, he stopped by to get a demo of our Forms conversions and hopefully will post his thoughts about it. We talked a lot about Forms Conversions, JHeadstart, and even Whirlyball.

I, unfortunately, did not have the time to attend any of the sessions I wanted to. In each case, when the time for one of those sessions rolled around I was engaged in a product demo or an interesting discussion with one of the attendees. I suppose it’s better to network at these things than sit in on sessions all day, but a nice mix would have been appreciated.

It was a great show and we all had a good time. Though I am not a NASCAR fan in particular, I did get to Daytona USA as guest of Oracle’s at the ODTUG party they held there, and though I was less than impressed, when I stopped by the following day as we were leaving Daytona and got a chance to check out the grandstands with some cars on the track, it was very cool. I don’t think I’ll be watching any NASCAR races on the tube at home, but if I get the chance to attend a race in person, I think I’ll take it. Just the sound of those engines as the cars go screaming by is quite impressive. Not quite as impressive as Evo or Rev, but impressive nonetheless ;-)

Share/Save/Bookmark

“Successful” Software != “Good” Software, and Vice-Versa

The other day a friend and I were discussing an article I had read entitled The Top 25 Worst Tech Products of All Time . The article proclaimed that the 90’s ISP giant AOL was (for lack of a better term) downright trash: the bubble-era behemoth took top honors as the worst-of-the-worst. My friend, being more business-minded than I, couldn’t fathom how a product boasting 34 million subscribers worldwide (at its peak) could possibly be considered “bad software”. I began to espouse ideals such as “robustness” and “reliability” and other buzz-word software qualities gleaned from my collegiate Software Engineering classes and explained how the bloated provider fell short of every one of these. He’d have none of it.  

“Any product that can place a stranglehold on any market in the way that AOL did has to fall under the ‘good’ category otherwise it wouldn’t stick around,” he claimed. “No,” I retorted, “market share only equates to ‘successful’ and ‘successful’ is a completely different beast than ‘good’.”

Now, obviously there is no software metric quite as binary as “good v. bad” or “successful v. unsuccessful” and there is certainly a vast grey area between the bookends and any judgment made in these areas is just that, an opinion, but suppose for a moment we attempt to define the two qualities of “good” and “successful”.

If we define “successful” as my friend would have us, then this is a measure of profitability. It is a metric of the quality of the idea behind the product and how well that idea is marketed, not a metric of the product itself. If we define “good” as I (a software developer) would have it then this becomes a measure of technical achievement – a metric based on how accessible, intuitive, and overall bug-free the product is. Given these as a baseline it becomes self-evident that AOL may possibly be the most successful and least good product ever to reach market.

AOL is certainly not the only product to fall into this bewildering category wherein the success of a product far outweighs its quality. A majority of webizens would claim that Windows itself is the largest culprit of today’s bunch. You’d be hard pressed to find many outside Redmond who would concede that Windows over the years has ranked any higher than “acceptable” in their hearts, and sometimes far worse (ME anyone?).

So, what is it that makes these less-than-stellar products so lucrative? Its all about innovation and timing combined with the miracle of marketing. Gates saw an open landscape of computing at the consumer level and as such realized that mainframes just wouldn’t cut it. Operating systems of the future would need to be intuitive and user-friendly enough that anyone from eight to 80 would be able to use them without needing an engineering degree. So then why Windows and why not Mac? The Mac OS was just as intuitive (many would argue that today it has surpassed Windows in overall usability) and boasted higher levels of overall stability and security, so why did it not lead the PC revolution? The reasoning comes down to the core ideas behind both Mac and Windows OS.

Mac decided to specialize, where as Windows decided to try and make everyone happy. Mac OS developers didn’t have to guess at what the registry values on their chip were going to be, they simply had to walk two cubicles down and ask the designer. Mac did what they did well, but they only did it well on a very specific set of hardware, and as such the costs were high.

Windows went the opposite direction. Windows attempted to support every piece of hardware conceivable. In this way, no one company obtained a monopoly over hardware. Multiple companies had to compete to create better, faster, and cheaper electronics. Prices were kept down and Windows-based PCs became consumer-affordable. But, as they say, you can’t please all of the people all of the time. Such an ambitions undertaking is bound to have issues.

So, here we see how a downright fantastic idea on paper can fall short of being an overall “good” product. It’s a marvel of technical achievement that Windows has been able do so much for such a wide variety of hardware but achievement alone does not earn it the “good” merit badge. Installation issues, security issues and those pesky-yet-necessary updates to address the yo-yoing list of bugs cause the OS to flounder under critical scrutiny.

In much the same way, AOL was a good idea on paper which broke down in execution. By direct mailing millions of discs containing “free” access to this new magical “interwebs” people had only heard about on TV and from friends, AOL was able to shove their product down the throats of an unsuspecting populace who didn’t know better. Joe AnySurfer was unaware he could get the same service for cheaper with other providers and slowly became addicted to his buddy list. None of this however made the product any good. It didn’t need to be. People overlooked the busy access numbers, frequent drops, bloated and unnecessary UI, ads, and sub-par email simply because they didn’t know any better. As soon as broadband became widely acknowledged and consumer-priced, many jumped ship.

On the other side of the coin, we have “good” but “unsuccessful”. This is a much smaller category to the public eye but unfortunately a much larger category in reality. There are thousands of unsuccessful pieces of software out there. Every failed startup; every home-brew app that doesn’t make it out of someone’s mom’s basement; every website with counters reading in the tens of visitors; many of these are incredibly well executed but you’ve never heard of any of them. All the public hears about are successful products (or monumentally unsuccessful products that were no good to begin with). It’s hard to find an example from this category that everybody recognizes, but I submit that Mac OS X could fit this bill in the long run.

Mac has and will always manage just fine and aren’t in any danger of going under, however when one takes a closer look at the latest iteration of Mac operating systems and views it in context, it begins to look more and more like a waste of resources. OS X is a beautiful, simplistic, expensive operating system which only works on a fragment of the computers on the market. The machines which are required to run OS X have, themselves, induced a fair amount of sticker shock. Add to this the fact that all newly produced Macs use an Intel chipset - which allows Mac users to run Windows for the first time in history - and its plain to see why OS X is under-represented.

It’s an unfortunate truth that what’s a good idea today may not be a good idea in two years when all your hard work comes to fruition. All we (as developers) can do is challenge each other to write better code and to continue to push the limits of what’s possible. We work in a medium unlike any other where any idea is possible; it’s just a matter of finding a way to do it, and doing it right.

Share/Save/Bookmark

ODTUG - cool folks, good info

So, we (Vgo Software) exhibited at the Oracle Developer Tools User Group conference in

Daytona Beach this week.  The show was really well attended with a good focused group.  We were there demo’ing Evo and our new Rev product and both were well received.I guess the thing that impressed me the most was the real feeling of a community there.  I hadn’t been to an Oracle users group event since ‘98 and it was really great to see the exchange of ideas and constructive dialog (sometimes quite colorful).  In ‘98, most of the attendee’s were from the States.  There were many folks from different countries who attended or presented at the event and that provides a great perspective on topics.

A main message at the conference was discussion around the SOA Suite and Oracle’s direction in regard to SOA in general.  From my perspective, it’s timely that this message be promoted in a serious manner as it is on (or should be) everyone’s mind.  To me, an important message in SOA adoption is that what you are adopting is an architureal model, not a magical tool that ties apps together.  Probably obvious to most, but I think people may come away thinking “You know, if I implement a Service Bus and throw a couple of messages across it, I’ve got one of them SOA’s” when they see new products come out.  I’ll end up discussing SOA adoption more at some other point.

Back to ODTUG, (if you haven’t noticed, I end up going on tangents alot.  I’m not sure what the equivalent of “blog stoning” is, but please be patient) Clemens Utschig is the PM for SOA Suite and did a good overview of the new features in 11.  It looks like there is tighter, or better integration of the key component pieces.  My hope is the ESB is more solid and it sounds like it will be.  A number of bugs in 10 have been addressed and there are apparently 5000 people hammering away at this thing (it’s funny, but there always seems to be 5,000 people working on something at Oracle) so you have to think v11 will be solid.

I sat through David Hay’s conversation about Data Modeling vs. XML.  I missed the first 10 minutes, which I’m sure set the stage, but I couldn’t really rally enough to understand why the comparison was being made at all.  It was a very nice overview of conceptual modeling though.  David is a well known speaker and knowledge expert and his talk was compelling at a number of levels.  It did raise a number of what would be wonderful speaking topics such as “what is data context” and “what is a service catalog”, which I might even attempt to take on myself at DAMA or another Oracle event.  I guess I’ll wait and see if anyone reads my posts here and make sure I don’t get laughed off the world-wide-stage, as it were.

The other Vgo Software guys got to attend more of the deep technical presentations and I’ll get them to post their views on stuff.  I had to sort of stay on the networking side of things.   I’m happy to have met a number of great guys, such as Peter Ebell of AMIS (AMIS has a good blog at http://technology.amis.nl/blog/; great info for the Oracle Java crowd among other things), Wilfred van der Deijl of Eurotransplant (good blog for Oracle developers at http://www.oratransplant.nl/) and Steven Davelaar of Oracle JHeadstart fame.With Peter, Steven and Wilfred, we had a good discussion about the Forms to Java conversion story.  I think I’ll probably create a dedicated thread to this as it warrants it, but until that comes I can summarize the discussion and the choice to convert as “it depends”.  Vague, I know, since “it” depends on alot.  Some big dependencies are why you would consider it (saving money and being supported shouldn’t be the top priorities; strategic technology advancement (read “SOA) should be 1 or 2 on the list), are you ready for it (yes, you should know J2EE technologies; there is a stack there) and most importantly (and no one ever talks about this and I’m not sure why; maybe I’ll post…) is your business ready for it.I can’t say that we disagreed on much.  Frankly, we did agree on many many things like if you feel like you want to be supported, upgrade.  If you have strategic needs to convert to J2EE technologies, be smart about what you convert, how you do it and how you plan to implement it (more coming in future blogs by me and, probably more importantly, Rob). Lastly, I was happy that both Evo and Rev were really well received by the attendee’s who stopped by.  Lured by our now famous elastic rockets, people got a free copy of our Rev demo and reminded that updates to Rev are posted on the site regularly.  We also featured some new stuff in Evo like enhanced analysis and web service generation from Evo and JDeveloper.  People were happy to see the re-use capability in action and the code it produced; always nice to get that feedback.That’s it for this entry.  Rob and Dave will post some stuff too, I’m sure.

Share/Save/Bookmark

Documentarian


Share/Save/Bookmark

Java Pass By Reference

A colleague of mine, sent me this link in regards to a discussion we were having about passing values and references in Java. It is a good article and includes a couple of descriptions of how Java works, but I still found it rather confusing.

Through my years of coding Java, I’ve learned that this discussion comes up at least once a year with somebody I’m talking to. So, to keep these questions to a minimum and to find a way to explain it that covers probably 90% if not all of the situations simply and easily, I’ll tell you how I always remember it.

My simple rule of thumb is this: If there is a “=” operator assignment inside a method, realize that the change is not going to be visible outside of the method. If the change is made via a set method, such as myDTO.setValue(”changed value”), it will be visible outside the method. The reason is that when you use an “=” operator you are creating a new reference and changing that variable to point to it. The original variable will still be pointing to the old reference, thus not visible outside the method. When you use a setter, you are changing the value that the reference is pointing to, thus it is visible outside of the method.

So that’s my rule of thumb. I haven’t spend much time analyzing it to see if it covers all cases, but I can tell you that it works for me.

Share/Save/Bookmark