Archive for September, 2006

The Bus Theory of Campaign Finance Reform

September 18, 2006

Democratic and Republication strategists are estimating that each candidate could spend $500 million dollars on the 2008 presidential election. This is obscene. Here is my proposal for campaign finance reform.

Anyone who wants to run for President and meets the eligibility requirements registers with the government. A number of months before the election, they would board one or more buses, holding town hall style debates across the country. The current sitting President could join them at any of the debates he/she saw fit. A token fee from each candidate, along with government money, would pay for the buses, lodging, etc. This would be the extent of campaigning the candidates are allowed.

The hole in this scheme is that political action groups and private citizens can fund ads on their own, completely independently from the candidates. The first amendment allows them to say what they want. However, given that the public owns the airways, the FCC could prevent broadcast stations from accepting and playing these ads. Further, one would hope that the tremendous quantity of public debates would drown out the ads.

The important points of this scheme:

  1. Anyone with the interest and ability to raise a couple thousand dollars can run. This would encourage third parties and promote political diversity.
  2. The candidates always appear together in a debate setting, giving citizens the opportunity to interact with all of the candidates in a fully dynamic setting. No more carefully staged events.
  3. The common transport on the buses would allow constant interaction between the candidates. Hopefully, this would result in idea exchange, particularly from the minor parties to the major parties.
  4. Anyone who did not drop out during the campaign would appear on the ballots in all states.
  5. The equal time laws should be enforced for all candidates and all print or broadcast media.
  6. This idea could be extended to apply to other national or state elections as well.

Big Brother is shouting at you

September 17, 2006

Middlesbrough has fitted some of their CCTV cameras with speakers. I am always amazed that people are willing to tolerate this level of government monitoring and intrusion in their lives. Yes, it is nice to deter criminals and stop anti-social behavior. But what happens when the government starts using this to monitor and identify dissidents? What if there comes a day when the government must be overthrown? We should be careful to not take away all of the tools of the revolution, especially our privacy and anonymity.


September 14, 2006

There is a huge discussion over at Coding Horror about Wasabi, the in-house extension of VBScript used by Fog Creek Software for FogBugz. The general consensus seems to be that Joel has lost his mind. However, if you read what Joel originally wrote, as well as his responses in the thread, the Wasabi solution is not unreasonable.

Fog Creek had a large codebase of existing VBScript, which they did not want to throw away. However, they do want to deploy it to Unix and their customers want minimal installation dependencies (i.e. it should work out of the box). Their solution was to develop an extension to VBScript called Wasabi, which then compiles down to pure VBScript or PHP. This accomplishes their goals rather elegantly.

So why do people think this is crazy?

Argument One: Writing Your Own Language is Dumb

In general, writing your own language is overkill. However, it may be appropriate, particularly in the domain-specific language case. According to Joel, Wasabi took one person two months to write. Their existing application code was then cross-platform without any modification, and will remain so going forward. They can also add domain-specific or just handy features to the language and have them work on all target platforms.

Argument Two: No one outside of Fog Creek knows Wasabi

So what? It’s a superset of VBScript. Good programmers can pick up new languages quickly.

Argument Three: Joel’s Statements are Internally Inconsistent or Incorrect

Some of these are true, but not the ones about Wasabi. His arguments about Ruby may or may not be valid, but that has no bearing on whether Wasabi was a good idea or not. Further, the advice/recommendations he gave his friend in the original article were about creating a new web application, not dealing with a six year old code-base. The problems are very different.

I don’t always agree with Joel, but all this furor over Wasabi is ridiculous.

List of Fallacies

September 10, 2006

Web Accessibility Lawsuit

September 10, 2006

Anyone who builds or maintains commercial websites should watch this case:

According to the National Federation for the Blind (NFB), the ruling sets a precedent establishing that retailers must make their Web sites accessible to the blind under the Americans with Disabilities Act (ADA).

Accessibility is not that difficult to add when it is planned from the beginning. However, I can see it being rather expensive to add on to an existing large site. If the NFB wins the suit, there will likely be a nice market for accessibility consultants…

12 Rules for Marriage

September 7, 2006

I’m not married (don’t even have a girlfried), but these rules seem like good advice. I was particularly struck by #2:

Be the guardians of each other’s solitudes. Not only do you need to give each other space, you need to make each other space.

This is a good rule to follow when dealing with anyone.

What’s Wrong with Computer Science Curricula

September 3, 2006

Philip Greenspun writes about What’s wrong with the standard undergraduate computer science curriculum. He makes good points, based on my experience in such a curriculum.

The new graduate has had four years of experience in tackling well-defined clearly specified problems that have been broken down into small tasks.

Yes. Assignments requiring any real thought or design were rare. I feel fortunate that I pursued my own projects – I know for certain that they were instrumental in my being hired into my current job. What always startled me was that my peers were satisfied limiting themselves to their schoolwork. I would expect more passion about the field to which you are devoting years of your life.

Graduates haven’t done much group work. Universities spend $billions on facilities so that students can sleep together; $0 on facilities so that students can work together.

We did a fair amount of group work, but in general it was group work for the sake of group work. It was rare for an assignment to actually require true group work. The exceptions were some of my better college experiences.

Lack of experience with user interface design and testing and no experience handling real users’ suggestions, complaints.

It is very easy to go through college without doing any user interface programming. I had only one course where it was required, and that was a graduate-level technical elective. Even there, the interface was of very secondary concern.

Our students should be able to study 48 weeks per year, …, and finish their bachelor’s degree in 30-36 calendar months

I would hate this personally. Graduates today will be working for 40 or 50 years – why compress youth even further? One of the best parts of college was that it did not take up all of my time.

I think a reasonable addition to the curriculum would be to replace some courses with extensive projects, one for each year. Together, the projects would provide a number of different experiences.

In year one, the student would choose a relatively simple project with the assistance of an advisor. It should be sufficiently complicated as to take the full two semesters to complete, but not so complex as to be overwhelming.

In year two, the student would take someone else’s project from year one and make a version 2.0. Ideally, the project should be in a different domain from their own original project. This would give the student experience in maintenance programming and dealing with other people’s code.

Years three and four would repeat this pattern, except that the students would work in small teams. The projects would be sufficiently complex that if students did not divide work efficiently, they would fail.

As best as possible, the combination of the four projects should cover a wide area of domains. User interface, networking, databases, security, testing, software design, maintenance, algorithms, data structures, and others could all easily be incorporated. Other skills are naturally developed in this model. Years three and four would require teamwork, while writing about and presenting their projects would develop communication skills.

Finally, all students would leave college having completed four sizable projects in different domains and likely different programming languages. Students should retain ownership of their projects, in case any have market potential.