« April 2003 June 2003 »
blog header image
# Browsing Zenith Upon Us?

Scoble points to Paul Thurott's thoughts on IE6.

Microsoft presumably can't justify further development or expense on IE6 development. They are a money-making business and they've moved on. The idiosyncrasies of the browser are well known, or at least should be given how long its been out, to the development community. Changing IE6 now would break these code workarounds, making people angry at MSFT.

There are a few UI enhancements that wouldn't break the DHTML code rendering and would only improve the "browsing experience". Tabbed browsing and pop-up blocking are probably the two that are most requested.

I don't think Microsoft will add tabbed browsing for two reasons: 1) is that it's not intuitive GUI, as I said in my comments last week and 2) it would require a major rewrite of IE. You can't mash in something major like tabs. It's like adding browser support for frames: instead of dealing with one thing you are dealing with n things.

Pop-up blocking is a code interpretation hack because popups are perfectly valid DHTML. It works in Mozilla because Mozilla users know what a pop-up is on a technical level. Most users of IE6 don't and as a result could miss important web site functionality because of it -- especially on (corporate intranet) web sites that use pop-ups as a way to simulate modal dialogs on web applications. Yes, gross.

I think Paul missed part of what the Microsoft employee meant by "Further improvements to IE will require enhancements to the underlying OS." They aren't just talking about eye-candy GUI improvements. They are talking about having access to Longhorn's (still rumoured? I can't keep up) SQL Server-based file system for easier file system searching and other low-level technical enhancements. These additions to the underlying OS will improve the next IE's UI experience by adding the possibility for unique features not possible on WinXP. The flying and fluttering windows are just gravy .... I guess.

Forget about the browser GUI. If you want to talk about zeniths, then DHTML has reached its practical zenith. People are doing UI things with browsers today that just seem unnatural -- and I'm not talking web pages here (though there are many weird ones out there), I'm talking corporate web applications. Sure it's easier to maintain so-called "thin" client application (or easier to break it, depending on who you ask) but if the UI tools (DHTML) you have available to you don't measure up, use something else -- don't kludge it.

Update 12:12 Tim Bray adds to his comments that CSS ain't Rocket Science. I agree with a lot of what he says, but I'm going to explain my earlier statement about using DHTML improperly to add to his arguments.

You can't control what people will do with your UI toolkit. VB programmers suck at making GUIs because they generally have no formal training -- you can't help this. Web pages solve the problem in one dimension by limiting what you can do on one page ... and as a result web applications are cleaner but sometimes require more clicks. Usability improves on look and feel, but suffers when speed is important.

Some WinForm widgets are more dense and complex. The slider, for example, does something you'd never be able to do well on a web site. Same with tabs. You can kludge tabs in DHTML, but in WinForms they are just there. Managing that density is a job that requires skill and is generally not something a programmer can do well without help from someone with usability training.

The other side of the coin is when you want your application to be GUI dense and client-server. You can't have it both ways -- in that case you must use WinForms or you will suffer in browser development hell. Believe me, I've been there.

posted at May 31, 2003 at 11:31 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (9)

# More-on Layout

Let me explain my "off-symmetry" logic.

I wanted the blog to be on the left-most side of the page so it dominates the view. What makes this a little strange to look at is that it takes up exactly 50% of the full width, so it's almost like you're reading a two-sided newspaper. Above all I wanted it to be distinctive and not like the other menu-blog-menu indexes out there. *cough*Roy*cough*

The reason why the thin column is in the middle is because it's related to the blog. The miniblog is on it's own and shouldn't split the blog and its links. The widths were originally 25% each but the links took up less space and the miniblog has longer lines so I increased the miniblog width to 30%.

Personally I'm liking the blog and the links but I find the media miniblog a little distracting, probably due to its text density and bold date font. This is the best attempt I could muster at 3AM, the time I happened to be inspired. Give me some time to pull out my T-square and perfect rectangles.

posted at May 30, 2003 at 05:11 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# Tangerine

What do think about this page? It was somewhat inspired by this page.

I moved from the MT <div>-based layout to the more traditional <table>-based layout because I was getting some ugly overlap problems, especially when I increased the font size in Mozilla (Ctrl-+). Tables don't seem to have these problems at all. As well I set the three columns to percent sizes, which is a bit more difficult to do with <div>s. Keep it simple, stupid.

posted at May 30, 2003 at 03:30 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# Microsoft Feels The AOLove

Microsoft and AOL are buddies again. Does this mean that AOL can dump Netscape/Mozilla? Maybe. AOL might be getting a free browser for seven years but that doesn't mean they still shouldn't hedge their bets with their own browser -- especially one that's gaining in popularity. I think AOL will hold onto Netscape/Mozilla.

That said, if AOL did sell Netscape full-time Mozilla contributors (I think it's safe to assume they exist) would come with the deal. Red Hat (which recently switched to Mozilla as the default browser) would be a good candidate to buy Netscape/Mozilla to keep the project going at a good pace. But it's good to know that even if Netscape dies Mozilla will live on!

The guys that should be scared are the people at Nullsoft, which was bought by AOL in 1999. Unless they can implement the DRM Microsoft will be using in their forthcoming music download service, AOL users will have no choice but to use Windows Media Player. Then Winamp becomes expendible.

Come to think of it, does AOL even use Winamp? I wonder what value Nullsoft adds to AOL's bottom line. The old Time Warner execs might be thinking the same thing.

Update May 30 03:55 Speak of the devil: Roy points out that a second (after GNUtella) Peer-to-Peer program called Waste has been released by Nullsoft only to be quickly yanked (presumably) by AOL/Time Warner officials.

Update May 30 17:44 A News.com article answers the "is Nullsoft useful to AOL/TW?" question. They may be useful but are they worth the hassle?

posted at May 29, 2003 at 06:50 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

# Virus ABCs

The University of Calgary is going to teach students how to write viruses. This has sparked a debate about the ethical issues.

Forget the ethical issues and look at the practical ones for just a minute because the Internet has shown us that if there's a security hole, people will take advantage of it regardless. Software license agreements aside, if it's possible for me to write a virus there must be an exploitable hole in software. That hole was left there by the company or individual that wrote it. Common business thinking is that it's the virus writer's fault that this hole is exploitable and they took advantage of it. If the company took security holes more seriously, there wouldn't even be a virus in the first place.

Think of these wild viruses as active test cases against your product. The software makers are failing these tests. Software companies need to take a little more accountability for their holes, instead of saying "Here's a bunch of software. We don't guarantee that it will work and if it breaks something, it's not our fault." When a virus costs millions of dollars in damage, they blame the script kiddie that wrote it (or used it, thanks Roy). That seems pretty backwards to me.

Obviously, open source projects cannot take corporate responsiblity for their security holes, but they usually plug serious ones quickly anyway to preserve the reputation of the product. (The logic there being that people can easily choose one free software product over another, so reputation is more important). Companies need to be careful about the software they release and above all, accountable. And that doesn't mean releasing patches every day either, the software they release in the first place should be secure.

posted at May 28, 2003 at 07:45 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# Glug Glug

Jim's really drinking the test-first Kool-Aid. It's spiked ... but what he doesn't know won't hurt him. ;)

posted at May 28, 2003 at 12:14 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

# The Internet is Surfing

Scoble points to a post on Frans Bouma's blog.

I don't buy IE going away completely. Even if "webapplications" start looking like native windows apps, you still need something to "surf" with -- roam aimlessly and discover new things. People will always want to do that.

Web browsers (and HTML) are the glue that binds all of the Net's different protocols together. You can click on an news:// link to get your news, a mailto: link to email (and on and on) all from a browser. When you take surfing and linking away the Internet seems limited and the protocols more separated. So you'll need navigation glue to tie these webapplications together too.

Some might say "we can use a search engine to find what we want -- we don't need to surf". But you are limiting yourself to whatever the search engine gives you -- do you really want to give the search engines that much power? We need to be able to establish our community of links with web pages.

The text web will live on, despite webapplications. In fact I have a feeling that web pages will probably be cleaner when developers can use familiar widgets instead of squeezing UI in HTML that was never meant to be there. The line between webapplications and web pages will be clearer -- which is good.

My prediction of IE7 goes something like this:

  • regular web browsing
  • full standards support
  • .NET-like GUI (a la VS.NET, which may or may not actually be written in .NET, doesn't matter)
  • support for MS extensions to DHTML/ASP.NET to support the bridge between traditional ASP web applications and native .NET Windows apps
  • explicit support for .NET winform apps
When I first read about .NET last year one of the things that caught my eye was the "sandbox" idea for downloaded winform apps. When you download and run a .NET application from your web browser (I believe IE6 supported this) the browser set up a security sandbox for the application, saying what it could and couldn't do. Why haven't more vendors released these kinds of downloadable apps? Is it because they don't want to have to get people to download the .NET framework?

posted at May 27, 2003 at 02:38 PM EST
last updated December 5-, 2005 at 05: 1 PM EST

»» permalink | comments (4)

# Sheesh ...

My computer just crashed with the new power supply, same as before. *sigh*

posted at May 26, 2003 at 12:48 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (4)

# Judging Blogging Tools

Dave Winer suggests:

Why don't a small number of users of the popular weblog tools work together to create an authoritative review of the category and show us how the products compare.
Tell you what, I'll do a review of at least six different blogging tools (I've personally used three already in the last two years) on a bunch of different criteria if:
  1. I don't have to pay to use the tools do the reviews (because I won't be creating real blogs with them, this is only fair).
  2. I get input on the criteria used to judge the tools from others, so that they are unbiased.
  3. Dave Winer actually reads this post and takes me up on my offer in 24 hours.

