The Capacitor Plague Hits a Baby Monitor
Good baby monitors are hard to come by.
Many tend to be oversensitive, others switch from squelch mode to
transmission with a loud hiss that is more irritating than a baby's
cry.
We were very satisfied with a Tomy Walkabout Digital
1998 baby monitor, until the day it started emitting a squeaking
sound.
Continue reading "The Capacitor Plague Hits a Baby Monitor"Last modified: Monday, December 25, 2006 11:41 am
The Escape of a Small Program
C. A. R. Hoare's
Law of Large Programs states that
inside every large program is a small program struggling to get out.
The parking receipt I got yesterday returning from a
SQO-OSS meeting proves this fact.
Continue reading "The Escape of a Small Program"Last modified: Thursday, December 21, 2006 9:59 am
Cracking Software Reuse
[Newton] said, "If I have seen further than others, it is because I've stood on the shoulders of giants." These days we stand on each other's feet!
— Richard Hamming
Continue reading "Cracking Software Reuse"Last modified: Friday, December 15, 2006 11:31 am
Secure Passports and IT Problems
In 2003 Greece, in response to new international requirements for secure travel documents, revised the application process and contents of its passports. From January 1st 2006 passports are no longer issued by the prefectures, but by the police, and from August 26th passports include an RFID chip. The new process has been fraught with problems; many of these difficulties stem from the IT system used for issuing the passports.
On December 12th, the Greek Ombudsman
(human rights section) issued a special 22-page report on the problems of the new passport issuing process.
The report is based on 43 official citizen complaints.
Continue reading "Secure Passports and IT Problems"Last modified: Wednesday, December 13, 2006 12:25 am
(Not) Hacking the Digipass Go 3 OTP Dongle
My bank moved to two factor authentication solution, and thus required me to purchase
from them a Digipass Go 3 dongle in order to authenticate my transactions.
To register my dongle I keyed-in a five-digit code they gave me,
and also the key's serial number appearing on its back.
Given that Go 3 utilizes an
open authentication framework,
and a published algorithm
for generating the one time password (OTP), could I utilize the key and the
numbers I keyed in, for using the key in my own applications, of for cloning
the dongle in my mobile phone or palmtop?
Continue reading "(Not) Hacking the Digipass Go 3 OTP Dongle"Last modified: Friday, December 1, 2006 11:19 am
Internet Explorer's Cleaner Look
Today the Microsoft update on my Windows machine asked me to upgrade
the Internet Explorer to version 7.0.
My bank refuses to work with any browser other than IE,
so, although I'm using SeaMonkey
as my everyday browser, I'm also forced to keep a current copy of IE.
The installation's banner reinforced some of the fears I have
regarding Microsoft's technical prowess.
Continue reading "Internet Explorer's Cleaner Look"Last modified: Friday, December 15, 2006 3:10 pm
So Long as there's a Jingle in your Head, Television isn't Free
Yesterday I switched from an ancient version of the "free" Adobe Reader to
the current version 7.0.
I spent the morning studying some fairly tricky technical documents.
Within that interval I often caught my eyes glancing to the top right of the
Adobe Reader's display window where
an advert button flashed as it changed its content.
Needless to say, this change of focus interrupted my train of thought,
and got me out of "flow mode".
Continue reading "So Long as there's a Jingle in your Head, Television isn't Free"Last modified: Saturday, November 25, 2006 5:19 pm
White Noise Calms Babies
A week ago I told my colleague
Damianos Chatziantoniou
that drying the body of a newborn baby with a hair drier keeps
it consistently dry avoiding rashes, and also calms the baby down.
Today he told me the advice worked wonders.
Many parents have discovered that sources of white noise, like the sound
of a vacuum cleaner or a hair drier, seem to calm down a baby's
crying spell.
Continue reading "White Noise Calms Babies"Last modified: Wednesday, November 15, 2006 7:54 am
Converting RIS to BibTeX
Digital libraries increasingly provide an option to export bibliographic
data.
Unfortunately, many, like
IEEE Xplore,
SpringerLink, and
Scopus
don't support the BibTeX format I use for storing
my bibliographies.
(To its credit the
ACM Portal offers a BibTeX
export option.
On the other hand, Elsevier's
ScienceDirect and
JSTOR don't offer
any export facility.)
Continue reading "Converting RIS to BibTeX"Last modified: Wednesday, November 8, 2006 10:01 am
The Return of Performance Engineering and Trendy Programmers
In the 1950s, when processor cycle times were measured in microseconds,
algorithm design and clever programming could make or break an application.
These fields continued to be popular in the 1960s and 1970s, because
widespread computers were used to attack ever larger problems.
Programming was a hip and trendy occupation.
Today's $500 computers operating on GHz clocks allow anybody who has
(just about) mastered the syntax of a programming language to write
code that drives dynamic web sites serving hundreds of transactions each
minute.
Managers consider code a commodity, and enrollments to computer science
degrees are dwindling.
However, change is in the air.
Continue reading "The Return of Performance Engineering and Trendy Programmers"Last modified: Friday, November 3, 2006 8:43 pm
A Solution for Web Citations
In 2003 I published a
study
providing evidence that the half life of a web citation was four years.
WebCite offers a neat
solution to this problem.
Continue reading "A Solution for Web Citations"Last modified: Tuesday, October 24, 2006 2:35 pm
SQO-OSS Launched
Yesterday my research group and our partners officially launched the
SQO-OSS
research project:
a Software Quality Observatory for Open Source Software.
Continue reading "SQO-OSS Launched"Last modified: Friday, October 20, 2006 7:39 pm
Research in Domain Specific Languages
My research colleague
Vassilis Karakoidas
is working on better programming support for domain specific languages (DSLs).
Today he claimed that DSLs were hyped during 1998-2002,
and now interest has waned.
Continue reading "Research in Domain Specific Languages"Last modified: Friday, October 13, 2006 1:32 pm
Web Page Hits, Amazon.com's Sales Rank, and Actual Sales
Over the past three years I've been collecting the
amazon.com Sales Rank for my book
Code Reading: The Open Source Perspective,
and (lately) also for its sequel
Code Quality: The Open Source Perspective.
Yesterday I mapped the sales rank to actual sales, and correlated those
with significant events and hits on the book's web page.
Continue reading "Web Page Hits, Amazon.com's Sales Rank, and Actual Sales"Last modified: Wednesday, October 11, 2006 10:20 am
Code Finessing
When I set out to apply CScout
on the Linux kernel source code, I
discovered that it failed to correctly expand a couple of C macros,
causing the analysis to fail. This prompted me to reimplement CScout's
macro expansion using a
precise functional specification,
then optimize
the code's severe degradation in time performance, and finally tidy up
the optimized code mess.
Continue reading "Code Finessing"Last modified: Friday, October 6, 2006 9:44 am
Cross Compiling
Cross compiling software on a host platform to run on a different
target used to be an exotic stunt to be performed by
the brave and desperate.
One had first to configure and build the compiler, assembler, archiver,
and linker for the different architecture, then cross-build the other
architecture's libraries, and finally the software.
This week, while preparing a new release of the
CScout refactoring browser
I realized that what was once a feat is nowadays a routine operation.
Continue reading "Cross Compiling"Last modified: Saturday, September 30, 2006 10:32 pm
Choosing a Collection: A Discussion with Kent Beck
Recently I reviewed the mansucript of Kent Beck's upcoming
book Implementation Patterns.
I will certainly put it in the list of books any professional programmer
should read.
When discussing collections (containers in C++ STL parlance),
Kent mentions that
his overall strategy for performance coding with collections is to use the
simplest possible implementation at first and pick a more specialized collection
class when it becomes necessary.
My view is that
we should choose the most efficient implementation from the start.
With prepackaged collections this doesn't have any cost associated with
it, and it avoids nasty surprises when a dataset increases beyond the
size the programmer envisaged.
I added a comment to that effect in my review, and later I sent him
an email with a supporting citation, which
kindled an interesting exchange.
I reproduce our email exchange here, with his permission.
Continue reading "Choosing a Collection: A Discussion with Kent Beck"Last modified: Wednesday, September 27, 2006 3:36 pm
The Verbosity of Object-Oriented Code
As I refactored a piece of code from an imperative to an
object-oriented style I increased its clarity and reusability,
but I also trippled its size.
This worries me.
Continue reading "The Verbosity of Object-Oriented Code"Last modified: Monday, September 25, 2006 0:32 am
UML Class Diagrams from C++ Code
I needed a UML class diagram of the classes I use in the implementation of
CScout refactoring browser.
I drew the last such diagram on paper about four years ago, so it was
definitely out of date.
I always say that whenever possible documentation should be automatically
generated from the code, so I decided to automate the task.
Continue reading "UML Class Diagrams from C++ Code"Last modified: Thursday, September 21, 2006 11:49 am
NASSCOM Quality Summit 2006
Last week I attended NASSCOM's 2006 Quality Summit in Bangalore, India.
There I gave a tutorial on tooling with open source software, and
delivered a talk on Global Software Development in the FreeBSD Project.
It was an edifying trip.
Continue reading "NASSCOM Quality Summit 2006"Last modified: Sunday, September 17, 2006 10:35 pm
Hardware and Software Debugging
Debuggging day.
The MySQL
5.0 server I tried to run as part of a
MediaWiki installation under
FreeBSD,
crashed during initialization, and a Tomy Walkabout
digital baby monitor started emitting a low beeping sound.
I solved both cases through educated guesses.
Continue reading "Hardware and Software Debugging"Last modified: Saturday, September 2, 2006 11:47 pm
Open Source and Professional Advancement
Doing really first-class work, and knowing it, is as good as wine, women (or men) and song put together.
— Richard Hamming
Continue reading "Open Source and Professional Advancement"Last modified: Friday, December 15, 2006 11:32 am
SeaMonkey vs Internet Explorer Revisited
In an older blog entry
I compared the complexity of Mozilla with that of Internet Explorer
by looking at the components each linked to.
Recently, comments to a Slashdot posting I made, noted
that I was comparing the two products on different platforms and
source with binary dependencies.
I therefore set out to compare the binary dependencies of the two
under Windows.
Continue reading "SeaMonkey vs Internet Explorer Revisited"Last modified: Tuesday, August 8, 2006 6:17 pm
What Can System Administrators Learn from Programmers?
Although we often hear about program bugs and techniques to get
rid of them, we seldom see a similar focus in the field of system
administration.
This is unfortunate, because increasingly the reliability of an IT system
depends as much on the software comprising the system as on the support
infrastructure hosting it.
Continue reading "What Can System Administrators Learn from Programmers?"Last modified: Sunday, July 23, 2006 0:10 am
Efficient Human Multitasking
I sometimes hear colleagues complaining that they can't get anything done,
because they have too many tasks in their head.
I've found that in order to increase the efficiency of my work
I need a moderately large selection of pending tasks.
This allows me to match the type of work I can do at a given moment
with a task in the most optimal way.
Continue reading "Efficient Human Multitasking"Last modified: Wednesday, July 19, 2006 0:00 am
Boot Lock
I first admired this ingenious method of locking a car in
Rowan Atkinson's
Mr. Bean series.
A few days ago I saw it in real life.
Continue reading "Boot Lock"Last modified: Tuesday, July 11, 2006 11:15 am
Quality, Democracy, and Code
Edwin Fine recently posted on amazon.com a review of my
book
Code Quality: The Open Source Perspective.
In the review he complained about the quality of proofreading and copy editing.
(The errors he noted are now listed in the book's errata.)
His comments sparked off a delightful discussion on the reasons behind
the falling quality levels of various products, the philosophical importance of this phenomenon,
and its effect on coding standards.
Continue reading "Quality, Democracy, and Code"Last modified: Monday, July 3, 2006 0:28 am
Choosing a Programming Language
A language that doesn't have everything is actually easier to program in than some that do.
— Dennis M. Ritchie
Continue reading "Choosing a Programming Language"Last modified: Friday, December 15, 2006 11:32 am
Dave Prosser's C Preprocessing Algorithm
For about five years I've been trying to implement a fully conforming
C preprocessor for the front end of the
CScout refactoring browser.
I've found this to be a fiendishly difficult task.
Although what I have written can correctly process million-line
real-life projects, every once in a while I come across a construct
that confuses my implementation.
While searching the web for explanations of some of the finer points
of the C standard I came across a reference to an algorithm by
Dave Prosser that the X3J11 (ANSI C standard) committee used as a basis
for the standard's wording.
Continue reading "Dave Prosser's C Preprocessing Algorithm"Last modified: Monday, June 26, 2006 7:15 pm
Interoperability Requires Temperance
After testing the CScout refactoring browser
on the FreeBSD kernel, I decided
to try it on Linux.
I'm getting there, but slowly, and the reason is the gratuitous use of
gcc extensions made in the Linux kernel source code.
Every time I come across a program construct that CScout doesn't
grok, I have to study the C standards to see if the construct is legal C
that CScout fails to implement or a gcc extension.
Extensions are trouble, because, they're typically only vaguely documented.
Continue reading "Interoperability Requires Temperance"Last modified: Sunday, June 25, 2006 7:01 pm
Batch Files as Shell Scripts
Although the Unix Bourne shell offers a superb environment for combining
existing commands into sophisticated programs, using a Unix shell
as an interactive command environment under Windows can be painful.
Continue reading "Batch Files as Shell Scripts"Last modified: Friday, June 16, 2006 3:58 pm
Security is a Problem of the Weakest Link
While attending the ICSE 2006 conference I stayed at the Tong Mao hotel.
My room featured an impressive-looking safe:
thick steel, two bolts, and a digital lock.
Continue reading "Security is a Problem of the Weakest Link"Last modified: Wednesday, May 24, 2006 4:49 am
Surprising Findings on Software Reuse
Kevin DeSouza and his colleagues in a recent
article in the
Communications of the ACM published some surprising
findings regarding software reuse:
reuse happens more by novices rather than by experts,
within projects rather than across them, and in
transient teams rather than permanent ones.
The statement regarding the higher propensity of rookies to reuse
compared to older professionals rang particularly true to my ears.
Continue reading "Surprising Findings on Software Reuse"Last modified: Sunday, May 7, 2006 10:01 pm
Debuggers and Logging Frameworks
As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered.
— Maurice Wilkes discovers debugging, 1949
Continue reading "Debuggers and Logging Frameworks"Last modified: Friday, December 15, 2006 9:15 am
Public Bookmarking
You're searching the internet to answer a question you have,
and after some painstaking detective work you locate the answer.
Where do you store the answer for future reference?
Continue reading "Public Bookmarking"Last modified: Monday, April 24, 2006 3:42 pm
Xerces v Flex
What is the fastest way to process and XML file?
I was faced with this question when I recently wanted to
process a 452GiB XML file; for this amount of data speed matters.
Some obvious choices were XML libraries, hand-crafted code, and
lexical analyzer generators.
Continue reading "Xerces v Flex"Last modified: Thursday, September 22, 2016 9:48 am
Code Quality: The Open Source Perspective
My new book
Code Quality: The Open Source Perspective
got published,
three years after I started writing it.
The book owes more to open source software than any of the books
dealing with Linux, PHP, Apache, Perl or any other book covering
a specific technology.
Continue reading "Code Quality: The Open Source Perspective"Last modified: Wednesday, April 12, 2006 12:05 am
Efficiency Will Always Matter
Many claim that today's fast CPUs and large memory capacities make
time-proven technologies that efficiently harness a computer's power irrelevant.
I beg to differ, and my experience in the last three days demonstrated
that technologies that originated in the 70s still have their place today.
Continue reading "Efficiency Will Always Matter"Last modified: Monday, April 3, 2006 0:42 am
Active Voice v Passive Voice
The most common change copy-editors perform on my prose is the conversion
of passive voice constructs into active voice.
By now I've become accustomed to it, and I now try to use active voice
whenever possible.
It turns out that the proverbial coin has in this case two faces.
Continue reading "Active Voice v Passive Voice"Last modified: Thursday, May 4, 2006 12:17 am
Bug Busters
Although only a few may originate a policy, we are all able to judge it.
— Pericles of Athens
Continue reading "Bug Busters"Last modified: Friday, December 15, 2006 11:32 am
Management Support Technologies
My academic title contains the words management support technologies.
I therefore considered the new and efficient document
management and dispatch system I saw in use at my health insurance provider
a rare gem, worthy of inclusion in this blog.
Continue reading "Management Support Technologies"Last modified: Tuesday, February 21, 2006 11:46 pm
A Malfeasant Design for Lawful Interception
Earlier this month it was revealed that more than 100 mobile phone numbers
belonging mostly to members of the Greek government and top-ranking
civil servants were found to have been illegally tapped for a period
of at least one year (see
Wikipedia article).
Apparently, the tapping was implemented by activating Ericsson's
lawful interception subsystem installed at the Vodafone service provider.
How could this happen?
Continue reading "A Malfeasant Design for Lawful Interception"Last modified: Wednesday, February 15, 2006 12:45 am
How Not to Cook an Egg With Your Cell Phone
A story
currently doing the rounds by email provides detailed instructions
for cooking an egg by placing it between two cell phones.
Here is my attempt to check its validity.
Continue reading "How Not to Cook an Egg With Your Cell Phone"Last modified: Tuesday, February 7, 2006 3:54 pm
A General-Purpose Swap Macro
A couple of days ago I came up with a general-purpose macro for swapping
values in C programs.
My colleague Panagiotis Louridas suggested an improvement, and
this prompted me to see the two macros got compiled.
Continue reading "A General-Purpose Swap Macro"Last modified: Monday, January 30, 2006 10:37 am
Google in China
Google "don't be evil" Inc. launched a self-censored version of
its service for China.
Continue reading "Google in China"Last modified: Wednesday, January 25, 2006 5:51 pm
A Tree of Mentors
In the FreeBSD project, new
committers are assigned a mentor who overlooks their work, until they
are judged to be confident enough to work on their own.
As lots of things in the open-source landscape, having a mentor is a loan,
which we should pay back by mentoring somebody else.
Continue reading "A Tree of Mentors"Last modified: Saturday, January 7, 2006 4:05 pm
Disappearing Hardware
Let's start the new year with a retrospective look at hardware advances.
I've ordered some older and current hard disks that were lying around
by date.
We're taking for granted the increases in disk size, but also
impressive is the reduction in size of the control electronics.
Continue reading "Disappearing Hardware"Last modified: Tuesday, January 3, 2006 4:41 pm
Project Asset Portability
It's said that real computer scientists don't program in assembler; they don't write in anything less portable than a number two pencil. Joking aside, at the end of the 1970s, the number of nonstandard languages and APIs left most programs tied to a very specific and narrow combination of software and hardware. Entire organizations were locked in for life to a specific vendor, unable to freely choose the hardware and software where their code and data would reside. Portability and vendor independence appeared to be a faraway, elusive goal.
Continue reading "Project Asset Portability"Last modified: Tuesday, December 12, 2006 8:20 pm