Posts in 2004


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 handhelds. 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 shared libraries. On a lightly loaded web server these amounted to 80MB, on a more heavilly loaded shell access machine these ammounted to 300MB.

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 the load. It has been more than 7 years since the last time I worked on a Linux kernel, 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"

Poster Presentations

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++ [1] I made a wish for more of the same, updated to reflect current C++ practice. My wish has come true. The book C++ Coding Standards: 101 Rules, Guidelines, and Best Practices by Herb Sutter and Andrei Alexandrescu [2] 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 pointer 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. Sorry M4Z3R.

Continue reading "Cracker Code Review"

A Survey of Language Popularity

My PhD student Vassilios Karakoidas pointed my to an on-line language popularity survey.

Continue reading "A Survey of Language Popularity"

System administration stories: The Revolt

Can a small embedded system the size of a paperback lead a group of machines into revolt? Apparently yes.

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 "". 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"

Continous Bookmarking

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 colleagues.

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 Code Reading followup volume, and wanted to demonstrate the pitfalls of using homebrewn mathematical functions instead of the library ones. As an example, I chose to compare the C library hypot(x, y) function, against 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.

Continue reading "The hypot() Mystery"

Patching Framework III

Time warp. 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 "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.

Continue reading "Patching Framework III"

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 graphviz, CVS, Ghostview, gnuplot, LaTeX, and 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

The Problem

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"

Technological Complexity

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 I used. I knew 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

Recently the ACM 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

My colleague Prof. Gianakoudakis 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"

Become a Unix command line wizard
edX MOOC on Unix Tools: Data, Software, and Production Engineering
Debug like a master
Book cover of Effective Debugging
Compute with style
Book cover of The Elements of Computing Style
This blog is also available as an RSS feed:

Category Tags
AI (4)
AWS (4)
Android (2)
Apple (11)
C (21)
C++ (17)
Computers (58)
Databases (5)
Debugging (10)
Discussion (6)
Electronics (15)
Environment (1)
FreeBSD (26)
Funny (14)
GSIS (5)
Git (2)
Google (6)
Government (3)
Hacks (26)
Hardware (27)
History (13)
Information systems (1)
Internet (12)
Java (26)
JavaScript (1)
Linux (7)
Management (27)
Microsoft (11)
One Laptop Per Child (3)
Open source (58)
Opinion (30)
Parenting (11)
Perl (13)
Photos (13)
Politics (5)
Programming (110)
Python (3)
R (1)
Raspberry Pi (6)
Risks (7)
Scala (1)
Science (34)
Security (26)
Sights (19)
Smartphones (3)
Software (22)
Software engineering (93)
Standards (7)
System administration (46)
Teaching (9)
Technology (33)
Testing (3)
Tips (43)
Tools of the Trade (52)
Travel (9)
UML (6)
Unix (52)
Web (31)
Windows (17)
Writing (45)
XML (10)
vim (5)
Complete contents (380)
2024 (1)
2023 (5)
2022 (2)
2021 (3)
2020 (15)
2019 (4)
2018 (5)
2017 (20)
2016 (7)
2015 (6)
2014 (5)
2013 (13)
2012 (17)
2011 (14)
2010 (13)
2009 (40)
2008 (40)
2007 (41)
2006 (48)
2005 (44)
2004 (30)
2003 (7)

Last update: Monday, February 5, 2024 5:49 pm

Creative Commons Licence BY NC

Unless otherwise expressly stated, all original material on this page created by Diomidis Spinellis is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.