Ben Langhinrichs

March, 2005
SMTWTFS
  01 02 03 04 05
06 07 08 09 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

Search the weblog





























Genii Weblog


Civility in critiquing the ideas of others is no vice. Rudeness in defending your own ideas is no virtue.


Mon 28 Mar 2005, 10:05 AM
My daughter came home for spring break this past week, and had a good time telling us all we were being hetero normative.  Fortunately, she doesn't buy into this so much as likes poking fun at us, but it has certainly introduced a new phrase into our vocabulary.  Even my nine year old asks if I'm not "being a bit hetero normative", which I guess I am.  It is such a rare pleasure being accused of anything which even sounds like normal, and I can stand being called hetero too, I guess.

Copyright © 2005 Genii Software Ltd.

Thu 24 Mar 2005, 11:17 AM
So, I was telling my 14 year old son about making Midas crash.  He thought it sounded like fun, but then I said that after fixing the crashes that resulted from comparing each document with the next document, I said I might switch it to compare each document with each other document, just to see if that would kick up any other interesting crashes.  He got kind of a funny look on his face, the slightly pained look of a kid who realizes that he is smarter than his father and must share that fact, and said something like "Dad, wouldn't that be rather a lot of comparisons?".

Well, here is where the inexorable nature of math comes in.  There are 39409 documents in the 2001 Partner forum.  It takes my comparison engine 20 minutes, approximately, to do all the comparisons from the first test.  So, if I were to compare every document with every other document, it would take 776514936 comparisons.  Given that they work at a rate of 39409 every 20 minutes, that means 19704 groups of 29409 , or 394080 minutes, or 6568 hours, or 274 days.  Hmm, guess I'll have to come up with some other test.

What irks me is that he knew that in ten seconds, and I had to sit down and do all this math to convince myself.  Grrr!

Copyright © 2005 Genii Software Ltd.

Wed 23 Mar 2005, 02:52 PM
Crash sceneAnother one of the games I like to play when I have a moment to spare, or a project I want to avoid, is called "Make it crash".  The idea is to take some Midas or CoexEdit or CoexLinks functionality and find a way to make it crash.  This is both fun, and leads to more stability in the product since I then have to fix the problem.  I have various rules for myself, but the main one is that the crash has to be "my fault".  In other words, it is trivial to get Notes to crash due to its own faults, but since I don't have the source code handy, I can't fix those problems.  Therefore, it has to be in the Midas code.  

Today's game was sparked by a letter from a client who says that our rich text comparison was crashing.  I found the bug, which had to do with comparing nested tables, and fixed it, but then I got into the game.  To really stress the comparison engine, I used the Partner Forum database, which I like to use as a resource with a bunch of rich text fields, and simply set up a loop which compares the rich text field in each with the rich text field in the next document.  Obviously, these comparisons have no meaning, but I figured they would stress all sorts of bits of code that were not normally stressed when I was comparing fields that did have something to do with each other.  For this game, I only worry about crashes, and I'm afraid to say I have found three and fixed them so far.  No more crashes, so no I may compare every document in the Partner Forum for 2000 (created with R4/R5) with every document in the Partner Forum for 2004 (many created with ND6/6.5) and see if I can find any problems due to new data structures or new storage technologies.

Fortunately, these all run on my second machine, so I can also work on the projects I am supposed to be working on.  Oops, did I say "fortunately"?

Copyright © 2005 Genii Software Ltd.

Tue 22 Mar 2005, 02:18 PM
CliffA popular idea these days is the concept of "degrading gracefully".  No, this is not related to "aging with attitude" or other aphorisms we forty-somethings use to distract from the sagging and bulging of our approaching, but never arriving, middle age.  This is the idea, popularized with web design in general (and CSS in particular), that when people do not have the same specifications, software version, browser type  or what have you, that you, the designer, intended, their experience should be less like falling off a cliff and more like gliding down a slope.  If I happen to have Internet Explorer, and the site was designed for Firefox, I may not have every bell and whistle, but my experience should still be smooth, and I should not necessarily be aware of the loss of function.  A good description of this, and how it extends to other parts of the IT experience, is written up on Flashes of Panic under the title Degrading gracefully.  

I have been dealing with this concept, if not the particular terminology, for years when dealing with Notes rich text, but in CoexEdit, it is of even more paramount importance.  What happens when a client edits the rich text from Safari on a Mac?  What happens when the database is replicated locally and edited by someone who does not have CoexEdit, then replicated back?  What happens when the company decides to standardize on an ActiveX editor, and a user accesses with a browser on Linux?  

Some of these are easy, such as the issue of using Safari on a Mac.  If the web editor chosen supports Safari, which many of the Java or JavaScript editors do, and CoexEdit is configured to run on the server, it will work as expected with no degradation.  If the database is replicated locally and documents are modified, they will be converted appropriately upon opening from the web later, so again, there will be no degradation, except perhaps from a resource which is not available.

But what if the rich text editor does not support Safari, or works with Internet Explorer but not with Firefox?  Worse yet, what if most features of a rich text editor work with all three browsers, but optional plug-ins into an editor such as TinyMCE may vary, so some work in Internet Explorer, others work in Firefox, and still others work in Safari?  In the former case, we may be best off denying access or putting up a browser page which warns the user that editing with that editor is not allowed, but that is hardly degrading nicely.  In the latter case, we may need to hide certain browser buttons to ensure that the user is not hit over the head with the fact that they can't use a particular widget.

Now, most of this would not have to be my problem, since the application designer is really responsible for such issues, but I am enough of a realist to know that a fair number of people are just going to take whatever I put in my samples and slap it into their databases, so I would really like to do it right.  I am starting to think that I should pick one good, easy, cross platform web editor to be the "fallback", so that if the company picks an ActiveX editor and then runs from a browser that doesn't support ActiveX, it will just "degrade gracefully" to the "fallback editor".  That may be a case of doing what the customer wants rather than what they ask for, but since I am only talking about doing it with samples, I guess I have a bit of leeway.

Copyright © 2005 Genii Software Ltd.

Sun 20 Mar 2005, 10:52 PM
The hardest job is housecleaning, but it has to be done, whether in your office, in your garage or on your website.  Today, I started cleaning up the Web Editors list, as it seems to get a fair number of hits and it seems only fair to make it presentable and ensure the information is up to date.  I did the simple stuff, such as adding border-collapse: collapse to the table HTML style property to make nice clean lines, and getting rid of some extraneous columns, etc., but the hard job is visiting each site and making sure the information is still accurate.  Since my daughter is home from college for a week and looking for work, I think I'll pay her to do that job.  I also have to make sure that new editors, such as TinyMCE, which I just added, and Xinha, which I haven't yet, are properly described.

If only I were as clever as Tom Sawyer and could convince my daughter that this was desirable work...

Copyright © 2005 Genii Software Ltd.

Fri 18 Mar 2005, 12:38 PM
Someday, if I get really, really bored with software development, I think I might go into the business of naming paint swatches.  Now that takes creativity!

Copyright © 2005 Genii Software Ltd.