Ben Langhinrichs

May, 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.


Tue 31 May 2005, 10:03 AM
I have been looking around some to see how other websites show product pages, and I was wondering what you look for on a product page.  I mean this less in terms of content (yup, you probably want to see features, price and who is using it), and more in terms of presentation of content.  Is your first instinct to look at screen prints or run a canned demo or look at lists of features?  How much should be up front and center on the first page, and how much should be accessible but not cluttering up the first page.

A couple of examples I like so far are:

AnyPlace Administrator for Team WorkPlace - Nice, clean layout with business justification on the left a screenprint on the right, a ten minutes canned demo as a link, and a short list of features, system requirements and pricing below.  Better if testimonials were available.

ProcessIt! page on Teamwork Solutions site - Nice visual diagram showing business process, link to canned demo.  Better if it were possible to link to it directly, but it is framed.

A couple of examples that don't look so great:

Oracle JDeveloper 10g - Manages to be cluttered without actually revealing anything.  This is where I've been, and I want to move away from it.

Java 3D API - How can you have a 3D API and not even show something in 3D.  It begs for visual appeal, but aside from eye candy, there is not even any meat and potatoes.

So, those are my reactions, but what about you?  What do you look for?  Point me to an example if that is easier, but 

Copyright © 2005 Genii Software Ltd.

Fri 27 May 2005, 04:29 PM
I'm not too into the anniverary thing, but I have been writing this since May 2003, and am still very glad I started it.  I was a bit hesitant at first, since a lot of people start blogs, but not a lot keep them up, and I didn't really want to sputter out.  A few stats do seem relevant:

Stats as of last night
559 posts
Over 23 posts per month
322 posts with responses
1275 total responses
2.28 responses per post
3.96 responses per post with responses
Over 400 different people responding to at least one post

I gave two post ratios, because many posts are not particularly meant for responses, but the ones that have had responses have had almost four each.  Seems pretty good to me.

I will do a separate post soon about favorite posts (who can forget Hypothetical Carrots), but here is one I couldn't bear to pass up.

Interesting foreshadowing
One of the first posts I made in May 2003 was called Intuition or Market Research.  It is worth re-reading in total, but here is a somewhat condensed version:
One of the challenging parts of being an independent software vendor is deciding which projects or products to invest in, time wise, money wise and energy wise.  Some vendors do a lot of market research, formal or otherwise, to decide what the market will bear.
...
On the other hand, I also spend a lot of time developing technology that nobody is asking for directly, or that skirts the edge of anything anyone wants.
...
Another example that I am working on right now is HTML -> RT -> HTML technology in a plug in.  HTML generation was another gut feel, and one that has paid off handsomely.  Many, many customers of all sizes and descriptions are using our HTML generation and MIME mail sending ability, which was an offshoot.  Now, I am working away furiously at improving the HTML importing side, so that we can introduce a coexistence tool that allows Notes client apps and web client apps to share rich text even if the web side chooses to use one of the fancy rich text editing tools for the web, such as eWebEditPro.  Currently, sharing rich text between the web and Notes client means losing almost all the richness, but I intend to have a plug in answer for that so almost any authoring tool will coexist more smoothly.
...
My intuition says it will be a big one, but one of my closest ISV friends thinks it is a non-starter.  Who is right?  We'll see.
Two years later, and a mere two weeks ago, we released CoexEdit, to a rush of evaluators and generally good feedback.  You have watched the whole process live through this blog, and over the next few months, you should get the answer along with me about who is right.

Thanks to all my readers and contributors!  I hope to do this for a long time to come, but you all make it worth doing at all.

Copyright © 2005 Genii Software Ltd.

Fri 27 May 2005, 03:39 PM
I definitely thought I was going crazy today, as a small bug with the CoexEdit client component didn't seem to make sense.  I had a bit of code that said:

  num_entries = NSFItemGetTextListEntries(hNote, COEXEDIT_FIELDNAMES);
  if (num_entries == 0)
    {
    num_entries = 1;
    default_field = TRUE;
    strcpy (fieldname, "Body");
    text_len = 4;
    }

