Monthly Archive for June, 2005

HOWTO: Using the Personal Journal in Lotus Notes

There’s this database template in Notes by the name of Personal Journal, that’s invaluable for managing information. I don’t know what release of Notes this was introduced in, but those of you using R6 and up should find it.

Well, think of the Personal Journal as a kind of scrapbook. You can create journal entries, file them under zero or more (user-defined) categories, format the text with all the rich elements that you associate with a word processor, paste attachments in exactly the same manner as you do in a Notes email or Document Library.

We all have dozens of Word and text files lying around our Documents folder, right? Containing lists, tips, TODOs, email drafts, temporary code snippets, drafts of articles, and numerous other stuff. Now think of the Personal Journal as a way of consolidating all that data, being able to give all your data a consistent look and feel, being able to categorise it, perform all sorts of searches, including full text searches, leverage the advantages of it being a Notes database, like replication, the ease of being able to forward a Journal entry as an email through one click.

I have categories like Articles, Blog Post Drafts, Email Drafts, SANFS (that’s the product I work on at IBM), Defect Analysis (my work), and the default “Uncategorized” category. And I’ve only been using this for about three weeks, I’m sure I’ll add a lot more categories as time progresses. You can even create folders, and categories within folders. I’m not sure if entries can belong to more than one folder, but I don’t think so.

Since I discovered the power of the Personal Journal, I’ve been able to get rid of the HUGE amounts of small text files I’ve tried to maintain over the years. I have been tirelessly evangelising the Personal Journal here at IBM’s India Software Labs Pune, with very positive feedback! My TODO list is now a Journal Entry, a number of useless text files containing little UNIX/Windows tips accumulated over the years are now neatly arranged in a “Tips” file, which I can and do search extensively before I turn to Google for what I want. This kind of feature is right in line with the concept of Notes being the focal point for all your communication and collaboration.

If you use Notes at work, you ought to give the Personal Journal a try! Do email me if there’s a cool tip about the Journal that you’d like to share, and I’ll put it up here.

There are two products that Personal Journal ought to learn from:

Tomboy for the Linux desktop – http://www.beatniksoftware.com/tomboy and
Microsoft OneNote.

I won’t go through what PJ should take from each product specifically, but here are a few improvements I’d like to see very much, in the Personal Journal of the future:

  • Be able to create links to documents that open in external applications. I’d like to be able to create a list of path links to MP3 files lying somewhere in My Music, then simply select this piece of text, and hit “Enter”. This should open up Winamp/Windows Media Player/whatever with this list as the curent playlist.
  • Alternatively, create links to emails, in drag-and-drop fashion, which could open up in my Notes Inbox. The possibilities are endless.
  • Links between Journal entries, like a Wiki. Tomboy does this in spectacular style. Personal Journal must be able to do this. In the future, we ought to be able to link to elements to other databases. Today, we can easily create links to entire databases, but we’d like specific elements within databases. At the very least, only in local replicas.
  • I’d also like my TODO list to be linked to my actual TODO database, or alternatively, my TODO database to be exported as a Journal entry. Now that I think about it, there needs to be greater interoperability between the calendar and the TODO database.
  • Being able to edit attachments, and have those changes show up in the original document. Like, for instance, I attach a Word document to a Journal entry, and edit it after opening it in the Journal, then all the changes that I make ought to be reflected in the actual Word document on disk, in my Documents.

On reverse-engineering, patents and open source.

Bryan Cantrill, kernel engineer extraordinaire and co-author of Dtrace, blogged his thoughts about reverse-engineering and patents in the context of Linus moving the Linux kernel souce code mgmt system from BitKeeper.

I (like many engineers, I suspect) view reverse engineering as a Natural Right. That is, I believe that we are endowed with certain unalienable Rights, and that among these are Life, Liberty and the pursuit of Understanding how the hell something works (or doesn’t, as is frequently the case). Perhaps perversely to some, it is my strong belief in the right to reverse engineer that leads me to my equally strong belief in the responsibility of government to establish a system of patents: if you use my product, you have the right to take it apart and understand its inner workings, but I have the right to protect my intellectual property by patenting the novel mechanism that represents a non-obvious advance in the state of the art. That is, it should be the protection afforded by patents — and not the obfuscation inherent in a running system — that prevents the rip-off artists. My belief reflects the fact that nearly all applications of reverse engineering do not in any way violate anyone’s intellectual property — and the act itself and alone can never violate intellectual property.

Quite right. Unfortunately, software patents today are ridiculous – there’s an article every week or two on Slashdot about some extremely obvious idea being granted a patent. I think we’ve already reached the point where any piece of decent software inevitably violates some or the other software patent. Software patents have now become a tool for companies to muscle their way into, or keep their stranglehold on, existing markets, using the principle of Mutually Assured Litigation. You use a patented idea of mine that doesn’t make a difference to me, that’s fine – but if it’s any threat at all to my market position, I’ll sure as hell sue you. So we’re now walking through a legal minefield wherever we go. In addition, there isn’t too much use knowing how a particular piece of software (Bitkeeper in this case) works unless you can do anything with it. If, for instance, Tridge did find out how Bitkeeper worked, he wouldn’t have been able to do much with it. It’d only tell him how not to design a new source code management system, since the existing process’ been patented. So although in principle, reverse-engineering ought to be allowed for patented software, from a practical point of view, it really doesn’t mean too much.

BMC does, however, consider that point of view:

I believe strongly in reverse engineering in particular, but it plays an especially critical role in the development of software: in my experience, when developing a layer in the stack of software abstraction, you always need to understand at least one layer below you and you often need to understand at least one layer above you — and reverse engineering is often the primary means to achieve this understanding. More generally, software is usually reverse engineered to work around oversights or blunders, or to simply understand a software system sufficiently well to interoperate with it.

So reverse-engineering for the sake of developing software elsewhere in the software stack, or for the purpose of interoperability, ought to be allowed. It also enables better quality software (in terms of bugs being found, or better interfaces being suggested). Therefore, using the simple principle of “many eyeballs make bug-finding easier” (or equivalent) by Eric S. Raymond, software ought not to be closed-source in any case.

So we’re at a stage where software patents are important (even a necessary evil, perhaps) to preserve competitiveness and encourage participation (indeed, there are many startups whose entire existence depends upon a patent or two!). But we need to draw a line when patents are granted. All too often, one crucial aspect of a patent – novelty and non-obviousness – is simply overlooked. And availability of source (which, actually, obviates the need for reverse engineering) is a necessary (but not sufficient! ;-) precondition for high-quality software.