« October 2003 December 2003 »
blog header image
# Iron Ring Ceremony

I guess I'm going to have to get used to wearing jewelry. :) The Iron Ring ceremony was last night and I have a pinky ring on my left hand. For those that don't know, engineers in Canada wear the ring to symbolize their obligations to the engineering profession and to society. More information can be found here.

The ceremony made me reflect about what it means to be an engineer in the software industry. I think our project management professor said it best when he compared software engineering to early civil engineering. A lot of bridges fell down for hundreds of years but over time things matured. For better or worse, they don't make us stand under our "bridges" any more when the first heavy load passes over them.

So even though our lives are safe these days, software engineers shouldn't fall back on the fact that the profession is new as an excuse to make poor software. Like the civil engineering profession did, they should continue to improve the quality of the software they write and the processes they use to write it.

Congratulations to my fellow engineers!

posted at November 29, 2003 at 02:46 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (4)

# Ad Hoc Communities for Specific Problems

I honestly cannot believe how many people have come to my blog for a solution to the Ant JAVA_HOME problem with Eclipse 2.1 I wrote up six months ago. I probably get 50-75 hits a day from just that issue.

A strange combination of circumstances gives me all of those hits. My increased Google juice has to do with Google's inability to properly score blogs, meaning I have a relatively inflated score. So when you seach for the error text, my blog comes up near the top. It probably doesn't help that I got linked a few times by Robert Scoble who also has an inflated score, which probably adds to my score somehow (Scoble calls this 'giving Google juice'). The increased linkage of blogs is part of what gives Google problems, as linking frequency is a basis for its scoring system.

The great thing is that I have a solution to a problem and I can share it with others, creating a sort of ad hoc community around a specific problem. It's really great when you can just Google an error message and get a solution right away instead of wading through manuals.

posted at November 28, 2003 at 08:53 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# Tools Can Solve Endless Arguments

The good thing about being relatively new to a specific area is that you ask a lot of "dumb questions" that make people think. It also means you are unemcumbered by tradition, less set in your ways and more willing to accept new ideas.

And so it goes with the software development industry. Some day I'll be a crusty stubborn old man no doubt, but until that day I'm ready to soak up new ways of doing things. Writing software can be a tedious exercise and making tedious exercises less tedious is something that computers are really good at. I'm all for letting computers do my job.

If you're wondering where this latest spout is coming from, the hamster wheel started turning when I read Brad Abram's post about case convention in the official guidelines. It's the same old endless argument that has probably happened a thousand times with a thousand different APIs, and it's obvious that no one has come up with a perfect solution. Regardless, it amazed me that developers get hung up over seemingly minor issues like naming conventions, bracketing and indenting. In the comments I said it wasn't a big deal if people sometimes deviated from the guidelines when it made sense to do so. I don't think anyone else agreed with me. :)

Then I realised that these developers are probably using their favourite text editor to code (like emacs and vi). They like everything just so, otherwise they have to think about formatting. Thinking about formatting is bad -- it distracts them from the real task: coding! So this causes developers to get all "religious" about these issues. Having a simple case guideline means that you can "code blind" for a bit without wondering if you typed a method name incorrectly.

Well I think maybe these developers should get out of the stone ages. Sorry boys and girls, but the days of the POTE (plain old text editor) are numbered. It's time to pick up a modern integrated development environment (IDE) ... it can actually help you code faster and free your mind.

For example, would people really care about naming case conventions as much as they do if they used Intellisense? I don't think so. You type the first two or three letters in any case and Intellisense brings up a list of member variables and methods starting with those letters. Pick the one you want and presto, the case is done for you automagically.

Indenting is really a simple problem that was solved by tabs. As long as the team uses tabs for indenting, any developer on the team can pick any number of spaces for the tab that they want. Simple text editors provide this too, yet people still argue about tab widths.

