Thursday, December 28, 2006

Zed Shaw

Zed is king of the internet...for now.

If anyone out there is using this newfangled Ruby on Rails framework, Zed's (open source) Mongrel product has become the de facto container for running your app. It's a tiny little c program, and dead fast and stable. He co-wrote a little PDF on it that I had printed on a pillowcase. It's so comforting to know that my apps are running on Mongrel that the pillowcase serves as a little reminder so that I can go to sleep- without a glass of wine and one of those little blue capsules.

For a more general interest look at why Zed is such an interesting character, check out his essay blasting Joel Spolsky and Don Norman's articles on simplicity vs. complexity. If you aren't following that "debate", good for you...I'll summarize though- some people think simplicity is good. Some people think complexity is good. The people that are right think that good design makes complex tasks as simpler as they can be, but no simpler.

Friday, November 10, 2006

I love Joel's send up of management consulting applied to software development through the use of metrics.

My question is a real one though. The CEO of one of the places where I work as a "working" consultant (in terms of actually doing productive work, not just analyzing what other people do) just downsized a whole bunch of smart people. He wants to look at our metrics- including things like customer satisfaction. That's going to be tough to measure. How do you measure customer satisfaction in such a way as to rate people on it?

I think step one for me is figuring out who my customers are...I am taking over a project that one of the downsized guys was running, and I haven't even met some of the key stakeholders. When I do, I am going to be sure to remind them to send a monthly note to the CEO reminding him of how satisfied they are! If he gets 5 or 6 of those notes per month, that would be a good metric.

Of course, then the only way to show continuous improvement is to increase the number of messages, or the intensity of the satisfaction they convey. So, I guess I should only tell one person the first month, and then two people the next month. And, I'll need a satisfaction score in order to quantify the satisfaction level. It should probably be an integer, so that it can go negative to indicate dissatisfaction, not that I would tell any of the dissatisfied to send email, they would just do it on their own anyway, and could include a little number. Then he just sum the satisfaction level to get total satisfaction index. With multipliers added to gauge the relative importance of the people that are being satisfied, maybe the multiplier would be their salary divided by 100k.

Hmmm, I don't know how else to do it, but I am afraid if I pose this, I will look like a sarcastic jerk...even though it's just the best I can do sometimes.

Wednesday, October 04, 2006

Rails for Java Developers- beta book

I just started reading the early beta of Rails for Java Developers. It's a new book published by the Pragmatic Programmers and written by the Relevance guys- Stu and Justin. Perhaps the most shocking thing is that they have time to write a book. I have been lightly involved in the review process for O'Reilly's upcoming "Rails Cookbook", currently available as a Rough Cut. It's a lot of work to stay current with a moving target and make sure all of the code works.

As far as the book goes, I think it really is going to fill a gap in terms of being a reference for people that know how to do something in Java, and want to know what the equivalent thing is in Ruby on Rails. It's like those options in a new version of a product to see the menus for the prior version, so that you know where to find things. Of course, I haven't tried much in the book yet, so I can't speak to it's quality, but I like the tone and the approach so far. It appears to be just over half way to their 300 page target, so, there's a lot to do before Nov.

Tuesday, October 03, 2006

Google Enterprise Professional- on earth

Google's expanding their partner program to include "Google Earth Specialists" Spatial Energy. Noah D. wrote a brief note on the enterprise blog. Our company joined the partner program initially to do things with the search appliance, but maybe the earth appliance is around the corner.

Spatial Energy looks like they have an interesting angle. It's a good match for companies with a lot of experience in imagery and orthorectification to get involved with Google Earth Enterprise. If you want to make a good looking globe, you need some good looking data. Their focus is in the energy market, where perhaps the inability of Google Earth to look underground will be felt more acutely? If anyone in the energy community is in Houston on Oct. 18, they are doing a seminar that is going to cover a few topics, including SketchUp integration.

Tuesday, September 26, 2006

GE COM API...beta

Hey, it's finally a beta, and documented. Cool! Still really limited, but if you want to control GE with another program, here you go.

The announcement...

Tuesday, September 19, 2006

Updates to Google Earth COM API

Well, they haven't documented it yet, so I am guessing it's still not stable, but there are additions to the API in the recent versions of Google Earth, and the library has been renamed to EARTHlib, versus KHlib. For starters, it looks like they are renaming the objects to have a GE suffix, versus a KH prefix (e.g., KHFeature to FeatureGE). By keeping the old ones around, they may be doing a quiet kind of deprecation. The new GE objects have more properties to access and support some more methods, but don't really add a massive amount of new capability at first glance.

The ApplicationGE class which is the primary class used to inspect and modify the current state of the running application adds a few features to the old KHInterface class. You can now access the lists of items in the layers controls, the current status of the streaming, login/logout and do a few things with popping up balloons.

FeatureGE adds the ability to highlight, get the feature's name, and get parents and children to the old KHFeature class. A FeatureCollectionGE class has also been added, it's just a strongly typed list.

CameraInfoGE adds the ability to grab the FocusPointAltitude and FocusPointAltitudeMode (absolute or ground relative) to KHViewInfo.

We've seen this interface get a lot of use from things like the cool SketchUp! integration and a lot of the remote control plugins. I am still waiting to be able to use Google Earth to control other applications. I understand their reluctance to open up their beautiful interface to the button overload that will surely result, but I really don't think your average user will be downloading all of the plugins...

Sunday, September 17, 2006

getting paid...

Just read this rather amusing Chicken McNuggets bit [link at end] from HBO's The Wire, and it resonated because I was just signing away part of my intellectual property rights to the work I do...or rather trying not to. Of course, it probably took more than one guy in the basement to come up with the mcnuggets, but it's highly unlikely any of them getting paid for it. It wouldn't take much of a percentage, per nugget, to be rather well off.

