Java 5 Released

by Zef Hemel

The moment is here. The moment that everybody I know has been waiting for ages. No, it’s not world peace, it’s not the end of world hunger, it’s…

Java 5.0

Hell yeah. I just wanted to let you know. I think I’ve already given enough of my opinion about it in previous posts like “Why Java Sucks”:http://www.zefhemel.com/archives/2004/08/16/why-java-sucks and “A Better Java”:http://www.zefhemel.com/archives/2004/09/03/a-better-java (don’t let the title misguide you). To reiterate, what’s new in Java 5?

* New language updates: Metadata, Generics, Enumerated types, Autoboxing of primitive types
* New JVM Monitoring and Management API
* Improved out-of-box performance
* New (but compatible) default Java look and feel

It’s a step forward, but not the best step imaginable.

Find more information about Java 5 “here”:http://java.sun.com/j2se/1.5.0/index.jsp and download your copy “here”:http://java.sun.com/j2se/1.5.0/download.jsp.

Enjoy or avoid, whatever you prefer.

Blog Advocacy

by Zef Hemel

If you think, “Oh no, not another blog about blogging!”, don’t worry. I know how you feel. A couple of months ago I chose to break out of being yet another news-mirroring-service as the traditional weblogs are: “You gotta read Dan’s opinion about this blog post somebody wrote about an article about blogging in the news!”

No, I intend to get some people to start weblogs that actually have something interesting to say, in particular some professors at my university. The main reason for me is that I’d like to know what’s going in the other rooms of our building. For the software engineering department I roughly know what kind of research they do, but I’d like to know more about it. If they got new papers out, I’d want to know. Today they have a website, but that doesn’t update often and is hard to keep track of (I’m spoiled by RSS).

So… I need reasons for them to start blogging. Keeping the little group of students that care informed probably won’t do.

What were the reasons I started my blog? Initially, because there were articles I wanted people to know about. Until then I posted those on some forums, but it wasn’t really efficient. That’s why I started my blog. The beginning is the hardest. What fun is it to put effort in posting interesting articles if nobody reads them? “Scoble gives some tips on how to get your blog discovered.”:http://radio.weblogs.com/0001011/2004/09/19.html#a8241 What worked quite well for me is putting the latest headlines of my website in my signature on various high-traffic forums. Like this (don’t worry, I’m not redrawing it myself every day, the image is dynamically generated every hour):

ZefHemel.com signature image

What’s to remember is that, particulary at first, you need stamina to pull it off. Nobody responds to anything you say? Just keep going. Too many blogs start with a couple of posts and then just die out. It’s a pity.

What could be a reason for you to start a blog?
* *You like to keep friends and family informed of what and how you’re doing.* Note that this is the kind of blog that’s easiest to keep going. You have an audience that you can reach easily, for example by calling them and telling them about your blog. But the audience is never going to be big. Unless you’re something famous, that is. I’m sure everybody wants to know what Britney Spears had for dinner tonight, don’t you?
* *You often read interesting articles that you want others to know about.* This it the traditional kind of weblogging: you log what websites you’ve been visiting that day.
* *You have opinions on things that you want to share.* These are most interesting to me, they often contain new insights, things that you hadn’t read on thousands of other weblogs.

Blogs can have many advantages for you as a person. If you’re doing research it is a nice way to expose your work and maybe even find sponsors. Also, if you’re running a company and have a blog, potential customers might learn more about the company you’re running. If you appear knowledgeable in your posts, they may buy your products or services faster, because they know who’s behind it. Most well-known example is Joel Spolsky. Although his site, “Joel on Software”:http://www.joelonsoftware.com, might not entirely qualify as a blog, it does show he’s not some teen that wants to make a buck by hacking some code together. Because I think his articles are very insightful, I’m pretty sure his software must be good aswell. Same goes if you’re looking for a job, if some kind of recruiter finds your blog and sees what your interests and experiences are, they might want to hire you. So, you can let your blog function as a marketing tool.

So, can anybody make up any more reasons for researchers to get an academic researcher to start blogging? The biggest reason for them not to, obviously, is that it takes time. So I need something that’s makes it worth it. Does anybody know of any researchers that blog? I know only a couple.

