Who Will Edit the Editors?
I am often asked to review papers that are written in a language
only superficially resembling English.
In a few cases the writing is so confused that I return the
manuscript, asking for it to be edited by a native speaker of English.
I realize that writing proper English is an additional
hurdle for, possibly brilliant, scientists who are not
native speakers of English, and
I often wondered how authors could address this problem.
Apparently, there are companies that will edit scientific papers
for a modest fee.
Continue reading "Who Will Edit the Editors?"Last modified: Monday, December 19, 2005 1:53 pm
If STL Had Been Designed by a Committee
I've been reading on XML schema, and it's embarrassingly obvious
that it has been designed by a committee.
Continue reading "If STL Had Been Designed by a Committee"Last modified: Wednesday, December 7, 2005 2:40 pm
A Clash of Two Cultures
I dug the following gem from the Usenix
HotOS X Conference
Panel titled "Do we work within existing frameworks or start from scratch?",
summarized by Prashanth Bungale.
Continue reading "A Clash of Two Cultures"Last modified: Monday, December 5, 2005 8:25 pm
How to Sort Three Numbers
Quick: how do you sort three numbers in ascending order?
Continue reading "How to Sort Three Numbers"Last modified: Thursday, November 17, 2005 10:01 am
Supporting Java's Foreach Construct
Java 1.5 supports a new
foreach
construct for iterating over collections.
The construct can be used on arrays and on all classes in Java's Collection
framework.
I searched the internet for an example on how to make my own
classes iterable with this construct, but could not find an example.
Continue reading "Supporting Java's Foreach Construct"Last modified: Sunday, November 13, 2005 10:27 pm
US Military Removes Word Documents from the Web?
On August 25th 2004 the comp.risks forum
run an article I submitted
regarding the large number of Microsoft Word documents available
on US milatary sites (sites in the .mil domain) through Google
searches
(23.50 "U.S. military sites offer a quarter million Microsoft Word documents").
The article documented how such documents could lead to the leakage
of confidential data.
A week later I setup a script to watch the number of Word documents
available through Google searches
to see if and when the military would recognise the threat those
documents posed and remove them.
Continue reading "US Military Removes Word Documents from the Web?"Last modified: Sunday, November 13, 2005 3:16 pm
Working with Unix Tools
A successful [software] tool is one that was used to do something undreamed of by its author.
— Stephen C. Johnson
Continue reading "Working with Unix Tools"Last modified: Saturday, August 9, 2014 1:09 pm
Human Thought and the Design of Computers
Peter J. Denning
wrote an excellent article titled
"The Locality Principle"
in the July 2005 issue of the Communications of the ACM.
The article explained the story behind the
locality of reference, a fundamental principle of computing with many applications.
In a
comment
that appeared in the October issue of the same magazine I commented:
Peter J. Denning's "The Profession of IT" column ("The Locality Principle," July 2005) invoked an anthropomorphic explanation for the prevalence of the locality principle in computational systems, observing that humans gather the most useful objects close around them to minimize the time and work required for their use, and that we've transferred these behaviors into the computational systems we design.
A more intellectually satisfying explanation might be that we are dealing with two parallel and independent evolutionary design paths. Trading some expensive high-quality space (fast memory) in order to gain time performance is a sound engineering decision. It is therefore likely that evolution first adapted the human brain by endowing it with limited but versatile short-term memory and large long-term memory structure that exhibits behavior similar to caching.
Millennia later, we make similar design decisions when building computing systems.
The comment triggered an email exchange with
Phillip G. Armour.
It was one of the most intellectually satisfying email exchanges I've ever had, and I am reproducing it here, with his kind permission.
Continue reading "Human Thought and the Design of Computers"Last modified: Friday, October 28, 2005 1:06 am
MIT's $100 Laptop
The MIT Media Lab is working on a research initiative to develop
a $100 laptop.
This will be distributed through governments to schools to
help the education of the world's students.
These are my notes from a talk
Michail Bletsas,
Director of Computing at the MIT Media Lab
gave on the subject, at an event organized by the
Netmode Laboratory .
Continue reading "MIT's $100 Laptop"Last modified: Friday, October 14, 2005 11:34 pm
Hard Disk Failure
I tell everybody that the question is not whether your hard drive
will fail, but when it will fail.
My laptop's drive started emmitting a loud grinding sound last Saturday.
Continue reading "Hard Disk Failure"Last modified: Tuesday, October 4, 2005 11:14 am
The Other Side of Digital Preservation
We often grumble that digital preservation is risky, and that
modern storage technologies and file formats quickly become outdated
destroying the record of our past.
What we don't appear to appreciate is how much more data we are
able to preserve, thanks to digital technologies.
Continue reading "The Other Side of Digital Preservation"Last modified: Friday, September 30, 2005 11:32 am
Slashdot Story: The Future of Windows Software Distribution
Earlier today I posted on Slashdot
a story
describing Microsoft's new third-party software distribution approach.
Continue reading "Slashdot Story: The Future of Windows Software Distribution"Last modified: Monday, September 26, 2005 6:18 pm
Information Kiosk
The inclined panel is indeed a computer screen,
and, of course, it is not working.
Another, more reliable, technology has prevailed.
Continue reading "Information Kiosk"Last modified: Thursday, September 15, 2005 0:47 am
Preparing for the Exams
The (retake) exam period has started.
At the metro the passenger sitting opposite me is obviously a student
frantically sorting the cards containing a 6%-reduced photocopy of her forensic
psychology textbook.
Continue reading "Preparing for the Exams"Last modified: Tuesday, September 6, 2005 0:23 am
Version Control Talk Demystified
One indication of the importance an
endeavor has in our lives is the vocabulary associated with it. If developers employ a tool or a method,
inevitably they will come up with words to describe their corresponding work in
an accurate and concise way. I recently
heard a colleague describe version control systems (also formally known as
configuration management tools) as boring. I hope that this dictionary
will dispel this myth by documenting a rich technical and social
vocabulary. If you don’t work with a
VCS I believe this list will give you plenty of reasons to look at what these
systems can do for you and your projects. On the other hand, if you already use a VCS I hope you will find ideas
on how to use it more productively and how to improve your configuration management
process. And, no matter to which group
you belong to, I am sure you’ll find here some new words worth knowing.
Continue reading "Version Control Talk Demystified"Last modified: Tuesday, December 12, 2006 8:20 pm
Version Control Systems
A source code control system [is] a giant UNDO key—a project wide time machine.
— A. Hunt and D. Thomas
Continue reading "Version Control Systems"Last modified: Tuesday, December 12, 2006 8:20 pm
Everything Old is New Again
In 1984 the new kid on the block was Borland's Sidekick.
A terminate and stay resident (TSR) program for MS-DOS,
it would run in the background, and when it detected
the two shift keys being pressed it would overlay the
(then character) screen with a calculator, a notepad,
a calendar, a dialer or an ASCII table.
Continue reading "Everything Old is New Again"Last modified: Tuesday, August 9, 2005 10:00 am
C++0X Enhancement: Rational Metaprogramming
In a recent article
Bjarne Stroustrup
presented the evolution of C++ toward the 0X standard, and asked the C++
community for ideas regarding C++ enhancements.
This is a proposal to add to C++ support for rational metaprogramming.
Continue reading "C++0X Enhancement: Rational Metaprogramming"Last modified: Wednesday, July 20, 2005 1:19 pm
GCC Obfuscated Code
For years I've struggled to understand the
GNU compiler collection internals,
I am ashamed to say, without much success.
I always thought that the subject was intrinsically too complicated
for me, but after struggling to understand a two line gcc
code snippet of a fairly simple operation for more than two minutes,
I realized that the code style may have something to do with my problems.
Continue reading "GCC Obfuscated Code"Last modified: Sunday, July 17, 2005 1:11 pm
C++0X Enhancement: Packaged Libraries
In a recent article
Bjarne Stroustrup
presented the evolution of C++ toward the 0X standard, and asked the C++
community for ideas regarding C++ enhancements.
This is a proposal to add to C++ support for using packaged libraries,
and a standardizing a library distribution format.
Continue reading "C++0X Enhancement: Packaged Libraries"Last modified: Wednesday, July 20, 2005 1:19 pm
Tool Writing: A Forgotten Art?
Merely adding features does not make it easier for users to do things—it just makes the manual thicker. The right solution in the right place is always more effective than haphazard hacking.
— Brian W. Kernighan and Rob Pike
Continue reading "Tool Writing: A Forgotten Art?"Last modified: Tuesday, December 12, 2006 8:20 pm
XML Abstraction at the Wrong Level
Over the last month I've encountered two applications
that use XML at the wrong level of abstraction.
Instead of tailoring the schema to their needs, they
use a very abstract schema, and encode their elements
at a meta level within the XML data.
This approach hinders the verification and manipulation of the corresponding
XML files.
Continue reading "XML Abstraction at the Wrong Level"Last modified: Thursday, June 23, 2005 11:52 am
An Open Letter to a Copy-Editor
Copy-editors perform a valuable service.
They take prose that is often rough and unfinished, and
massage it into a professional document.
Unfortunately, sometimes copy editing can go to far
and distort the meaning, especially in technical writing.
Also, my feeling is that across the across-the-board copy editing
performed by many publications results in writing whose language
is uniformly polished, and, yes, bland.
Think of what would happen if the writings of Hemmingway got
copy edited.
While I consider my writing at least five leagues below that level,
I prefer to learn my own way toward perfection, than to battle
with corrections that sometimes change the meaning of what
I write in treacherous ways.
Continue reading "An Open Letter to a Copy-Editor"Last modified: Thursday, August 25, 2005 12:46 am
Today's Dynamic is Tomorrow's Static
Today at the IEEE Software's
editorial and advisory board
meeting, the issue of service-oriented architectures came up.
Robert Glass wondered whether this was the upcoming fad,
following structured programming and object-oriented programming,
to which Stan Rifkin replied that service-oriented architectures
are a lot more dynamic.
Interestingly, the previous approaches, which we today consider as
static, were also thought-off as dynamic in their day.
Continue reading "Today's Dynamic is Tomorrow's Static"Last modified: Thursday, May 26, 2005 8:04 am
Cats and Cigarette Lighters
On April 14th, the US Transportation Security Administration
started enforcing a new ban on cigarette lighters.
A month later,
I saw the corresponding announcement posted on a check-in desk
at the Samos international airport.
At the same airport I also saw a free-roaming cat getting its food delivered
directly on the tarmac.
I entered my flight feeling a lot safer.
Continue reading "Cats and Cigarette Lighters"Last modified: Thursday, May 19, 2005 3:06 pm
Warum einfach, wenns auch kompliziert geht?
(Why make it simple, when you can also make it complicated?)
Consider the task of associating code with specific data
values.
Using a multi-way conditional can be error-prone, because
the data values become separated by the code.
It can also be inefficient in the cases where we have to use cascading
else if
statements, instead of a switch
,
which the compiler can optimize into a hash table.
In C I would use an array containing values and function pointers.
My understanding is that the Java approach involves using the
Strategy pattern: a separate class for each case,
and an interface "to rule them all".
Continue reading "Warum einfach, wenns auch kompliziert geht?"Last modified: Friday, May 13, 2005 9:54 am
Ordnung muss sein
A free-form translation of the above German phrase (orderliness must exist)
would be that orderliness is not negotiable.
In the domain of information technology I find this motto particularly
pertinent.
Continue reading "Ordnung muss sein"Last modified: Wednesday, May 11, 2005 4:25 pm
Google's Web Accelerator as a P2P CDN
I admire Google's guts in deploying their
Web Accelerator.
Proposing to act as an intermediary for the whole planet's web
traffic takes a lot of courage and a certain amount of audacity.
Interestingly, the system's design can be quite scalable,
through the use of peer-to-peer and personalization technology.
Continue reading "Google's Web Accelerator as a P2P CDN"Last modified: Thursday, May 5, 2005 9:41 am
Java Makes Scripting Languages Irrelevant?
Simplicity does not precede complexity, but follows it.
— Alan J. Perlis
Continue reading "Java Makes Scripting Languages Irrelevant?"Last modified: Tuesday, December 12, 2006 8:20 pm
Solving Singh's Substitution Cipher
Many of us enjoy playing with encryption algorithms.
Simon Singh, before a book promotion trip to Greece,
published a "substitution cipher with a twist".
I would consider solving a substitution cipher aimed
at the general public unfair, but the "twist" made me curious.
Continue reading "Solving Singh's Substitution Cipher"Last modified: Wednesday, April 27, 2005 10:16 am
A Pipe Namespace in the Portal Filesystem
The portal filesystem allows a daemon running as a userland program
to pass descriptors to processes that open files belonging to its
namespace.
It has been part of the *BSD operating systems since 4.4 BSD.
I recently added a pipe namespace to its FreeBSD implementation.
This allows us to
perform scatter gather operations without using temporary files,
create non-linear pipelines, and
implement file views using symbolic links.
Continue reading "A Pipe Namespace in the Portal Filesystem"Last modified: Wednesday, September 21, 2016 10:38 pm
Vatican's Prescient Web Masters
The Vacancy of the Apostolic See web page appears to have been prepared one day BEFORE the Pope's death.
Continue reading "Vatican's Prescient Web Masters"Last modified: Saturday, April 9, 2005 11:34 am
UMLGraph Update
I have updated the UMLGraph program to
run under Java 1.5.
Continue reading "UMLGraph Update"Last modified: Saturday, March 26, 2005 5:29 pm
A Plea for Usability Design in Children's Electronic Toys
I am not particularly fond of children's electronic toys,
but they constantly arrive at home as presents,
and they also attract the children's attention.
Unfortunately, the usability aspects of most electronic toys for toddlers
and children appear to be ignoring important and well-established
principles of user interface design.
Continue reading "A Plea for Usability Design in Children's Electronic Toys"Last modified: Monday, March 14, 2005 5:54 pm
Self-Healing Systems Will Age
A number of researchers are advocating the adoption of self-healing
approaches as a way to create more robust systems.
They suggest to copy a page from the book of life, where organisms
with a self-healing capability can survive numerous mishaps and accidents.
However, biological systems have another property, which I believe
is associated with their ability to heal themselves: ageing, and,
eventually, death.
Continue reading "Self-Healing Systems Will Age"Last modified: Wednesday, March 2, 2005 7:20 pm
Dear Editor
Machines should work. People should think.
— Richard Hamming
Continue reading "Dear Editor"Last modified: Tuesday, December 12, 2006 8:19 pm
XML Versus Text Files
The JDepend
package dependency analyzer can output its results
either as XML or as plain text.
Instead of using the XML output,
I found myself processing the text output using awk.
Am I becoming tied to old-world thinking,
or are text files easier to process?
Continue reading "XML Versus Text Files"Last modified: Friday, February 18, 2005 1:05 pm
The Efficiency of Java and C++, Revisited
A number of people worked on replicating the results and optimizing
the programs I listed in my earlier blog entry.
Continue reading "The Efficiency of Java and C++, Revisited"Last modified: Tuesday, February 15, 2005 8:42 am
An Open Source Java Metrics Toolset Is Hard to Find
I spent many hours looking for a stand-alone open source metrics toolset
for Java programs.
Unfortunately, I was not able to find a single tool that would
fit my (relatively modest) requiremets.
Continue reading "An Open Source Java Metrics Toolset Is Hard to Find"Last modified: Thursday, March 31, 2005 11:49 pm
The Efficiency of Java and C++
I seem to have trouble convincing my neo-Turk students that Java's design makes
it inherently less efficient than C++.
The arguments often and up in an exchange of comments like:
— This (micro) benchmark executes with the same speed when written in Java and C.
— Yes, but a realistic application, like Eclipse takes ages to start up.
— You are only complaining about the cost of the runtime startup
costs and JIT compilation, which are quickly amortized, and, anyway,
Eclipse offers many more features than other IDEs.
and so on.
I therefore wrote a small program to demonstrate the exact problems of
Java's design decisions.
Continue reading "The Efficiency of Java and C++"Last modified: Tuesday, February 15, 2005 8:40 am
Macro-based Substitutions in Source Code
A friends asks:
"How can one easily replace a method call (which can contain
arguments with brackets in its invocation code) with a simple
field access?
Continue reading "Macro-based Substitutions in Source Code"Last modified: Tuesday, February 8, 2005 12:50 am
Maintainability of the FreeBSD System
Last November Ioannis Samoladas and his colleagues published an article
in the Communications of the ACM [1] that compared the maintainability
of open-source versus-closed source projects.
I applied the maintainability index [2] they used on the FreeBSD source
repository following the code's maintainability over time, and comparing
the maintainability of different modules.
Here are the results.
Continue reading "Maintainability of the FreeBSD System"Last modified: Friday, February 4, 2005 5:50 pm
Java: the New Straightjacket
I first learned to program on a home computer in Basic. At first
it was fun, but after a point it became frustrating, when I realized
that I was living inside a walled garden. Many interesting programs,
such as those interfacing with the display controller, simply could
not be written in standard Basic. Luckily, this limitation forced me
to move to Pascal, assembly code, and C.
Continue reading "Java: the New Straightjacket"Last modified: Thursday, January 20, 2005 3:29 pm
The Tools at Hand
The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities.
— Edsger W. Dijkstra
Continue reading "The Tools at Hand"Last modified: Tuesday, December 12, 2006 8:19 pm