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.
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.
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…
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.
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.
I gave myself a haircut today. I’d not done it myself before, but decided to give it a shot. I was going to enumerate the most difficult parts, but realized the whole thing was pretty difficult… For a first attempt, I think it turned out pretty well. It’s not 100% even, but it is close enough.
I’ve been meaning to get a personal site going for a while, as there are things I’d like to write about which don’t fit into my business site, skti.org. I’ve not decided on which blog software to use, but wanted to get started. So, I’ve thrown this site up on wordpress.com, and we’ll see how things go.