There’s a chance that I might be teaching PHP in Eritrea, Africa. It’s a small chance, but it’s there. Apparantly there’s a project running from our University to help a University at Eritrea. The initial idea was that my dad (who teaches at university) would go to teach them to use Frontpage and develop a university website using that. However, now they stated that they don’t want to use Windows because it’s “all virus virus virus”.

Apparantly they want to use PHP to build their website, but at my dad’s departement there’s not much PHP knowledge. When my dad said I had some, they looked into a possebility that I’d be going with him. Today they approved that idea. There is no certainty that we’re actually going, because the people at Eritrea haven’t responded yet. But we’ll see what happens. If we do go I have some things to prepare, for example, what’s a good PHP book for beginners? Any suggestions are welcome. Also I’d have to get some injections to avoid sicknesses.

Eritrea is a country in the north-east of Africa. There’s not much I know about it, it said said not to be very hot there. Also we have no idea how many people we’d be teaching, what they already know or even how good their English is.

I’ll keep you informed.

Wikis And Open Source

by Zef Hemel

There are two things which are particulary not fun about developing software: testing and documenting. The advantage of developing open source software is that finding volunteer testers often isn’t a problem. And although you probably could get away with no documentation at all, it would be nice if there was some of that too.

“Oh, I love your product! I think it’s so great that it’s free and I just wish I could help out. But I can’t program, so I just drew you a new logo.”

When I still developed “YaBB”:http://www.yabbforum.com, we used to get a lot of those (probably still). But honestly, if they weren’t programmers, how could they help out? Some people used our product so much that they started helping other people out installing it. That’s great. After a while, even FAQs popped up, with most common problems and how to solve them. That worked fairly well, but it would be nicer if we could collaboratively expand these FAQs. Letting more people add and correct stuff.

Only recently (a year or three late) it struck me. Wikis are ideal for this!

First some background information. What is a Wiki? To start off, officially they’re called Wiki wikis, which is Hawaiian for “Quick quick”, if I’m correct. But for convenience, and because “Wiki wiki” is impossible to market, people usually abbreviate it to just Wiki. Wikis are a bunch of linked, unstructured webpages that everyone can edit. At the bottom of each page there’s a “Edit” link using which you can change the content of that particular page. Wiki pages are written in Wiki-codes, which I briefly discussed “a couple of days ago”:http://www.zefhemel.com/archives/2004/09/20/post-formatting. So you don’t need to know HTML or something to contribute. It is extremely simple to add pages and to link to them.

You’d think Wikis are easy to sabotage, and they are. The trick is that a change log is held for each page. That means that a moderator can retrieve an older (non-sabotaged) version of a particular page in a click. Many Wikis allow some pages to be locked (for example your front page), so that they cannot be editted (except by moderators). It’s important that there are plenty of people keeping track of changes to the different pages all the time, just to be sure that no invalid data is entered. Usually Wiki software has a global “Recent changes” feature just for that.

There are many Wikis around already. The biggest one (with now over 1 million pages) is “WikiPedia”:http://www.wikipedia.org, which is a free encyclopedia which anybody can make changes to. The very first one, the one started by Wiki’s inventor (Ward Cunningham, now working for Microsoft), is quite big aswell: “c2.com wiki”:http://c2.com/cgi/wiki. There is some kind of Wiki software in nearly every language these days. Ranging from Ruby to C# and from Java to PHP. I’ve some experience with “PhpWiki”:http://phpwiki.sf.net and “MediaWiki”:http://www.mediawiki.org (which is the same on WikiPedia uses). “Here’s a list of other ones”:http://c2.com/cgi/wiki?WikiEngines.

If you set up a Wiki for your open source product and for example place your installation manual and other documentation in there, everybody will be able to make contributions. If they had a problem during installation and found a fix, they can write about it on this centralized piece of documentation. Many people know more than one and many pairs of eyes see more errors than just one. That’s the power of open source software, and Wikis are a great way to apply that same concept to documentation.

So, if you’re developing an open source product, give it some thought.

It has been a while since Browser Wars, Episode I took place on an IT planet near you. To refresh your memory, what happened again?

