July 2003 Archives

Steve Anglin

AddThis Social Bookmark Button

Microsoft has no monopoly on Windows. Specifically, that’s because of the increasing competition on the server, PDA, cell phone, and even the desktop.

Server-side

On the server-side, MS Windows products such as Windows NT, Windows .NET Server and the like face significant competition with established UNIX servers from HP, IBM, and Dell. Of course, Linux has increasing market share at the expense of Windows and UNIX, and has increasingly gained favor with the open source and Java developer communities. Gartner and other research houses have Windows on the server-side anywhere between 22%-35% where UNIX and Linux have the majority share at around 50-60% combined. The remainder belongs to Sun’s Solaris OS, Apple’s Mac OS X Server, and other OS. Given this, Microsoft does not have a monopoly in this area.

Wireless

According to a recent USA Today article and Probe Group, Microsoft only has a 6.8% market share with its MS Pocket PC OS for PDAs and other handheld wireless devices and only 2.1% with its MS Smartphone OS for cell phones (mainly Orange in Europe). The Symbian OS leads with 54% followed by the increasingly popular Linux with 30% and Palm OS with 5.8%. With Java becoming the leading and accepted development platform for wireless devices and cell phones, look for Microsoft to be challenged even more in this area, despite Microsoft’s recent deal with Motorola in which Motorola will sell phones with MS Smartphone sometime later this year. Certainly though, Microsoft is not a monopoly here in this healthy, competitive environment.

Desktop

Surely though, Microsoft has a monopoly here. Right? Well, they might have a “virtual monopoly” in this area, but in reality, Microsoft is losing market share to Apple’s Mac OS X and PC desktop systems running more consumer friendly flavors of Linux such as Red Hat Linux, Lindows, and the like. Research indicates that Microsoft may have anywhere from 89%-95% market share depending on who you ask. Average that out to around 91-92%; you might have a somewhat accurate number. Anyway, this does not constitute a true monopoly. However, Microsoft’s behavior complicates this because the R&D investment in Windows for the desktop may not be there given the security flaws and issues that seem to come up with every release. But still, Microsoft is only a virtual monopoly here.

Conclusion

In conclusion, when I go to an open source or Linux conference and hear developers say that Microsoft is a monopolist, they’re wrong in the pure sense of the word monopoly. At least, that’s what I think, and we need to be careful with the use of this word, monopoly. That’s all.

What do you think?

Dion Almaer

AddThis Social Bookmark Button

TMC has released their “retrial” of the Petstore “case study”. I know from experience that this one was handled entirely differently, and I think the results show this. Although some people will jump through the whitepaper, looking for a statement like “X beats Y”, they shouldn’t be looking for that kind of statement in this paper. In my opinion, the value of this paper is in showing exactly what was done, giving us valuable information on tuning this particular application. You can’t jump to too many conclusions. For example, the CMP version of the PetStore (mPetstore) actually out performed JPetstore, which didn’t use CMP. Does this now mean that CMP is suddenly fantastic and that we should all use it? no. The paper explains some theories on why this result was seen.

Basically it is due to the nature of the benchmark where hitting the app very hard gives the method dispatch mechanism a chance to show a lot of the performance. JPetstore used a fair amount of Reflection, compared to next to none for the CMP side…. so this made the difference. Does this mean that reflection is evil? NO. Most of the time the performance hit doesn’t matter to use at all (especially compared to the productivity we are getting), but in certain cases, yes, you want to bypass this. Reflection is getting better and better, but even in JDK 1.4.2 (which was used in the case study) it reminds us that there IS a penalty.

If you are a J2EE (or even a .NET) architect, I would take a look through this paper, as it takes the time to detail what was done, and what came out of the experiment.

Web Services was shown to be lagging behind J2EE (even though the other tests: web app and 24hr reliability were shown to be fairly even). I would love to know if a tool like The Mind Electic’s GLUE would have made up the difference (or gone even better).

I also hope we get more feedback on other things that TMC could do with this case study. I hope we continue to get the opportunity to do more case studies like this, trying to get more experiences that can help developers in the future. If you have any questions/concerns please post on TSS, and/or email casestudy@middleware-company.com.

Go to the TSS thread on the case study

Also visit the Case Study Home page

I look forward to reading what other bloggers/folks think/feel about these results.

William Grosso

AddThis Social Bookmark Button

Related link: http://www.timespring.com


Well, not really. But has anyone else noticed that time-based tagging is becoming
more and more important to the way we store and process data?


It’s kind of fascinating. In 1996, David
Gelerntner
proposed LifeStreams.
To quote from the abstract:

A lifestream is a time-ordered stream of documents that functions as a diary of your electronic life; every document you create is stored in your lifestream, as are the documents other people send you


To put it crudely, documents are indexed and accessed by when you saw them, instead of what folder you placed them in.


It’s a neat idea, and one that has mostly languished near the fringe of computers.


