<CharlieDigital/> Programming, Politics, and uhh…pineapples


SharePoint: The Second Coming Of Lotus Notes?

Posted by Charles Chen

As I was pondering the suckage of Lotus Notes, I came across an interesting little piece on a CMS Watch Report titled: "SharePoint Has Become the New Lotus Notes":

Microsoft Office SharePoint Server 2007 is repeating history as it mimics the allure and pitfalls of Lotus Notes, according to research released by CMS Watch, an independent analyst firm that evaluates content technologies.

SharePoint exploits traditionally underserved collaboration needs for information workers laboring within Office tools, and fulfills a common desire to easily create disposable workspaces, CMS Watch found.

Like Notes in a previous decade, IT often embraces SharePoint as a simple answer to myriad business information problems. But the platform can morph into a technical and operational morass, as repositories proliferate, and IT comes to recognize that various custom applications require highly specialized expertise to keep running properly.


The SharePoint Report 2008 concludes by advising customers to establish clear boundaries on SharePoint services, to keep it from becoming their new Notes – the platform that everyone loved, but then loved to avoid.

While SharePoint does indeed have it's weaknesses (total lack of any integration with ASP.NET AJAX in the SharePoint implementation itself -- guess we'll just have to wait for 4.0, web services support is still kind of weak) and oddities (CAML?), it's nowhere near the steaming pile that is Lotus Notes.

On a serious note, I do kind of see the point in that last paragraph there.  SharePoint often gets evangelized as some silver bullet for collaboration ("Oh look, workspaces! Workflows! Tasks lists!") but I've never been in an organization that's used SharePoint in a way that was actually of any aid to productivity or collaboration; people just don't seem to want to log onto a corporate SharePoint portal unless they have to.

That's not to say that the platform doesn't have its useful bits, but the real gem in SharePoint is its integration with Office applications as a platform for "seamless" sharing of documents and I think the idea of offering that to a much larger audience (via Office Live Workspaces) is long overdue from Microsoft.  Until recently, there were few integrated solutions for small businesses, students, and other non-business groups for the very simple act of sharing Office documents aside from using e-mail.

Even when I joined Zorch Software, I would do a facepalm regularly when I got an email with a document attached with a "v15" suffix.  I'd save it in the same folder as the previous 14 "versions" that I received.  The irony.  The problem is that most of SharePoint just isn't that useful.  Even in a tech minded organization like Zorch Software, you just can't break some people out of old habits; to many, collaboration is synonymous with e-mail.  There is a whole generation that doesn't get wikis and doesn't want to learn wiki markup.

Well, in any case, I'm still not over the fact that I'm being forced to use Lotus against my will and I'm still bitter over the fact that it's been so hard to get people to embrace our Trac wiki and embrace the ticket system for tracking issues.


Lotus Notes: It Sucks…Hard

Posted by Charles Chen

As part of the transition from FCG to CSC (Computer Sciences Corporation), we are also switching our mail system from Outlook/Exchange to Lotus Notes/Domino/Whatever.

There can only be one immediate reaction up on switching from Outlook 2007 to Notes 6.5:


Surely, this application which looks like it crawled out of the late 90's cannot be the primary enterprise messaging system for a large, publicly traded company, can it?  Maybe it's a clever ruse to get people to stop using email and actually interact with one another by ecouraging calls instead of email...maybe. I can't believe IBM actually sells this product and I can only imagine the painful life endured by the Notes sales team and all of the mockery they must live with.  If my parents worked on the Notes team in development or sales, I'd ask to be disavowed for their crime of bringing such a shitty piece of software into existence.

I think I'm going to start my own trail of why Lotus sucks posts, but Lotus Notes Hater already has a headstart on me.

The truly absurd thing that I've learned is that there are actually standalone programs that have been written to clean up crashed instances of Notes!  No kidding, I got the following email from a company wide distribution list:

If Lotus Notes crashes, you don't have to restart your PC anymore! Just run ZapNotes and allow it to clean up what Notes left behind so you can restart Lotus Notes. ZapNotes works on Windows 9x/NT/2000/XP

Lotus Notes Hater comments:

Cassetica charges US$1,500 for NotesMedic Pro and US$2,500 for the enterprise level of NotesMedic. The fact that a company makes money from a product that shouldn't even exist makes us ask, "Why haven't the owners of Lotus Notes put Cassetica out of business by incorporating the feature of NotesMedic directly into Lotus Notes?"

NotesMedic is not the only product out there. There is also ZapNotes. And KillNotes. There are at least three products that have no reason to exist.

Awesome!  Now I'm really gonna look forward to using Notes!

I also got to chat with some of my teammates in Vietnam just to see how they felt about it.  Who knows, maybe their Asian sensibilities would lead them to be more polite and less judgemental.  Maybe their allegiance to their employer would cause them to accept Lotus as their fate and use it dutifully.

Mumble mumble says:
Did you guys install Lotus yet?
Vietnamese Guy says:
Mumble mumble says:
What do you think?
Vietnamese Guy says:
Vietnamese Guy says:
very slow
Vietnamese Guy says:

So there you have it, even the Vietnamese hate it.

Filed under: Lotus Notes, Rants 8 Comments

Photos And Notes From NYIAS 2008

Posted by Charles Chen

The highlight of this year's show, for me, was definitely the Nissan GT-R.
It's quite possibly one of the most anticipated mass produced vehicles to be
released in recent years.

I was also looking forward to the new Maxima. Admittedly, it looks way better
in person than it does in photographs; you can't really capture how low slung and
aggressive it looks.

It was also an opportunity for my wife and I to explore the 2009 Murano. We
haven't made it a priority to stop by the dealership to check one out, but it
is definitely a nice upgrade from the outgoing model with a price upgrade to match.
The Murano is much more luxurious now and looks surprisingly good in person. I didn't
think I'd like the new shape -- particularly the grill -- but I have to say that it
looks great in person.

I was hoping to see the Mazda 2, but unfortunately, it wasn't at the show.

As far as the American manufacturers go, I have to say, I like where GM is headed.
On a recent trip, I was upgraded to a new Malibu and I'm thoroughly impressed. It may
have been the first time I've driven a product from the Big Three and actually could
imagine myself purchasing the vehicle. I also really like what they've done with the
CTS and the CTS Coupe concept...fantastic work.

Click here to go to the gallery.

Filed under: Awesome No Comments

DRM = Doesn’t Really Matter

Posted by Charles Chen

It's true, DRM just doesn't really matter.  The music industry has pretty much seen the light at this point with Amazon now offering tracks from all four major labels DRM free.  How much longer will it take for the movie industry to realize the same truth?

Blu-Ray's vaunted BD+ encryption scheme was supposed to give it the upper edge over HD-DVD's ill-fated AACS encryption scheme.  The news on this front the last couple of days has been software maker SlySoft's crack of BD+.

My favorite little tidbit is this statement by the Blu-Ray camp:

Richard Doherty of the Envisioneering Group will have to revise his statement from July, 2007 regarding BD+: "BD+, unlike AACS which suffered a partial hack last year, won't likely be breached for 10 years". It is worth mentioning that since he made that statement only eight months have gone by.

We'll see how this shakes up.  DRM, once again, proves that it is barely a deterrent to pirates while a genuine hassle for legitimate consumers who wish to back up their physical media.

Filed under: Rants No Comments

Disabling Office 2003 Browser Inline Behavior

Posted by Charles Chen

There's a unique problem in an Office 2003 environment that may be encountered by add-in developers.  Namely, by default, Office 2003 documents, when opened from a URL (for example, clicking on a link in an email or typing a URL into a browser address bar) will cause the document to open "inline" with the browser.