This code is supposed to check how many fields are being used by CoexEdit, and if none are specified, to default to "Body".  The problem was, the field did contain a fieldname, but num_entries was coming back as 0, but only in one of the many places it was called, which was when the document was replicated from the server to a local database.

I guess I have been doing too much LotusScript, because it took me a lot of looking to find out what was wrong.  If the field is a text field, not a text list field, this function will return zero, but since documents in Notes are almost always opened with the special flag that makes all field values lists, it worked in the HTTP process, the SERVER process, and everywhere else in the NOTES process.  It was only the replicator that doesn't open documents that way that came back to bite me.

So, for what it is worth, if you are doing C API development and need to check the value of a field that you think of as a text list, be sure to check, especially if you don't know how the document was opened.

As an aside, the client component is optional in CoexEdit, so while this will go out as part of a patch to the currenrt evaluators, it is not going to effect most evaluators very much.

Copyright © 2005 Genii Software Ltd.

Thu 26 May 2005, 08:58 AM
Mike MidasSinister Sequel
by Mike Midas, Ace Developer

I'm not the kind of guy who believes in love at first sight, but the sight of those legs was enough to change the kind of guy I am.  Those legs were a harder act to follow than Babe Ruth at the plate, but when she turned, this dame made the Bambino look like some chump on a sandlot swinging at empty air.  I followed her with my eyes, soaking in the view like an Italian sailor on the French Riviera.  When I saw her stop in front of our office and turn to knock on the door, I genuflected in my mind to Father Michael, since his point was made - there was a God after all.

One sharp rap on the door left no doubt that here was a dame who expected to be noticed.  I showed her into the office and she sat down without a word and looked at me for a minute with an odd expression in her eyes.  Then she started, and intoxicated as I was with her low, sultry voice, I wasn't so drunk with pleasure that I missed the familiar lilt, like a re-run I'd watched with only half an eye on some sleepy summer afternoon.

"Mr. Midas?  My name is Anika, and I believe we have talked before."

It all came rushing back like the unwelcome memory of a wild party spent with too many drinks and too few inhibitions, practicing ill-defined Tai Chi techniques with a woman you hoped wasn't married to your boss.  

"From Uppsala Exports, right?" I asked, knowing full well, but trying to sound less shaken than a James Bond martini.  I remembered our previous long distance encounter well, and I hoped she did not.  

"Yes, of course", she said, with a tone of incredulity that said she was used to being recognized without question.  "I spoke previously with your partner, Crystal, and she helped us considerably."

The implication that I had not done the same sat in the air like a cheap hairpiece on a sweaty, bald car salesman's head.  I hesitated, thinking that this conversation was not taking the direction I had hoped, a direction which might well have included dinner, drinks and a hot tub with soft mood music if I had been steering.  I obviously was not.

"This time, I need your help", she went on, and redemption peeked into the room like a horny ninth grade football player who has just discovered the adjoining girl's locker room.  "As you will remember, our company has switched to Outlook and Exchange for e-mail, and only uses Lotus Notes for applications."  She didn't sound much happier about this than she had before, but she didn't stop.

"My boss has decided we need to move some of our critical data out of Notes and store it in SQL Server.", she went on.  The disgust in her voice made it clear she thought her boss was doing the TCO tango with Microsoft rather than making a sound technical  decision.  "The problem is, we have all these rich text fields, and we need to retain all the formatting and images."

The only images I wanted to retain were those of Anika with an easily untied string bikini, but I understood where she was heading.  