But, last year I noticed that debuggers were starting to become time-based (and see also retrovue, which is a similar product). The basic idea: store all the events that happen in the program in sequence, so that debugging becomes less like abstract thinking and more like rewinding / replaying a movie. The key insight: the state of the program is important. But perhaps more important is how you got there (and, by the way, Bil will be speaking at this year’s OOPSLA about debuggers).


A few weeks ago, I ran across the idea of
continuous backup. The key idea: rather than do static filesystem backups (e.g. “every day, at midnight we backup the servers”), record all the events that are happening to the disk, and create the ability to backup to any point in time (not just to a small number of predefined discrete points).


These all seem, to me, to be variations on similar ideas. The core idea: tracking and tagging all information that comes in by time (and then using that for search, debugging, or restoring respectively) is a simple one. But it’s interesting, if only because we so often use spacial metaphors (”where is it on my desktop”) and so rarely use time-based ones.


P.S. The main url, for Timespring, is for the first continuous backup company I ran across. I saw what they’re doing and thought “Bil Lewis’s Debugger for file systems.”

Have you seen time creeping in anywhere else?

Dion Almaer

AddThis Social Bookmark Button

I had a great time interviewing Gregor Kiczales, the guy who founded AOP/AspectJ at Xerox PARC. It must be such an interesting time for him, to see AOP growing more and more, seeing other frameworks out there (and probably seeing some of them making mistakes his work has already gone through!).

Check out the interview and comment on what you thought of his comments!

Dion Almaer

AddThis Social Bookmark Button

James Strachan was talking about how Mike Cannon-Brookes was showing him Voodoopad for OS X. Mike showed me Voodoopad at the TSS Symposium, and since I just got a PowerBook, I decided to play with it.

Wiki is now everywhere. I can have an easy to edit version of my life, and a lovely trail of all that is important. The web has come to an application, and it is EXTREMELY easy to use.