The problem with this, for add-in developers, is that while the WINWORD.EXE process is indeed launched, the add-in is not loaded (I'm still not sure why, but I'm guessing it's due to the different security restrictions of being "hosted" in Internet Explorer).  Aside from this, it's generally problematic because the default menu bars and toolbars are not displayed by default...not the ideal behavior.

As it turns out, in Office 2007, the behavior is entirely different: the document always open in a standalone WINWORD.EXE process.  So how can we get Office 2003 to behave the same way?  A series of articles lead the way to an answer:

First, Microsoft actually has a KB (927009) which advises how to enabled Office 2003 behavior in an Office 2007 environment.  This is the first clue that the core of the issue is a series of registry keys.  Knowing which keys to look for, I simply checked the keys in an Office 2007 environment to get the values which would cause an application like Word to launch in standalone mode instead of inline mode (decimal 44 in the case of Word).

The next step was figuring out how to adjust these values in existing deployments.  One option would have been to use a similar registry script as porposed in the KB but I decided to use a programmatic approach instead.  I came across some hints on how to approach this task from a forum posting and MSDN articles.

The outcome was this script:


   This file contains the scripts which are executed after installation of the 

   Office 2003 client update registry keys which would otherwise force Office 

   documents to open in Internet Explorer (inline behavior)


// Key paths

var commonRootPath = "HKLM\\SOFTWARE\\Classes\\";

var commonPath = "SOFTWARE\\Classes\\";

var commonKey = "BrowserFlags";

var HKLM = 0x80000002;

// Instantiate the shell.

var shell = WScript.CreateObject("WScript.Shell");

// Holds the values for the key types

var keyTypes = {






// Holds the array of all key paths (not including the shared "BrowserFlags" 

// DWORD key name) and the value to assign to the key (different for each

// runtime).

var keys = [

    {Class:"Word.Document", Value:44},

    {Class:"Word.Document.6", Value:44},

    {Class:"Word.Document.8", Value:44},

    {Class:"Word.Document.12", Value:44},

    {Class:"Word.RTF.8", Value:44},

    {Class:"Word.DocumentMacroEnabled.12", Value:44}



    Main method.


function Run() {

    try {

        for(var i = 0; i < keys.length; i++) {  

            var key = keys[i];

            if(RegistryKeyExists(key.Class)) {            

                var keyPath = commonRootPath + key.Class + "\\" + commonKey;                              

                shell.RegWrite(keyPath, key.Value, keyTypes.Number);



	    shell.Popup("Updated registry keys.", 0, "Completed", 0 + 64);


    catch(all) {

        // Failures are considered non-fatal.

        var errorMessage = "A non-fatal error occurred while configuring Word 2003\r\n";

        errorMessage += "document handling in IE.\r\n\r\n";

        errorMessage += "You can re-run this script at a later time from:\r\n\r\n";

        errorMessage += "[Program Files]\\[Common Files]\\FirstPoint\";

		errorMessage += "UpdateOffice2003RegistrySettings.js\r\n\r\n";

        errorMessage += "Press OK to continue.";

        shell.Popup(errorMessage, 0, "Error", 0 + 48);




    Checks to see if a registry key exists.


function RegistryKeyExists(className) {

    var registry = GetObject("winmgmts:\\\\.\\root\\default:StdRegProv");   

    var path = commonPath + className;       

    var value = registry.GetStringValue(HKLM, path, "");

    return value == 0;



    Abstracts Popup()


function Alert(string) {

    shell.Popup(string, 0, "Message", 0);



Perhaps the most useful little tidbit in all of this is the RegistryKeyExists method which checks to see a registry path exists.  A return value of 0 from any of the Get[KeyType]Value() method calls indicates that the path was found; it's a very neat little trick to have up your sleeve.

Filed under: Dev No Comments


Posted by Charles Chen

Caught this little gem in the comments section of a Slashdot posting:

Windows Made Me This Way

How Software Companies Die

Windows Sources, March 1995, p. 208

By: Orson Scott Card

You can domesticate programmers the way beekeepers tame bees.

environment that nutures creative programmers kills management and
marketing types - and vice versa. Programming is the Great Game. It
consumes you, body and soul. When you're caught up in it, nothing else
matters. When you emerge into daylight, you might well discover that
you're a hundred pounds overweight, your underwear is older than the
average first grader, and judging from the number of pizza boxes lying
around, it must be spring already. But you don't care, because your
program runs, and the code is fast and clever and tight. You won.
You're aware that some people think you're a nerd. So what? They're not
players. They've never jousted with Windows or gone hand to hand with
DOS. To them C++ is a decent grade, almost a B - not a language. They
barely exist. Like soldiers or artists, you don't care about the
opinions of civilians. You're building something intricate and fine.
They'll never understand it.


the secret that every successful software company is based on: You can
domesticate programmers the way beekeepers tame bees. You can't exactly
communicate with them, but you can get them to swarm in one place and
when they're not looking, you can carry off the honey. You keep these
bees from stinging by paying them money. More money than they know what
to do with. But that's less than you might think. You see, all these
programmers keep hearing their fathers' voices in their heads saying
"When are you going to join the real world?" All you have to pay them
is enough money that they can answer (also in their heads) "Geez, Dad,
I'm making more than you." On average, this is cheap. And you get them
to stay in the hive by giving them other coders to swarm with. The only
person whose praise matters is another programmer. Less-talented
programmers will idolize them; evenly matched ones will challenge and
goad one another; and if you want to get a good swarm, you make sure
that you have at least one certified genius coder that they can all
look up to, even if he glances at other people's code only long enough
to sneer at it. He's a Player, thinks the junior programmer. He looked
at my code. That is enough. If a software company provides such a hive,
the coders will give up sleep, love, health, and clean laundry, while
the company keeps the bulk of the money.

Out Of Control

the problem that ends up killing company after company. All successful
software companies had, as their dominant personality, a leader who
nurtured programmers. But no company can keep such a leader forever.
Either he cashes out, or he brings in management types who end up
driving him out, or he changes and becomes a management type himself.
One way or another, marketers get control. But...control of what?
Instead of finding assembly lines of productive workers, they quickly
discover that their product is produced by utterly unpredictable,
uncooperative, disobedient, and worst of all, unattractive people who
resist all attempts at management. Put them on a time clock, dress them
in suits, and they become sullen and start sabotaging the product.
Worst of all, you can sense that they are making fun of you with every
word they say.

Smoked Out

The shock is greater
for the coder, though. He suddenly finds that alien creatures control
his life. Meetings, Schedules, Reports. And now someone demands that he
PLAN all his programming and then stick to the plan, never improving,
never tweaking, and never, never touching some other team's code. The
lousy young programmer who once worshiped him is now his tyrannical
boss, a position he got because he played golf with some sphincter in a
suit. The hive has been ruined. The best coders leave. And the
marketers, comfortable now because they're surrounded by power neckties
and they have things under control, are baffled that each new iteration
of their software loses market share as the code bloats and the bugs
proliferate. Got to get some better packaging. Yeah, that's it.

Programming is the Great Game. It
consumes you, body and soul. When you're caught up in it, nothing else
matters. When you emerge into daylight, you might well discover that
you're a hundred pounds overweight, your underwear is older than the
average first grader, and judging from the number of pizza boxes lying
around, it must be spring already.

I know this feeling...well, minus the fat, smelly part.  And I have to admit, I haven't felt it in a while 🙁

Filed under: DevLife No Comments

The Joe Louis Story

Posted by Charles Chen

I'm in awe of Joe Louis at this moment and a little bit ashamed that prior to this evening, I'd known almost next to nothing about the man.  Joe Louis: America's Hero...Betrayed is an amazing documentary, telling the story of a man that every American should know and a story that is especially moving to minorities who can look to him as a selfless pioneer.

Selfless in the sense that no person should have to carry the burden of the hopes and dreams of millions of people that individuals like Louis, Jackie Robinson, Rosa Parks, and Martin Luther King Jr. did in their lifetimes.  Against the tidal waves of hatred, the threats against their lives and safety, and in times much different than the one that we live in today, people like Louis gave a nation of minorities hope and pride.  He was a man who didn't shy from his responsiblities and the responsibility of being the ambassador for the black community in a time when they needed him the most.  Perhaps the most inspiring aspect is that he shouldered all of that responsibility in a humble, soft spoken, and professional manner.

It is a must watch not only for minorities, but also for all of America.  Louis isn't merely a hero to the black community, but his story is one of a true American hero and a patriot.  Jimmy Cannon is quoted on the title page of the documentary's website, "He was a credit to his race -- the Human Race."

He is a hero, a role model, a champion, a patriot, and a pioneer.  I hope that he'll be remembered as such in American history for generations to come.


Random Rant

Posted by Charles Chen

One of the most awesome pieces of software that I've come across in my career as a consultant and software engineer is Trac.  Among the various awesome features of Trac include:

  • An awesome plug-in system and library for all sorts of add-ons to the core system
  • RSS feeds on available on the timeline which acts as a customizable, almost realtime data feed
  • Integrated source browser...it makes pointing out code isssues so much easier when you can link it to source
  • An awesome wiki system that integrates with the ticket and changeset systems

Did I mention the ticket system?  Sure it lacks a bit in terms of workflow and it is rather simplistic -- being geared almost exclusively towards bugs, but I think the most important aspect that it brings is, well, tracking.

Having worked with it for almost a year, I find it really hard to imagine working on any sizable software project without it (or some other piece of comparable software project management tool).

Perhaps the only thing that I've found frustrating -- surprisingly, it is not with Trac itself -- is the inability to really win anyone else over in my group; you'd think its like pulling teeth to get a ticket created for tracking purposes instead of using email. Let's not even get into wiki editing or proper usage of wiki markup or taking advantage of the integrated wiki syntax for tickets and what not.  It just seems like some old habits are hard to break (much to my dismay).

But don't let this dissuade you! If you haven't given it a look yet, there's no time like the present to download it and give it a go. Oddly enough, if you're looking to get started, VisualSVN Server may be the way to go since it includes an integrated installation of Apache, Subversion, and a mangement console.  Also check out the awesome documentation on installing Trac on a variety of systems, including Windows.

Filed under: Dev, Rants No Comments

Now For Something Completely Random…

Posted by Charles Chen

"Network Apologizes For Mocking Athol"


(AP) A cable sports network says it no
longer will make Athol the butt of its jokes. Comcast SportsNet said
Thursday it would pull a newspaper ad that leaders of the small central
Massachusetts town called insulting and offensive.

The ad featured two side-by-side signs that together read: "We can pronounce Worcester ... without sounding like an Athol."

I grew up one town over from Athol 😛 It was always a joke the kids would play: hold your tongue and say "Athol".


WSS And DateTime Error

Posted by Charles Chen

In working with the SharePoint web services, I've noticed consistent errors with a few of the services which tend to return the following string:

String was not recognized as a valid DateTime

I hadn't been able to figure out what exactly the error was until today.

It's actually not related to a date/time string at all, but rather, the root of the error is in the service implementation itself.  The actual underlying error is an error indicating that a field value is no longer valid.  For example, if the item had a field referring to a lookup list, changes in the target list may invalidate a value on a given item.  Instead of returning a useful error, the web service returns the error above.

You may find this error when using the lists.asmx service or the dspsts.asmx service.

I "fixed" this by removing the offending field from the content type and also from the list and voila, no more errors.

It's hard to track down because the SharePoint itself will render the properties without any error indication in the view and edit properties view, but it will fail the entire request if one field is invalid and return a useless SOAP error.

Filed under: .Net, SharePoint No Comments