Anika continued, "Some of the rich text is pretty complex, and everything we have tried, saving it as MIME and grabbing that, rendering with Domino and retrieving it from there, and even exporting to DXL and converting that, have failed miserably, with broken references, a totally messed up look and feel and lots of missing information.  We don't need messes, we need high quality HTML or XHTML that looks right.  Anyway, my boss was playing golf with a buddy of his and moaning and groaning about his trouble, and the guy said just one word: Midas."

I smiled to myself, back in my element.  "So, you want to generate HTML, or maybe even XHTML, from all those rich text fields and store it in SQL Server", I asked, " and you want the images saved as files that can be stored and referred to by the HTML?"  I was on a roll, and wasn't going to stop yet, so when she nodded, I kept right on going. "And I bet you also want the sections to work, and the tabbed tables to work, and you probably even want the doclinks to still link between the HTML files that used to be documents?  And you want o use our Midas Rich Text LSX to do the job?  Do I have all that right?"

She nodded again more vigorously, but more than that, her eyes sparkled as if I had finally said something that reminded her that I was a man and she was a woman and that quitting time was not too far off.  Then the look faded a bit, and she asked, "How long would all that take to build with Midas?"  She had been around the computer industry long enough to know that anything was possible, but possible didn't mean fast, and time was money.

I smiled like an angler who has finally snagged a blue fin tuna, and now just needs to reel it in.  "No problem, Anika.  Midas does all that out of the box.  We can get it working for you tomorrow."

The look came back, and her smile was a lot less ambiguous than the Mona Lisa's.  "Well then, that leaves tonight free."

Copyright © 2005 Genii Software Ltd.

Wed 25 May 2005, 10:24 PM
I was reading jonvon's blog, and a thread he wrote called andrew on threads, c++ and so on (about Midas partly) gave me a cool, but probably crazy, idea.  Jonvon was gushing about how Midas classes show up in typeahead and how cool that was
ok, but what you are missing here is that when i saw the Midas stuff appearing in the type ahead in designer i was SO GEEKED OUT!! 
OH MY GOD that is so freaking KEWL! (i know i know, easily amused, etc...)
Anyway, I had also just read a rant in another forum about how class declarations in Notes are all clumped together in the Declarations section, which is, I'll admit, awfully lame.

Idea lightbulbThis is when a lightbulb went off.  If an LSX can load a class so that it works in typeahead, and if what is desired is a class browser sort of thing, would it be possible to create an AutoClassGenerator that would take the model of a script library as a class, with each of its methods defined as a subroutine and constants defined in its declarations section.  This would be done in a special database. When the AutoClassGenerator LSX was started, it would auto-generate classes built around the script libraries, and add them to the typeahead and class declarations and such.  The trick would be that it would all be dynamic, with the script library read on the fly as the loader loaded.
The functions would then become methods of the class.  There would have to be a way to subclass and such, but since you can already declare private and public subroutines and all in Script Libraries, as well as public and private variable, it would map well.
Now, implementation would be fairly nasty, but you should be able to suck the script out of the methods and make them events which get called and actually contain the source code.  For example,  in the script library MyRichTextClass, you might have:

Sub IckyFoo(this As Variant, ickyName As String)
   Print this.prompt+" -->"+ickyName
End Sub

in which case the class would create a new class called MyRichTextClass, which would have a method which would look to typeahead like:

Sub IckyFoo(ickyName As String)

and when that method was called, it would raise the original subroutine as an event.

OK, it is a pretty crazy idea, but it would give you both type ahead and methods and all separated into methods.  I wonder how feasible it really is.

Copyright © 2005 Genii Software Ltd.

Wed 25 May 2005, 10:54 AM
I have a customer with a web based discussion forum, and at the bottom of the post is a graphic:

Mouse looking like tongue

I can't look at this image without thinking of another one, and it makes it dreadfully distracting.  If you are reading this through RSS, see if you can guess before looking at the graphic I am thinking of:

Rolling Stones tongue

Can you see how that would take one's focus off the problem at hand?

Copyright © 2005 Genii Software Ltd.