Tonight I’m going to give back my leasing car. Last week, I had the car detailed, to make sure that everything is going to be fine at the handing over.
Result: an absolutely spotless car - therefore all in a sudden the sensor for the passenger seat belt had a defect (what led to a continuous "Pling", unless I buckled up the passenger, even though no one was sitting there...)
So: discussions with the car detailing company, error analysis at the car dealer etc.. Few days after this, the sensor worked again. Obviously using the passenger seat in between had re-adjusted the sensor.
The end result: hassle, wasting time, looking for errors for a function, that is definitely super modern, technically genius, intelligent, fantastic, but which I actually do not need at all.
In the software field, sometimes things go the same way:
A system is planned, that covers exactly the core needs, it is stable, clearly laid out, fulfills all economically necessary features - but still there is the one feature, that absolutely has to be added... as it is super-modern, technically genius, intelligent, fantastic.... And, "of course", it brings an additional value... and therewith a component that brings a risk for instability. Why is that? a) Every additional code just increases the possibility of errors. b) it is especially these "additional features", that usually are the cause for a lower maintainability.
The "moral": when planning software, it should not only be considered, what is done how and what can still be done within the budget. But also, what (-> "nice to have" ) possibly can be omitted. To make sure, that the business relevant components are reliable after testing, that they are robust and architectonically of high quality - and to take into account, that maintenance is always part of the software cycle as well.
Collaboration And Teamwork... do it yellow
|
Analogies in the car world vs. software world
|
The Lotusphere MP3 podcasts are now available on http://www.ls08.net/. With the script below, you can add meta information about the Lotusphere sessions to your mp3 podcasts (through an HTML page) and categorize your mp3s by date, id, location or speaker, as the mp3s file names themselves hold only session IDs.

Before, I already blogged a script to import the Lotusphere presentations into the Lotus session database. As the size of all Lotusphere podcasts are several GBs, it is probably not a good idea to import them into the database as well 
This is, why the script below generates a JavaScript file, which can be stored e.g. on a shared drive together with the HTML file below and all MP3s. In the HTML file you can then sort by session ID, date, location, speaker etc., view all session information and click a link opening the corresponding podcasts on the disk (without Notes). Tested with Firefox 2 and IE7.
(due to possible IBM copyright I do not provide the JavaScript file itself for downloading, but offer the LotusScript below)
Step by step:
- Download the zipped HTML file here, unzip it and save the file mp3index.html in the directory, that holds the MP3 files
- Copy the LotusScript code below into an agent in any Notes database (Target: none)
- Adjust the parameters: (a) Server that holds your LS08 Journal database,
b) File path and name of the LS08 Journal database, c) Path of the directory that holds the MP3 files
- Run the agent -> the agent browses all sub directories of the MP3 path specified in the parameters (e.g. AD, BOF etc.)
and reads all session meta information from the LS08 Journal database (for all existing MP3 files). This information will then be stored in a JavaScript file (mp3.js, created in the MP3 directory).
- Open mp3index.html in your browser. Now you can sort by session date, session ID etc., read the abstract etc. and run the corresponding podcasts.
(For example: your MP3 files are stored in the directories C:\mp3s,
C:\mp3s\AD, C:\mp3s\BOF etc. -> in this case you have to specify "C:\mp3s" as your MP3 file path. The file mp3.js will be created in this directory; also, the file mp3index.html has to be stored in this directory)
Again, have fun!
------------------------------- Code ----------------------------------------------------------
Sub Initialize %REM Used to export additional session information for all lotusphere MP3 podcasts from the lotusphere journal. Generates a mp3.js with this session information in path specified in parameters below. Needs mp3index.html to interprete the mp3.js Specify journal server and filepath as well as path to MP3 files in parameters below (main path, in which sub directories like "AD" are stored). http://marcus.foerster.com/yellowcat %END REM On Error Goto errorhandler ' ###### Parameters ########## Const lotusphere08Journal_Server = "YOURSERVER" ' server where lotusphere journal is located Const lotusphere08Journal_Filepath = "YOURFILEPATH\YOURFILENAME.nsf" ' filepath (path and filename) of lotusphere journal Const lotusphere08MP3s_Filepath = "C:\YOURPATHCONTAININGMP3S\" ' filepath (path only) where pdf files are located ' ########################## ' open lotusphere08 journal Dim db As New NotesDatabase(lotusphere08Journal_Server, lotusphere08Journal_Filepath) If Not db.IsOpen Then Msgbox "Unable to open journal database: " & lotusphere08Journal_Server & "!" & lotusphere08Journal_Filepath Exit Sub End If ' get view categorized by session id Dim v As NotesView Set v = db.GetView( "eBySession" |