Wednesday, April 30, 2008

Geography, law, and leaving things up to the states to decide

The problem here is not that some states are unusually incompetent or corrupt (I'm looking at you Texas), but because people move more frequently and federal law has ballooned into places where the original signers of the Constitution never envisioned. Take the current rather bigoted opposition to gay marriage and throw transsexuals into the mix: the equation becomes hilariously/tragically more complicated. Money quote from the NYT article on the subject (registration is free but I don't like to encourage sites to put up that trash, so I recommend BugMeNot, an addon for Firefox that you should try to only use legally):
Urging the United States Supreme Court to tackle the issue in 2000, lawyers for Christie Lee Littleton, a Texas male-to-female transsexual suing her husband’s doctors for wrongful death, noted the confused landscape: “Taking this situation to its logical conclusion, Mrs. Littleton, while in San Antonio, Texas, is a male and has a void marriage; as she travels to Houston, Texas, and enters federal property, she is female and a widow; upon traveling to Kentucky she is female and a widow; but, upon entering Ohio, she is once again male and prohibited from marriage; entering Connecticut, she is again female and may marry; if her travel takes her north to Vermont, she is male and may marry a female; if instead she travels south to New Jersey, she may marry a male.” The Supreme Court declined to take the case.

Friday, April 25, 2008

The real future of mobile GIS

This. This is it. Here are a pair of guys that have integrated spatial objects into video, allowing a user to pan around with a Android phone (or any camera probably) and have that information appear. Next step, combining that functionality with an artificial contact lens and, if we felt like being really sci-fi, possibly thought activated controls. The technology basically exists but requires the engineering for the best practical applications and integration. All of it would be noninvasive - no need for Matrix-style headjacks or major surgery - and it could just be taken off when you don't want to expend the effort. Then, integrate this kind of thing with existing applications like Whereyougonnabe and Twitter. Never have trouble finding your friends at a social event again, always know the efficient bike/walk/car path to follow, and the ability to immediately search and find anything interesting you want nearby. You could search around you in a fashion that you would otherwise need the internet for, finding friends in a wide-Facebook/MySpace network style and nearby interests by drawing resources from the largest repository of human knowledge ever conceived. Interaction wouldn't be far away. See a bad driver on the road? Vote them down and people will know to avoid him/her. Some area particularly dangerous and you will know. Which bar/club is currently overcapacity and not worth going to visit until later? What food on the menu is actually good? The simple fact is that eventually the concept of "spatial data" will not be discernible as something independent because nonspatial data will be considered so worthless by comparison.

Tuesday, April 22, 2008


This image is still less insulting than the comment I recently read on SA suggesting the only reason Clinton hasn't conceded (due to a nearly insurmountable Obama delegate lead) is that women are bad at math.

Edit: To qualify that "insurmountable lead" bit, lets take tonight's nearly double digit victory for Clinton into the larger perspective:

Obama now has 1723 delegates, Clinton has 1593.

There are 303 uncommitted supers and 408 unassigned pledged delegates, a total of 711. These means Clinton must now win 59.1% of the 711 remaining delegates to break even with Obama.

Before PA, he had 1650 to her 1508, and there were 869 delegates outstanding. At this point, she needed to win 58.2% of remaining delegates to break even.

So, after all is said and done in PA, Clinton must now take a 1% larger share of the remaining delegates to break even with Obama.

Monday, April 7, 2008

In a decade or two, anything less will be like being illiterate

I casually linked a 12 year old who is doing a lot of development on a major Javascript framework in the previous post. Here he is giving a talk at Google on jQuery. The tools will only get easier and the next generation will have no problem picking it all up with their sponge-like brains. There are four consequences of this that I can immediately think of:
  • More open source development. It looks great on a resume, there is a possibility of making a big name for yourself (publish something in academic journals, giving talks at Google, etc.) the satisfaction derived from contributing, and naturally you, like everyone else, get the benefits of the improvements.
  • Possibly a citizenry that can more easily identify logical fallacies. Perhaps nothing is more important for a democracy besides free speech. As with the open source stuff, people should demand more transparency from their elected officials, and even if they don't get it though official channels, they will always find ways to fulfill this need.
  • A greater appreciation for mathematics. Hopefully higher level math taught earlier, when the kids can absorb basically any information.
  • More rational discussion of basic scientific facts about the world around us. Less of this tragic, mortifying stupidity.

What language should you learn first?

The breakdown Read some stuff on the internet and you will see everyone has an opinion on which language you should learn if you are just starting to program. 1. Hippies: Python, Smalltalk, Visual Basic, Java. This school assumes most beginners don't need to know anything about pointers or garbage collection, and a lot won't at all. If they ever have to learn these things, they are better off picking it up after getting the basics of object oriented design and general logic down. 2. Masochists: C++, C. Learn the hard way and everything else will be easy. This school weeds out anyone not wholly committed to the idea of coding their whole lives. They'd have you do assembly if they had the time to proofread it and comment how terrible and hopelessly inept you are, assuming you can get anything to work. This method works best if you are a wunderkind that heads development on major Javascript frameworks at aged goddamned 12. 3. Pragmatists: C# or .NET in general, Javascript, maybe Java, whatever your company/school uses. It's possible you'll pick up the concepts necessary to be a decent programmer, but you need to be able to code several things right now and the theories of software architecture can take a back seat until you have more time. An of course there is mixing and matching, which is probably more common than any complete adherence to any school. My story I cut my teeth on C++ back when all the cool kids were doing it in high school, but when I started doing Running Start classes at the local community college in my junior year my embarrassingly poor math skills at the time precluded taking basically any CS course. I did manage to make a very inelegant Tic-Tac-Toe program with a pretty decent AI, but that was the sum total of my experience. The book I had probably wasn't a good idea to use (I picked it up at the remainder book store I worked for at the time). Later, when I got into Geography (and GIS specifically) I went through a slow evolution: from the moderately crummy visual ModelBuilder program in ArcGIS to VB.NET - the latter via a course my wife took before I did and aced - to Python, and finally now fooling around with .NET stuff but looking back at C++ again. Where to go now At the moment I am kind of between #2 and #3. The one professional coder I know insists I do some lower level (meaning, closer to raw machine language; meaning harder in general) language. Specifically C++, which he could then critique. This would be a really really good idea and is extremely nice of him to offer to do. Long run, I'll probably be a better programmer for doing it. At the same time though, I know a bit of C# already, everything in the office is .NET, and there is a really good chance I'll be using it very soon. Particularly because the small stuff I have written at work (mostly Python) is likely going to be kept around and maintained in some way. And that means moving it to .NET because no one really uses Python here. I'd have real projects to do as opposed to homework from my friend. Also, there are free in-house training programs for it. I'm almost certain to go with #2 because of the long term prospects of actually being good at this (which means versatility) and also because if I am hired on here as a GIS Developer they'll train me anyway. "Specific language is actually unimportant," I've been told. What matters is understanding what you are doing when you give a computer instructions, what object oriented design means, and good practices & algorithms. Anyone who knows the basics, logic, and elegance behind programming can pick up just about any major language in a day or two. My largely uninformed opinion on language C++ is actually scary as hell though, and never something I'd give a beginner. As other people have observed better than I could, C makes you do more work (garbage collection and memory management), higher level languages and .NET does it for you, and C++ appears to do it for you but can fail catastrophically if you don't know what is going on under the hood. Had I known about Python in my high school days I would have started with that, no question.