Bracketing is another thorny issue with C/C++/Java/C# developers. Do you like the opening { on the same line or on a new line? The team ends up choosing a convention and sticking with it. Shouldn't IDEs allow user-customization of bracketing, converting between the user's preference and the source control system's (the team's)?

Eclipse half solves this problem already because in the CVS view you can choose to see only logical differences in the code (not bracketing or spacing). Eclipse can also quickly format the code to the user's preference of bracketing and other formatting options. So in theory you could download the latest version of a file and format it the way you like (one keystroke) and still be able to tell if there was a logical diff even though the formatting is completely different. The only thing Eclipse needs to do now is have a place to set a preference for the CVS formatting and it could automagically convert back to that format before it checks in logical changes. Then voila, you have individual developer formatting and everyone on the team is happy as clams no matter what the "official convention" is.

Reducing these points of friction using tools can really simplify our lives as software developers. What's holding this stuff up from being adopted I wonder? Stagnation?

After watching the two managed code episodes of The .NET Show and hearing the all of the guys say "quicker time to market" over and over, you can bet that better tools will be created to increase development speed even more. Developers will have to keep up with the new technologies or be left in the dust by more efficient managed code and tool-using developers.

posted at November 28, 2003 at 07:18 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (5)

# Microsoft Tightening the Feedback Loop

A representative from Microsoft read my rant about features lacking in Visual Studio .NET and sent me an email, assuring me that most of the problems were fixed in the next version which is code-named Whidbey. He even offered to send me a beta copy of Whidbey so I could check it out for myself.

I tell you what, I'm impressed. Competing against an open source, free (as in beer) and community driven product like Eclipse is going to be a tough job. They are paying attention to us. It's a great time for developers, developers, developers.

posted at November 27, 2003 at 02:42 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# Revisiting AudioMan

In my fourth year of the software engineering program at the University of Ottawa I worked with a team on a year-long project, starting in January. We decided to make a digital music organizer we named AudioMan that would allow people to manage their music collections on their computers. We finish this project on Friday.

Things have changed quite a bit since we started AudioMan back in January. iTunes for Windows is out and more companies have announced they will start selling digital music (Napster and Microsoft are just two examples).

So after talking with a few people about where this project could go in January I've come to a few semi-conclusions. Number one on the list is that AudioMan should not be a music player. There are enough great music players (WinAmp, iTunes, Windows Media Player, VLC) out there already and people have their favourite player.

Two, it could turn into a user-interface intensive application. By that I mean that a new user interface could affect how people organize their collections -- more graphical, dragging and dropping, etc. While I agree that eventually applications will move towards this, I don't think that people can get used to it in the near future (ie. let's wait for something like Avalon in Longhorn to catch on in 5 years). AudioMan should stay as a regular Windows-looking application so people won't have much trouble using it.

Where I see AudioMan fitting in is a multi-platform multi-format organization application. By multi-platform I'm referring to SWT's ability to work on Windows, Linux and Mac OS X (and this support will continue to get better, so we should work on getting all three working and deployed at once). By multi-format I'm referring to all of these new file formats that will be in use in the next year. Apple has AAC. Microsoft has WMA. Napster has something else. And then there's still MP3, OGG, SHN and FLAC, just to name a few more. :) All of these formats will take a while to be supported by all vendors (and you can bet that some never will). People are going to WANT a SINGLE unified view of their music collection no matter where they bought the music from.

Number three is backups. If you buy a song from iTunes right now once you download it you have to take care of it. If you lose it in a hard drive crash you'll have to buy it again. As people start buying hundreds of dollars worth of music they'll want to be able to back up and keep track of it all and that includes removable media like writable CDs and DVDs. So they'll want to know a) if it's backed up and b) which disk(s) a particular song is on if they happen to want to play it. Songs stored over network connections should also be a big consideration.

So there are a few ideas I wanted to get down for people to read. Even if AudioMan doesn't eventually get used by a lot of people, it will still be a great test-bed for new software engineering techniques, quality testing, deployment, etc. So no doubt it will stick around. :) In the new year we'll get a team together and start working on AudioMan 1.0 .... who's in?