Now, if there was a way where it could be easily shared when a user wants to (e.g. part of my “todo” list could be shared with my wife [to try to get her to do all the work] on our network, other areas should be shared with “everyone” like a wikiweb… etc. Work out some sync issues, and then you could have a wiki that is on the web, and follows you around. I love being able to sync up my notes to my iPod. Now my todo-list, info on what I am doing at the moment etc really is always with me.

Dion Almaer

AddThis Social Bookmark Button

As I was going through setting up my IDEs on my new Apple PowerBook (yeah, I love OS X now too), I thought that it could be kinda cool if we had standards for code style. At the moment I can say things like “I want the { on the same line for if statements”, but wouldn’t it be nice to say “I want the Sun Java Coding standards”, and boom have my code conform. This would allow us developers as individuals, to look at code the way WE happen to like to look at it.

We could even get fancy as say things like “I want the ‘Bob Martin’ style where instance variables are my, class scoped are their, …”. We could even create a DB of code conventions where people could categorize, and rant about the various ideas out there…. not that we get religious about these kinds of things ;)

Eric Burke is talking about how he doesn’t like “this” anymore

Eric M. Burke

AddThis Social Bookmark Button

Related link: http://www.ericburke.com

What started out as a quick and dirty hack is, well, a little better. AntGraph uses an XSLT stylesheet to convert any Ant buildfile into a “dot” file, which is then converted into a GIF image using Graphviz from ATT labs.

This new release fixes two bugs, one of which was reported by Jeff Brown, the creator of JarSpy. Specifically, I was not quoting target names when charting antcall tasks, so Ant targets containing “.” characters confused Graphviz.

While fixing the bugs, I added some unit tests so hopefully the bugs won’t resurface in future releases.

I’m a little curious about JGraph and JGraphpad, which are pure-Java graphing toolkits. Although Graphviz works great, it is not written in Java which makes it slightly harder to integrate into Java tools like AntGraph. If I modified AntGraph to use JGraph, I could include a few extra JAR files in the download and it would work on any platform. As it stands now, you are responsible for downloading a platform-specific release of Graphviz before you can use AntGraph.

At any rate, my time is pretty limited these days so I’ll probably leave AntGraph as-is. Hopefully people will find it to be a useful little utility.

Let me know if you are using AntGraph or would like to see some new feature.

Dion Almaer

AddThis Social Bookmark Button

It is good to see the Portlet API moving along. There are so many portal servers out there, and they all are having to live in their own world (until there is a standard). I hope the Portal API is taken up by people, and is good enough to really allow us to develop portlets that can be developed on their own, and just work in the different portals. This is kinda like the promise of being able to create components that can be dropped in, and tied together later. Will it happen?

TSS: JSR 168 Portlet API Specification Released to Public Review

JSR 168: Portlet API Detail Page

Download JSR 168 Public Review Spec

Sun has also come out with a beta of Sun ONE Studio Portlet Builder, to allow us to play a little with the API:
Sun Goes Public With JSR 168, Beta Of New Portlet Builder

AddThis Social Bookmark Button

Related link: http://www.briancoyner.com/java-xp-cookbook.html

JUnitPerfDoclet is a free, custom XDoclet code generator, written by me, to generate JUnitPerf tests. JUnitPerf simply decorates existing JUnit tests for testing code performance (this screams “generate me!”).

One of our goals for the XDoclet chapter was to create a custom code generator. We wanted something that developers might actually use. The outcome was JUnitPerfDoclet, which fits into our book nicely because we are automating the creation of performance tests. If you have not used JUnitPerf, I would try it out, too. It’s a nice tool, and we have a chapter dedicated to it in our book.

Dion Almaer

AddThis Social Bookmark Button

CVS is everywhere on the OS world… and is in a lot of companies too (unless you want to pay a few million for a Rational tool, or a bit less for some other tools :) I have always disliked WinCVS and co, but now it seems that we have better options: IDE support, Smart CVS which works on different platforms, Tortoise CVS which just integrates with Windows Explorer, and more.

What about Subversion? There are items that have bugged me about CVS for a long time, and it seems to get around them…. but is it going anywhere? Does anyone use it? Will v1.0 ever come out?

What cool CVS clients do you guys use… and what do you think about the state of version control?

Dion Almaer

AddThis Social Bookmark Button

We have a new way to learn about MVC… and maybe watch a song go to #1 :)

Apple Operations Engineer, James Dempsey, wrote and performed a funny and educational MVC song at this year’s WWDC.

Download the song here

Model, View, Controller
Lyrics and music by James Dempsey.

Model View, Model View, Model View Controller
MVC's the paradigm for factoring your code,
into functional segments so your brain does not explode.
To achieve reusability you gotta keep those boundaries clean,
Model on the one side, View on the other, the Controller's in between.

Model View — It's got three layers like Oreos do.
Model View creamy Controller

Model objects represent your applications raison d'être.
Custom classes that contain data logic and et cetra.
You create custom classes in your app's problem domain,
then you can choose to reuse them with all the views,
but the model objects stay the same.

You can model a throttle in a manifold,
Model level two year old.
Model a bottle of fine Chardonnay.
Model all the twaddle stuff people say.
Model the coddle in a boiling eggs.
Model the waddle in Hexley's legs.

One, two, three, four.
Model View — You can model all the models that pose for GQ.
Model View Controller

View objects tend to be controls that view and edit,
Cocoa's got a lot of those, well written to its credit.
Take an NSTextView, hand it any old Unicode string,
the user interacts with it, it can hold most anything.
But the view don't knows about the Model:
That string could be a phone number or the words of Aristotle.
Keep the coupling loose and so achieve a massive level of reuse.

Model View — All rendered very nicely in Aqua blue
Model View Controller

You're probably wondering now.
You're probably wondering how,
the data flows between Model and View.
The Controller has to mediate,
between each layer's changing state,
to synchronize the data of the two.
It pulls and pushes every changed value.
Yeah.

Model View — mad props to the smalltalk crew!
for Model View Controller

Model View — it's pronouced Oh Oh not Uh Uh
Model View Controller

There's a bit more on this story,
a few more miles upon this road,
well nobody seems to get much glory
writing controller code.
Well the model is mission critical
and gorgeous is the view,
But I'm not being lazy, but sometimes it's just crazy
how much code i write is just glue.
And it wouldn't be so tragic,
but the code ain't doing magic:
it's just moving values through.
And I wish I had a dime
for every single time
I set a TextField's stringValue.

Model View — how we're gonna deep—six all that glue
Model View Controller

Controller's know the Model and View very
uahh — intimately
They often are hardcoding
which is very verboten for reusability.
But now you can connect any value you select
to any view property.
And I think you'll start binding,
then you'll be finding less code in your source tree.
Yeah I know I was astounded,
that's not even a rhyme.

But I think it bares repeating
all the code you won't be needing,
when you hook it up in IB.

Model View — it even handles multiple selections too
Model View Controller

Model View — hope I get my G5 before you
Model View Controller

Yeah, yeah, yeah. Yeah.
Steve Anglin

AddThis Social Bookmark Button

Related link: http://www.bayarea.com/mld/mercurynews/business/6322053.htm

Why switch to Mac? According to this San Jose Mercury News article: “Few customers switching from Windows:
New ads haven’t helped Apple gain market share.”

I can think of the following reasons why this is so:

1. Most people are already comfortable with an IBM compatible PC with Windows OS. An Apple Mac with Mac OS X may be easier to learn, but if you are already familiar with a PC with Windows, why switch and deal with a learning curve, even if it’s nearly flat?

2. Looking at PC saturation into most homes and offices, these homes and offices are not going to go out and buy a second computer, even if it’s a Mac.

3. Looking at the economy, few have the disposable income to purchase a Mac as a second computer. Although the Mac computers are more economical than ever, look at the added costs of proprietary Mac software, additional Mac hardware, and accessories.

4. What about digital photography and graphics? Well, the PC has hardware/software options thanks to HP scanning technology and Adobe Photoshop and other software for Windows. Again, Mac users will argue Mac is a better platform. They may be right, but the PC does offer viable options.

5. For developers, the PC is the preferred platform, with or without Windows. Most developers are developing applications to run on the PC or related Servers. Still, few are developing Mac applications, where having a Mac would be beneficial or necessary.

Why switch to Mac?

Dion Almaer

AddThis Social Bookmark Button

Related link: http://www.theserverside.com/home/thread.jsp?thread_id=20376

Wow. There is an interesting debate on TheServerSide between Gavin King (Mr. Hibernate) and Ward Mullins (CTO of Thought Inc [Cocobase guys]). It seems fairly personal :) More and more companies are trying to “scare” away people from using open source on the grounds of patent infringements, and using the “law” in general. Where do we really stand on this with the various open source licenses? When are we going to really see these licenses defended in court?

