Sunday, July 20, 2008

Switch off the light when you are not in the room, John!

The machinations of governments never cease to amaze me. This week I read a stunning article---stunning to anyone whose mother told them to switch off lights when they are not in the room---about UK government plans to green its IT.

The article, entitled Whitehall to become carbon neutral with aid of smart PCs, contains statements to make the eyes of any regular computer user water:

The proposals, including desktop computers that switch themselves off if they are inactive for too long, are aimed at making energy consumption from all of Whitehall's information and communication technology carbon neutral by 2012.

and

"Turning off every desktop PC in central government for the 16 hours that fall outside the standard working day could save up to 117,500 tonnes of CO2 per year," a Cabinet Office briefing document says.

Wait a minute. So when a central government civil servant goes home he just gets up and walks away from their computer leaving it on for the next 16 hours. Wow. The actual briefing document has more information on the radical proposal: Greening Government ICT (BTW If you have a hard time reading that link it's because the UK government decided that a suitable file extension for a PDF is .ashx).

There are a number of things that are pretty amazing about this:

1. The government's own guidelines for consumers (see here) start with Turn off your appliances – don’t leave them on standby.

2. Computers have had this new found 'smart PC' ability for 16 years. Intel's nice document on the history of power management lays it out pretty clearly. The first power management functionality was defined 1992 (called APM 1.0) and introduced by Microsoft in Windows 3.1. The really advanced version of power management was introduced in 1997 (ACPI 1.0). So the UK government has had between 11 and 16 years to make their machines shut themselves off.

3. The document also proposes reducing the use of screensavers. There's nothing wrong with screensavers if you are doing power management in the first place. You can have a few minutes of screensaver and then the power management kicks in and shuts off the display, or shuts down the machine.

4. Even if you weren't awake for the last 16 years of power management innovation you could have just followed your mother's advice and turned the computer off when you went home. How hard is that?

It really only leaves me with one possible explanation: civil servants don't know how to turn their PCs on, so they have to be left on all night.

The article also states a typical government solution to the problem:

A government source told the Guardian that a centralised system would switch off computers detected as inactive.

Huh? I can understand centralized management of settings, but why can't a computer just do its own detection of whether it's idle or not? (This is possibly just a journalist not understanding the details).

There's also a security implication to all this. If PCs are left on all night, are civil servants actually logging off?

Labels:

Thursday, July 10, 2008

Photoshopped Iranian Missile Launch

Some time ago I wrote about my implementation of an algorithm for detecting copy/paste for doctoring photographs. Today the New York Times reports that a photograph of an Iranian missile launch appears to have been doctored.

Here's the picture:



I ran it through my code and it quickly shows up large chunks of smoke that appear to have been displaced:







Tweaking the knobs on the algorithm would probably show more smoke copying, but I don't have the free time.

Labels:

Wednesday, July 09, 2008

Holiday ideas for the geek?

Summer is upon us (at least in the Northern Hemisphere) and I'm looking for holiday ideas. But not just any old holiday.

Where would you go do geek out on something mathematical, scientific, or technological? I'm not looking for the run of the mill (like the London Science Museum), something exceptional (like a trip to the site of the Trinity Test).

Have you been somewhere really nerdy? I'd like to know.

Labels:

Sunday, June 29, 2008

Advice to a young programmer

I received a mail from an acquaintance who'd come to the realization that his 13-year-old wanted to be programmer, specifically a games programmer. Here's the advice I gave. Perhaps others have things to add:

1. I'm tempted to tell you that the right way to learn to be a programmer is to start with LISP, or the lambda calculus, or even denotational semantics but you can come back to those after a few years getting your feet wet.

2. Lots of programming involves logic (or at least thinking logically) so learning about and enjoying logic is probably a good foundation. You could start by learning about boolean algebra since it's simple and fun and the basis for a lot of what computers do.

3. Since games programmer involves a lot of physics, you should also learn about Newton's Three Laws and Universal Gravitation and play around with things like springs and pendulums.

4. Basic trigonmetry is important to the games programmer. It'll be handy to know about Pythagoras and the relationship with sin, cos and tan.

5. Above all, start with a programming language and a good book and commence hacking: try stuff out, make little simple programs (even if it's a program that prints out "Hello" on the screen, or a program that prints out "Hello" ten times, or asks you for the number of times to print "Hello" and then does it). Just write code, whatever takes your fancy.

6. A good starting language is Python. Get the O'Reilly book Learning Python.

7. Python is dynamic so you'll be able to make progress very quickly, but for games programming you are probably going to need to get a little closer to the machine. And for that you should learn C by reading the classic The C Programming Language.

8. As you learn more there are some great books that will expand on what you can do: read Programming Pearls and The Practice of Programming. Think about getting: Algorithms in C. Read Structure and Interpretation of Computer Programs.

9. Also: avoid debuggers, learn to unit test. Debuggers are useful in limited circumstances, most code can be debugged by using your head and a few 'print's. Unit tests will save your life as you go forward.

10. When you are ready, try to write a version of the first ever computer game: Spacewar!

...

11. When your first company goes public think of me; I'll be an old man and probably won't have saved enough for retirement.

Labels:

Friday, June 20, 2008

RPNBuddy returns as RPNChat

A long, long time ago I created an IM buddy called RPNBuddy that implements a reverse polish notation calculator as a chat bot. It ran for a while on one of my machines but didn't get a whole lot of use.

A few months ago, Hans Nordhaug, an associate professor at Molde University College in Norway, wrote to ask what had happened to RPNBuddy. I offered him the source code under the General Public License and he readily accepted, improved it and has now relaunched the service as RPNChat.

Connect to the RPNChat buddy on AIM and you can use it as a calculator. Here's a session of me calculating Roger Bannister's average speed in mph when he ran the under 4 minute mile in 1954 (3 min 59.4 s).

Labels:

Friday, June 06, 2008

The Colarie: A new way of measuring calorie intake

Recommended daily energy intake for a man is generally considered to be roughly 2,500 Calories (or kilocalories: 1 Calorie = 1,000 calories) and for a woman it's 2,000. The problem with those figures is that they are rather abstract. If you are trying to count your energy intake it would be much easier to deal with something smaller and easier to understand.

Hence my idea for the Colarie.

1 Colarie is the number of Calories in a single can of non-diet Coca Cola. It's easy to appreciate that a single can of Coke isn't very good for you and so comparing a food stuff to a can of Coke is an easy measure of whether you are eating something that's got too much fat or sugar in it.

The actual Calorie count for a Coke can varies by country. In France there are 139 Calories in a can, in the US there are 155. So I've settled on 147 as a good measure. So 1 Colarie = 147 Calories.

That means a man needs to consume the equivalent of 17 cans of Coke per day; for a woman it's 13.5 cans of Coke per day. That isn't a recommended diet, however!

So next time you are faced with a snack bar, use the Colarie measure. Just the other day I was presented with a small biscuit to go with a cup of tea on a BA flight. Looking at the Calorie count it was around 230 Calories for this tiny biscuit. That's 1.5 Colaries!

I didn't eat it.

Labels:

Thursday, June 05, 2008

GNU Make Unleashed release

For 4 years I've written the Ask Mr Make column over at CM Crossroads (and I continue to write it). Since there's been great interest in the column, I've put together all 4 years of columns plus additional unpublished material as a book and ebook.

All the material has been rechecked for accuracy, errata have been incorporated and the text re-edited. The result is a 230 page book covering everything from basics of GNU Make to advanced topics like eliminating recursive make, doing arithmetic in GNU Make or dealing with spaces in file names.





The book contains 43 separate articles about GNU Make, plus a complete reference to the GNU Make Standard Library.

You can buy a copy in either form here.

A big thank you to everyone who's commented, emailed, or made suggestions on my GNU Make articles over the years.

Labels: