Teaching programming – part 2: how I tried it

Posted in Campfire Stories, The Art of Programming on June 10th, 2009

So I’m teaching a kid to program. “A kid” to me meaning anyone born after 1980 – ’cause I’m old.

Here are the choices I made.

Start with C++

If you want to be a professional programmer for the rest of your days, you should be an expert in C++. It’s all there: pointers, Object Oriented Programming, complex build issues: all the experience you’ll need.

Get a book to structure the “class”

All books suck to some extent. Just pick one and go. I chose Sams Teach Yourself C++ in One Hour a Day (6th Edition). It is big on C++ syntax, light on Computer Science topics.

Assign outside projects

I’m assigning tasks like a console Hangman game, The Game Of Life, things like that. Nothing makes concepts concrete like actually building a program that does something.

Teach Computer Science as taught at a great university

To be a professional programmer you need to be literate in computer science. Like any other self respecting astrophysicist (and therefore professional know-it-all) I tried for years to avoid it but finally gave in and learned CS.

After my student makes a pass through the Sams book above, I’ll start using the curriculum available free online at MIT’s Open Courseware. We’ll be starting with 6.00 Introduction to Computer Science and Programming

A gas-powered blender: good thing we have the technology

Posted in Blogs on blogs on June 10th, 2009

I am stunned by the weird things people think they need like a blender that is powered by a 43 cc gas engine with handlebars like a motorcycle.

blender

Amazon shows at least 3-4 different models and colors to choose from.

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
http://www.amazon.com/gp/product/B000I5JHB0
CORSAIR 750w TX Series 80 Plus Certified Power Supply $107.64
http://www.amazon.com/gp/product/B000X2677A
EVGA 132-CK-NF78-A1 nForce 780i SLI 3xPCI-Express x16 PCI-Express 2.0 Socket 775 A1 Version Motherboard $236.77
http://www.amazon.com/gp/product/B00118FM58
Intel Core 2 Quad Q6600 Quad-Core Processor, 2.40 GHz, 8M L2 Cache, LGA 775 $189.99
http://www.amazon.com/gp/product/B000LRMR26
Corsair XMS2 4 GB (2 X 2 GB) PC2-6400 800 MHz 240-PIN DDR2 Dual-Channel Memory Kit – TWIN2X4096-6400C5 $54.99
http://www.amazon.com/gp/product/B000TPXULC
Zalman CNPS9700LED Ultra Quiet Cpu Cooler $59.99
http://www.amazon.com/gp/product/B000JSFZPS
EVGA 512-P3-N879-AR GeForce 9800 GTX + 512 MB DDR3 PCI-Express 2.0 Graphics Card $187.10
http://www.amazon.com/gp/product/B001JQMFZ2
Western Digital Caviar Blue 500 GB Bulk/OEM Hard Drive 3.5 Inch, 16 MB Cache, 7200 RPM SATA II WD5000AAKS $59.99
http://www.amazon.com/gp/product/B000RT5AE0
HP 22X DVDRW LS IDE Retail Black $37.66
http://www.amazon.com/gp/product/B001LQ2J06
Sabrent CRW-UINB 68 in 1 Hi-Speed USB 2.0 Internal Memory Card Reader & Writer (Black) $19.32
http://www.amazon.com/gp/product/B000EWJYYW

The Keyboard, Video, and Mouse:

Ergotron LX Desk Mount Arm – mounting kit ( 45-179-195 ) $114.99
http://www.amazon.com/gp/product/B000BUK7KW
Samsung SyncMaster 2493HM 24″ LCD Monitor $378.99
http://www.amazon.com/gp/product/B0012TZJZ4
Logitech 967688-0403 MX3200 Cordless Desktop Laser (Black) $70.98
http://www.amazon.com/gp/product/B000HCRVSK

 

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.org       WordPress at Wikipedia

Why?

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 polyweb.com.

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.