Number 3 would be a lot easier if Dave had trackback on his blog, no? :) We'll see if Google catches me in time. I may be a kid (though my classmates and coworkers would disagree -- they call me the old man) but I know my web stuff. I'll be tough but fair.

posted at May 26, 2003 at 12:08 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# Backing Up

Jim says: "I don't know how people do it who wipe their drives every 6 months".

Backups, my friend, backups. I burn documents to disc every month or so -- everything in my "My Documents" folder and whatever I was working on that month. Really I should be doing it every week. Everything else on my hard drives is expendible (nice thought, eh?). No, it's because it's backed up already and it just on my hard drive for convenience, like my MP3s.

So now I can lose my whole system completely and be back up and running in less than a day like nothing happened.

I also back up my iBook monthly because I download all of my email on it. Incidentally, Mac OS X Mail allows me to keep mail on the server for 30 days until it's deleted, so I have a backup there too. The side bonus is that I can read my mail anywhere with the web email client because it's still on the server. But I digress ....

Laptops are even more important to back up because you can lose them at any time. Stolen, dropped, thrown, drowned in coffee ... you never know. Put your CD burner to good use and make backups!

posted at May 25, 2003 at 09:50 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# New Case

The hardware move to the new case was time consuming but the machine seems to work. I'm not going to say it "runs well" yet -- I'll wait 72 hours. It won't get the "all clear" until I go a month without a crash with the extra 100 watts.