posted at November 25, 2003 at 01:55 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (10)

# Inflection Point

It's a trip to think about how the decisions I make in the next month after I graduate will affect the rest of my life. Probably getting a little too cerebral about the whole deal. I'm glad I left my options open, though -- I could move anywhere and do pretty much anything.

posted at November 24, 2003 at 11:56 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# Hard Drive Size Numbers

It's common for hard drive manufacturer's to misrepresent how much storage space hard disks have. This misrepresentation is easy because the general public doesn't know what a gigabyte really is.

Here's the lowdown for you non-geeks: Computers count in binary, 1's and 0's instead of 1-10 like humans. So computers represent numbers in base 2 instead of base 10. Note: I'll use 2^3 to mean 2 to the exponent 3.

An interesting thing about base 2 is this:
2^10 bytes = 1024, or about 1,000 (kilobyte)
2^20 bytes = 1024x1024, or about 1,000,000 (megabyte)
3^30 bytes = 1024x1024x1024, or about 1,000,000,000 (gigabyte)

That about is where the misrepresentation lies. It's not uncommon to find that an "80 gigabyte" hard drive only has about 80,000,000,000 million bytes. OK, what's the problem with that?

Well 80 gigabytes is actually 80x1024x1024x1024 = 85,899,345,920 bytes. That's a difference of 5,899,345,920 bytes! or about 5.5 (real) gigabytes! That's a lot of "missing" storage space.

So how did this happen? Well, geeks don't really care that much because we know about it. It's been going on for years. The problem is that once hard drives started getting into the gigabyte range, the error (using 1000 instead of 1024) kept getting worse and the number was off by more and more. Then the average joe six-pack consumer started noticing too ...

I told a non-geek friend about this and it blew her away, the rest of us will probably just say "so what?". :) The good news for consumers is that there is legal action pending about this issue (the link escapes me at the moment). As computers enter the mainstream more and more us engineers have to remember that regular people can't count in base 2 in their heads. :)

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

»» permalink | comments (6)

# Feds Benefits

I'm curious about the Canadian federal government benefits package. What does it include? How much would it cost an individual to get similar benefits on their own? (ie. outside of a group policy for insurance, etc). Also, what does the pension plan entail? This information is probably online somewhere ...

As I find this information I'll post links here.

posted at November 19, 2003 at 03:19 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (4)

# iTunes and Rendezvous

Now that the Windows version of iTunes is out I can play with Rendezvous, which lets applications on different computers find each other. Rendezvous+iTunes means that I can listen to songs on my iBook from my Windows Machine:

iBook collection showing up in iTunes via Rendezvous

The discovery is automatic -- as soon as I start iTunes on Windows I can see my iBook collection and browse it, including the playlists.

Obviously the music sharing aspect comes into question but you can only listen to songs via Rendezvous+iTunes, not copy them. With DRM'd AAC files purchased from the iTunes Music Store you can't even listen to them unless the connected computer is one of the three you've given permissions to. That's DRM for ya. I've also password protected my collection so people can't listen to it while I'm on the wide-open school network.

Gripe 'o the day: So given that people aren't supposed to be sharing their collections with other people I find it's a little strange that when you play a file from a connected computer that the play count doesn't increment. At the very least it should be a preference.

posted at November 14, 2003 at 09:11 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (8)

# RSS 1.0 Template for MoveableType Comments

I made an RSS 1.0 feed for my comments with MoveableType. Now I can read my comments in a feed reader too, along with the blog. Here's the MoveableType template:

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>


<channel rdf:about="<$MTBlogURL$>">
<title>Comments for <$MTBlogName encode_xml="1"$></title>
<description>Comments for <$MTBlogName encode_xml="1"$></description>
<dc:date><MTComments lastn="1"><$MTCommentDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></MTComments></dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" />
<cc:license rdf:resource="<$MTBlogCCLicenseURL$>" />


