2007.08.29
Not the definition of “lean”
Downloaded the current version of Ant. Checked the script used to launch Ant – and found the script run every time I type ‘ant’ at command line is 326 lines long! Right.
Here is the entire script I need to run Ant (on Linux).
ANT_HOME="/home/preston/tools/apache-ant-1.7.0" java -classpath "$ANT_HOME/lib/ant-launcher.jar" org.apache.tools.ant.launch.Launcher $*
That is all. If I need more, I can alter the script. Altering the script – for a programmer – should be at least as easy as figuring out all the curious behaviours in the supplied startup script.
Here is the entire script I need to run Ant (on Windows).
@echo off @setlocal set JAVA_HOME=c:\tools\jdk1.5.0_10 set ANT_HOME=c:\tools\apache-ant-1.7.0 "%JAVA_HOME%\bin\java.exe" -classpath "%ANT_HOME%\lib\ant-launcher.jar" org.apache.tools.ant.launch.Launcher %*
There is one systemic fault that seems to affect all Apache and similarly organized projects. Products of those projects tend to get fat. Notions that are only slightly useful get stuffed into the code, and usually no one is brave enough to trim out the excess. Over time this makes the code harder to understand, steadily slower and fatter when run, and more likely to exhibit unintended side effects when changed.
Minimalism has no place is design-by-committee.
2007.08.17
User centered social networks
Social networking sites generally try to keep users trapped within a walled ghetto. Users are an asset. Sites do what they can to avoid sharing their user information. Sites often try to limit links out to other competing sites.
This is in direct conflict with users needs. Most ordinary folk are naturally members of many communities. You might be a parent of school age children. You live within a neighborhood, city, county, state and country. You might have interests in photography, genealogy, hiking, dating, religion, aviation – each of which is likely a largely-separate community from the other. Discounting the craze for kewl “handles”, you probably want to have the same basic identity – your identity – across all these communities.
Which makes this comment somewhat off target…
Google Working on Social Network Aggregator
From my perspective, I’m skeptical of a lot of the talk about social network portability because the conversation rarely seems to be user centric. … [snip]A real social network is a community and users don’t change communities at the drop of a hat. What I find more interesting is being able to bridge these communities instead of worrying about the 1% of users who hop from community to community like crack addled humming birds skipping from flower to flower.
Users interact with different “communities” all the time! Any one site is unlikely to capture (a loaded word) all of your interests. You might be unlikely to “hop from community to community” for any one particular interest, but for disparate interests – such “hopping” is almost guaranteed.
2007.08.08
Tanzanian Tech Support
Philip Greenspun’s Weblog » Tanzanian Tech Support
When checking into the fairly upscale Hotel Seacliff here in Dar es Salaam, I asked the reception clerk if there was an adaptor in the room for a U.S. power plug. He seemed confused, so I pulled out a cell phone charger to illustrate. He had been chatting with a woman on the other side of the counter and said “She will go up with you to show you how to make it work.”Once up in the room, this woman displayed a charming childlike ignorance of all things 90-250V. Her technical skills were not required in any case because the outlet next to the writing desk accepts European or American plugs directly. What was her ordinary job function? “I work here in the hotel for companionship and massage.”
2007.08.07
2007.08.03
Security flaws, e-voting, and reform
Let us get a couple things clear to start. First, the older paper-based voting process is insecure, and always has been. The security of the process relied on trustworthy people in the polling place, and upstream where the votes were collected and counted. Most of the time this works, but abuses do occur.
Second, adding paper-based records to e-voting machines – by itself – proves nothing. Paper-based records can be faked, either at the polling place (by subverting the voting machines), or upstream where votes are counted. Reverting to a paper-based process is not a solution … except perhaps to those parties who are comfortable with subverting the paper-based process.
So called “e-voting” is much worse – if done poorly. The point I want to make is that with “e-voting” done right, it is possible to make the entire voting process both more reliable and more secure than at any time in the past!
Cato-at-liberty » More E-voting Security Flaws
It’s far from a perfect bill. My preference would be to outlaw touch-screen voting entirely, with or without a paper trail. One of the biggest flaws in the legislation is that it will allow states to use touch-screen voting machines with cheap cash-register-style thermal printers in the 2008 and 2010. In my view, using cheap printers would be a serious mistake; thermal printers frequently jam, and the paper tapes they produce are brittle and hard to deal with. Using such cheap printers dramatically increases the danger that election officials won’t take the paper trail requirement seriously.Crucially, the Holt-Davis bill doesn’t require states to use touch-screen voting machines at all. States may, and in my opinion should, return to using old-fashioned optical-scan paper ballots. States have been using optical-scan technology for decades, and it has far fewer security flaws than computerized voting machines.
First, the above quote makes the mistake of focusing on the technology. Focus instead on the end result. You do not care what technology is used. You only care that whatever used is reliable. Second, reverting to paper (optical-scan or not) does nothing to make the voting process secure.
TheHill.com – The urgency of e-voting reform
The 2008 primary season won’t kick off until next January, but we’re ready to offer one surefire prediction for Election Day 2008. If our elected officials don’t move quickly, millions of Americans will make their choice for the next president on unreliable electronic voting machines without any paper record of their vote. Regardless of your political leanings, that’s a troubling thought.
Frankly, there is probably not enough time to fix things before the 2008 election. The government is not exactly known for fast and efficient action – especially when there are very few in government who understand the issues.
If similar problems crop up in next year’s presidential election, it will throw the country into the same kind of turmoil it experienced in Florida in 2000. Fortunately, Congress is currently considering a bipartisan bill, introduced by Reps. Rush Holt (D-N.J.) and Tom Davis (R-Va.) and co-sponsored by a bipartisan majority of the House, that would require all touch-screen voting machines in the 2008 general elections to produce a paper record of each vote.
Voters would have the opportunity to review and approve the paper record before he or she leaves the voting booth. To ensure that the paper records are not just an afterthought, the legislation mandates automatic audits of at least three percent of all votes cast. If there’s a glitch in a voting machine’s software, the audit will uncover discrepancies, and alert election officials to conduct a manual recount of the voter-verified paper ballots.
The desire to make things better is encouraging, but a paper trail – by itself – proves nothing.
From an engineering point of view, this is a simple problem (though with aspects that require careful thought). What we lack is understanding in government that this is an exercise in engineering, and a focus on pulling together the right people.
Java’s Fear of Commitment
People Over Process » Java’s Fear of Commitment
Java is a general purpose, object oriented programming language. It’s roots in early 90’s object oriented theory, more importantly, the desires and goals of that theory can’t be overlooked when asking why Java is the way it is. The culture of Java design is to push out commitment to a given way of doing things (an “implementation”) as much as possible. In Java culture, dependencies, esp. conceptual ones, are nasty and to be avoided. They’re taboo, even.
The problem with Java … is not with Java.
To over-simplify – as skill increases, programmers learn increasingly useful abstractions – procedures, objects, classes, metaprogramming, etc. The final lesson is to learn minimalism – how to solve a problem in the simplest and clearest fashion possible. Most programmers make it only part way up the curve.
Repeating what I have said before:
Preston L. Bannister { random memes } » Xen, Java and Web Hosting
PHP – the most commonly available alternative – has a low threshold for entry for new programmers, and the resulting works largely reflect this. Lots of projects get started, generate early/flashy results, then bog down. Look inside and you find the code is a mess. Pretty much what you would expect from new, enthusiastic programmers with limited skills. (Admittedly I wasn’t impressed with the internals of the PHP interpreter either). PHP is good for small/simple webapps, but beyond that is less desirable (my opinion).Java projects tend to have a different malady. The threshold for entry with Java is a bit higher, and requires that you understand abstractions. Perhaps not surprisingly, the quality of Java code tends to be higher, with the common failing of too many abstractions. Occam’s Razor: Do not multiply concepts beyond necessity – could be more often applied in the Java world (about which Bruce Tate has written well).
Java is a wonderful base for a skilled programmer. Java is efficient and eloquent – with only the less-mature .NET platform as a challenger. Java does not require you to use extraneous abstractions – though it certainly makes them easy to write. The Java community offers a flood of abstractions – some useful, and some less useful. You simply need to exercise good taste in chosing what to adopt in you projects and personal practices.