Of course, there may be some associated guilt with creating an unhealthy food, but they do save a lot of time. I mean, all of that time saved not having to pull all of the skin, bone and fat off of the chicken could approximately be equal to the time shaved off of your lifespan by consuming the partially hydrogenated blended version of the skin, bone, and fat. (There may be some meat in there as well, it's hard to know.)

Anyway, don't be the McNugget guy. If you don't care about getting paid for your ideas, you might want to at least MIT-license them, so it's harder for other people to get rich off of them without adding their own special sauce.

Warning: Link from NIVI Blog contains offensive language. I am pretty sure this isn't really family blog, although Google Analytics doesn't tell me how old you are, yet, but if your every click at work is analyzed and the stream is then fed into the old raise-o-meter at the end of the year, it's probably good to keep the premium cable content to minimum.

Friday, September 15, 2006

GE timeline...

Yes, this update is very cool. Three lines of code added to my little Ruby application with XML builder to support it:

xml.TimeStamp do

gets added to every xml.Placemark do



Which gives you a pretty floating toolbar...
that animates your map view. This was in the old enterprise client, but a little buggy and nowhere near as pretty. In a!

Wednesday, September 13, 2006

Piling on old Joel

Joel Spolsky, famous for the Joel on Software blog, is a funny old man. He's been doing a lot of hating on Ruby and Java for a while now. His latest complaint about Ruby is comes down to the fact that it's not fast enough for big calculations. I guess we are all missing something- but what big calculations is his bug tracking software doing? Does it fix the bugz in your code?

Most Rubyist use c extensions in those cases. I used to drop out of Avenue to call signal propagation algorithms written in c++ rather frequently. Even in Java, we used JNI calls in various places for image processing code. And then the c and c++ programmers drop into assembly for the truly ludicrous optimization requirements. And then we buy an FPGA and do it in hardware. Has anyone tried orthorectification with this stuff from Cardio Logic?

In his quest to have a flexible high performance language, Joel is actually using a custom language based on VBScript (that compiles to...VBScript) for his little web app. To ease deployment. And it's called Wasabi.

Dion's satire is amusing but I have to point all to Jeff Atwood's excellent deconstruction over on Coding Horror. A snippet:

"For instance, two weeks ago we found out that Joel's company wrote their flagship product, FogBugz, in a proprietary language they created themselves.

FogBugz is written in Wasabi, a very advanced, functional-programming dialect of Basic with closures and lambdas and Rails-like active records that can be compiled down to VBScript, JavaScript, PHP4 or PHP5. Wasabi is a private, in-house language written by one of our best developers that is optimized specifically for developing FogBugz; the Wasabi compiler itself is written in C#.

You couldn't possibly have heard it, but that was the sound of fifty thousand programmers' heads simultaneously exploding.

Writing your own language is absolutely beyond the pale. It's a toxic decision that is so completely at odds with Joel's previous excellent and sane advice on software development that people literally thought he was joking. He had to write an entire follow-up post to explain that, no, he wasn't kidding.

So, should we all continue to pile on poor old Joel? I have been looking at his stuff with a much more sceptical eye this year, but I am thinking about not looking at all anymore...sigh.

Monday, September 11, 2006

Use migrations outside of Rails

If you haven't read Scott Ambler's Agile Database Techniques, I recommend it. I didn't realize how spoiled I was to work on projects where the database could be create by scripts, until I worked on projects where an evil DBA controlled all access to everything. It was some small comfort to see "all access to database through stored procedures" as one of the problems to be handled with legacy systems in the book. I haven't read Refactoring Databases yet, but it's somewhere on my todo list....

The next step, once you have the database scripted is scripting the changes to the database. The Rails ActiveRecord migrations approach is really cool for this, and there is no reason it should be applied outside of Rails, as Dion points out... Basically it gives a way to step back from any change, in addition to scripting each changeset to the database. Beyond all of that, it gives you a database neutral method for describing the database itself, making migration to another database platform more of a possibility.

Is the biggest danger of having a DBA on an Enterprise Application that they are going to write code that locks you into a technology? No- I think the bigger danger is that they are non agile and that they won't know how to deal with changes to the database that occur at the rate agile projects demand.

Spam 2.0

Spammers are apparently now creating spam tickets in open online bug tracking systems, and then linking to those spam tickets other places. Justin's bug tracking system is being hit by really sucks. Everything Web 2.0 style, with users adding content to your site, is going to need a Captcha system, in addition to all of the cross site scripting and other security measures.

The whole Captcha thing, it is an inverse Turing Test- one where people are trying to prove they are people to programs (versus programs trying to prove they are people to people). It's getting pretty hard to do- machines are getting better at reading those fuzzy images. I don't know when they'll be able to solve the hot or not one though. I have trouble with those... Even crazier is that people are solving Captcha for spammers to get access to porn...crowd sourcing. I wonder if people are using Amazon's Mechanical Turk for this?

I am saddened to be getting more traditional spam slipping through my GMail filter. First it was complete nonsense, now it's idiotic pump and dump stock schemes and the usual prescription drug and sex stuff. It's making email far less relevant to youngsters that prefer chat- it's harder to spam, for now. Pervasive advertising...bleeaaurrgh.

Wednesday, August 23, 2006

Enjoy Baking

I love this quote from Ian MacKaye, as quoted by, as quoted by the 37 signals guys in Getting Real:

The bakery
American business at this point is really about developing an idea, making it profitable, selling it while it’s profitable and then getting out or diversifying. It’s just about sucking everything up. My idea was: Enjoy baking, sell your bread, people like it, sell more. Keep the bakery going because you’re making good food and people are happy.
–Ian MacKaye, member of Fugazi and co-owner of Dischord Records
( from People | Ian MacKaye)

I enjoy baking (software). I think if you are running a services company- you basically have to like it. Now that we've built up our little business to a fair number of people on staff, why would we sell it so that everyone could go back to working for a big company that didn't appreciate them? I'd rather buy up someone else's business.

Friday, August 11, 2006


There are a few results on google for "GIS cookbook"- not much of substance.
A rundown of a couple...

I did find this CSISS cookbook: It's got separate recipes for ArcView 3.x, 8.x and 9.x, and not really a cookbook, as noted by a slashgeo commenter. However, it's about the best there is and widely referenced.

There's an Arc/INFO one:=Slightly dated and very small. But still good

There's a Swedish/Phillipine one being put together for Local Govt Units...can't find the actual book, but it sounds like something useful.

There was ESRI UC paper in 2003...

I have some ideas about what might be good to have in such a cookbook- having enjoyed a few selections from that O'Reilly series, including the recent Ruby one. Maybe a collaborative web site would be a good start. Several promising places to stick such a thing.

Thursday, August 10, 2006

Documentation and Doing Something

Are your users stuck in "P" mode?:

For most of us, the problem was NOT that we couldn't learn how to use anything but automatic "P" mode. The problem was that we didn't know why or when to use anything else.

It wasn't simply a camera problem--it was a photography problem. The camera manuals describe precisely how to turn the dials and push the buttons, but never tell us why we'd want to. They focus on the tool rather than the thing the tool enables (taking pictures). What good does it do to master a tool if we haven't understood (let alone mastered) the thing we're using the tool for?

Sounds a lot like some of the new ESRI effort around documentation that was announced at the GIS Faire/User Conf...I think the user community aspect is big too, whether it's a conference or a BBS to share data on, community builds that common knowledge amongst users that can grow far beyond what the actual creators of a product know about what can be done with it...

I think about the tutorial style of books with a big example to follow, versus an API reference. Or the cookbook to X. Have any GIS books come out with a Cookbook approach? The closest thing I have seen is GoogleMaps Hacks- a neat collection of things to do with maps.

I think it is useless to argue about what is or isn't a GIS. For example, I have seen it written in a couple of places that Google Earth isn't a GIS. It certainly seems to meet the literal definition. I think Google Maps is a GIS as well. Why waste time with the label when you can just talk about specific capabilities?

Monday, August 07, 2006

Google Earth Enterprise...

I have been using Google Earth Enterprise for a while- mostly from a consulting/developer/support role, not as someone that keeps a system running on a day to day basis. I also have to be careful with what I can and can't say about these things due to various agreements under which I am signed up.

Thus, it is cool to see someone who is a daily user blogging about it on a regular basis.

A recent post over there was asking about differences between working with GEE, versus other server GIS applications.

One point that I would add as a difference that takes a while for people that have a lot of experience in the ESRI world is that the build process is quite extensive. It takes quite a large amount of CPU cycles and disk space to build the base map data into the database- hence the reason for building the base data on some kind of weekly or greater frequency. (You use KML for stuff that changes frequently.) The payoff for this increased build time is the remarkable performance that users experience with the Google Earth application. Everything is really well precalculated for display, so you end up with a great user experience, at the cost of a not insignificant amount of labor on the back end to keep things moving. Still, it is something a lot of customers have taken some time to get their heads around, because they are used to expecting real time data in the base map. It's a very interesting architectural tradeoff analysis.

Data Monopoly, but open n-grams

I know people in the GIS community have been talking about the Digital Globe data deal with Google for a while, but it is interesting to see it begin to intersect with Tim O'Reilly's Open Data concept... One thought- at least when Google licenses data they show it to you- when the govt gets its hands on things. Still, an exclusive license on data does sound somewhat monopolistic. Will a future Google anti-trust case be fought over data?

"....portions of DigitalGlobe's imagery data has been licensed by Google for exclusive use in Google Earth/Maps.

...reminding us of Tim's argument that Data is the next Intel Inside -- a source of competitive advantage. The question is of course whether this competitive advantage should be granted for exclusive use or whether the data itself will eventually be regulated by anti-competition laws."

The killer advantage of Google Earth is the data. It's a great application, but the cheap data is key.

Google has lots of data. In one of my previous jobs in computational linguistics- we would have had a lot of fun with their release of n-gram data *really it's 1,146,580,664 5-grams. I have been quite impressed with Google's statistical machine translation... I am looking forward to what they do with information extraction. Hey- at least the data is free. (And it's not the personal data AOL is giving out. Poor old AOL...trying so hard to get "with it". bye!)

Saturday, August 05, 2006

Ruby Cookbook, Joel, Google, LISP, Stu, Scripting

[long linky post...] I've reading/trying out the Ruby Cookbook this week. It's pretty amazing, and keeps getting in the way of the boring parts of my life, like the rest of my todo list. 850+ pages of cool stuff. Just the list of things you can do on the "Offical Unofficial Site" should give you a good idea of what it is capable of...

My KML Builder script keeps getting better and better- I am feeling confident enough now to build a GML script...okay, not that good yet. For the unitiated, Builder is a cool library that lets you write XML like this: {
x.year "2006"
x.month "01" "01"

which makes:


The guy who wrote Builder, Jim W., it got the idea from Groovy, the Java scripting language, which has something quite similar. Fortunately not patented... Anyway, while the above example is really simple, just having it in idiomatic Ruby makes a lot of other cool things possible.

Speaking of things possible, Joel S. just wrote an interesting article which has pointed out some of the cool features of JavaScript (and ActionScript!), amongst other languages that treat Functions as Real Things. It's kind of like function pointers, but more flexible.

One of the upshots of this that Joel points out is that this kind of knowledge is required to understand things like Google's MapReduce (nothing to do with Cartography, btw)- which is why he is dismayed that Java is the instructional programming language of choice at the university level. Hey Joel- at least it's not PASCAL and Modula-2, not that I don't have a soft spot for TurboPascal. I know we can't all go to MIT and learn LISP, but maybe we should, now that this is available... I am thinking about recommending this to every developer in my company, am I nuts?

On that note, as Stu Halloway pointed out in a Ruby class that I scheduled for my company and my clients this week- Ruby is getting close to meeting Paul Graham's ideal programming language that has all of the nine ideas of LISP. By the way, Stu is an amazing instructor. If there is something that he knows about that you want to know about, I would make all efforts to get him to teach it to you. His knowledge of subjects is quite deep- and he brings all of that depth to the surface.

So, what does it all mean? We are approaching VB for the Web- Dabble DB is hot stuff, as is Rails, of course. We are are figuring out the basic operations of the current technology wave. It is getting to the point where the code that you actually need to write is potentially expressed in the language of the business- aka Domain Specific Languages, DSLs. Was the Arc/Info command line a DSL for GIS?

I spent all of this time trying learn "the right way to do things", which was about formalism and complexity, and now I am back to striving towards simplicity and writing things in scripting languages. The subtitle of the Ruby Cookbok? Recipes for Object-Oriented Scripting. My life is getting easier. Is it getting so easy that I am going to be redundant? This is how not to get outsourced- learn about what the mission you support is really trying to do- this technology stuff is going to be in the box soon! (hahahaha)

It's also about marketing yourself. I don't have much of a brand yet. Anyone want to write a book on Google Earth with me?

Friday, August 04, 2006

Information Week on Flex...

Charles Babcock in Information Week wrote a horrible article on Flex2 last month that I just got around to reading...I love the use of the word "cranky" in relation to JavaScript. I have heard about cranky developers- but the language has always seemed rather good natured to me, although I can't say the same of the IE engine it runs in. The bit about the proprietary version of the international standard is also nice- reminds me of J++.

....Flex 2 implements a new version of the Flash scripting language, ActionScript 3.0, a proprietary version of the international standard EcmaScript. ActionScript competes with Ajax' notoriously cranky JavaScript and surpasses it when it comes object-oriented behavior...

And then they drag Mr. Raad into the debate- where he bluntly displays his view on the whole static vs. dynamic typing debate. I like Pragmatic Dave Thomas' thought on the matter- "once code hits the network, all typing is dynamic."

"ActionScript is a much more powerful language," said Mansour Raad, chief architect for a unit of ESRI, the supplier of geographic system services and software. ActionScript in its third version traps programming errors and enforces variable typing, which lead to clearer runtime results and avoids some tampering exposures. JavaScript, in comparison, "is kind of strange and loose. It let's you do anything you want and continues on its merry way."

Mr. Babcock didn't interview the pragmatic one, of course. But then, he's got think of the advertising dollars.

Don't get me wrong- I think the Flash player is very cool, and a good thing overall- see AFLAX, the various JS wrappers, using it to do XML parsing, etc. I think adding ActionScript and Adobe's XML variant into the development mix makes it not something I would want to do. I wouldn't touch the server side stuff.

I also like seeing Flash inside of an html container, interacting with the page. Having your whole app be a .swf seems silly. I think we should see more widgets like Adobe's cool charting widget- and less of the rest of it.

Sunday, July 23, 2006

Flex2 is a zombie technology

And by zombie I mean- it's already dead, even if it looks like it's walking around, propelled by force of vivid marketing campaigns while feeding on the brains of gullible programmers. If people want to make use of Flash- this is the best way to be doing it- wrap it in JavaScript.
Ajaxian JSSoundKit: Super-Easy Sound API.
JSSoundKit wraps the Flash Sound object, making it easy to incorporate sound into your Ajax apps. Really easy, in fact:
var mysound = new Sound();
mysound.loadSound("", true);

The server side pieces of Flex are useless- there are a number of general purpose web application frameworks that do everything it does, and don't lock you in to Adobe server side technology. The ability to take advantage of the widely installed (although with a great variety in versions, if my web stats are to be believed) Flash plugin is best when it is an optional thing.

I have seen some very nice looking interfaces done with Flash- but in reality I see it as nothing more than a good widget provider. Their server side story just doesn't resonate for anyone doing .Net, J2EE, Python, PHP, Ruby etc. (with the possible exception of un-reformed ColdFusion developers and those doing COBOL on Rails). We've come such a long way to get nice URL addressable content (aka web services) in web applications- let's not give it up for some fancy widgets that come with the trojan horse of a clunky server side communication piece. I am making a pact with anyone that's willing to listen- don't learn Action Script: friends don't let friends do MXML.

I don't know where this rant leaves OpenLaszlo and such things, but I have a feeling these guys should start selling easily integrated widgets and stop building web application frameworks.

Saturday, July 15, 2006

Dealing with Meaninglessness

For all the coders out there, Coding Horror has picked up a great theme- Separating Programming Sheep from Non-Programming Goats. Some blokes from Middlesex U have devised a test (descibed in this paper [pdf]) that is strongly correlated with programming ability. Their interpretation is that the ability to create a mental model of basically meaningless rules is what allows people to grasp three primary "hurdles" of comp sci: "assignment and sequence, recursion and iteration, and concurrency".

Having a philosophical bent, I can see this extending beyond programming. It's not just an ability to deal with meaningless symbols and rules, it's also the willingness to deal with these things that makes people capable of making computers do things. I used to see this as a kind of patience, the kind of patience that lets you use early versions of products, or old ones, but looking at it in terms of the ability and inclination to focus on pure abstractions.

Having been a TA for introductory c++ courses at university- it was obvious that some people were going to take a long, long time to get the basics. But the problem is, programming is generally not one of those things where you learn something, and then do it. You have to keep figuring out things again and again, so if you aren't good at learning it, you probably won't be good at doing it. You can't study your way to the top...

Friday, July 14, 2006

Porting Google Earth to Linux

FLOSS Weekly with Chris DiBona | TWiT.TV

This podcast with Ryan Gordon has some pretty cool bits where he talks about his work with Google porting Earth to Linux., as well about being a game developer porting things to Linux. I think it is pretty amazing how they were able to do this, this guy's whole approach to porting to Linux is something special. It's amazing that he can deal with all of the oddities of the Win32 API...

Why don't all podcasts come with transcripts?

Making a Rails server, parsing KML in JS

If you are doing Rails, this is a pretty good way of doing it (Mongrel+Apache+Capistrano). Fast and stable...

I had to bail out on the Cartographer plugin because doing stuff like:

<%= gmap(:mapname=>"my_map", :width=>"50", :height=>"120") %>

<%= gmap(:width=>"500", :height=>"500", :type=>:satellite, :point=>[-122.14944, 37.441944]) %>

just isn't enough easier for me. I kept having to look at the generated JavaScript, since there was stuff I just had to tag in there. I did finally start parsing my own KML in there with the GXml parser, however, it's definitely faster to just generate JSON on the server side if you are doing anything with a lot of data. However, the capability to parse a fair subset of KML is worthwhile, so I am not throwing it away just yet.

GIS discussions....

Ogle Earth: A blog about Google Earth. « GIS: What's there to talk about? »

I think the fact that many of people's posts are just kind of newsy contributes to my lack of interest in commenting on their site. There's a certain amount odiscussionon that can happen around facts, but most discussion is about opinions and analysis.

I find discussions where people are just slamming other products/people/companies/technologies particularly tiresome, but there's a lot more respect in the GIS community. For example, while Stefan writes about Google Earth, he doesn't spend a lot time trying to talk down World Wind and Microsoft and ESRI. On the other hand, the most attention I tend to get is when I say something negative about something, like whining about the unnecessary complexities and oversights of GML..

Another aspect is the trackback concept.I wishsh it worked better in Blogger so that I could just add a post to the discussion on my own blog and have the link show up on theirs.Damnmn those spammers.

Monday, July 10, 2006

A couple of Ruby/Rails GIS notes

I am adding some simple GIS stuff into my Rails app today.

Cartographer: Google Maps Helpers for Ruby on Rails looks like a pretty good plugin to add a map into your codebase. I'll see how it goes...

The MetaCarta Geoparser API has also been wrapped by the robot co-op guys. I am really liking the approach taken by the new MetaCarta Labs stuff. In particular, I like the REST over SOAP approach. The number of lines of code required for SOAP is just ridiculous in proportion to the benefit gained. One of my guys was working with their SOAP interface this morning, and while SOAP4R's WSDL2RB script is the way to go (it's kind of like AXIS for Ruby)'s just not necessary for what we're doing.

I am sorta disappointed that the KML support for Google Maps requires a public website to host the KML so that it can be parsed out on their server. I guess it's just too much to process in the JavaScript?

Saturday, June 24, 2006

France unveils national rival to Google Maps

Not being able to log in, it's difficult to get many real details, but it seems like lazy journalism to call a rival to Google Earth. The Reuters piece even implies that Google Earth is a website. (Although, one could be forgiven for confusing the ever expanding, slightly disorganized product offerings of the Googleplex, it seems more likely that they accepted the assertion of the press release without the faintest concept of fact check.)

Perhaps, rather than making more portals, it would be more useful for countries to provide data services, as Stefan over at Ogle Earth suggests. Of course, you could then start data format wars, but at least you can adapt and convert your way around many of those. Given the web site launch difficulties, it would seem unlikely that these folks are going to be able to throw a 3D version out there in the autumn.

ESRI ArcGIS Explorer beta shots have been looking quite nice. I wonder how much data they are going to provide in their initial release? It seemed like the product was already in decent shape at last year's user conference, so we can hope that the intervening year has been spent acquiring and combining data...

I am really looking forward to seeing how you can customize the client. That's one of the bits of Google Earth that is quite obscure, even in the enterprise version. I can understand the reluctance to let people clutter up the toolbar with 1000 buttons, which would interfere with the simplicity, but I have one button I'd like to add....

Wednesday, June 14, 2006

An Outlook to GCal solution

So, you get your work invites sent to your exchange account and you want your outlook calendar to update your Google Calendar....what's the simplest thing that could possibly work?

Well, you can take advantage of the new ability for items received in gmail to be automagically entered onto your google calendar- just make a rule to forward all invites to your gmail account, and invite your gmail account to all things that you schedule. I was already adding myself as an invitee to all of the things I put on my Outlook calendar so they would pass on to my Blackberry, now GMail is another invitee. It has been working out swimmingly so far...updates to follow.

Thursday, June 01, 2006


This thing is pretty interesting- a timeline view of the changes in income and life expectancy over time. It's a little bit Flash-y, but it's very cool to watch countries like China and Korea shoot forward in prosperity. Question- is it better to have a short and prosperous life or a long impoverished one?

Found it on MoMB...

Monday, May 29, 2006

Simply do a complex thing, with content

(I know in the blogoverse they call it a meme, but in the big media world it's just ordinary that everyone writes about the same thing). I keep running into articles, like this one on, based on a J.D. Power survey indicating that people think cell phones are too complicated for their needs. This is true for a number of people in my family- big buttons, bright screens you can read in the sun, loud ringers, one touch phone book- those are the features they're interested in.

Usability is important- and yes a lot of people don't use most of the stuff on the phone. Back in my youth, or 10 years ago, or sometime, I remember the GIS greybeards scoffing at ArcView because it didn't do anything useful. They were slightly appalled that my team had hacked it up to do coherent multi-user editing (end users weren't allowed to create geodata back god, they don't even know about albers equal-area conic, how can they click on the map and make data?). It was a heck of a lot of work to make that easy.

I think people are waking up (again?) to the fact that it is hard to simply do a complex thing, and maybe even realizing that it's even harder when you are trying to do "too much".

DVD vs VCR- Is the DVD player more usable than the VCR because it is not a recorder? I almost never have my parents call me for DVD player help. Most VCRs I have used require you to turn the unit off to enable the timer based recording. Maybe it's there because someone in some meeting raised the possibility of problems with accidentally taping over treasured personal recordings, but it seems more like insanity. I really shouldn't have to turn something on to make it work...

We now have a purpose built device that lets people do what the record part of the VCR was supposed to do- record tv when you weren't watching. Surely it will soon be a relic of the broadcast age soon, but the DVR really is the true answer to the problem. I don't want to figure out when my show is on every week- I want you to do it.

I don't quite understand the XM radio recorder (DAR?)- unless you want it just to skip bad songs or you could program in artists you wanted to record. In fact, if someone can figure out how to figure out what song is coming next, you could make an actual Tivo of everything on XM. Almost makes you understand why the RIAA has sued them. Actually, you don't need to know the program schedule ahead of time if you just record a small buffer of the channels of interest so that you could keep the songs you are interested in once the artist information is transmitted. Anyway, when it gets to the point where I can type in "Clap Your Hands Say Yeah" and then have them in my queue to listen to...

The question of the non-broadcast future is- who's the DJ? If we are all getting content on demand- who is telling us what to demand? Well- we end up getting broadcast things from sources we trust, like trusted reviewers, our friends, blogs, that give us things like mp3s we should listen to, that lead us to content to demand. Are bloggers the DJs of the on-demand era? I guarantee I am not the first one to have that mundane thought, but I am too lazy to Google any others at the moment...

Wednesday, May 17, 2006

Wow - google web toolkit

This is something new:
"Google Web Toolkit - Build AJAX apps in the Java language"

You write (and debug) the web app, in Java, and this thing "compiles" your code into JavaScript and HTML. It's probably more accurate to call it a JavaScript/HTML code generator. Plus a framework of sorts for dealing the with traffic.
turns things upside down. I have been playing with Dojo and using Prototype and Scriptaculous, but this is more like RJS, the new JS generator in Rails 1.1.

This would have really appealed to the me of three years ago that had no interest whatever in learning JavaScript. I was perfectly happy doing I am getting back into the dynamic/scripting thing that I had abandoned for Java, and I don't need this as much, but it is still a useful idea.

Downsides, needs a lot of pretty. Upside- the back button handling and most of the API is well done. I may have to look into how it might be used on a java web project I work on occaisonally...

Monday, May 15, 2006

Lawyers, Genetics, and the Wiimote

Signum sine tinnitu--by Guy Kawasaki: The Top Ten Lies of Corporate Partners: "4. “Our legal department won’t be a problem.” In other words, the legal department hasn’t seen the proposal yet. There are two kinds of legal departments in large companies: (a) the kind that automatically says, “No,” when asked, “Can we do this?” (b) and the kind that automatically says, “No,” when asked, “Can we do this?”"

I am not really looking forward the day when I need to run everything by the lawyers. It's not that I don't like lawyers or legal thought, in particular examing all of the possible scenarios that must be addressed in a contract is something akin to figuring out all of the possible input conditions on a piece of software. You even get to write up those scenarions in language that most people can't read. I just don't like how it tends to make small points define business direction- especially when people don't want to do something because they don't want to go through the trouble of asking the lawyers.

Of course, I learned everything I know about law from Phoenix Wright: Ace Attorney. I would like to see more realistic scientific games- it would be more fun for me to solve cancer than do a cross examination- "Tucson Wright: Ace Geneticist". (somehow, re-mission doesn't cut it.) You could use the "Wiimote" (is it really called that?) to pour stuff from beaker to beaker.

I defy anyone to watch the Nintendo Wii promo video and not be impressed by the fun factor. I like the whole marketing philosophy behind it- focusing on the fun factor and letting the other companies worry about pixels and polygons and frames per second and exploiting the hardware. Of course, the combination of both manages to be exciting as well. I have heard of all of these virtual globe applications that aim to be both fun to navigate, and push the limits of what can be displayed. It would be fun to use a Wiimote style controller in Google Earth- I am getting pretty pretty proficient with the middle button, so much so that I don't know what to do when using it on the Mac.

The only thing missing is cool sound effects when panning and zooming around the globe. Maybe someone should build a little plugin that puts a soundtrack behind Google Earth. It would play cool effects when panning around? The music would get faster when you pan faster? It would get more intense when you zoom in? It would music of the area you were currently zoomed in over? That's me off to collect whale songs of the nothern Pacific for another project I'll never finish....

Friday, May 05, 2006

GAO preaches on software development model

GAO preaches on software development model: "By contrast Motorola, as well as other large commercial companies, spend just a few percent of its budget on rework.

This huge difference, according to Carol Mebane and Cheryl Andrew of the Government Accountability Office’s weapons acquisition audits practice, is based on a structured, replicable approach to software development that emphasizes requirements planning upfront. Three years ago Mebane and Andrew spent months studying how commercial best practices could be applied to DOD projects to control both cost factors and schedule slippages.

There's some good and some bad in here. First off- weapons acquisition is a little different than software acquisition, even when it's software that runs on weapons. Second- WTF is it that makes everyone think they can magically figure out all of the requirements for their software before they try anything to see what works? Maybe these two geniuses should read the IEEE Computer paper about Motorola's experience with Agile Software Development practices. Or about their Agile approach to Six Sigma?

"Get all of the requirements right before you do any work"- this is a fake solution to avoiding rework. Sure, you can control schedule slippages if you build exactly to the requirements, with the general problem being that you end up building what the requirements said, and not what was needed. Requirements change. Adapt to that fact of the world, don't try to change the world to make requirements static. You will lose.

Fortunately, this crack GAO team has realized that most DoD projects are way too long. "Creating a manageable environment means breaking software projects into manageable pieces, each generally with a six-month schedule." But then it gets scary:
“Based on our discussions with individual [companies], three factors determine” the success of a software development program, Andrew said. “A manageable environment, disciplined processes, and metrics, metrics, metrics.” First of all, that's 5 factors ;-), I like the first two, but what metrics do they mean? If the start measuring delivered, working code- okay. If they measure lines of code or design documents created- I'd be a little worried. (and yes, most CMMI processes I have seen measure productivity or progress in terms of pages of design/requirements documentation)

Well, I am glad to see the government taking some steps to save us money on bloated software development projects: Shorter project cycles- good, all requirements up front- highly questionable, metrics- dangerously vague!


The Art and Science of Being an I/T Architect: SAP Disrupts Everything It's a frightening little piece on SAP upgrades- which the upside being that there's going to be a lot of work for consultants- even IBM is raising an army.

I saw a comment from Scott Mark on this that said..."talk about enterprisey - this is *exactly* the situation that large companies end up in; serious roach motels - for however complicated WS-* seems, it beats this kind of lock-in!". That seems like a false dilemna- it has nothing to with WS-*, it just proves that buying enterprise systems is potentially worse than building them yourselves.

It's not like SAP or one of the companies Oracle keeps buying have figured out some real significant technical problems that your above average programmers couldn't figure out. It's not a 3D GIS or even a database something like that- it's a business system that pushes dollars and nonsense around a company. So, of course, you end up customizing it, and, of course, you end up doing massive amounts of integration work (just to integrate the internal components), and of course, it when the underlying base software changes, none of your stuff works.

I'd like to propose simplifying business processes as a good way to make your software work better.

Thursday, May 04, 2006

In the beginning...was the command line

All points blog on Google OneBox

Google OneBox -in case you don't get the pun, as my friend Carl pointed out to me the other day that a lot of people don't get that refers to the one search box. I love the one box- and I love using it to do other stuff (define:, movie:"name" zipcode, weather:zipcode, etc.) I think about it as a simple command line.

I am big time in favor of having a command line in my apps. (An interactive scripting engine works too.)

What's so cool about a command line? First, read the book.
Commands are simple ways of doing complex things.
You get a history of what you did. (I have seen this other apps too where it keeps a record of your steps and lets you return to previous steps- that's one better!)
Batch files...

In so many cases it's faster to get things done with the command line/typing than clicking on stuff. I have gotten into a great habit of the double ctrl trick with the new Google Desktop to launch applications. It's so much faster than the start menu, which seems to require extra clicks with each iteration of the Windows OS.

The Google Desktop launcher has brought forward a capability that has made the command line more powerful: the relevance ranked list of suggestions that pops up as you type. Beyond saving time, this helps get past one of the greatest obstacles to command lines- not knowing what to type. One reason it's easier for novices to perform most operations in GUIs is that they can literally look for the option they want, they don't have to remember it.

There is a simple beauty in using the "tab" key to autocomplete, which I first saw in the bash shell- which is now in the windows CLI as well. But, what if it was more like code completion, where it popped up a list of the available options. With documentation. Really, this is what a menu based GUI is, but turned on its head to put the command line back in charge...

Meta Post: Link lovers of the world, unite and fall over

Guy Kawasaki is obsessed with making it into the technorati top 10. It's a little weird to see his "evangelist" act effected on himself- instead of the Mac. So, I guess I am falling into his trap and giving him some link love, but the guy is really cool. I love his books- "Art of the Start" is a good guide for starting just about anything (a project, a department, a company, etc.). But you really shouldn't start something of your own- you should come work with me and my burgeoning enterprise.

I am wondering if his technorati top 10 obsession comes from his own top 10 list thing, like the top ten lies of engineers. I think it's going to be hard for him though- most of the top ten are written by a group of people and are of more general interest than a business blog. Some aren't even written by people at all- I can't believe so many people read that Michelle Malkin malarkey.

Anyway- I don't get a lot of traffic on this blog, but it's fun anyway. I don't get a lot of comments either, but I have been trying to be careful about responding to comments in the comments quickly so that it becomes a bit of a conversation. I guess links are nice, but I'd rather interact with people.

Cheers to the readers...

Wednesday, May 03, 2006

WWML spec

A few interesting tidbits from the WWML (NASA World Wind Markup Language) 0.93 spec. It adds a few concepts on to GML. It mixes in GML, with the gml namespace, where appropriate and keeps it's own stuff (metadata, display, and dynamic properties) in a wwml namespace. Beyond that, I see no advantages over using KML...

"WWML is a NASA open specification standard that is aimed at becoming the de facto HTML/XHTML extension standard for streaming geospatial data over the internet."

Looking at it as an HTML extension seems to imply that it is intended to focus on the display of map data in web pages. It also implies something quite different from KML, but they compare it to shapefiles... KML is notably absent from the spec, while shapefile is referred to 11 times, and it obviously borrows heavily from KML (as KML -borrows- from GML) It would seem that they wanted to avoid discussing the whole issue of divergent standards, although there are quite a few references to this being a superset of GML, much like KML is.

"Therefore, very rich XHTML documents can be designed for future web-browsers that enable WorldWind type rendering and interaction capabilities."

An interesting idea...but this seems to be irrelevant at the moment- when will these browsers exist?. Defining XML "fragments" that can be embedded in other XML formats really seems to be the only outcome of this notion. I think when when we start to see broader SVG support, that will be way some of these ideas end up getting implemented. I don't see internet explorer building in wwml support any time soon.

"WWML will support binary compressed XML files BXML proposed by CubeWerx and currently implemented in and open-source C-language library for parsing and generating XML and BXML formats under the GNU LGPL license."
I think the ZIP approach (KMZ, gzipped html) is a lot more common than BXML, but they claim that doesn't offer enough compression.

The meat of the spec is the concept where you define display rules for something like wwml:City using a mixture of gml:Feature style with some extra wwml elements , and then use a tag to wrap gml geographic features and their attributes. It seems a little clumsy.

From a parsing convenience standpoint, I don't like to see new elements introduced as attributes of other elements. It usually means you have to parse most of the document to understand it, instead of being able to pull out the bits you want quickly with expressions. For example, I'd have to read all of the feature style definitions to even know I was supposed to be looking for a tag. I think this is one of the things that makes it really easy to write code for KML, the set of tags to expect is small and predefined.

And here, wwml:City is just a display style- not a semantic concept of a "City" with population attributes, etc., those attributes are merely referenced as XPath expressions in the display rules and then become more suprise tags in the placemark definition. You just wrap all of the city placemarks (which are gml:point or the like) in the wwml:City tag (with wwml:name and wwml:population tags inside) to have the display rules applied. If I were writing this I might not use city as my example, it's really more like a styleurl in KML.

Overall, it's a pretty interesting spec. It's a little messy to look at and the domain/range stuff is just plain ugly, but no one was ever meant to read XML- right?

Friday, April 28, 2006

World Wind and the changing nature of databases

Tim O'Reilly (the computer book guy) has been doing a series of posts over on Radar about the changing nature of databases. In this one, he looks at NASA World Wind. (Which he calls "and open source program that does many of the same things as Google Earth"...) It points to some of the problems with flat file storage- "using file stores, especially when a large number of files are present (millions) has proven to be fairly inconsistent across multiple OS and hardware platforms."

One of the themes of the series is looking at places where flat file storage is more efficient than databases. This goes against the default decision of "throw everything into the RDBMS." I ran into this a while ago when I was having discussions with another architect (Steve) and mentioned that my application could get to all kinds of employee data by using the LDAP server, whereas the enterprise architects were telling him he had to pull the data from their excuse for a data warehouse. [Yes, pulling the data from the directly from the warehouse for OLAP systems...] Steve got all excited about this, and I didn't know why. It turns out that accessing the data via LDAP took only 15% of the time that it took to pull from the highly normalized "data warehouse".

Other posts are on Flickr, Bloglines and Memeorandum, and Second Life.

Thursday, April 27, 2006

"Rogue" SaaS users

Ed Sims on DIY in the Enterprise got me thinking about this services thing from the other angles again.

Your IT department can probably block the installation of client applications, but they're going to have a harder time taking away people's web browsers. Subscribing to Software as a Service (SaaS) is one way of dealing with slow/unreponsive/restrictive CIO orgs (at least for browser based apps). I have been several places where local installs were prohibited- even for developers. It makes it tough to try out new tools. Which makes it tough to improve things. Which makes it tough to innovate, et cetera.

Obviously, there are good security and stability reasons for not letting everyone install whatever they want. But I have found that organizations who make that restriction universally lack a way to get software X quickly approved on a trial basis. I realize getting a corporate lawyer to read an EULA is probably a good idea, but it shouldn't be a pre-req to updating software to fix bugs.

One thing I don't get is why so many SaaS have to be ONLY services. A lot of enterprises I have worked with would like to take the applications that are being run in SaaS fashion and bring them behind inside the firewall for secure/managed use. A lot of people are developing applications where something would be better off as a component than a service. This is particularly an issue with depending on SaaS startups- you don't want to wake up and find they've run out of cash and you can't run your business. I still support an old application I wrote using a Lotus Notes software component from a company that was acquired by a competitor who discontinued the product in 1998. If this was offered as a service- my app would have been dead for years.

I like the idea of corporate/government users using SaaS in a non-central-committee fashion (rogue user alert), but the SaaS vendors should then make a behind-the-firewall product available so that it can be transitioned to a controlled environment.

I think there is a definite analogy to mapping services. Sure, for 99.999% percent of situations, it's probably cool to depend on Google to provide continuous service for Google Earth Pro. However, if you have your own massive proprietary dataset, need some local control over things, etc- you are going to want to go to Enterprise and bring it behind the firewall. They even offer a hybrid solution- to layer your vectors on top of their imagery/terrain. Just offering any one of these three things probably would be a non-starter, but they've definitely garnered their reputation from the awesome quality of their SaaS.

Sketch Up, free

Beyond the general awesomeness of the announcement of freeness- it's a great place to practice Ruby (if not Ruby on Rails). The features aren't that different between the pro and free version (mostly , but the $495 pro is required for commercial/government use.

Free SketchUp.

If you haven't checked out the 8 hour trial- there's no reason not to now...I can't wait to see what starts showing up on the 3D Warehouse!

[comments disabled- spammers- f u.]

Wednesday, April 26, 2006

Lucene and GData

Doug Cutting- the genius behind Lucene- put a proposal out for Google's Summer of Code for someone to build a GData server on top of Lucene. Interesting to see how this could turn into a pretty cool interface for Lucene. It's also a picture of how GData could and something that is a usable generic standard for search interfaces. I guess it would be comprable to JSR-170, if they added versioning...

Now...we just need GData support on the Google Search Applicance.

SummerOfCode2006 - General Wiki
The Google Data API extends Atom to present a simple, searchable database. A Lucene-based implementation could be provided as a Java .war file containing a few servlets.

VC to portfolio: "Get some REST"

Brad Feld has been encouraging his portfolio companies (Rally, Feedburner, NewsGator) to support REST and SOAP. It's a really good idea- it lowers the bar for integration dramatically.

Some of the portfolio companies I work with in my consulting gig for a VC firm should see this same light.

Monday, April 24, 2006

SOA- meaning less every day

I keep linking to Fowler's "bliki" on Service Oriented Ambiguity because it is one of the best analyses of the subject. And it's kinda funny:

"I've heard people say the nice thing about SOA is that it separates data from process, that it combines data and process, that it uses web standards, that it's independent of web standards, that it's asynchronous, that it's synchronous, that the synchronicity doesn't matter...."

Fowler links to a guy called David Ing. I don't much about Mr. Ing (I don't know much about Fowler either, except that he is a undeniable genius and the guy who got me actually thinking about software.), but he has some sharp thoughts. I clicked on his link from Fowler's blog today and it took me to his latest collection of thoughts type post. It reminds me of Wittgenstein, in the style of sequential ideas.

A sample:
"- WS-* Specs feel 'top-down'. They take abstract concepts that you *may* need at some point and unify them from a few different levels. This unification is beneficial if you use all the concepts, but conversely expensive in terms of complexity if you don't."

I whine about the WS-* specs a lot. I sometimes understand the point of a spec- to define a common operation across systems. They just go too far. And XML Schema doesn't help...where's the RELAX-NG?

Here's my simple "Web Service" spec:
Make it so that every application in your organization returns an html view of an object if you send a GET to:
And make them return the same thing in XML if you send a GET to:

Every place that I have seen where they do that- people actually use the API. Is it a service?

Who cares?

Saturday, April 22, 2006

IE Tab

Well, the name almost says it all. Open IE in a Firefox tab. For those persistent and ever so incompatible sites. It gives you a little button for your toolbar to reload the current page in IE, then the button changes to a little one that lets you bring it back to firefox. You can middle click to open the site in the other renderer in a new tab.

I realize this has been around for a while, but it's new to me and solved a problem for one of the more important users that I serve. I was using a little bookmarklet to launch IE, but this is far superior. Plugins are a wonderful thing.

Friday, April 21, 2006

Rename published method refactoring...

Jason Yip points to a cool new refactoring feature in Eclipse 3.2 M5. For reference, the refactoring support in Eclipse already handles all of the messiness associated with renaming a method- updating references to the method, updating your comments, etc. However, that was all for the references inside your own codebase. It now can keep the old method name around as a pointer to the new method name. This gives you the ability to broadcast the change to any external consumers of that method via a deprecation warning- letting them know not to depend on the existence of that method for much longer, while still allowing you to keep the code in just one place. Don't repeat yourself!

Now, am I going to mess around with upgrading to a development version of Eclipse to get this? Might be too risky at the current juncture. I am going to have to check out the buglist.

Anticipating Customer Wants

Carl has a good little post about referencing Mark Cuban's concept of building the product your customers are going to want versus what they tell you they want now.
Carl said-
"A friend and I were walking down this path earlier this month discussing how all of the applications that we have written over the years were successful if the user'’s did not have that much input. This totally goes against the grain of Agile methodologies."

There are a couple of things going on here. One is that a big difference between commercial product development and enterprise custom development is that in the enterprise your customers are already identified and assigned to you. Still, I have always found it make enterprise custom development as similar to product development as is reasonable. The reasons for this are numerous, but the unanticipated expansion of your customer base and supporting new functions of the existing customer base are two prominent ones. In this analysis, it does make sense to do some generalized product style development in the enterprise versus just building what the customers you have access to say they want.

In my mind- agile software development methodologies, where you only really do what is most important in the current iteration, are actually better than up front requirements definition methodologies where you plot out precisely what you are going to for the next year or two. In the up front case, you basically guarantee that you aren't going to be able to adjust to what the customer is going to want when you figure it out halfway through the budgeted schedule.

It does point to a fundamental problem with the whole concept of requirements gathering in the enterprise custom development context. Who is representing the customers that aren't at the table? This is why treating the project as a product- and having someone function in a product management role is really important. If you have someone that is an advocate for the product itself- you can allocate some of the budgeted time/money to making it a better product.

So, my solution to the problem of representing the interests of users that aren't at the table (including the "future users") is to have someone appointed to serve that role, and give them a "point budget" in each iteration or release. In my current project, we aren't really doing that, but we have a certain number of points reserved for the developers own choice of what to work on (could be reducing technical debt). In our agile development process we are using points to represent the amount of work we are capable of completing in a certain time period, and allocating some of those points to various stakeholders. It's only logical to think of the future of the product as a stakeholder in its current inception.

This differs a bit from the whole Getting Real thing (where the product manager has total control to select from the list of desired features), but it seems more workable in a typical office politics environment where everyone wants their influence to be recognized.

Thursday, April 20, 2006

Calendar API

Now there's a calendar API [code blog, [general blog]. Should I write my own outlook sync program that does what I want or wait for someone else? Have to balance having it act like I want to vs. the time investment.

One thing that is making it look like something worth bothering with is the emerging concept of GData. When I first heard of it, I thought it was going to be something like RDF (Resource Description Framework). It's more of a combination of REST and ATOM, with some query and update capabilities. [the API] The thing that Ray Ozzie is working on over at Microsoft is going in this same direction, with more focus on sync, which is something he has down cold. I think Google are making an effort to have the growing array of APIs be somewhat consistent. If all of the APIs move to this kind of model, it could have a simplifying effect on development.

In any case, the common kinds schema is pretty basic model of the world from the Google perspective. It has a couple of location specific concepts:

A place (such as an event location) associated with the containing entity. The type of the association is determined by the rel attribute; the details of the location are contained in an embedded or linked-to Contact entry.A element is more general than a element. The former identifies a place using a text description and/or a Contact entry, while the latter identifies a place using a specific geographic location.


A geographical location (latitude, longitude, elevation).

start = geoPt
geoPt =
element gd:geoPt {
attribute label { xs:string },
attribute lat { xs:float },
attribute lon { xs:float },
attribute elev { xs:float }?,
attribute time { xs:dateTime }?

Tuesday, April 18, 2006

Google Enterprise OneBox to Suck in Data From Cognos, Oracle, and

business2blog: B2Day : Scoop: Google Enterprise Mashups to Suck in Data From Cognos, Oracle, and "Google is set to announce tomorrow a broad set of partnerships with enterprise software companies, including Cognos, Oracle,, and SAS. The partnerships basically amount to Google and these enterprise software companies sharing APIs so that data from the various software systems can more easily be searched for through Google's OneBox corporate homepage."

This sounds like some good stuff- a lot of projects really need good integrated search- but is it really a mashup? The key is getting your system to have its results show up in the search results. Update: it's called Google OneBox. Couple of blog entries on it.

I have been a big user of the Lucene search engine embedded in an enterprise integration, but it's a little tricky on bigger data sets. I am surprised to see Oracle on the list, they think they have a perfectly capable search product. I am a bit worried about the resurfacing Novell rumors. They really don't need to buy an OS- but then again- it is one place to really gain performance when you are running the database on a dedicated box or cluster.

Our little company has been doing some consulting work with the search appliance, we are really happy with the way it works. The more stuff we can stuff into only gets better.

Friday, April 14, 2006

Client-side Validation Web Services

Over on the The Daily WTF, they have a piece on The Long Road to Validation. I always liked having a little bit of client side validation to complement my server side validation, but this guy decided to call out to a web service, from JavaScript, to validate dates. And gets the results back in a tagged string. I see a future u.s. government enterprise architect in the making! That's a brilliant use of the enterprise date validation service. Service re-use at its finest.

Oh wait- he didn't use SOAP...still needs more brainwashing.

Collected links...

Continuing the series of posts on things geospatial (a promotional thing for their upcoming where 2.0 conference?), nat at O'Reilly Radar calls Mapdex a Google for Geodata. He does complain about the lack of metadata.

Has anyone out there looked at Thetus for metadata management? It seems like they promise to derive semantic metadata from things that don't have syntactic metadata- and I know that at least one organization with a massive amount of geodata is looking at it. The whole architecture seems wildly over-complicated though. It makes it hard to explain concretely what they do.

Another nice search thing is the Google desktop search plugin for Google Earth. It seems like that could have a few more location aware features...If I didn't already have 5 projects on my plate.

Speaking of all things Google, I would be remiss not to mention the stupidly hyped Calendar- which I have been testing for months now. It just doesn't work for me. I like the user interface, but I need this stuff on my Blackberry. Maybe they'll release this soon, like they did for Google Talk. A note- if you go to the RIM page to download this- it requires IE 5.0 or above. They could also really use Intellisync so I could get my client appointments out of outlook/exchange into something more portable. Maybe it will work with the RedBerry.

It will be interesting to see what 37signals pulls out for a calendar for backpack. It was the most widely requested feature by a ridiculous margin. The survey results for most desired feature are pretty consistent.

The intersection of time and space- calendars + maps. It usually takes the form of a map with time slider. It would be interesting to see a calendar with a map overview window that lets you select a spatial extent. Perhaps not useful, but interesting.

On the subject of the updated yahoo maps beta data- If I base it on the picture of my house test, it has the most up to data of any service out there: it's the first mapping service to display anything but trees where my house was completed in October of 2003. Most of the services have updated street data, but they are first with the picture of the house. Of course, in areas about 5 miles away the data is definitely much older. The source on the data for my house is Aerials Express, i-cubed. I wonder how much all of that 1m cost...

I am using their free geocoding service extensively, that's a real service to community. Plus- it's REST-ful. In general I am not a big fan of PHP/Flash (more of a Java/Ruby/HTML/CSS/AJAX guy), but we all can love RESTy verbing XML over HTTP. Here's a good intro to the REST topic- the fight goes on 3 years later, except now it's about WS-*. A lot of the stuff is well intentioned, but the output of some of these standards committees still seems to leave the value of simplicity completely off of the list of things they are trying to accomplish.

Wrapping Openly About the Google Search Appliance

Wrapping Openly About the Google Search Appliance: "The team at Inxight has created a Java wrapper for the Google Search Appliance's XML API and posted it as a project on SourceForge."

Always nice when someone deploys an open source project of something you just did on your own. Thankfully it's something really simple, but now I have a community to help me keep the code up to date...


Too much attention is paid to the off the shelf software and technology selections that are made in enterprises. Being a developer, I have always tended to advise customers to buy the boring stuff and build the fun stuff. But how do they decide what to buy?

It's seldom the users or anyone closely involved that makes the big budget decisions. This quote from James McGovern (formerly respected- now entirely too vehemently anti-Ruby to be taken seriously) shows one form of the insanity: "For example, If I were to champion use of an open source Enterprise Service Bus such as ServiceMix and figured out a way to keep support internally while another colleague say championed purchase of a $5 million closed source Service Bus, which one do you think will get promoted quicker?" It's soo true. It applies to project staff size too. In Tom Demarco's "Slack" he talks about the manager that is bullied into accepting a larger staff and shorter timeline for a project. I like the Ruby on Rails thing David HH said this week (roughly): "[Rails is for] small teams doing big things." I am not really fond of his attitude though...yikes. I guess he's a magnet for criticism.

Back on topic though. Too often the comparison comes down to a feature list type thing, check or no check usually. Here are things that people don't consider enough when doing product evaluations- how hard is it to install/upgrade/maintain, how buggy is it, how is the usability, how well documented is the API/integration mechanism, how does it perform in the real world, and it is pretty enough to stare at day-in/day-out for a few years. I was in a meeting today where the consensus was that ESRI software is pretty buggy, but "so what"? Lots of people think Microsoft software is pretty buggy. I don't see the ESRI alternatives as being significantly less buggy, but maybe if that started to become a decision factor in enterprise software acquisition, it could become a point of competition. Not so much about how many map projections you support, but how well you do whatever it is that you do.

Those are some rather rambling thoughts- but I am really concerned by the poor choices I see made in enterprise software, and the bureaucracies that enshrine those choices as the only options for years to come.

More Complexity

The View from Hell: "The CruiseControl JSP starts by slurping up some XML stored elsewhere and feeding it to an XSL stylesheet. The XSL spits out an HTML page, but the HTML has no HTML in it; its just a big JavaScript block. The JavaScript uses DOM manipulation to write out a combination of HTML and CSS. And some more JavaScript. Really. I'm not making this up. "

I am a huge cruisecontrol advocate, but this is kinda funny. It is definitely aiming for a separation of concerns and the single responsibility principle, but I don't see it hitting the mark the very least that first JSP should be written as a servlet!

Wednesday, April 05, 2006

dual boot (camp) apple

Well, when my laptop hits the 2-year-old mark in December, dual boot (with boot camp) may give me the freedom to upgrade to a MacBook Pro. They are quite sexy. I have always been a little sad about Apple's overly proprietary architecture, but the prices are comprable enough now that it doesn't seem to make much difference...

Will this sell more Macs? I think so. I think it's going to sell a ton. If Apple's stock wasn't already overpriced, it's a definite revenue++, even if they end up selling a few microsoft licenses. I'd prefer to run OS X in a VMware (or MS Virtual Server?) session, but you can't have it all (yet). I was planning on waiting for whatever laptop came out on Robson first, but you can't wait forever either.

Google Earth COM API

There's not much about this out there...I guess because it doesn't do much yet. The thing I want to do with it is to be able to make a click on the map in Google Earth have some special behavior. The current API seems primarily focused on letting external applications control the user interface. What I am trying to do is build an enterprise application that will allow sharing of created data- but on an intranet, not to the BBS. Anyway, this is just a summary of what I have dug up. I'll report on my own experiments once they produce something interesting...

The indomnitable TJ gives us the IDL here.

There's an Australian paper (PDF) that references a prototype application they did using the API with VBA in ArcGIS.

I found one (unanswered) post on the BBS:

i use the Google Earth API in vb for a few days
there are the question i can't find the anwser,could you help me?

the KHFeature.visibility can control the places's display
but what the meaning of KHFeature.hasview?

i can run in app as

Dim KH As Object
Dim View As Object
Set KH = CreateObject("Keyhole.KHInterface")
Set View = KH.currentView(0#)

And this guy seems to be doing some things with it. Some good ideas there- at least as starting points.

Still, my goal is to use Google Earth to control other things- and about the only information it is sending out is the bounding box on network links. If anyone has any ideas...send them this way!

Tuesday, April 04, 2006

Complexity Kills

From the NYT article, "Windows Is So Slow, but Why?".

In an internal memo last October, Ray Ozzie, chief technical officer, who joined Microsoft last year, wrote, "Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges and it causes end-user and administrator frustration."

I guess the problem is that getting simplicity right is often harder. When you define things in clear terms, it is often easier to see that one idea is winning out over another, rather than shading things in compromises. On the other hand, just being simple without solving the problem doesn't always help.

I think Microsoft could wave the magic wand and say- no more backwards compatibility testing. They could support old OS programs in virtual machines.

There are plenty of complex problems- conflicting requirements, ad hoc processes to automate, personalities, etc. There are a lot of strategies for dealing with this.

I look at agile development practices as one approach that can help- start small. Don't build the whole thing before you put it in front of someone. Test every little bit. Respond to change. On the other hand, it seems to be about creative problem solving. This is often giving people what they need, not what they ask for.

I really hate the saying "keep it simple, stupid". I think it should be "keep it simple, smart".

Monday, March 27, 2006

Ajax Hacks on Safari

So, I am enjoying reading Ajax Hacks on Safari. It's a decent book. I really think the first general chapters of these books are becoming quickly less important, as people are really looking to pick a library (Atlas, Prototype,, DWR, Dojo, etc.)and start hacking. The book has a chapter split between Prototype and Rico. It also has one on Really, not very many useful bits on these. It is a hacks book, so it's not meant to be a reference tome or anything, but most of these libraries could use some serious documentation. I think I'd like to see a book where the first chapter was on doing Ajax with Prototype and built from there.

I think what makes this more interesting is that I am reading the book for about $2. Now that the book is out of the "Rough Cuts" stage (see my earlier rant on this), I can add it to my $19.95 per month 10 book shelf and read it. I can use some of my 5 PDF downloads to get the chapters I am interested in permanently. Last week, that would have cost me $14.99, just to get that one book for a little while online, and then the PDF when it was done. If you don't have Safari, it's not a bad deal. If you have Safari- what's the point? Just to read it sooner? How much is that worth? Not $15 if you ask me...

"Purchase the Rough Cuts online pre-publication version only
This option gives you access to the evolving manuscript through Safari Books Online. You can read the Rough Cuts book online, download it in PDF format, or print. The Rough Cuts title will be available for reading until 45 days after the print version is published. Once the title is officially In Print, you can make one additional download of the complete book. When you buy a Rough Cuts title through this option, your credit card is charged immediately.