One thing I didn't bet on -- the motherboard move wiped my CMOS memory and all of the settings were reset. I had to tweak a few of them to get the machine working *at all* before .... and I have no idea which ones they were. That was about a year ago. The machine seems to run fine now anyway. *shrug*

So I decided to skip the RAM even though it's cheap. I don't need more RAM and I somehow convinced myself of that.


Crap, not again.

posted at May 24, 2003 at 01:18 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

# Mini-Blogs

I've added two new blogs to reduce clutter on my main blog but still give people out there an idea of what I'm up to (heh, as if you cared - but let's pretend, shall we?).

The first is the words blog on the left margin. I occassionally run into words that I've heard but don't know the exact meaning, have interesting origins or I've never heard at all. After many failed attempts to learn a second language I figured I might as well know my first better instead, so there we have it.

The second blog on the right margin I call the media blog. I'll put interesting stuff I saw that day in this list. Probably not every article read or TV show I see, but the good ones will get a mention and songs I like will be there as well. I'm categorizing them as they go in, so later I may add icons or colours to differentiate the media types.

posted at May 23, 2003 at 12:33 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (4)

# Shhhhh ... I'm Hunting Wabbits

Thinking about getting a new case and power supply for my Wintel box. The motherboard I bought a year ago (ABIT KR7A-RAID) is a bit flakey and likes to crash randomly. At first I thought it was the video card (nope) and then a hard drive (nope). At least a crash doesn't munge partitions any more (after the BIOS update last fall). Crashes are also getting farther in between but they still happen -- and on any OS, not just Windows XP or 2000.

The crashing may have to do with the fact that I'm running the motherboard with two hard drives, a DVD drive and a CD-R drive all on 250W. I'm going to see if increased wattage helps me out. The case I have now is alright, but it has three fans in it and it's LOUD. I really really really don't want to put my computer on the floor either, especially after the flood that happened earlier this year. That and computers tend to suck in more dust if they are on the floor, shortening their life.

I might also snag more RAM while it's cheap. Can't beat 512MB of DDR for less than 100 CAN$. Did I miss anything? How about a keg tap? :)

posted at May 23, 2003 at 12:22 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (4)

# Star Wars Kid

You've probably all seen the video that leaked onto the 'Net of the "Star Wars kid" pretending to light saber fight in front of a camera. jish.nu interviewed the guy and is accepting donations. They've raised over $3700 so far for the guy. Incredible.

Update May 21 6:48PM: The final tally.

Update May 21 10:20PM: Why? Because he was publicly humiliated on a massive scale and people feel sorry for and/or can relate to him. The video has been downloaded over a million times .... yikes.

posted at May 21, 2003 at 02:01 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (5)

# The What Reloaded?

No, I haven't seen The Matrix Reloaded yet. No I don't have a day set aside to see it yet. I'll see it when I see it. It's been four years for crying out loud, I can wait another week or two for the hype to die down so I can get a decent seat this time. :) Yes, that's all I care about frankly ... and I'm not willing to wait in line for an hour to get one.


Crap, I just got two geek demerit points.

posted at May 20, 2003 at 01:24 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# Down with Paper Widgets

Joel Spolsky talks about how ineffective software prototypes are and how paper can help. The truth is that the guys at the helm can't make informed decisions with a bunch of paper. They like to see drags, clicks and resizes -- even if it's smoke and mirrors. Paper is good for small stuff, but who wants to shuffle through a ream to "see" a demo? blah