Dion Almaer

AddThis Social Bookmark Button

It seems to be a brave new world for Mozilla. They launched the new non-profit group “The Mozilla Foundation”. AOL laid off 50 employees from the Netscape division, but some are said to have been re-hired by the foundation. What does AOL want with Mozilla? Anything? They did give the foundation 2 million to go on. Mozilla has had fits and starts, but things were looking better on the tech front (Firebird is cool). Is there a place for it?

There is always room for multiple browsers. Instead of consilidation to just IE and Netscape, we now have more than ever (Mozilla, Opera, Safari, OmniWeb, etc).

One reason that I like to try out new browsers, is that I want to see some innovation. It doesn’t seem like much has changed in the last few years, and we are bound to get a leap (which could reel in IE). Also, I am getting BORED. That is why I try Mozilla, and that is why I am getting a Mac. I want to try something new. We as developers are a bit different I guess…. we spend FAR too much time at a computer… so we probably get bored quicker than others :)

Read Mozilla Officially Out of Netscape

Dion Almaer

AddThis Social Bookmark Button

BEA announced the GA of WebLogic Platform 8.1. This consists of the already GA’d WLS, and JRockit, plus the new suite (up to date versions of portal, integration, workshop, etc. If you have worked with these products, you would have probably been frustrated when making sure they all work together (when you need SPX for WLS, but that breaks portal, etc etc). In that regard, shrink-wrapping everything in one package is good (as it is hopefully well tested together). Is this package worth $90,000 per CPU?

There are definately camps of people who want to a) buy one solution, and b) piece together a solution.

Resources:

Steve Anglin

AddThis Social Bookmark Button

Related link: http://conferences.oreillynet.com/pub/w/23/presentations.html

The following Java-related OSCON sessions have downloadable presentation files:

Applied Ant

    Speaker(s): Erik Hatcher

    Presentation Date: 07/09/2003
    View full description
    Download presentation files

Introduction to Lucene

    Speaker(s): Erik Hatcher

    Presentation Date: 07/09/2003
    View full description
    Download presentation files

Introduction to the Jakarta Commons

    Speaker(s): Christopher Judd
Brian Sam-Bodden
    Presentation Date: 07/09/2003
    View full description
    Download presentation files

Java Data Objects (JDO): What It Is and Why It Matters

    Speaker(s): Ron Hitchens

    Presentation Date: 07/09/2003
    View full description
    Download presentation files

The making of JabberCollab

    Speaker(s): Harold Gottschalk

    Presentation Date: 07/09/2003
    View full description
    Download presentation files

Web Service Programming Using Axis

    Speaker(s): Christian Gross

    Presentation Date: 07/09/2003
    View full description
    Download presentation files

Check the above URL for other presentation files, as available.

Dion Almaer

AddThis Social Bookmark Button

So, after seeing everyone at recent conferences walking around with nice Macs, I decided to give it a try. I will get a new Powerbook tomorrow, and see if the hype lives up :) I have never owned a Mac in my life, so it will be interesting to see if it grabs me (I consider OS X to be TOTALLY different to its predecessors).

If you have any hints/tips/resources please pass them along!

  • Should I use Entourage for email?
  • What can I use to replace Trillian for IM?
  • I will use IntelliJ for real code, but is BBEdit still the Textpad replacement?
  • How best can I share resources between my Windows boxes and the new Mac laptop on my network?
  • If I get an airport, can I get a card for my laptop so we can share an 802.11g network?

I will blog more on my experiences with it :)

AddThis Social Bookmark Button

Related link: http://java.sun.com/webservices/webservicespack.html

The other day I wanted to play with JavaServer Faces, again. I tried
using EA3 when it first came out, but nothing worked right so I gave up.
When I realized that EA4 was out I thought I would try again. But wait, where are the JAR files? Oh! Sun decided to shove them into the Java Web Services Developer Pack v1.2. So much for making my life easy. Now I have to download a monolithic file (I think it is around 50 megs) and install a bunch of stuff I do not want. Sure the “installation wizard” allows me to skip over tools, but why should I have to download them in the first place? Also, why do I need an “installation wizard” to copy a bunch of JAR files to my harddrive?

Toolkits…