<MTComments lastn="15" sort_order="descend">
<item rdf:about="<MTCommentEntry><$MTEntryPermalink encode_xml="1"$></MTCommentEntry>">
<title>Comment by <$MTCommentAuthor encode_xml="1"$></title>
<link><MTCommentEntry><$MTEntryPermalink encode_xml="1"$>#<$MTCommentID$></MTCommentEntry></link>
<description><$MTCommentBody encode_xml="1"$></description>
<dc:subject><MTCommentEntry><$MTEntryTitle encode_xml="1"$></MTCommentEntry></dc:subject>
<dc:creator><$MTCommentAuthor encode_xml="1"$></dc:creator>
<dc:date><$MTCommentDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date>


Updated Tuesday 14:47 added a descending sort order.

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

»» permalink | comments (3)

# RSS Feed Changes

I've changed my RSS feeds for this blog so that they have the full post body instead of just the summary, which MoveableType made the first 20 words by default. Am I breaking RSS by doing this? The GotDotNet blogs do it too. Oh, and so does Scoble. I should be OK. :)

posted at November 14, 2003 at 01:05 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# Changing Object Nesting in XAML

One of the really nice things about XUL was the ability to move XML representing the GUI elements like textboxes, list, etc. around quickly, even between different nesting levels, to get the layout right. Writing XUL is a really quick way to whip up prototypes of GUIs, especially since it can be skinned to look exactly like native Win32 apps.

I don't know if MS will be promoting XAML has a way to layout GUIs. There will probably be a really nice WYSIWYG editor in Visual Studio that the hardcore developers will never use but is handy for RAD. But in any case, XAML does allow for a really nice presentation/functionality seperation between XAML and code. Define how it's layed out in XAML and how it works in code, is how you could do it.

The problem I see is when you start fooling around with the nesting levels or even move objects around the GUI. Think of each nesting level as an object that contains instances of other objects that are nested inside of it. You want to fool around with your XAML code and move an object up one nesting level but now the XAML doesn't correspond with the code and the compiler chokes.

So I guess it depends on what their intentions are for XAML in the context of GUIs/Avalon. If they intend developers to layout GUIs with it like XUL then they might want to offer some refactoring support in Visual Studio that detects the change in nesting or movement in the XAML and changes the code to correspond with those movements.

Otherwise I could see keeping your XAML and code straight and corresponding being a huge problem, especially for large or complicated UI layouts.

posted at November 13, 2003 at 10:31 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# Parsing XAML with Code In It Dynamically

Watching people learn about Longhorn technology and actually discuss it with Microsoft employees is pretty far out. It'll probably take months for people to digest and ask about all of the details.

An interesting topic that came up was the notion of "dynamic" XAML, comparing to dynamic HTML. After HTML has been interpreted by the page renderer, JavaScript can alter the DOM tree of the displayed page by inserting or taking away DOM elements representing HTML. Then the renderer shows the new DOM tree and it appears as though HTML has been added or taken away.