What's happening is that the prototype starts as a great idea in someone's head. Once a few people like it the software comes together from 20 different people's ideas and a roll of duct tape. Then management is left with two choices: 1. like the prototype and agree to build the "real" version starting from scratch or 2. do nothing. Either way the prototype gets thrown in the circular file.

The first example Joel gave could have been solved by a little incremental development. Instead of making a whole new prototype, branch what you have and build off it. If it took the "programmer in charge" a week to do, it might have taken the interns 4 times as long to whip up a prototype on that base of code. You like the feature, you get the pro to do it on the trunk. You chuck the intern's code anyway, but still save 3 months. And as a side bonus, the intern gets to look at a lot of professional code ... lucky kid.

So why don't more companies do this? Aren't they testing the code well enough to know when the intern breaks something (even in a prototype)? It makes you wonder. Otherwise, what you already have makes a great base for a prototype ... and you don't have to worry about your customer's ability to imagine widgets to get funding.

Agile development could also solve these prototype problems ... but don't even get me started on that one today. :)

posted at May 20, 2003 at 01:12 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# "Blognoise" Again

Dave points to a Guardian Unlimited article (he's quoted in it) about the whole Google/Orlowski fiasco.

It doesn't matter if Orlowski's speculation about removing blogs from the main search is true or not. What's definitely true is that Google has a blog problem on their hands. But this is the great thing about the Internet -- just when a company thinks they have it all staked out, the 'Net changes the rules.

What is also true is that I'm not the best person to talk about "NIH Syndrome", even though Google thought so for about two weeks. But not to worry -- my subsequent post about strange Googling now ranks higher than the original. Clearly, there's a temporal variable at work somewhere ... or maybe they have fixed the problem already. Kudos to them for being so responsive.

Google is notorious for coming up with neat stuff. I wouldn't expect their solution to this problem to be any different.

posted at May 19, 2003 at 06:38 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# Bring on the Cottages

Back to reality from the cottage life. I tell ya, driving in Quebec is fun I just wish I had a better car to tear up the roads. It sure does make you appreciate Ontario roads though ... much wider, straighter for some reason. And don't even get me started on the 4-lane highways ...

We did the regular cottage stuff. Checked out the lake (freeeeeezing), played volleyball, drank some beer, played cards and played HORSESHOES. That's right kiddies! Overall it was pretty chillaxed ... a great start to the summer.

posted at May 18, 2003 at 03:31 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

# SWT/JFace Wiki

Whoa, I'm flooded with SWT information now: I was reading the Eclipse newsgroups and just found the SWT/JFace Wiki.

posted at May 16, 2003 at 11:16 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

# Enabling Reuse

Andrew talks about lots of software engineering-related stuff but his comments on code reuse got my attention.

What we really need as software engineers is a way to say succinctly what a function does - what goes in and comes out. Then you need the tests to back up that this function actually does this and other software engineers can then independently verify it.

If we have a system people can depend on we'll probably find that there will be more code reuse. As it is now no one can trust anything anyone else does.

As for code ownership -- you need some variant of it. One person has to be able to control what goes in and out of any given part of the code or there will be anarchy. I'm personality an advocate of code supervision ... people can change everyone's code, but they better not piss any of the supervisors off along the way. Accountability is an important aspect of group work -- it keeps people in check -- and it also works very well for open source projects.

posted at May 15, 2003 at 09:58 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# Eclipse 3.0?

I don't know when this was announced but I just noticed that the Eclipse project may make the next version of Eclipse 3.0 instead of 2.2. The major verson number increase signifies API incompatibility with 2.1 plugins.

Eclipse is changing its API so it can move from an IDE to a "rich client platform" so that ordinary applications may take advantage of the services Eclipse provides.

The more agressive proposal comes a few months after the Eclipse Project DRAFT 2.2 Plan was released December 20, 2002.

posted at May 15, 2003 at 09:00 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# SWT Samples

I finally found some good SWT sample code for specific UI elements.

posted at May 15, 2003 at 04:37 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

# The Matrix Rerated

Interesting that The Matrix Reloaded is rated R in the US but 14A in Canada. Here's a comparison.

posted at May 14, 2003 at 10:57 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# Google Blog Noise

Google is going to have a blog search soon to deal wth "blog noise". Apparently Google's algorithm wasn't expecting the high amount of interlinking that goes on between blogs -- understandable -- which is giving blog posts high rankings in Google. Blog noise has been getting me 20 or so Google hits a day. I noticed it a few weeks ago.

posted at May 14, 2003 at 10:31 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# CLR v. JVM

Scott Hanselman explains how the .NET common language runtime (CLR) calls lower-level functions and how that compares to the Java virtual machine (JVM).

posted at May 14, 2003 at 05:23 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# Play Counts

iTunes gives me some intesting info. For example, in the two weeks since I picked up the new Pete Yorn CD, Day I Forgot, I listened to the following songs:

                           Count  Rank
 1. Intro/Come Back Home    10     10
 2. Crystal Village         12      6
 3. Carlos                  12      6
 4. Pass Me By              12      6
 5. Committed               15      2
 6. Long Way Down            8     12
 7. When You See the Light  14      3
 8. Turn of the Century     10     11
 9. Burrito                 17      1
10. Man in Uniform          13      4
11. All At Once             12      6
12. So Much Work            13      4

I definitely recommend it if you liked the first CD, musicforthemorningafter. Most of the time I listen to the CD straight through, but the play counts catch all of the times I cheat and skip a song (like poor #6). It's like a cummulative CD mood indicator. Ha, OK I don't know what that means either.

What would be nice in the future is if iTunes could clean itself by deleting music that you haven't listened to in a while. I'm already gathering cruft around the edges of my collection on my iBook. If you downloaded the music (ie. from iTunes Music Store), iTunes would be smart enough to ask you if you wanted to burn that old music first before it deleted it. Of course that means iTunes has to keep track of what you've burned and where *hint Apple!*. Then you can keep your collection recent as well as save space on laptops and iPods (and other portables).

posted at May 14, 2003 at 09:54 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# RHCP Concert

I haven't been to many concerts in my life (surprising, considering how much I like music) but the Red Hot Chili Pepper's at the Corel Centre was one of the best I've seen.

First off, you have to get a floor "seat". General admission. You can't rock to the Chilis glued to a chair. You have to funk it out with Flea and John ... and the floor was funked out. It was great.

The first opening act was a bit strange ... I'll try to find their names somewhere. The lead singer immitated Robert Plant and the lead guitarist imitated Keith Richards (except they both had big white-boy fros) and the band as a whole was so over-the-top, they probably thought they were the best rock band in the world. You have to earn that title, boys ... so go make some good music and call me in a few years. The lead singer kept throwing his mic around, jumping off the drumset and speakers, doing the James Brown shuffle (yea, it looked as bad as it sounds) and throwing the mic so it wrapped around his neck and then unwrapped. It just got tiring watching it. Their drummer saved their asses from a completely boring show. As it stood it was about 1/4 boring -- all of the songs sounded the same.

Queens of the Stone Age were the opening act. They were awesome (I'm going to pick up their CD because of it) and actually left my hearing more temporarily damaged than the much longer RHCP show did. I'm still trying to figure out if that's a good thing. They had a guest singer for two songs who kind of looked like the lead singer for Tea Party but not really ... I'll find out who he was, because he was great too. It would have been nice if they could have played longer, because the gap in between them and the Chilis was about 30 minutes and seemed long. To pass the time the crowd started the wave and it went around about a dozen times.

So RCHP comes on. We ended up pretty close, better than center ice (yes, the boards were up but not the glass) and the stage only took up about 1/4 of the arena. So we were maybe 75 feet away. Chad was wearing a personalized Ottawa Senators jersey with the arms cut off and the crowd went nuts. They played stuff mostly from the last two albums, By The Way and Californication and I was pleasantly surprised to hear many (about 4 or 5) older songs from Blood Sugar Sex Magic and earlier. I wonder if I can find a playlist online ... I'll try to find it.

In the middle of the set, John went acoustic with an old song - Eighteen by Alice Cooper - and that was great. From some of his older solo material it sounds like maybe John can't sing but he really belted out this one.

They came back for an encore after the crowd continuously cheered for 10 minutes and played "Under the Bridge" and a few others. By the end I had lost most of my voice and some of my hearing. Great show! :D

posted at May 13, 2003 at 11:08 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# MS Gets Scobleized

It's Robert Scoble's first day at Microsoft.

posted at May 12, 2003 at 10:25 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# SWT Resources and Sleak

Now that I have to write my own SWT GUI, I read SWT: Managing Operating System Resources. It explains why SWT doesn't automatically garbage collect some UI resources. I also saw a free tool called Sleak that monitors graphics resources for you. Nice.

posted at May 11, 2003 at 10:27 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

# Winer: Microsofting of RSS

Dave Winer talks about how the blogging tools community can prevent RSS 2.0 from being HTML'd by Microsoft, saving the community in the process.

Good to hear people learned things from Netscape's defeat when that community lost control of HTML. Where are we today with that though? The W3C has standards and Netscape (via Mozilla) has some of the best web standards support out there. Mozilla has some truly great customer-driven features (like popup blocking). IE6 is broken, prone to security hacks, prone to invasive (annoying, etc.) adware and spyware, and rarely ever updated with new features.

Who is the winner? The communities will always win eventually, even if the general public isn't conscious of it yet. Too bad it took 4 plus years to do it ... I can't blame Dave for wanting to not go through that mess.

posted at May 11, 2003 at 01:48 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# Blast from the Past

More articles, this time about Eclipse. These two from November 2001 are a great introduction to the IDE and would have been handy eight months ago at the start of my work term at Rational.

They deal mostly with plugin development but in doing so explain the internal structure of Eclipse.

9:05pm - Another one Interview: The Eclipse code donation

posted at May 11, 2003 at 12:34 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# More Spam Talk

This can't be a new idea, but how about this for a spam-fighter ...

Spammers probably have lists of millions of addresses. If they want to know who to spam more than once (to save money on bandwidth) they'll probably spam all of the people and see who doesn't bounce.

So what if SMTP (mail sending) servers sent back fake email bounces? If I get a spam email I tell my mail client it's spam and the mail client contacts the SMTP server with the original mail, indicating its spam. The SMTP server then sends a reply back to the spammer saying the account the spam was sent to doesn't exist.

You would still get a lot of first spams, but at least you wouldn't be put on "good email" lists. Spamming would be a one-shot thing, instead of multiple times from the same spammer. Larger organizations like Hotmail could use people-marked spam to filter email for other users at the SMTP level (again sending "account does not exist messages"). Possible? Thoughts?

posted at May 10, 2003 at 05:46 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (4)

# Performance and Mutability

From IBM developerWorks:

Immutable objects are pretty interesting. Did you know that Strings and Integers are immutable? Besides being easier to implement they are also - when properly implemented - thread-safe automagically.

posted at May 10, 2003 at 05:13 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# Bloch on Java 1.5

Joshua Bloch is interviewed about the new features in Java 1.5, due in late 2003. He also wrote the book Effective Java, which has saved me who knows how many hours already. The Slashdot comments are also interesting.

posted at May 09, 2003 at 08:40 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# First Week

My job has been good so far. My development is in Eclipse with Java and SWT/JFace. I am working by myself and trying to mostly use a test-first development (TFD) strategy with JUnit.

Test-first is getting easier and easier the more I do it. Every time I go off and randomly hack (usually just to "try something") I get way off track and end up at a dead end with crappy code. It's slowly sinking in that this kind of hacking gets me nowhere. I figure I'll do less and less of this as time goes on.

My unit tests have become an integral part of my code. I have supreme confidence in the methods I have tested, and I can't say that about anything else I've ever written. The unit tests are like code-contracts I have to abide by or problems I have to solve. How I do it is up to my creativity as long as I abide by the contract. Now I know why the XP guys love TFD.

The hardest part so far because of the speed I'm cranking out code has been keeping track of "things to do". I don't want to distract myself from what I'm doing right now but on the other hand I don't want to forget what just popped into my head. I definitely don't have time to write a test. Usually I just pop into the code affected by the new idea and write a TODO comment and let those tasks pile up for later.

Here are some stats for my first week at work (approximate because I forgot the paper with the numbers) I added up for fun. Next week's code name will be Yowza.

Codename: Zelda
Lines of code previously: 0

Lines of class code: 965
Lines of unit testing code: 887
Ratio of class to testing code: 92% (this number I remember)
Lines of UI code: 322

Total lines written: 2174

(I'll fix the numbers when I get that sheet back next week)

Since I'm refactoring a lot, a number that would be interesting is some sort of daily/weekly code turnover rate. I don't have a CVS right now, but even if I did how could I figure out that kind of number?

Disclaimer: Counting lines of code is like counting spackles on a ceiling ... it's useless, but it'll help you sleep at night. Especially if you are a manager. :)

posted at May 09, 2003 at 08:10 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (5)

# Hackers and Painters

I just read a great article by Paul Graham entitled Hackers and Painters. There were a lot of great quotes and ideas in it but here are two I liked most:

Everyone by now presumably knows about the danger of premature optimization. I think we should be just as worried about premature design-- deciding too early what a program should do.
When a piece of code is being hacked by three or four different people, no one of whom really owns it, it will end up being like a common-room. It will tend to feel bleak and abandoned, and accumulate cruft. The right way to collaborate, I think, is to divide projects into sharply defined modules, each with a definite owner, and with interfaces between them that are as carefully designed and, if possible, as articulated as programming languages.

His ideas about a loosely typed language allowing for increased changability made sense but I wonder if that wouldn't just increase problems at debugging time instead of compile time. Probably not if you had good tests.

posted at May 08, 2003 at 09:23 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# UnsupportedOperationException

If you are using an agile-type methodology to implement a Java interface you won't be able to implement all of the required methods at once. But the compiler will complain if you don't have the functions there, so you need stubs. Eclipse leaves nice stubs with TODO comments but the functions return default values (ie. null, 0).

public int compare(Object o1, Object o2)
   // TODO Auto-generated method stub
   return 0;

This is not such a great thing because you might use a method that's stubbed out inadvertently and mysterious bugs will happen. Here's a tip: In each stubbed method throw UnsupportedOperationException.

public int compare(Object o1, Object o2)
   // TODO Auto-generated method stub
   throw new UnsupportedOperationException("method not implemented");

It's a runtime exception which means that Eclipse won't tell you to change the function line to include the exception (and you won't have to - and shouldn't - explicitly catch it either). Then when you try to use the method in your code you'll know that method isn't ready yet.

On Jim's Comments: An exception won't be thrown unless you use the unimplemented method. Having your program crap out is exactly what you want to do.

Now if you put code in the stub to simulate functionality then you'd take the exception out, obviously. But when it's completely unimplemented, you need to know that. Using it is a programming error and that's exactly what runtime exceptions are for.

As well, you can't "pay attention to the TODOs" if you are using a class like a black box or abstraction, which is the whole point of OOP.

posted at May 08, 2003 at 08:47 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# Images in Hotmail Junk Mail

Hotmail has finally deactivated outside images by default on junk email. This is important because spammers can use outside images - and by outside I mean requested from a web site and not included with the email - to track who is reading their spam emails. This gives them a list of "active" email addresses to spam further. Here's a trivial example:

<img src="http://www.spammer.net/image.jpg?email=joe@hotmail.com">

When Joe views the spam, this image will be requested and the querystring on the end of the picture filename will be processed by the web server. The web server will then know that joe@hotmail.com is a valid email address and store this information for later.

Most spammers obfuscate this a bit. For example, they may use a code number in place of the email address and IP numbers instead of a domain name. So an image tag can end up looking like:

<img src="">

Which of course makes it harder to track exactly what's going on there and who it's coming from if the spammer changes IPs a lot. Most people don't even realise its happening or the fact that the images are not contained in the email. Email written in HTML definitely has its share of problems.

I already block outside images from automatically downloading and appearing in the Mac Mail client. Kudos to Microsoft for implementing this in a free service! Though reducing spam to hotmail.com accounts - which lessens excess load on their servers - is probably the central motivation, it's good either way. Is it in Outlook yet? I don't use it regularly.

posted at May 07, 2003 at 10:53 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# Coyotes

I had Indian food today for lunch at Taj Mahal on Bank Street. It was pretty spicey but good ... especially the Beef Curry or Curried Beef, I can't remember. Lunch buffets are always good news.

Also went indoor "rock" climbing today after work and dang my fingers hurt like a mofo. The vertical walls aren't too bad, but once the walls go past vertical I'm screwed. :)

posted at May 07, 2003 at 09:22 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (11)

# One Million Songs Sold

Apple sells over one million songs via iTunes Music Store in its first week. I can hear the Windows people out there drooling! Heck, I'm drooling too ... Canadians can't use the iTunes Music Store yet.

Update: Actually we can, we just can't buy anything. I knew that I just didn't word it well. :) I watched the Queens of the Stone Age - Go With the Flow video on there. We can listen to the 30 second previews of the "unreleased" tracks too. Neat.

posted at May 06, 2003 at 08:30 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# First Day

Today is my first day of work at the Canadian Customs and Revenue Agency, Canada's equivalent to U.S. Customs and the IRS except merged together. I will be working for the customs side writing software.

Coincidentally, there's an article in the Ottawa Citizen about the United States' concerns that Canada protects the privacy of its citizens too much. It was even on Slashdot.

posted at May 05, 2003 at 07:34 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (4)

# I, rLowe

Jim points out that Robert Cringely says:

"Cleaning up code" is a terrible thing. Redesigning WORKING code into different WORKING code (also known as refactoring) is terrible. The reason is that once you touch WORKING code, it becomes NON-WORKING code, and the changes you make (once you get it working again) will never be known. It is basically a programmer´┐Żs ego trip and nothing else. Cleaning up code, which generally does not occur in nature, is a prime example of amateur Open Source software.
It's obvious here that Cringely has no idea what REFACTORING is and why people do it. Maybe he should spend some time over at XProgramming.com before he formulates an opinion on it.

Number one, you cannot effectively REFACTOR without tests. You have tests to prove that your code is working the way you expect it to. You REFACTOR and then run those tests again to prove the code still works. Did I just break the code? No, I didn't.

Number two, REFACTORING is used effectively in agile development processes. In those processes developers strive to implement the minimum functionality required to complete a feature. Many times this gives code that cannot be expanded on later, it just does the job it has to do right now to solve the problem. It often does not incorporate a large amount of software design.

However, on the next development iteration if the developer needed more from the code and at that time wanted to incorporate more "design", he would have to REFACTOR the code. REFACTORING involves changing the old code so that it can accomodate the new feature. But no new features have been added yet! When all of the tests pass after the REFACTORING you are ready to add the new feature, which by that time is probably a walk in the park.

Now, let's call a spade a spade. Developers fiddling with their code because they were on a caffeine high the night before does not constitute REFACTORING. Developers will always do this because most are perfectionist-types. Without proper testing, it is not REFACTORING!

posted at May 04, 2003 at 06:16 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# Learning from Mistakes

For the humour impaired, yesterday's rant was mostly a joke. While I can't fix your software problems, figuring out why they happen to customers is an important part of software engineering - learning from mistakes.

I find that software designers tend to make the same mistakes over and over in different products instead of using their previous knowledge. Probably because they think in their infinite wisdom that everyone is a bleeding-edger like them and will prefer their new and improved way. No, regular people like the expected and learning something new (especially on a computer) takes effort.

The Winamp version 3 rewrite was a great example of this -- it made people scratch their heads. But what are you going to do, it's free.

When I try to help people and can't find a solution some of them think I've somehow wasted the last six years of my life on my education. It confounds me that they could draw such a conclusion, but whatever ... I can't help what other people think. :)

posted at May 04, 2003 at 05:26 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# No, I will not fix your computer

I've been wanting the t-shirt for while. To expand on Roy's point about helping people:

<rant>Are car designers mechanics? Are architects construction workers? No, I don't think so. Like the car designer and architect, I'm a knowledge worker. So when you ask me about your problems with Windows/AOL/anything don't get all flustered when I don't know the answer. I am not a tech support agent. "Well what are they teaching you in school anyway, if you don't know how to fix this?"

I don't have time to explain the intricacies of software engineering to you, but to simplify: I make the software that you bitch about - I don't help people use it. Ha. ;)</rant>

