Usability - Productivity - Business - The web - Singapore & Twins

By Date: July 2011

Backward compatibility - damn if you do, damn if you don't

My blog entry When Sofware matures you need to cut development to stay profitable, isn't it? stirred more feedback than the elaborate comment from Nathan and Phil. So there are much more thought to share when looking at backward compatibility. In his famous 2004 article How Microsoft lost the API war Joel Spolski explained using Microsoft as example how two camps, which he labeled The Raymond Chen Camp and  The MSDN Magazine Camp are at odds with each other regarding backwards compatibility. Go read the entry, I'll wait for you. Joel and Nathan rightly point out, that backward compatibility is often taken for granted and is increasingly expensive (Apple worked around that using Rosetta, but from a way smaller base).
So what happens if you don't pay attention to backwards compatibility: customers will be very reluctant to upgrade since applications (especially custom applications) need to be upgraded and your version upgrades become a mayor exercise that gets cut once a customer hits rough water. In the end your speed of innovation slows down and you need to support a lot of old versions. What happens if you do: Nathan outlined that already.
So damn if you do, damn if you don't!
As the going joke goes: "God would not have been able to create the world in seven days if there would have been an installed base to take care of". The biggest challenge I see is the incredible creativity how platform APIs are used (and undocumented functions are handed from developer to developer as secret tip - you are lame if your program doesn't use any) and abused. Part of my job is to look at existing applications and I've seen a lot of code that made me cry (and laugh: like the Chinese application where everything was Chinese including field names and LotusScript variable names - yes you can do that in LotusScript). So what's the way out? Eventually we need to borrow a page from Wiliam Goldman. In his novel The Princess Bride he retells an abridged version of an older story, "just the good parts". So how would that look like for software:
  • Make upgrade management part of the software. For Domino it is a joke that updates and patches need to be downloaded manually and distributed manually. The Linux packet managers solved that problem. I would expect a page in Domino admin to allow to do that. Eclipse update can update clients automagically, so we could use that
  • Provide analysis tools. Teamstudio has the Upgrade Filters, but they don't go far enough. Well behaved code usually doesn't pose a problem when upgrading, the code I've seen will (think fragile). For browser JavaScript there is JSLint (its original tag line was JSLint will hurt your feelings), for Java there is Lint4J and Crap4J. We need such a tool for LotusScript, so overuse of client events, unencapsulated OS calls and missing Option Declare statements don't go unpunished anymore (because you can do something doesn't mean you should. Don't believe me? Try to poke yourself in the eye - you can do that). So where's the LSLint and the @Lint?
  • A upgrade pilot would show functionality that is depricated in this version and will be gone in the next. It would make a nice RTC plug-in.
  • A data conversion sandbox. If data in an older format is found it is put into the sandbox and can only graduate after update
  • ... insert more witty ideas here ...
I'd really like to see the lints.

Posted by on 31 July 2011 | Comments (0) | categories: Software

If it isn't in a regulation, it's not German - DIN SPEC 77224 Customer Experience Management

Heise online informs us (German) about the new DIN SPEC 77224 specification ( DIN is the German national equivalent to ISO, ISO specifications are automatically adopted by DIN, but being German we have extras) for "Customer Experience Management" (CEM). The Heise article links to an insightful presentation by Prof. Dr. Gouthier that explains the why and how. CEM aims beyond customer satisfaction (which has an ISO definition already: ISO 9000:2008 as part of TQM) at "Customer amazement". Customer amazement is the external face of the internal drive for "service excellence" (Which sadly way too often gets confused with "Processes that nicely fit into some arbitrary metric"). The definition has seven parts:
  1. Senior management's responsibility for service excellence
  2. Aligning of resource towards excellence
  3. Avoidance of mistakes and wastage
  4. Capturing of all customer experiences
  5. Customer amazement through service innovation
  6. Measurement of amazement
  7. Measurement of profitability
I'm curious how that will work out. Musing about each of these seven items could turn into a nice blog series. Definitely it will provide new consulting opportunities for the ISO Certification consultants, but (I'm very hopeful) will replace opinionated discussions with a reference model that promises less #fail tags. Of course all these reference models (just ask a front line worker about their ISO9000 or CMMI certification opinion) lend themselves towards toothless management programs, at least if you have read Wild Dueck's opinion in Direkt-Karriere (Sorry German again). Hugh provides the short summary of CEM:

Posted by on 31 July 2011 | Comments (0) | categories: Business

More on spreadsheets in XPages

