Finding the real problem

The poster of this thread on the PLT discussion list wondered why Scheme code is so much slower than Python. It was interesting to see how the question was answered because there were at least 3 levels to the problem:

  1. The source code to the solution itself
  2. How the source code worked “under the covers” (it called into C functions)
  3. An implementation in Scheme similar to how Python worked under the covers

Finding an explanation didn’t just involve comparing the code, it required understanding that the Python code actually called into C functions, and then converting the Scheme code into a similar “stateful” style of program. In programming, thinking is required!

A programming interview checklist

Leppie posted this great interview checklist. I’m mirroring it here so that I will always have a copy.

  • Ask to see a portfolio, if not available online
  • Ask to see some of the code of the best/lead developer, this will be the best expectation
  • Ask to see the version control log and unit test log, dont fall for ‘yes, we have/do that’
  • Ask that the best/lead developer be present at the interview
  • Make sure the best/lead developer is better than you, else you will be doing his job
  • Ask to see some run of the mill code, any random snippet
  • Ask them to be very precise on the responsibilities of the applied position, make them contractual
  • Ask to look at their DB structures
  • Ask to see architectural and design documentation

Please don't assume Lisp is

Please don’t assume Lisp is only useful for Animation and Graphics, AI, Bioinformatics, B2B and E-Commerce, Data Mining, EDA/Semiconductor applications, Expert Systems, Finance, Intelligent Agents, Knowledge Management, Mechanical CAD, Modeling and Simulation, Natural Language, Optimization, Research, Risk Analysis, Scheduling, Telecom, and Web Authoring just because these are the only things they happened to list.

Kent Pitman

The Soundex Algorithm

Soundex is a phonetic algorithm for indexing names by sound, as pronounced in English. The goal is for names with the same pronunciation to be encoded to the same representation so that they can be matched despite minor differences in spelling[1]. Soundex is the most widely known of all phonetic algorithms and is often used (incorrectly) as a synonym for “phonetic algorithm”. Improvements to Soundex are the basis for many modern phonetic algorithms

Wikipedia Entry
(via Vijay Matthew)

Computers are a metamedium

The computer is a medium that can dynamically simulate the details of any other medium, including media that cannot exist physically. It is not a tool, although it can act like many tools. The computer is the first metamedium, and as such it has degrees of freedom for representation and expression never before encountered and as yet barely investigated. The protean nature of the computer is such that it can act like a machine or like a language to be shaped and exploited.

— Alan Kay
I’ve never before heard it put quite so well.
(via R.P. James)

Computer Science Teachers Association

The Computer Science Teachers Association is a membership organization that supports and promotes the teaching of computer science and other computing disciplines. CSTA provides opportunities for K-12 teachers and students to better understand the computing disciplines and to more successfully prepare themselves to teach and learn.