I think it is rediculous that I am forced to download tools that I do not
care about. For example, this “toolkit” has Ant 1.5.2 bundled with it.
I already have Ant 1.5.3 installed. How about Tomcat? Yep, I have
that installed and configured, too. Ohhh… Web Service APIs,
I don’t want them, either. I want JavaServer Faces. I
comprehend that these are complimentary technologies, but I should not
be forced to install a “toolkit”. Why is this so hard for Sun to understand?

A Simple Example

Why should I care about EJBs if all I want are servlets?
Not every servlet application uses EJBs, and not every EJB application uses
servlets. I am working for a client where we are using Swing and EJBs. Is
Sun going to put Swing into J2EE? Perhaps J2SE and J2EE will become J2EUS?
“Java 2 Everything Under the Sun” (no pun intended).

What’s In It?

Just for fun here is the list of tools that come with the
Java Web Services Developer Pack v1.2 (this list came directly from Sun’s website):

  • JavaServer Faces (JSF) v1.0 EA4
  • XML and Web Services Security v1.0 EA -
  • Java Architecture for XML Binding (JAXB) v1.0.1
  • Java API for XML Processing (JAXP) v1.2.3
  • Java API for XML Registries (JAXR) v1.0.4
  • Java API for XML-based RPC (JAX-RPC) v1.1 EA
  • SOAP with Attachments API for Java (SAAJ) v1.2 EA
  • JavaServer Pages Standard Tag Library (JSTL) v1.1 EA
  • Java WSDP Registry Server v1.0_05
  • Ant Build Tool 1.5.2
  • Apache Tomcat v5 development container
  • Ws-I Supply Chain Management Sample Application 1.0 EA

That is a lot of stuff to clutter up a harddrive. Remember that all I want is
JavaServer Faces.

What Can Sun Do?

I understand that Sun wants to attract new talent, and all inclusive
toolkits makes it very appealing for new programmers to get started.
Perhaps Sun wants to be like Microsoft: bundle everything together and
force you to use their tools. Whatever the case, Sun could make a lot of people happy simply
by giving us a choice: monolithic toolkits and individual tools.

Does anyone like being forced into using a “toolkit”? Or do you like being able to assemble the tools you want?

William Grosso

AddThis Social Bookmark Button

Related link: http://scriptingnews.userland.com/2003/07/13#When:3:30:08PM

I went to the blogger’s dinner last night. I had to leave early
and, aside from one brief exchange (wherein I questioned Dave about what appears to be a truly prodigous rate of caffeine consumption), I didn’t get a chance to speak with him. Kind of a bummer; I missed an opportunity to meet one of the pioneers of the web. Nonetheless, it was an interesting evening — I sat next to
Gretchen (or should it be Gretchen) and
Don.


And later, I went back and read old bits and pieces of Scripting News,
because I was thinking about the nature of weblogs.


Weblogs really are very low tech. We’re talking barely-formatted words in a rectangle on a screen. In the world of rich clients (which is turning out to be this year’s big fad), weblogs are a reversion, a retrogression, a bit of primitiveness poking its
ill-formed head out of a dark and forgotten hole.


([poking its ill-formed head out of a dark and forgotten hole? –ed] Nope. I’m not going to tell you what that means. I just write the words; understanding them is someone else’s job).


Weblogs are interesting because they’re more personal than other web sites (and most other forms of writing. The immediacy of the form makes it personal). And so, and this is the interesting thing, weblogs somehow engender community. You give people ways to express themselves, and you wind up with communities of people.


You’d think you wind up with individuals. And you do, at least to some extent. But, for the most part, the communities are the interesting and important things.


That’s probably in cluetrain somewhere
(I’m a little tired tonight; too tired to go and get a citation). And people have told me things like it thousands of times.


But, for me, right now, it’s sunk in. It’s the big lesson of weblogs. Give people ways to express themselves, and communities will emerge.


In other news, Dave is wrong about Touch of Grey. He thinks it’s “a bitter
but beautiful song.” But, really, the song is about persevering in spite of it all; the triumph of humanity in the face of ridiculous obstacles.


Cow is giving kerosene

The kid can’t read at seventeen

The words she knows are all obscene,

But it’s alright

I will get by

I will get by

I will get by

I will survive


That’s not bitter; it’s optimistic.

William Grosso

AddThis Social Bookmark Button

Related link: http://cyberlaw.stanford.edu/lessig/blog/archives/2003_07.shtml#001348

Presidential candidate Howard Dean is now writing a weblog (actually, he’s “guest blogging” on Lessig’s blog while Lessig’s on vacation).

James Goodwill

AddThis Social Bookmark Button

It’s 8:45 PM Thursday and I have just finished my second day at OSCON 2003. It was even better than yesterday.

I began the day with Dave Smith’s Jabber Jazz session. The more I see this stuff, the better it looks. Dave presentation talked about Jabber as a whole and then described what people are doing with the Jabber protocol and server. He began with the basics (a simple IM client) and went on to some really cool stuff including Workflow, web services and probably the coolest idea, Jabber Bots.

A Jabber Bot is an application that acts as a normal user, logged into a Jabber server, listening for messages and then performs the commands that are packaged in the messages. It is extremely cool–the applications are endless.