When XAML and/or code is compiled you get bytecode. Object properties can be defined in either the XAML or code and are combined during compilation to arrive at one defined object (incidentally, which has precendence?). The question is, after the program is compiled can compiled code insert more XAML into the "XAML DOM tree"? (which doesn't actually exist after compilation if it ever did) And the answer is no yes.

Update: What Chris said was that you can't use def:Code fragments in XAML parsed by code. I was a bit confused there. :)

I have turned this large post into two because it covers different topics.

posted at November 13, 2003 at 02:42 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# New Music

Speaking of music, I bought more CDs today:

Dido - Life for Rent
The Strokes - Room on Fire
Jet - Get Born
Dave Matthews - Some Devil

I was impressed enough with Dido and The Strokes' first albums to go for their sophomore efforts. The Jet CD was cheap and includes the catchy single Are You Gonna Be My Girl. And Dave Matthews, well ... I felt guilty: I've enjoyed his music so much over the years and I've never bought one of his CDs. I always got enough DMB at cottages, parties and on the radio.

I still have to "review" the last bunch of albums I bought. I'll get to that this week.

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

»» permalink | comments (0)

# The Mac is Back

So I got my iBook back today after almost five weeks. If you recall, they had to replace the logic board which is pretty much everything in the machine except the hard drive, CD-ROM drive, battery, RAM and wireless card all slammed onto one small board (AKA the motherboard). Luckily it was still under the one year warrantee and the job was free (plus five weeks).

So without iBook I realised a few things. Firstly, having a notebook at school saves a ton of time. That and the main computer lab at school having no windows really makes the computing experience that much more dreary. It's still a lot better than The Cube though.

Secondly, I don't use my iBook at home much besides to listen to music and check email. Email I have one my notebook for security and reliability reasons. Security still holds but reliability just went out the window. Oops. At least I can check my email via a web interface. I missed my music though ... I think I went into withdrawal.

It will be interesting to see how much I use my iBook when I start working full time again. I'll probably get an iPod so I don't have to lug the iBook around just to listen to music. That's why I'm in no rush to buy a new Mac. I'll just get the two year extended warrantee (with the student discount) for the one I have, install Panther after exams and wait a bit.

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

»» permalink | comments (5)

# What's Going On Here?

OK, so if you don't know me (or even if you do) you might be asking yourself that question. Why do I talk about Eclipse in one post and then Microsoft in another? Well I'm trying my best to be objective and most of all, learn something.

I'm reading a lot about Microsoft these days because they are doing some truly extraordinary (for them, anyway) things. They are letting their developers loose on their blogs, describing key technology that is going into Microsoft's next operating system, Longhorn. Some of it is bleeding edge software engineering. Other stuff is embrace and extend. It doesn't really matter ... in two years it will be out there in production and even if I'm primarily using Java I'll have to deal with it in some capacity. How can I defend my choice of language/platform when I know nothing about the competition? So I'm learning about it now ... and it looks like pretty cool stuff.

Eclipse I like from a technical standpoint but I also admire the coordination involved to get to the end product. There's some good software engineering lessons in there -- and it's easy to learn them: the project is wide open. So from a curious future software engineer's perspective, Eclipse is a gold mine of information.

It's the same reason I got a Mac. It's no secret why Mac's are the new geek toy: they have a strong Unix core with a candy-coated usable shell. What a great mix -- a lot can be learned there too.

So I'm not rushing to hitch my wagon to one train. It's good to get your fingers into everything and experiment. See what works and what doesn't and learn why. Recognize what people will pay for. Learn to compromise and critique. This is what will make us successful software engineers.

posted at November 10, 2003 at 01:40 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (0)


Just wanted to take this opportunity to brag that I predicted correctly. Well, kinda ...

Things have changed since June 12th. The comment I made at the end about the open source community having to catch up is off because people at Microsoft are openly talking about the technology even though Longhorn, the first OS to use XAML, is still at least two years away. Microsoft is taking the risk of "giving away" this new technology in order to solicit feedback from developers.

The word on XAML vs XUL is best left to guys like Wesner Moise and Joe Hewitt. I haven't read that much about it yet but I do know that unlike XUL, XAML does not use CSS, but appears to have an equivalent that is similar to CSS. Apparently a CSS-like system was in an early edition of XAML and then dropped it in favour of the new way.

From first glance it appears as though Microsoft wants to compete against the W3C rather than work with them. It looks as though the open source community should appreciate the two year warning. I wonder if they'll do anything about it ... two years is a pretty long time.

Update 10:20am Monday XAML and code can be mashed together to end up with one object. So you can set the object's visual properties in XAML and it's functional properties in code OR all of them in either. Don Box and Chris Anderson have a pretty good live demo of that on MSDN TV.

posted at November 09, 2003 at 04:12 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (2)

# Unit Testing Multiple Interface Implementations

Sometimes you want to test several implementations of an Interface that give exactly the same results but with different performance characteristics, for example. Since they are supposed to work the same way you want to use the same tests on each of the implementations to confirm that.

You could make copies of the tests for each class and manually make sure they are the same but it's a maintenance nightmare. We ran into this problem with the AudioMan project and here was our first solution, using the Java List collection as an example. Vector and ArrayList implement the List Interface.

public class ListTest extends TestCase
  List list = null;

  public void setList(List implementation)
    this.list = implementation;

  public void testExample1()
    // test code here

  public void testExample2()
    // test code here

public class VectorTest extends TestCase
  ListTest listTest = new ListTest();

  public VectorTest()
    this.listTest.setList(new Vector());

  public void testExample1()

  public void testExample2()

All of the test implementations are in ListTest. To test the Vector implementation of the List Interface, make functions of the same names in VectorTest that call the corresponding test in ListTest.

This is better than copying the tests because the implementations are only in one class. But as you add new tests to ListTest you have to remember to add the respective calls to the new test to VectorTest and ArrayListTest too. It's better than keeping copies of whole tests but there's still a maintenance problem with this solution. So I was thinking about it this morning and I came up with something else:

public abstract class ListTest extends TestCase
  List list = null;

  protected void setUp() throws Exception
    this.list = this.getList();

  protected abstract List getList();

  public void testExample1()
    // test code here

  public void testExample2()
    // test code here

public class VectorTest extends ListTest
  protected List getList()
    return new Vector();

public class ArrayListTest extends ListTest
  protected List getList()
    return new ArrayList();

With this solution, the test code is still only in one spot: the interface test class ListTest. Then each of the implementing class' test classes subclasses ListTest instead of TestCase and implements the abstract getList() method returning its own implementation of the List Interface, in this case Vector and ArrayList.

All of the test methods are are inherited from ListTest, so VectorTest and ArrayListTest can be executed with JUnit. ListTest can't be run as a test because it is an abstract class.

So there we have it. No more maintenance problems and it's dead easy to add a new implementation's test class.

Update Sunday 12:50pm Andrew suggested I make the ListTest class abstract. I like the idea so I've changed my post. We don't run into that filtering problem with Ant because we put our tests into classifications and only run tests ending with TestA with Ant, but for other projects using the test class names to filter is a good idea.

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

»» permalink | comments (5)

# Superstar DJ ... Here We Go!

I guess I should say a little something about Mark Farina (cool flash site). I saw him DJ last night at Surface and he's amazing. It's pretty hard to describe how the music he spins is amazing in words but I took all of these as good signs: a) the whole crowd was facing him, which is kinda weird because when people are dancing they usually face each other ... b) the crowd was waaayyy into it, cheering him on c) even the cigarette girls couldn't help from dancing. Yes, I said cigarette girls ... how sick is that? All they did was sell cigarettes -- never did see them sell a pack -- and you're not allowed to smoke in bars in Ottawa. But I digress ... Mark Farina kicks ass.