posted at May 03, 2003 at 07:14 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

# Instantly Crash IE

Want to crash Internet Explorer with some malformed HTML? Go here. Here's someone's explanation why.

posted at May 03, 2003 at 10:43 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# Compete to Make Apple Rich!

I promised the AudioMan team I'd put up this interesting blog post on the iTunes Music Store. In it Tim Bray says:

We can assume that Apple will publish an XML-based API for buying a tune once they've got a few more bugs shaken out, then they can stand back and let the programmers of the world compete for ways to send them money.
Sounds a lot like Amazon's referrer business model -- very smart. AudioMan is my group's university software project and it organises your music collection. We are planning on releasing something soon ...

posted at May 02, 2003 at 07:02 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# Students Settle with RIAA

Students being sued by the RIAA for setting up massive file-sharing systems on university resources have have settled for amounts between $12,000 and $17,000. I shook my head when I read this from the article:

Despite the settlements, the students did not admit any guilt. "I don't believe that I did anything wrong," 18-year-old Peng said in a statement. "I am glad that the case has been settled amicably, and I hope that, for the sake of artists, the larger issues can soon be resolved."
These kids had many many thousands of files shared on these systems. Just because they disagree with the way record companies share their revenues with artists doesn't justify breaking the law. If they're going to share files illegally the least they can do is not hide behind some bogus excuse -- own up to it.