Dave spoke of one bot in particular a Jabber X10 bot (X10 is a communications protocol that allows compatible products to talk to each other using the existing electrical wiring in your home). The concept is extremely interesting–the guy that developed the bot has it registered with a Jabber server on the network and it listens for commands that will control different appliances in his home. You should really take a look http://www.awe.com/ha/software/.

After Dave’s presentation, I went to check out the OSAF’s Chandler Personal Information Manager (PIM). I was extremely excited about this, but I was a bit disappointed when I saw the presentation. While there ideas sounded really great, they are a long way from having a working product. I guess I was thinking/expecting that it was further along. I think the session had some interesting points and the architecture of the product is built completely on open-source, but to me the session itself was a bit premature.

My last session of the day was Christian Gross’s Using MONO. MONO (the Spanish word for Monkey) is an open-source implementation of Microsoft’s .NET framework. The product, on a personal level, is extremely interesting. I have had a chance to review the .NET framework and I believe Microsoft has actually done a tremendous job. My only concern is that I don’t want to lock myself into a Windows solution. The answer to this platform dependencey problem is MONO.

The session started off well enough, Christian talked about how MONO implemented most of the core .NET components. He developed and compiled a .NET application using MONO on a Linux box. He even ran the application, without recompiling, on Windows. Everything looked great, but then it took a bad turn. Thirty minutes into the hour-and-a-half session Christian started talking about .NET does and don’ts–this is not what I signed up for. If I wanted to know more about .NET, I would have picked up a book. I was there to learn about MONO. There was nothing wrong with his presentation or his style. I just think that the session title was misnamed. I will continue to look at MONO, but not because of this presentation.

Well Day 4 of OSCON is over and I am ready to go to the party at Champions. My brain is full and it is time to relax.

William Grosso

AddThis Social Bookmark Button

Related link: http://www.jrsoftware.org/

One of the things I’ve been working on recently is a small shareware application. It’s an interesting idea, and it’s been a lot of fun to work on a small consumer application (especially since 90% of my career has been enterprise software, and the past 4 years have all been spent deep in the bowels of J2EE).


On the other hand, there are a lot of headaches involved in developing a Windows application. And a lot of my
J2EE knowledge is useless when dealing with them.


But Windows is also a friendlier place than I’d expected, for a wide variety of reasons (among them: The MSDN Web Site is an extraordinarily good developer site). Perhaps the nicest surprise is that there’s a lot of free, and freely available, software to help out with secondary tasks.


For example: Innosetup.
It’s a small program that builds installers. You supply some parameters by writing an install script, click ‘run’ and –boom– there it is: a program named “setup.exe” that just works across all versions of windows.


Maybe I was out of the loop and maybe everyone already knows about Innosetup. But, if you don’t, and you’re building a Windows app on a shoestring, check it out. It’s just nice.

What other freely available windows programs do you find useful for developing applications?

Steve Anglin

AddThis Social Bookmark Button

Related link: http://www.onjava.com/pub/q/java_os_directory

At last year’s OSCON, the O’Reilly ONJava.com Open Source Java Directory debuted. Currently, it is online and actively maintained by Steve Mallett, creator of OSDir.com. For more, visit the directory.

James Goodwill

AddThis Social Bookmark Button

It’s 8:45 PM Wednesday and I have just finished my first full day at my first O’Reilly Open Source Convention (OSCON). It was whole lot of fun.

The day started off a bit slow—I had some real work that kept getting in the way. But once I had gotten my phone calls out of the way, I headed over to the conference and caught the tale end of Erik Hatcher’s Applied Ant session—it was extremely interesting. It was chock full of information and went passed the simple basics of Ant. Erik talked about Ant with everything from EJBs to web services and then he went on to one of my favorite topics, unit testing. Erik really did a good job of explaining his information and gave an extremely useful presentation.

After the Ant presentation, I had lunch with Erik and Doug Cuttings (the creator of the Lucene project) at Champions. It was a lot of fun getting their opinions about different open-source business models. I like to hear about how people intend to make money off of open-source. After all we all need to make a buck, eventually.

With a burger and some fries in my belly, I decided to augment some of our lunch discussions with a session on Lucene. This session was, conveniently enough, given by Erik again and included Doug in the back of the room. I really enjoyed this topic. Prior to lunch I really had no experience with Lucene and this was a perfect conclusion to some of our discussions. Erik introduced Lucene and talked about what it is (a high-performance, full-featured text search engine written in Java) and then went on to give examples of how it is used and who is using it. He showed us how to index documents and then showed us how these documents are searched using the concept of an analyzer. It was extremely interesting. We looked at analyzers that searched documents using simple key-word searches to complex fuzzy-logic searches. If you need to integrate an advanced search engine into your applications, this is a great place to look.

After this session, it was time to hit the exhibitor hall. I really did not expect very much (I still want to know where all of the open-source groups get their money), but I was pleasantly surprised.

ActiveState has obviously found a way to make money off of open-source. They have a very nice looking IDE, Komodo, that is focused on development with Perl, PHP, Python, Tcl, and XSLT. I wonder why some of the other IDE vendors have not consider some of the open-source languages. I hope these guys can sustain themselves.

The group that I was most impressed with was Jabber. These guys have a very interesting model and they also have many commercial companies that actually use the Jabber protocol to develop messaging applications for the enterprise.

As they described it to me, Jabber is an XML protocol for the real-time exchange of messages between any two points on the network. One of the most common Jabber applications is instant messaging (AIM, MSN, etc.), but what sets Jabber apart from the other protocols is that it based on open standards. It is not proprietary like AIM or MSN, therefore anyone can write a messaging application that uses the Jabber protocol. And as a bi-product of using Jabber, they are automatically using the same protocol as many other messaging systems. Interesting stuff, open-source the protocol and let the commercial vendors build products on top of it. I will have to look into this further.

Well, that about does is for my Day 3 of OSCON. It is now time for some dinner. Tomorrow should prove to be just as interesting as today—see you then.

Steve Anglin

AddThis Social Bookmark Button

Related link: http://www.businesswire.com/cgi-bin/cb_headline.cgi?&story_file=bw.070803/231895…

According to BusinessWire today, as accessed from java.net:

“JBoss Group LLC … today announced that it will be offering professional support services to customers using Mac OS X version 10.3 ‘Panther’ Server, which features the open source JBoss application server. Specifically, JBoss Group will offer a full range of enterprise-level services, including support, training and consulting services.”

The new Panther Server with JBoss will allow you to develop and deploy EJB components, messaging, and other J2EE functions and services. For more, see related Apple press release.

Dion Almaer

AddThis Social Bookmark Button

Cedric discusses the inverted if statement that some languages that Perl and Ruby use. I personally like this feature a lot. You can argue that you don’t “need” it, but it brings a lot of readability to your code.

E.g.

open $THEDOOR if $it_is_closed;

compared to:

if ($it_is_closed) open $THEDOOR

I like the fact that we first read what we want to do, and then we move on to the condition.

I also like “unless”:

do something unless cond;

is a lot more readable than:

do something if !cond;

However, I do understand that you can get on a slippery slope adding keywords for things like this.

William Grosso

AddThis Social Bookmark Button

Related link: http://www.barnesandnoble.com

Yesterday, I posted a short entry about how cell-phone cameras are causing a stir in Japan. I thought a lot about it over the past 24 hours and realized that we really are just at the tip of the technological vortex– Larry Ellison may have been right when he said “The Internet Changes Everything” but he forgot to add “and then, once everything’s changed, it’s just gonna change again and again and again and again.”


(and spare me the “Duh!” comments. I’ve been heads-down at a startup for the past three years and am just getting back in touch with all the changes in the world).


With those thoughts rumbling around in my head, I went to a Barnes and Noble yesterday, to pick up a copy of Elliotte Harold’s new book, Processing XML With Java and I noticed: Barnes and Noble is doing well. There were a lot of people in the store, people were buying books and browsing, and … I confirmed it later– Barnes and Noble is doing okay.


Another thing to notice: their prices haven’t gotten any lower.


How did they do this? Wasn’t the arrival of the internet, and the e-tailers, going to force brick-and-mortar retailers to become cut rate discounters, barely able to eke out a living? Wasn’t Barnes and Noble going to compete with Amazon primarily through its web store (a nice site, but not really competitive, imho. It just completely lacks any sense of style). I know, none of us really believe that now, and I know that everyone now claims that they were skeptical back in the heyday, but it’s still worth wondering: what is the impact (so far) of the web on more traditional marketing channels?


Here’s my answer: Barnes and Noble is a much more pleasant place to shop in. They guessed, and rightly so, that for a wide range of books, if I’m in their store, and I see a book that I want, I’m not going to think “let me check on the internet and see if I can save $3.50.” The trick for them is to get me into their store, and to get me into a good mood, where I’m inclined to browse and explore and buy.


The aisles are wider at Barnes and Noble these days. The floorplans are more spacious. There’s pleasant music in the background, a nice cafe on the second floor, and loads of comfy chairs in handy locations. There are people using it as an office (seriously; people are bringing their laptops, parking in a comfy chair, and grabbing a latte from the cafe before setting down to a couple of hours of work). There are people using it as a meeting place (for example, the
Bay area Futurists frequently meets in a bookstore), it’s become a place to go and hang out, rather than just a place to buy books.

So why is Walmart as unfriendly as ever?

William Grosso

AddThis Social Bookmark Button

Related link: http://www.interesting-people.org/archives/interesting-people/

I subscribe to, and occasionally even read, the ip mailing list (it’s too big, and contains too much, to read the entire thing every day. But, when I get the time, I do read it). Last Thursday’s digest had a very interesting note about a change taking place in the way people behave in bookstores.


From the “It Had to Happen Eventually” department, people are using their digital camera-equipped mobile phones to take happy snaps of images in magazines in Japan.


