Archive for May, 2009

Teaching programming – part 1: how I learned

Posted in Campfire Stories, The Art of Programming on May 14th, 2009

A young person asked me recently: “Could you teach me how to write programs?”

Could I ever! I don’t know. Could I??

I’m old. I’m not so sure I’m a good example. The generations of my programming learning:

1. 1970′s — Poking around using BASIC on pre-PC microcomputers.

2. 1980′s — Writing a fair bit of software on my Timex ZX-18 using their BASIC.

3. 1980′s — Fortran 77 on PC and SunOS.

4. 1980′s — Writing a fair bit of software on PCs running DOS with Turbo Pascal.

5. late 1980′s — FTP, lots of ftp. Starting to use email. Writing Fortran apps on mini computers and using my PC as a VT-100 terminal with Kermit and a 1200 baud modem. Learned vi. Turbo C 1.0 (pre-ANSI standard).

6. 1990′s — Lots of Fortran 90 written under HP-UX and VMS. Starting to use C to interface with hardware.

7. 1990′s — CDROM based “Multimedia” projects. Silly aquarium games. Very painful under Windows 3.11.

8. 1990′s — WWW, the internet, HTML, cgi-bin scripts in Perl. Spending lots of time configuring web servers.

9. late 1990′s — The dot-com boom. All web, all the time. Microsoft ASP (classic: VBScript). Learned COM, ATL to enhance big MS technology web servers.

10. 2000′s — Big non-Microsoft web technologies. Linux, Java, Tomcat, other application servers.

11. 2000′s — Post dot-com: back to Microsoft with .NET! Love it. Back to client applications.

12. 2000′s — back to the web: ASP.NET. Love it.

13. 2000′s — set your way back machine: A huge project pulls me back to ATL/MFC/C++. Coding like it’s 1990 (Vista systems).

14. 2000′s — Computer game technology: classic C++, wicked algorithms, cool deep technology stacks like rendering pipelines, AI, terrain.

Looking back, what have I learned? A lot and especially that not all learning pain is gain.

I have growing respect for technologies that have evolved and stand the test of time. Looking down the list the Internet, client applications, and web-connected applications ebb and flow but feel like they will be around for awhile.

C++ is awesome. C#/.NET is way up there too. C# feels like C++ but someone has been in and tidied everything up. HTML has got to be one of the most ubiquitous formats on the planet.

New PC for my computer lab

Posted in Campfire Stories, Hard Stuff on May 13th, 2009

I needed an extra PC for a video editing class I was going to teach. I wanted it to be beefy enough but not too expensive. I started with a PC Gamer “medium” game system recommendations and tweaked it a bit.

Oh: it had to be quiet!

The New Blue Computer

I ordered everything from Amazon and the prices are what I paid in January 2009. The basic system cost $1,062 and the KVM cost $564.

Antec Nine Hundred Steel ATX Ultimate Gamer PC Case $108.60
CORSAIR 750w TX Series 80 Plus Certified Power Supply $107.64
EVGA 132-CK-NF78-A1 nForce 780i SLI 3xPCI-Express x16 PCI-Express 2.0 Socket 775 A1 Version Motherboard $236.77
Intel Core 2 Quad Q6600 Quad-Core Processor, 2.40 GHz, 8M L2 Cache, LGA 775 $189.99
Corsair XMS2 4 GB (2 X 2 GB) PC2-6400 800 MHz 240-PIN DDR2 Dual-Channel Memory Kit – TWIN2X4096-6400C5 $54.99
Zalman CNPS9700LED Ultra Quiet Cpu Cooler $59.99
EVGA 512-P3-N879-AR GeForce 9800 GTX + 512 MB DDR3 PCI-Express 2.0 Graphics Card $187.10
Western Digital Caviar Blue 500 GB Bulk/OEM Hard Drive 3.5 Inch, 16 MB Cache, 7200 RPM SATA II WD5000AAKS $59.99
HP 22X DVDRW LS IDE Retail Black $37.66
Sabrent CRW-UINB 68 in 1 Hi-Speed USB 2.0 Internal Memory Card Reader & Writer (Black) $19.32

The Keyboard, Video, and Mouse:

Ergotron LX Desk Mount Arm – mounting kit ( 45-179-195 ) $114.99
Samsung SyncMaster 2493HM 24″ LCD Monitor $378.99
Logitech 967688-0403 MX3200 Cordless Desktop Laser (Black) $70.98


I’ve been really happy with this system. Quiet, stable, fast, and I love the case!

Government computers and security settings

Posted in Essential Tools on May 7th, 2009

Recently we were asked to test our software on systems that had enhanced security settings. These are the result of (very) numerous configuration changes to the system so I looked around for some tools to help manage and apply these changes.

Bruce Schneier pointed the way on his recent post May 6, 2009
Secure Version of Windows Created for the U.S. Air Force

The Federal Desktop Core Configuration (FDCC) is described here.

Some nifty tools are at Blogs.Technet: Federal Desktop Core Configuration and Blogs.Technet: Utilities for automating Local Group Policy management.

Website software

Posted in Blogs on blogs, Campfire Stories, Essential Tools on May 7th, 2009

After nearly 18 years of doing web-based work as either my primary job or in support of other work I get this question a few times a year:

We need to find a good, easy to use software program for generating the [website name here]. PC based. Any suggestions?

My snappy answer is

WordPress       WordPress at Wikipedia


I’ve used notepad, vi, VisualStudio, Netscape Gold, DreamWeaver, … All kinds of different tools. On the server side: Netscape Server, cgi-bin with perl, IIS (since NT 3.51), all sorts of pre-IIS app servers I can’t even remember the names of, Java technologies and LAMP.

I’ve used those bastard website-in-a-box things almost every ISP offers.

Way too many times.

Looking back I have to ask myself: which techniques and technologies stood up to the test of time? Which do I look back at with no regrets?

  1. WordPress on LAMP or IIS
  2. IIS/ASP and IIS  with ASP.NET

On the desktop editing/managing side? VisualStudio and Visual Source Safe

That’s it. I assert that you can build ANYTHING with these technologies. I routinely build sites that use BOTH 1. and 2. — like

If you are a beginner: go pure WordPress. if you need more site functionality there is almost anything you could want available as a wad of PHP you can tack on.

If you need a real web application — and you think it is going to get large: ASP.NET is astoundingly powerful and lots of standard functionality is available out of the box. Especially identification/authentication and data driven UI functions.

Integrating Subversion with Visual Studio 2005/2008

Posted in Essential Tools on May 4th, 2009

Subversion works well and it is easily integrated into Visual Studio using AnkhSVN found at

Note that as of this writing, you need to use a daily build version instead of any stable release if you are using the latest SVN client version.

Installation is easy and in use it works much as Source Safe integration did:


Yell if you want but I still like how Visual Studio integrates with Source Safe.

Actually, I should have said “miss” how Visual Studio integrates with Source Safe since I see VSS in use at fewer and fewer workplaces — except my home. People point out that’s kind of sick.

Two (or three) waves of broken Captchas

Posted in Blogs on blogs, Campfire Stories on May 4th, 2009

Captcha is that technology you see when a site (like mine) is trying to keep spambots from posting spam comments or create junk accounts. Captcha uses a distorted image of a word like this


The idea is that only an actual human can read this image and see the word within. The human is then asked to type this word correctly before they are allowed to enter a comment or create an account, etc.

There were three waves of failure for the Captcha technique.

  1. Initially, webmasters did not even distort the work in the picture. Spammers simply used OCR technology to “read” the picture.
  2. Next, webmasters used scrambled words like above. Spammers used better OCR.
  3. Webmasters improved the scrambling (see below). Spammers enlisted humans to do the OCR (!)

Improved Captcha

Enlisting humans to do OCR? Basically the image is relayed to users who are either paid money or paid by access to porn to solve the captcha and return the solution which can then be used to gain machine or script access to the target system.

Wikipedia does its usual great job explaining the whole Captcha thing.

Jeff Atwood does it best at Coding Horror: March 04, 2008 — CAPTCHA is Dead, Long Live CAPTCHA! 

Jeff also has a great thread on it in his discussion of his ongoing efforts to manage bad behaviour at his excellent StackOverflow site.