Choosing between people you want to invite to a function and people you
have to invite is sometimes difficult.
Say Alice wants to invite Tom, Dick, and Harry to a party, but she'd actually
prefer if Dick didn't show up.
Here's how Alice can send invitations by email from an email-capable
Unix system to achieve the desired result,
while covering her scheming with plausible deniability.
Continue reading "Pretend Invitations"
Advice from Successful Greek IT Startups
Members of the
Hellenic Association of Mobile Application Companies
Hellenic Semiconductor Industry Association,
assorted biotechnology companies, and representatives from
Greek and US-based venture capital funds gathered on Friday
December 17, 2011 in a meeting
to exchange advice, tips, and war stories on venturing abroad.
It was one of the most inspiring meetings I've attended for some time.
These are my notes from the meeting.
Continue reading "Advice from Successful Greek IT Startups"
Apps are the New Users
Some facilities provided by mature multi-user operating systems appear arcane today. Administrators of computers running Mac OS X or Linux can see users logged-in from remote terminals, they can specify limits on the disk space one can use, and they can run accounting statistics to see how much CPU time or disk I/O a user has consumed over a month. These operating systems also offer facilities to group users together, to specify various protection levels for each user's files, and to prescribe which commands a user can run.
Continue reading "Apps are the New Users"
Using the HP 4470c Scanner Under Windows 7
Hewlett Packard nor
Microsoft Windows 7
offer native support for my HP 4470c scanner.
Throwing a working scanner away to buy a new one only because some
software was missing seemed like a waste,
so I looked for an alternative solution.
This is how I made it work using SANE,
an open source framework for scanners.
Continue reading "Using the HP 4470c Scanner Under Windows 7"
Lessons from Space
By Diomidis Spinellis and Henry Spencer
Continue reading "Lessons from Space"
This column is about a tool we no longer have: the continuous rise of the CPU clock frequency. We were enjoying this trend for decades, but in the past few years, progress stalled. CPUs are no longer getting faster because their makers can’t handle the heat of faster-switching transistors. Furthermore, increasing the CPU’s sophistication to execute our instructions more cleverly has hit the law of diminishing returns. Consequently, CPU manufacturers now package the constantly increasing number of transistors they can fit onto a chip into multiple cores—processing elements—and then ask us developers to put the cores to good use.
Continue reading "Faking it"
Impact Factor of Computer Science Journals 2010
The Thomson Reuters Web of Knowledge
has published the 2010
Journal Citation Reports.
similar studies I performed in
here is my analysis of the current status and trends for the
of computer science journals.
Continue reading "Impact Factor of Computer Science Journals 2010"
How I Dealt with Student Plagiarism
a colleague at the
NYU Stern School of Business,
received considerable media attention when,
in a blog post he subsequently removed,
he discussed how his aggressive use of plagiarism detection software
on student assignments poisoned the classroom atmosphere and
tanked his teaching evaluations.
As detailed in
a story posted on the Chronicle of Higher Education blog,
Mr. Ipeirotis proposes instead that professors should design assignments that
cannot be plagiarized.
Along these lines here are two methods I've used in the past.
Continue reading "How I Dealt with Student Plagiarism"
When the facts change, I change my mind. What do you do, sir?
— John Maynard Keynes
A management practice is mature when even government bureaucracies decide to adopt it.
The March 2011 publication of
UK’s ICT strategy
marks this moment by advocating that “the application of agile ICT delivery methods [...] will improve government’s capability to deliver projects successfully and realise benefits faster.”.
This begs the question: were we misguided during the decades we were advocating stringent control of requirements and a tightly milestone-driven development process? Interestingly, this was not the case. We were right then, and we’re right now. Things have changed, and this is why we can nowadays smugly apply agile practices reaping impressive dividends. Numerous new factors are driving agility by increasing our productivity. Our growing ability to swiftly put together sophisticated software affords us the luxury to listen to our customers, to try out new things, to collaborate across formal boundaries, to make mistakes, to redesign as we move along—in short to be agile. Knowing these factors helps us realize when we can afford to be agile and when not. (Hint: agile development of a plane’s flight control software from the ground up is still not a good idea.)
Continue reading "Agility Drivers"
Ten Lessons I Learned from Fixing my Laptop's Motherboard
A month ago I managed to break my laptop, by reversing the polarity of
a universal power supply.
The repair shop diagnosed the problem as a failed motherboard,
and asked for €659 to replace it.
I found the price preposterous and the notion of throwing away a motherboard
for a single failed component ecologically unsound.
Here is how I fixed the laptop on my own, and what I learned in the process.
Continue reading "Ten Lessons I Learned from Fixing my Laptop's Motherboard"
Code Verification Scripts
Which of my classes contain instance variables?
Which classes call the method
Continue reading "Code Verification Scripts"
but don't call the method
These and similar questions often come up when you want to verify
that your code is free from some errors.
For example, instance variable can be a problem in servlet classes.
Or you may have found a bug related to the
and you want to look for other places where this occurs.
Your IDE is unlikely to answer such questions,
and this is where a few lines in the Unix shell can save
you hours of frustration.
Choosing and Using Open Source Components
The developers of the SQLite open source database engine estimate that it’s deployed in roughly half a billion systems around the world (users include Airbus, Google, and Skype). Think of the hundreds of thousands of open source components, just one click away from you. If you know how to choose and use them effectively , your project can benefit mightily.
Continue reading "Choosing and Using Open Source Components"
Sure, you can write English right to left. You can also write software code to look like a disc or even a train (see www.ioccc.org/1988/westley.c and 1986/marshall.c). However, you can’t then complain when you have to fight with your magazine’s editor or production staff about accepting your column’s title for publication, or if your colleagues refuse to touch your code with a 10-foot pole. Writing code in a readable and consistent style is difficult, uninteresting, tedious, underappreciated, and, extremely important.
Continue reading "elytS edoC"
Sophisticated Targeted Link Spam
What appeared to be an intelligent comment in one of my blog
postings turned out to be targeted link spam.
This is a worrying trend, because, although we can defend ourselves
against mass attacks, we're very vulnerable to targeted strikes.
Continue reading "Sophisticated Targeted Link Spam"