Oh and one more thing: us folks in Ottawa are lucky to have him here. There are probably people in bigger cities that would kill to see Farina in a club that small.

OK another one more thing: Mark Farina looks like Roy with hair!! I kid you not. :)

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

»» permalink | comments (1)

# Rewarding Negative Feedback

I just finished writing a comment on Scoble's blog and wanted to expand on it here.

Scoble linked to an article regarding Microsoft's bounty on virus writers. While I do agree that this is a pretty cool thing to do I wondered why they aren't giving reward money to eliminate the vulerabilities that allowed these viruses to exist in the first place.

By offering a cash reward to people that find vulnerabilities, Microsoft could potentially find a lot more security defects in its code -- and for a much lower price. Instead of people finding vulnerabilities in Microsoft code just because of the nature of the target they'll actually be making money.

In my comment I compared this to the open source world where hackers find bugs in other people's code for prestige and also to improve a product they may have a vested interest in. With a reward as motivation people would be more likely to try to break Microsoft's code AND (more importantly) report the breakage to Microsoft, improving the products instead of constantly cursing about them or writing exploits.

In my hypothetical 'contest', to be given a reward the contributor would have to agree not to publicly disclose the exploit to anyone for a period of 30 days (arbitrary) to give time for Microsoft to patch it. Public exploits would be disqualified.