The BBC reports bookstores are livid that people would take photos of their pictures and send them on.


The BBC notes: The Japanese Magazine Publishers Association says the practice is “information theft” and it wants it stopped.


It is the kind of thing that most Japanese young women wouldn’t think twice about doing.


They might spot a new hairstyle or a new dress in a glossy fashion magazine and they want to know what their friends think - so they take a quick snap with their mobile phone camera and send everybody a picture.


But the publishers of those magazines feel they are being cheated out of valuable sales.


I saw something similar at JavaOne– people were using their cellphone / cameras to snap pictures of the slides. And they were sending the slides to people in other sessions / other places, and actively chatting about the slides while the talk was going on.


This is an interesting illustration of the way technology changes the way we think of things. 10 years ago, cameras were things that produced photos, which went into photo albums, which were stored in the attic to help insulate the house.


Now? Rethink that notion. Camera’s aren’t what they used to be. Increasingly, they’re not about long term persistent storage and “saving precious memories.” Instead, they’re visual aids for real-time social interaction.

Do you have a cellphone camera? If so, are you using it as a visual aid for real-time social interaction. And do you have a better phrase than “visual aids for real-time social interaction”?

Eric M. Burke

AddThis Social Bookmark Button

Apparently, JRE 1.4.2 is not quite ready for use with Java Web Start. I spent a lot of wasted hours last week trying to accomplish what should have been an easy task.

  1. Create a simple HTML start page. This page should detect if the user has JWS installed. If not, it should direct them to an auto-download site.
  2. Configure my JNLP file to say “1.4.2″ as the version number. Again, JWS should auto-download the correct JRE if it is not already installed.

Broken Docs

Creating the HTML web page should be easy. Sun even provides little scripting examples in this document. I followed their instructions but it kept failing. Oops…turns out their code has a bug:

If Not(IsObject(
  CreateObject("JavaWebStart.isInstalled.3"))) Then
     javaws142Installed = 0

That little snippet is supposed to detect if version 1.4.2 of JWS is already installed. It did not work…after some investigation into the registry, I determined the correct variable should be JavaWebStart.isInstalled.1.4.2.0. Now that my script could detect if JWS was installed, it tried to download the JRE.

Broken Download

Well, the URL to auto-download JRE 1.4.2 was broken all week. I checked it again as I started writing this BLOG, and it seems to work, although 1.4.2 is not listed in the list of supported JREs. Hopefully they have this problem fixed.

Broken Dialog Box

After two days of fiddling, we gave up on automatically downloading the JRE. Now when we start our app, however, we get this stupid JWS dialog box that locks users out of our app. It is a modal dialog that gets buried beneath our own login dialog, so users cannot do anything until they Alt-Tab to cycle through windows and un-bury the JWS dialog. This is documented in Bug 4845341 on Sun’s Bug Parade. So I spent half a day writing an incredibly ugly hack to bypass the problem. In my hack, we start a thread that continually searches for the JWS dialog and forces it to the front occasionally.

Typo

The final annoyance is the fact that the JWS Desktop Integration Dialog mentioned above has a spelling error! (apologies if my BLOG has spelling errors…I don’t have a spellchecker) This makes our own app look stupid and amateur. I submitted this as yet another bug to Sun…it has not shown up yet so I cannot report the bug ID here.

Is Java Web Start Important to Sun?

I don’t think Sun has put in enough effort to make JWS as great as it could be. It should be EFFORTLESS to install. I should be able to paste in some sample HTML for my starting page and that HTML should actually WORK. I should be able to specify JRE 1.4.2 in my JNLP file and it should download onto user’s PCs AUTOMATICALLY.

This is a big pain in the butt right now. The potential for Java Web Start is tremendous, and all Sun has to do is iron out a few wrinkles in their implementation. But sorry, Sun, 95% completion is not good enough when it comes to deployment and installation of desktop applications. These things need to be 100% reliable and simple enough for a beginner to configure. I wasted way too much time tracking down problems that should not be there. I could go on and on, but I think I’ve made my point.

Make it work.

Make it simple.

Make it reliable.

Wouldn’t it be great if Sun’s JWS implementation was open source so we could go in and fix these bugs? Or if perhaps someone hosted an auto-download server somewhere that actually worked? I’m sure lots of companies would pay a nominal fee for such a service.

Eric M. Burke

AddThis Social Bookmark Button

Related link: http://www.ociweb.com/jnb/jnbJul2003.html

Check out this introduction to Java Generics, a new language feature coming in Java 1.5. Rob Smith is a fellow consultant with OCI, the company I work for. I reviewed his article before he published it. Highlights:

  • generics syntax
  • autoboxing/unboxing
  • using generics with the collections API
  • covariant return types

I really enjoyed the article because it provided a quick overview of this new Java feature with enough technical “meat” to make it worthwhile. For example, I was not aware that Sun was moving forward with covariant return types until seeing Rob’s examples. I’m also really pleased with the clean syntax possible with boxing/unboxing of primitives.