If they said "we wanted to impress girls with our l33t collection!" then I would accept that. But these systems were just ridiculous - you'd never be able to listen to all of that music in a lifetime. Count your lucky stars boys and girls, you got off easy.

posted at May 01, 2003 at 07:12 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (3)

# More Work on xNote Today

xNote takes another step towards being an OPML outliner. Here's what I added:

  • close OPML document
  • edit URL
  • treeview context menu
  • better keyboard support

Some issues that are left:

  • I couldn't get the old URL to appear in the Edit Link dialog, working on it
  • do we allow newlines in comments?
  • do we allow URLs on folders?

... and from before:

  • adding nodes
  • deleting nodes

Here is the executable (.NET framework required) for your trialing pleasure and the code.

posted at May 01, 2003 at 06:20 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)

# xNote

I've been helping out Phillip and Matt the past few days with xNote, an open source C# OPML browser. Here's a screenshot of what we have so far:

xNote OPML browser

I just recently added:

  • saving the OPML document to disk
  • editing text attributes
  • editing comments

So now it's less a browser and more like an editor. You can only edit the top-most document, not documents loaded by inclusion links (blue folders).

Still on the TODO list:

  • edit link/inclusion URL (modal dialog?)
  • add new nodes
  • delete nodes
  • from the spec: "By convention if an outline is commented, all subordinate outlines are considered to be commented as well"

Here's a question that wasn't answered by the spec: can links have comments? In the implementation of xNote so far, they can. Here's what that looks like in OPML markup:

<outline text="This is a demo directory">
  <outline text="This directory ..." type="link" url="http://www.opml.org">
    <outline isComment="true" text="make a comment on a link" />

Update at 10:03am: Forgot to post the executable version (.NET framework required) and the code.

posted at May 01, 2003 at 01:38 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

Search scope: Web ryanlowe.ca