A lot of people have a vested interest in Microsoft software but cannot see the closed source code. This makes testing more difficult but not entirely impossible. I think all commercial software could benefit from a program where people are rewarded for negative feedback, especially when it comes to security exploits.

posted at November 05, 2003 at 06:00 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (5)

# Looks Aren't Everything...

What else is new ... I've tweaked my blog. The "tangerine" style sheet I made a while ago has finally reached the whole site. If you find any templates lacking the new style, gimme a holler.

As well, I've changed the comment dialog to force users to preview before posting their comments. This will hopefully cut down on blog spamming bots that try to take advantage of my PageRank (5/10) and maybe give people a chance to proofread. :)

posted at November 04, 2003 at 09:46 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (12)

# Feeding on RSS

I'm trying out SharpReader to read blogs. Unfortunately I can't read all of the blogs I'd like to because some don't have RSS feeds. RSS is an XML format for blogs that aggregators like SharpReader can parse. MoveableType blogs produce RSS by default.

The nice thing about SharpReader is that it checks all of the blogs at once and shows me which ones have been updated, which is much less tedious than checking all of those web pages.

posted at November 03, 2003 at 11:37 PM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (1)

# Looking for Work

Just thought I'd take this opportunity to shamelessly point out that I'm looking for a job in January after I graduate. I'll have a Bachelor of Applied Sciences in Software Engineering (Co-op Program) from the University of Ottawa. I'm young and I don't have much tying me to Ottawa so I'm very willing to move and experience new places.

I'm looking for a great team of software people with creative, open minds. I'm interested in software processes, design, quality and project management issues and I'm also a pretty good programmer.

I consider myself pretty opinionated and I do read Slashdot but there's no company I would refuse to work for without at least some consideration. :) I have worked for a couple of large software companies and government departments.

If you know anyone looking for a future Software Engineer, check out my resume. Thanks.

posted at November 03, 2003 at 12:13 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (4)

# Unit Test Eclipse View
I'd like to have a plugin for Eclipse that will allow me to see unit tests I have written for a method. But not all unit tests that use that method because sometimes that could be a lot -- just the tests I've written to specifically test that method. I usually name the tests using a convention like:


and they will be grouped in files by class. To demonstrate this idea I'm going to take a method I made test-first from the AudioMan project. It takes a long of seconds and returns a formatted String of the format hh:mm:ss. Pretty simple, but it has quite a few tests and it would be nice if they were summarized in a compact view so I can make sure I have all of the boundary cases. Then I could do some semi-formal boundary value analysis. Here's a table of what the view might look like:

Tests for String formatTrackTime(long)
DescriptionInput (long)Output (String)

I think this view would be a lot easier than looking at a bunch of unit tests -- even in the Outline View (below) -- that you have to scroll up and down.

After being able to view the tests the next step could be allowing the developer to insert a new test. You can fill in the description in the table, the test skeleton is made for you and you double-click on it to fill in the implementation.

After that you could get the plugin to make the tests for you completely. With simple inputs and outputs like this example it would be relatively easy I think, but sometimes tests can be much more complicated. In those cases it would still be useful to see the table view but instead of exact variable values written for inputs and outputs you would have brief descriptions and fill in the test implementation manually.
posted at November 03, 2003 at 12:03 AM EST
last updated December 5-, 2005 at 02: 2 PM EST

»» permalink | comments (5)

Search scope: Web ryanlowe.ca