Dennis really was busy. Given the fact, that he only touched XPages a month ago, the result is impressive
Click on the image to see the control in action
Soon to be found in the GPL catalog of OpenNTF. Commercial support will be available from Potix.

Posted by on 25 July 2011 | Comments (1) | categories: XPages

Java security in XPages

Once you push the boundaries of XPages (which are very elastic) you sooner or later will run into Java security. The Java security settings live in the file
[notes program]/jvm/lib/security/java.policy. The text file (don't edit it in Symphony, use gEdit or Notepad) defines a series of grant codebase "somelocation" { Java Permission } entries that govern what code located at a specific location is allowed to do and what not. The general rule: it must be allowed, otherwise it is forbidden. The basis entry grant { ... } defines what all Java classes can do. You definitely want to be very stingy here. Lazy developers (like me) add to this file:
grant { permission java.security.AllPermission; };
... which is of course a big No No for a production environment (but a big Yes Yes for a productive dev environment - waiting for the howls). When you are ready to deploy your Java infested enhanced nsf, you need to update the java.policy file on your target machine (waiting for another howl) - unless you were smart and packaged your Java into an extension library which has the right level of security and is easy to deploy). The syntax is easy (but not necessarily logical for us mere mortals):
grant codeBase "xspnsf://server:0/yourdatabase.nsf/-" {
permission java.security.AllPermission;

Jim clarifies: you only need to change yourdatabase.nsf, the other parts are static, directory separators are / regardless of platform, the location is relative to the data directory and the whole codeBase value must be lower case (regardless of your file names). Of course you can limit the permission to what you actually need. Finding out what that is when you use ready baked libraries can be a little tedious and warrants its own future post.

Posted by on 21 July 2011 | Comments (e) | categories: XPages

When Sofware matures you need to cut development to stay profitable, isn't it?

Besides having Fun with Dueck I discover more and more how prevalent system patterns are in business. My special foes are " Quick Win|Fix|Start" which are strong indicators for a Shifting the burden archetype at work (remember the sales cycle). Software is a very profitable business that scales very well (your marginal cost to create another software license to be sellable is practically zero - don't confuse that with "cost of sales"). Nevertheless it is also the playground for the burden shifting pattern. Capitalistic theory demands that high profit margins attract competitors thus reducing the price a vendor can command until the profit margins aren't higher than in the general economy. Of course market incumbents try to raise entry barriers to prevent such competition (and when they overdo that, they get investigated, sued, convicted and fined). So the high profit margins require constant attention since the competition is closer than they appear. But what should a company do when competing in a mature market? Ask your average MBA: cut cost of course. So very successful businesses do that? Like the insurance industry in Singapore (which managed to sell more insurance per household than anywhere else)? Nope: no cut in staff training, no cut in the work force, but more incentives. What happens when cost are cut to fix short term profitability?
Shifting the Development Burden kills your product
Cutting back on R&D will improve the bottom line when the cut is made. But it will also slow down product improvements. The slowdown not only stems from a reduced team size, but also from becoming preoccupied with ones own survival (will I be the next to be cut?). Once the basic security is gone, the readiness for disruptive innovation disappears making the vendor even more vulnerable to its competitors' assaults. In result the pain of the symptom overshadows the root cause and more cuts are made. Go and visit the ERP Graveyard to get an impression for just one software category. Especially in a time of sliding revenues taking a controlled risk could revitalise your product unless you are chronically risk averse. And don't rely on a customer council (you get faster horses then) but on your ability to innovate. Unfortunately the cost cutting just removed the necessary funds and, more importantly, the personal security that leads to innovation.

Posted by on 17 July 2011 | Comments (2) | categories: Omnisophie Software

Customer Care Expectations

There is a whole industry providing happiness to the people that ultimately decide over a company's success and failure: the customers. However it seems to be incredibly difficult to get customer service right (Yes Starhub and AIA, I'm talking to you). The rules however sound simple:
  • Customer care is for the most important person in the company: the customer. It deserves to be a VIP service
  • Customers are humans and like to be treated like one (VoiceMenu hell isn't human - tip for Starhub: answer every question with 0 and ignore the machine lecture about invalid answers and you will get to a human fast)
  • Every case needs to stay visible to both the customer and corporation until it is resolved
  • Every case needs to have a person in charge until resolved. That person might change during the course of a care engagement, but there is always a person in charge. (S)he is visible to the customer.
  • Every case has a status and that status is visible to the customer. Ideally it also has an ID, so it is easy to track when using different support channels. That ID must be suitable to be communicated verbally or in a short message
  • A case is resolved when the customer says so. Not earlier, not later. CSR (Customer service representatives) can suggest closure, but it is the customer's decision
  • Support is multi-channel. If the company allows login to their website (e.g. to check accounts), then all support cases need to be accessible there too, regardless of where they were filed in the first place. If a company uses SMS for support updates, one must be able to reply to it (Starhub fails there). If the call centre receives a call, they need to have access to the support cases opened through eMail, web or in a branch office. If support uses Facebook, Twitter or other social channels, they need to be linked to the support system
  • At any point in time a customer can use any channel to provide additional information or inquiry the status of a ticket
Customer Care puts the customer in the middle
You now can ask: "Stephan, what are you dreaming at night?". So what is going wrong with Customer Care in most places?
Customer care is treated as cost centre disconnected from the associated income. Instead of being treated as cost of sales, it is treated as general, to be eliminated, cost. The old management wisdom goes: you get what you measure. What typically can be found are things like: " # of calls handled" or " ticket open time", while measurements like " customer satisfaction" or " resolution of complex matters" are in short supply. If ticket open time is all you measure, then closed tickets (and angry customers) is all you get. More interesting would be (but that requires well integrated systems): do customers buy again after contacting customer support? Is there a feedback on Twitter, Facebook or a blog on the experience? How many tickets stay closed (I have re-opened quite some of them)? I hear the hordes of customer care managers howl: " But we need cold hard facts, don't take away our ticket open time". So if you have to: measure the time from ticket opening until the CSR suggest of closure for tickets that get closed thereafter. Measure how many closures get rejected. But be aware: you get what you measure. Want to change, see what people smarter than me have to say
As usual YMMV

Posted by on 17 July 2011 | Comments (0) | categories: Business

Getting inspiration from existing work is part of the creative process and NOT something a copyright lawyer should need to go after

One of my favorite authors is Neil Gaiman. Currently I'm reading his collection of short stories Smoke and Mirrors . The introduction alone is a very interesting read where Gaiman lets one peek into his creative process and when and how he got inspirations for his stories. In a refreshing honest way he cites freely which works of other authors inspired him or where he "borrowed" stories he then wrote in his own style - or even which writing style he copied for a particular piece. It is the fascinating testimony to the fact, that inspiration is more often than not based on the work done by others. Contrast that with a headline in todays' Straits Times (our local newspaper): Fun Pack Song 'may have flouted copyright laws': " ORGANISERS of this year's National Day Parade (NDP) may have flouted copyright laws after they modified the lyrics of a Lady Gaga hit to create a song about its goodie bag, said lawyers on Wednesday.
The Fun Pack Song rips off Lady Gaga's Bad Romance by using the tune but substituting lyrics that celebrate the items inside the pack such as Newater, biscuits and sweets.
" So what? The organisers poke fun on a Singaporean habit of giving out goodie bags with "iconic" value (e.g. a bottle of NewWater) and they used a well known tune. One could count it as comedy since they do give out these bags. But nope music (as well as software) has mutated to a minefield of copyright assertions and greedy licence organisations. I'm sure if someone would bother to run all the melodies through an analyser the late Bach, Beethoven and Mozart could claim 90% of the music market. This madness has to end!

Posted by on 07 July 2011 | Comments (0) | categories: Business

Singapore Lotus User Group Meeting July 15 2011

It has been a long time since the last LAUG meeting in Singapore. Certain events seemed to have left the Lotus community all but dead. But we are used to that and now we are back. I'd like to invite my Singapore Lotus enthusiasts to join me Friday next week for a session on mobile applications. Ben Green from TeamStudio will share with us how TeamStudio's latest offering Unplugged allows easy mobilising of Notes applications. Please visit the event page for more details. I'm using FlickEvents to plan this session. They are a Singapore startup hosted in the NUS Enterprise Incubator. Of course I'd like to support our local startups. Register below: See you next week!

Posted by on 05 July 2011 | Comments (0) | categories: Lotus Singapore

Taking hints from each other

In fashion there is no copyright, which seem not an issue in that industry. They make good money:
Gross Sales Of Goods by IP protection
In software even the look and feel is jealously guarded by all parties involved even if it wasn't their original design. However there is only so much you can do and elements start looking similar. Black top bars in web applications seem to be the latest trend.
Taking Hints From Each Other
Now taking hints from each other is a big no-no in hardware design, of course unless your hardware happens to be a car, a suit or some furniture. Should we take some more hints from Johanna Blakely?

Posted by on 01 July 2011 | Comments (0) | categories: Software