Who Maintains the GNU Plotutils?
The GNU plotutils
package contains a reimplementation of a pic language processor.
I find pic invaluable for drawing diagrams;
in fact the sequence diagram editor in my
UMLGraph system, depends on it.
The current version is 2.4.1, and was released in July 2000 - almost four years ago.
I have discovered two bugs, but no one seems to be maintaining the package.
This is unfortunate.
Continue reading "Who Maintains the GNU Plotutils?"
Lack of Progress in Palm Applications
An article in slashdot
recently discussed the limitations in the current breed of Palm
I am glad somebody has pointed out the lack of progress in the palmtop market. My 12-year old HP-100LX is literally falling appart, yet I can not find a worthwhile replacement.
Continue reading "Lack of Progress in Palm Applications"
Measuring the Effect of Shared Objects
For the Code Quality
book I am writing I wanted to measure the memory savings of
On a lightly loaded web server these amounted to 80MB,
on a more heavilly loaded shell access machine these ammounted
Continue reading "Measuring the Effect of Shared Objects"
Code Reading Example: the Linux Kernel Load Calculation
A colleague's Linux machine was exhibiting a very high load value,
for no obvious reason.
I wanted to make him point the kernel debugger on the routine calculating
It has been more than 7 years since the last time I worked on a Linux
so I had to find my way around from first principles.
This is an annotated and slightly edited version of what I did.
Continue reading "Code Reading Example: the Linux Kernel Load Calculation"
I've found myself twice in a period of six months giving a poster
presentation at a conference.
This has been a new experience for me, and, by looking at what others
were doing, I realized I could do a lot better.
Continue reading "Poster Presentations"
Book Review: C++ Coding Standards
A number of years ago, reading Koenig's and Moo's
Ruminations on C++  I made a wish for more of the
same, updated to reflect current C++ practice.
My wish has come true.
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
by Herb Sutter and Andrei Alexandrescu 
is an indispensable book for all serious C++ programmers.
Continue reading "Book Review: C++ Coding Standards"
Accuracy and Precision in Scientific Publications
The interesting article by Paper, Rodger and Simon,
Voice Says it All in the Navy,
(Communications of the ACM
47(8):97-101, August 2004), is tarred by an unfortunate
and, sadly, increasingly common error. In the article's tables and
explanatory text the authors report their results with an unwarranted
precision of three significant digits: 71.4, 42.9, 57.1, and so on.
Continue reading "Accuracy and Precision in Scientific Publications"
Involving Students With Open Source Projects
A Slashdot story titled
OSDDP: Involving Students With Open Source Docs
prompted me to describe my experiences with the
Software Comprehension and Maintenance
course I am teaching.
The reactions from the—difficult to please—slashdot crowd
were surprisingly positive and friendly.
Continue reading "Involving Students With Open Source Projects"
A Toddler Discovers Globalization
A toddler decided to explore and uncover
the production chain behind his touch-and-feel book.
Continue reading "A Toddler Discovers Globalization"
Apple's Presence in Greece Appears to be a Joke.
Earlier today I tried to buy an Airport Express base station by
visiting what appeared to be an Apple store in Stournari street:
the road in Athens with the largest physical concentration of computer shops.
Continue reading "Apple's Presence in Greece Appears to be a Joke."
Cracker Code Review
According to a popular myth, crackers are computer whiz kids:
brilliant software developers who run circles around their
"peers" in the corporate world.
When my undergraduate student Achilleas Anagnostopoulos sent me a
to the source code of the
Microsoft GDIPlus.DLL JPEG Parsing Engine Buffer Overflow
exploit, I decided to test the myth
by performing a code review of the exploit's source code.
The results are not flattering for the exploit's developers:
no self-respecting professional would ever write production code of
such an abysmally low quality.
Continue reading "Cracker Code Review"
System administration stories: The Revolt
Can a small embedded system the size of a paperback
lead a group of machines into revolt?
Continue reading "System administration stories: The Revolt"
Digital Data Makes Anything Possible
Once data becomes digital anything and everything becomes possible.
Consider arranging the books on your bookshelf by the color of
their book cover.
Continue reading "Digital Data Makes Anything Possible"
U.S. military sites offer a quarter million Microsoft Word documents
I was Google-searching for the Air Force Operational Test & Evaluation
Center publication "Software Maintainability - Evaluation Guide". To
make my search more efficient I restricted it to military (.mil) sites,
using the Google keyword "site:.mil".
I was not able to find the publication I was looking for, but was surprised
to see a number of Microsoft Word documents in the search results.
Continue reading "U.S. military sites offer a quarter million Microsoft Word documents"
When editing documents or code, my not so agile fingers, often trigger
a movement or search command that accidentally throws me to a random
location in the text I am editing.
How can I return back?
Amazingly, I noticed I am using exactly the same trick for returning back
on both the vim editor I use for most of
my editing tasks, and Microsoft Word I use for collaborating with many
Continue reading "Continous Bookmarking"
Detective Work and Dropped TCP Connections
I had problems with TCP connections (mostly long-lasting ssh sessions)
getting dropped on my ADSL line.
In the end, I found that the problem had two different roots.
The detective work behind establishing them is, I believe, interesting.
It also shows how accessible source code, and the will to use it,
can be a tremendous boost to difficult system administration problems.
Continue reading "Detective Work and Dropped TCP Connections"
The hypot() Mystery
I was writing a section for the
followup volume, and wanted to demonstrate the pitfalls of
using homebrewn mathematical functions instead of the library
As an example, I chose to compare the C library
Continue reading "The hypot() Mystery"
sqrt(x * x, y * y).
I created a plot of "unit in last place" (ulp) error values between
the two functions, which demonstrated how the error increased for larger
values of y.
Patching Framework III
I needed to read some old files I wrote in 1992 using the Ashton-Tate
Framework III program.
Unfortunately, trying to run the program under Windows XP resulted in a
Continue reading "Patching Framework III"
Divide overflow" error.
A bit of searching on the web revealed that the problem was related
to the system's speed (1.6GHz).
Apparently, Framework tries to calculate the speed of the machine
by dividing a fixed number with a loop counter;
on modern machines this results in the overflow.
Not All Open-source Systems Are Perfect
I am a big fan of open-source software, and I use many open-source
programs on a daily basis.
Some of my favourite systems, on which I depend, include
the FreeBSD operating system,
the apache web server, and
the vim editor.
I also often use
the GNU C Compiler.
I find all of these systems robust, well documented, and, in many cases,
superior to their proprietary alternatives.
Continue reading "Not All Open-source Systems Are Perfect"
Google Mail and Privacy
I recently subscribed to Google mail, to obtain a reasonable alias
(I thought I could get my loved dds initials, but it turned I would
have to use at least 6 characters). However, I doubt I will use the
service, because I really don't trust Google to search through my
personal email data. I have 300MB of email now, representing about
18 years of email discussions. (I routinely remove all attachments,
which I file separately, so the size of my emails is relatively modest).
If I trusted Google, I would like to upload all my messages to their
servers, and utilize Google's awesome search capabilities. However,
the truth is, I see too many ways for the service to be misused.
Continue reading "Google Mail and Privacy"
Optimizing ppp and Code Quality
While debugging a problem of my ppp connection I noticed that
ppp was apparently doing a protocol lookup (with a file open,
read, close sequence) for every packet it read.
This is an excerpt from the strace log, one of my
favourite debugging tools.
Continue reading "Optimizing ppp and Code Quality"
Computer Languages Form an Ecosystem
(This is a copy of an
article I posted on
slashdot on March 15th,
in response to a discussion titled
C Alive and Well Thanks to Portable.NET.
Many posters argued that the C language is dead.
I add my response here, because one month after its original slashdot submission,
I am still getting web site hits from it.)
Continue reading "Computer Languages Form an Ecosystem"
As a child I used to be able to assemble and disassemble my bike;
the most sophisticated artefact I owned.
I could understand the working of its (simple) gear system,
the functioning of the brakes,
the assembly of its ball-bearings.
As a teen I had a reasonably complete understanding of the IBM-PC
the 8088 processor's complete instruction set,
the instruction encoding details,
the pinout and operation of the ISA bus and the Centronics and RS-232 interfaces,
the operation of the 6845 video controller and the 4164 memory chips,
all the BIOS calls,
all the MS-DOS commands and system calls, and the complete details
Basic and C programming languages I programmed in.
I also knew the principles of operation behing the processes used
to build the computer's chips,
the MFM recording format used by the hard disk, and
the operation of the CRT monitor.
Continue reading "Technological Complexity"
Binary File Similarity Checking
How can one determine whether two binary files
(for example, executable images) are somehow similar?
I started writing a program to perform this task.
Such a program could be useful for determing
whether a vendor had included GNU
Public License (GPL)
code in a propriatary product, violating the GPL license.
After writing about 20 lines, I realized that I needed an accurate
definition of similarity than the vague
"the two files contain a number of identical subsequences"
I had in mind.
Continue reading "Binary File Similarity Checking"
Putting the Jini Back into the Bottle
It has been brought to my attention that
Microsoft is sending
cease and desist email letters regarding the illegal distribution
of the Windows source code.
Continue reading "Putting the Jini Back into the Bottle"
A Spam-resistant Email Network
I am really fed up with spam. Yes, I am behind a spamassassin filter,
and it is getting less and less useful with every passing day. Many other
interesting ideas (including ji's patent) have failed to catch on and
provide significant relief. In a recent column in IEEE Spectrum
Robert Lucky expressed his yearning for the days when email was only used by
the elite in the know, the select few who "were on email".
Continue reading "A Spam-resistant Email Network"
How Not to Conduct a Poll
Council asked members to provide feedback on the issue of expanding
legal protections for collections of data by means of an on-line poll.
Opening the policy feedback decision-making process to the ACM membership
promotes member participation and transparency.
However, I have two
serious reservations regarding the way the member feedback was requested.
Continue reading "How Not to Conduct a Poll"
Writing, GUIs, and 4000 Years of Progress
The images speak for themselves.
Continue reading "Writing, GUIs, and 4000 Years of Progress"
Changes in Web Site Rankings
performed an interesting comparative study.
He compared the quality of the web sites of all Greek ministries
(government departments for our US readers)
in terms of the currency of their material,
communication, usability, and the underlying technology.
An interesting element of the study is the relative change of the
ranking of each web site from 2002 to 2003, as can be seen in
the following table:
Continue reading "Changes in Web Site Rankings"