In the early days of the internet, Netscape was the main provider of browser software. There was little competition. That changed when Microsoft started shipping its own browser, Internet Explorer, with its Windows operating system. As every computer came with IE pre-installed, there was not much reason to download an alternative browser, such as Netscape. To make matters worse, Netscape decided to rewrite their software from scratch again. Because of that, it to took a couple of years before a new version of it would be released. By that time time, Netcape open sourced its browser’s code (as “Mozilla”:http://www.mozilla.org) in order to speed up development. IE had a 95%+ market share by then.

But for a while now, development of IE kind of seems to have stalled. The last major release of IE, IE 6, didn’t add that much functionality on top of IE 5 and IE 5.5. Not in functionality for the user, at least. The Mozilla project however launched a lightweight version of its browser software, dubbed Phoenix. It was in very early stages of development but felt quite native on most operating systems and had some nice features, such as tabbed browsing, a google search box and nice extention capabilities. Later Phoenix’ name changed to Firebird and more recently it became Firefox. Version 1.0 of Firefox is to be released this fall and the preview version of 1.0 got “a million downloads in 100 hours”:http://www.spreadfirefox.com/?q=node/view/875.

Apparantly more and more people take the leap of downloading alternative browser software and are no longer happy with IE. This is partly because of the lack of new features, but also because of the numerous security issues in IE in the past. And to make matters worse Microsoft has announced that IE 7 will only be available to people using Windows XP SP2 (and most likely Windows 2003). So, if you want to take advantage of new browser versions and you run an older version of Windows, you have no other choice than to turn to an alternative browser.

I have been a happy Mozilla user for quite a while now. I started using Mozilla when it was at version 0.6. A couple of months ago I switched to Phoenix/Firebird/Firefox, and a couple of days ago I downloaded the 1.0 preview release. I must say that it has improved a lot over the last period. It now even has some minor RSS support. My favourite feature still is the middle-click on a link that opens the page on a new tab on the background. I use that all the time.

Related websites:
* “Spread Firefox”:http://www.spreadfirefox.com
* “Browse Happy”:http://browsehappy.com

Tools, Tools, Tools!

by Zef Hemel

When I walk through the computer lab of our university, I often see students using editors like Pico and other plain notepad-like editors writing C and Java code. “Why don’t you just use an editor that at least supports colour highlighting, or even a Java IDE like Eclipse?” - “Nah, real programmers don’t need no fancy stuff.”

Need - that’s an interesting word. When you program, what do you really need? You could say you don’t need zip, real coders use switches to input binary machine code that a processor can execute. Man I look up to those guys, I can only dream of being such a geek. “Look mom, when I input this very long string of 1’s and 0’s I worked on for three days, I can actually imitate the lamps at the front of Kitt. You know mom, from Knight Rider! I’m going to spend the summer on doing the tune.” Wake up! Tools are key to any well-thinking person.

No, tools are not for wussies. Tools help you making life easier, they increase your productivity. Tools are something you should never skimp on. They save you loads and loads of time. And as salaries are the biggest expense for most companies, it’s vital to do as much as possible in as less human working hours as possible. A good tool is worth loads. Don’t intend to buy Visual Studio because it costs three grand? See how much time it saves and re-evaluate your buying decission.

It’s not just software tools I’m talking about, though. Two years ago we did a project with a group of eight people. It was a J2EE application. We developed on 500Mhz Linux boxes. For every little change we had to rebuild the project, undeploy the old one and then deploy the new one. Although this was all scripted, it still took around 5 minutes to test a little change. 5 Minutes is not that much, you think? I’ll tell you, 5 minutes is way too much. During these 5 minutes you can’t do anything but wait. How many times do you rebuild in an hour? Sometimes only twice, but usually, especially during debugging, you spend twice as much time building as you’re actually fixing bugs. This isn’t just bad for the time it takes, but also for your team’s morale. So, another proof that Java is too slow? No, it proves that good hardware is important. If we’d have had 3Ghz PCs with a gig of RAM to our disposal, we could easily have reduced that building time to a couple of seconds. Man, that would’ve made us so much more productive. Again: hardware is not expensive compared to human labour. Get your team members the best hardware you can get. Two monitors? Those buddies probably pay themselves back in no time.

Good tools are vital for projects to succeed. Choose tools wisely, choose a development platform that makes your developers most productive. Really, if speed is not your primary concern, you’re better off using platforms like .NET, Java, Delphi or even VB6. These platforms let you program so much faster than C or C++. Also be sure that the tooling around your platform is good. Good IDEs are very important.

I realize that if you’re a student or non-profit programmer you can’t afford the best stuff. But do note that many companies offer student discounts on their tools. It might still be quite an investement, but it can make your work much more fun too.

Not only is it worth spending time in making an educated decission on what tools to use or buy, but it’s also a good idea to think about if it’d be worth developing tools yourself. Two days ago I talked about “code generation”:http://www.zefhemel.com/archives/2004/09/23/data-in-data-out a little; programs that write a lot of code for you. Developing these kind of tools are not only more fun to do for your team, but also save a heck lot of time. If they’re designed well, you probably will even be able to use them again in a future project.

Again, it’s all about tooling, baby.

Alright, obviously, I have been Scobleized. The articled I published two days ago, entitled Why Microsoft Can’t Hire Great Programmers hit a string. Robert Scoble noticed the article and posted a link + response on his weblog. As Robert has thousands of readers, you can be sure that the news spreads quickly. And indeed, a day or so later there’s a post on Microsoft’s Recruiting Blog.

Let me tell you after three days of rousing speeches by key executives like Steve Ballmer, detailed discussions surrounding our organizations strategies and initiatives for the next year, and declaring my profession about thousand times (“Hi. I’m Gretchen, and I am responsible for hiring great technical talent!”), my first reaction to this headline was: “What the [expletive deleted]?!” Followed by: “Who the [expletive deleted] is Zef?” And then: “What the [expletive deleted] does Zef know?”
I quickly scanned Scoble and Zef Hemel’s entries, but as my next session was ready to begin, I couldn’t devote much attention to the read. And I walked away still piping mad.

After the conference, I was due at obedience school with my puppy, and since Josh was playing a baseball game, that meant, between work and home and home and school, I was stuck in the car by myself for about an hour – just processing that little amount of information over and over in my head.

I hate when I obsess over things.

Upon returning home, I had the opportunity to read Zef’s post in more detail, and in fact, I mostly agree with everything he said.

Two things about this:

  • Blogging is a great thing, everybody gets an equal saying. You don’t have to be a CEO of Big One Ltd. for people at Microsoft to listen to you.
  • Choosing a provocative title for your piece makes more people read it, yet appears to mess up people’s days too. Set your priorities.

It’s interesting to see that as your clique of readers grows, their diversity grows aswell. When you look at the comments to Robert’s article you see most comments are about why Apple’s stuff is better than Microsoft’s. Which of course, is not the point at all.

Before I start to respond to the response I got, I want to set one thing straight: I’m not saying that Microsoft can’t hire great programmers at all. They’re just having a harder time doing so, which is something Gretchen (a Microsoft Recruiter) seems to agree with. I will be the very last to say that there are no great people working at Microsoft. And that’s not just to suck up. Nearly all people in the industry I look up to, work at Microsoft.

Something that both Robert Scoble and Gretchen mention is that they do think non-tech people can identify (better term than recognize, indeed Gretchen) great programmers. Robert Scoble says:

I’m not a programmer. But I recognize Bram Cohen of Bittorrent as a great programmer. Why? Cause of what he wrote. I recognize that Chris Uhlik over at Google is a great programmer. Why? Cause of what he wrote. I recognize Brent Simmons of NetNewsWire as a great programmer. Why? Cause of what he wrote. I recognize Stewart Butterfield of Flickr as a great programmer. Why? Cause of what he wrote. Dave Winer. Cause of what he wrote.

“What he wrote” what does he mean by that? The code he wrote? Obviously not, non-programmers can’t judge actual code. The results the coding has? The actual working product? Does the software he wrote work correctly? Sure, you can judge that, but that doesn’t mean his code is not ill-documented, inefficient, unmaintainable or just plain ugly. It takes a great programmer to see that. And that’s fine. That’s how good recruiting departements work. They gather a group of people, screen them and throw out the most obvious bad apples. If they pass their first interviews (which are mostly non-technical I understand) they’re sent to an actualy team member. Somebody that actually is a good programmer, who then checks if the person is actually a great programmer. There you go. If you have great ideas that work out well, that doesn’t mean you qualify as being one.

Next Page »