Reviving the 1973 Unix Programmer’s Manual
The 1973 Fourth Edition of the Unix Programmer’s Manual doesn’t
seem to be available online in typeset form.
This is how I managed to recreate it from its source code.
Continue reading "Reviving the 1973 Unix Programmer’s Manual"Last modified: Sunday, November 19, 2017 2:36 pm
How I Recovered my Firefox Tab Groups
When quit and restarted Firefox today
I received an unwelcomed shock.
All my tab groups, which I maintained using the
Tab Groups by Quicksaver
plugin, were gone!
This happened because it upgraded to Firefox Quantum (57),
whose API does not maintain backward compatibility with the one used by the
plugin.
Although I knew the plugin would one day stop working,
I thought there would be some last-minute warning and chance to export
the tab groups.
Continue reading "How I Recovered my Firefox Tab Groups"Last modified: Saturday, November 18, 2017 10:04 am
An Embarrassing Failure
My colleague Georgios Gousios and I are
studying the impact of software engineering research in practice.
As part of our research, we identified award-winning and highly-cited
papers, and asked their authors to complete an online survey.
Each survey was personalized with the author’s name and the
paper’s title and publication venue.
After completing a trial and a pilot run, I decided to contact the
large number of remaining authors.
This is when things started going horribly wrong.
Continue reading "An Embarrassing Failure"Last modified: Tuesday, October 3, 2017 6:11 pm
Who are the Publishers of Computer Science Research?
To answer this question,
I downloaded the DBLP database and used the DOI
publisher prefix of each publication to determine its publisher.
I grouped the 3.4 million entries by publisher
and joined the numeric prefixes with the publisher names
available in the list of Crossref members.
Based on these data,
here is a pie chart of the major publishers of computer science research
papers.
Continue reading "Who are the Publishers of Computer Science Research?"Last modified: Friday, September 15, 2017 9:54 pm
The Origins of Malloc
The 1973 Fourth Edition Unix kernel source code contains two routines,
malloc and
mfree,
that manage the dynamic allocation and release
of main memory blocks for in-memory processes and
of continuous disk swap area blocks for swapped-out processes.
Their implementation and history can teach us many things regarding
modern computing.
Continue reading "The Origins of Malloc"Last modified: Thursday, September 14, 2017 11:47 am
Of BOOL and stdbool
The C99 standard has added to the C programming language a
Boolean type, _Bool
and the bool
alias for it.
How well does this type interoperate with the Windows SDK BOOL
type?
The answer is, not at all well,
and here’s the complete story.
Continue reading "Of BOOL and stdbool"Last modified: Tuesday, September 5, 2017 7:50 pm
Debugging in Practice: dgsh Issue 85
Fixing an insidious bug in the new Unix directed graph shell
dgsh
allowed me to demonstrate in practice 10 of the 66
principles, techniques, and tools
I describe in the book Effective Debugging.
Almost all steps all documented in the corresponding
issue and
commits.
Here’s a detailed retrospective.
Continue reading "Debugging in Practice: dgsh Issue 85"Last modified: Tuesday, August 15, 2017 12:12 am
Display Git’s and Current Directory on Terminal Bar
I typically have more than ten windows open on my desktop and rely
on their names to select them.
Being a command-line aficionado, most of them are terminals.
I have them configured to display the current directory by
setting the bash PROMPT_COMMAND
environment variable to
'printf "\033]0;%s:%s\007" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
.
The problem is that the directory I’m often in has a generic name,
such as src
or doc
, so the terminal’s name isn’t very useful.
Continue reading "Display Git’s and Current Directory on Terminal Bar"Last modified: Thursday, August 10, 2017 7:51 pm
Impact Factor of Computer Science Journals 2016
Clarivate Analytics
(ex Thomson Reuters, ex ISI)
has published the 2016
InCites Journal Citation Reports.
Following similar studies
I have performed in the past,
here is my analysis of the current status and trends for the
impact factor (IF)
of computer science journals.
Continue reading "Impact Factor of Computer Science Journals 2016"Last modified: Friday, June 16, 2017 6:36 pm
Modular SQL Queries with Unit Tests
I’m sure I’m not the only person on earth facing a
complex and expensive analytical processing task.
The one I’ve been working on for the past couple of years,
runs on the GHTorrent 98.5 GB data set of
GitHub process data.
It comprises 99 SQL queries (2599 lines of SQL code in total)
and takes more than 20 hours to run on a hefty server.
To make the job’s parts run efficiently and reliably I implemented
simple-rolap,
a bare-bones relational online analytical processing tool suite.
To ensure the queries produce correct results,
I wrote RDBUnit,
a unit testing framework for relational database queries.
Here is a quick overview on how to use the two.
Continue reading "Modular SQL Queries with Unit Tests"Last modified: Sunday, August 5, 2018 2:01 pm
Open Collaboration at Eclipse
The International Conference on Software Engineering
is the premier research conference on the topic.
This year it began with a keynote address by
the Eclipse Foundation Executive Director,
Mike Milinkovich,
on Open Collaboration: The Eclipse Way.
Continue reading "Open Collaboration at Eclipse"Last modified: Wednesday, May 31, 2017 10:26 am
Unix Architecture Evolution Diagrams
Today I put online two
diagrams depicting the architecture of the Unix operating system,
one for the 1972 First Research Edition and one for FreeBSD,
one of its direct descendants.
Here are the details on how I created these diagrams.
Continue reading "Unix Architecture Evolution Diagrams"Last modified: Wednesday, May 10, 2017 4:20 pm
Research Priorities in Software Technologies
In the words of the web’s inventor Marc Andreessen, “software is eating
the world”. Ever more products, services, and entire industries,
existing ones as well as new, are running on software. In a
report recently
published
by the European Commission, I argue that significant investment in software
engineering research can help Europe stay on top and even lead a world
that is increasingly defined and shaped by software.
Continue reading "Research Priorities in Software Technologies"Last modified: Tuesday, April 4, 2017 5:56 pm
The 1980s Research Unix Editions Are Now Available for Study
In 2002 Caldera International
licensed
the source code distribution of several historic Unix editions.
This included all Research Unix editions up to the Seventh Edition,
but excluded the 1980s 8th, 9th, and 10th Edition.
This was unfortunate, because these editions pioneered or implemented several
features that were very advanced at the time, such as
streams inter-process
communication,
graphics terminals and the associated Sam text editor,
network filesystems, and
graphics typesetting tools.
Continue reading "The 1980s Research Unix Editions Are Now Available for Study"Last modified: Tuesday, March 28, 2017 5:05 pm
The Psychology of the AWS Outage
Unless you’ve been living on another planet, you’re certainly aware
that over the past couple of hours Amazon’s AWS S3 service
has experienced a serious outage,
which has affected thousands of sites and services around the world.
For reasons I will elaborate in this post,
the coverage of this outage has been blown completely out of proportion.
So, what’s the difference between the perceived risk associated with the
AWS outage and the actual risk of this outage?
Continue reading "The Psychology of the AWS Outage"Last modified: Wednesday, March 1, 2017 0:40 am
The Road to Debugging Success
A colleague recently asked me how to debug a Linux embedded system that
crashed in the Unix shell (and only there),
when its memory got filled through the buffer cache.
He added that when he emptied the buffer cache the crash no longer occurred.
Continue reading "The Road to Debugging Success"Last modified: Thursday, February 16, 2017 10:55 am
Measures of Donald Trump’s Inaugural Address
Computers allow us to measure objectively the properties of text.
I applied some established text and sentiment
analysis algorithms on Donald Trump’s inaugural address and compared
the results with the same metrics of past well-known presidents.
Presidential speeches are nowadays typically a team effort.
Nevertheless, I thought that the speech writing team’s output
reflects the president’s choices regarding staffing, policy, and style.
Moreover, as luck would have it, in this case it was reported that Donald Trump
wrote the inaugural address himself.
The findings of this exercise surprised me.
Continue reading "Measures of Donald Trump’s Inaugural Address"Last modified: Saturday, January 21, 2017 8:49 am
How to avoid redoing manual corrections
Say you have an automated process to create a report, which you then have to
polish by hand, because there are adjustments that require human judgment.
After three hours of polishing, you realize that the report is full of errors
due to a bug in the initial reporting process.
Is there a way to salvage the three hours of work you put into it?
Continue reading "How to avoid redoing manual corrections"Last modified: Monday, January 16, 2017 2:10 pm
Debugging PCSecrets Synchronization
A reader of my Effective Debugging
book commented that debugging is learned through experience.
I think he’s partly right, so I’ll periodically describe here
techniques and tools I use when debugging.
A problem I faced today was the inability of the PC-based
PCSecrets program to sync with the
Secrets for Android counterpart.
Here is how I troubleshot and solved the problem.
Continue reading "Debugging PCSecrets Synchronization"Last modified: Tuesday, January 3, 2017 6:34 pm
As it Happened: Leap Second 37
Continue reading "As it Happened: Leap Second 37"Last modified: Sunday, January 1, 2017 10:50 pm