Explaining Source Control

Photo by rbieber

So many things can have to be changed when switching hosting providers that sometimes code branching is the best answer (DUH). Here’s my feeble attempt at trying to explain the process during one such move. This actually went on for months, with me merging privately and creating builds for testing.

This was the final branching plan, once I knew everything would merge properly and I was asked to get everyone comfortable.

This is from sometime around 2002.

From the Bieber Labs archives … diagram compliments of Dia.

Build Google and Yahoo Maps Without Coding

I stumbled across MapBuilder as I was browsing the Google Code site today. MapBuilder was referenced as one of the sites featured projects. The application is pretty interesting, allowing you to visually create a map using either the Yahoo Maps or Google Maps API and then to export the source code for inclusion on your web site. There is also an option to host your maps directly on MapBuilder and reference them from your site with a button that links to a list of all of your available maps.

There are quite a few things that are really cool about the site:

  1. Supports both Yahoo! Maps and Google Maps.
  2. No need to learn the details of the mapping API’s – just create your maps and go.
  3. MapBuilder does geo-coding, using the Yahoo! Geocode API’sand geocoder.us while Google Map API’s require lattitude and longitude in order to do anything with them.
  4. MapBuilder does the “driving directions to / from here” for you. No need to create custom code for this functionality.
  5. MapBuilder will also do custom development for you if you want something different from what the basic services provide. I’m assuming there is a fee involved, but I couldn’t find reference to it.
  6. The site facilitates building communities around maps that people create on the site.
  7. Best of all, it allows the “common man” to include mapping capabilities on their web sites without having to know how to code in Javascript and HTML.

MapBuilder is a really good example of new, unintended possibilities that are exposed when web applications are designed as a set of API’s using the web as a development platform rather than the siloed approach that we have used historically. This application was written by a third party not affiliated at all with Google or Yahoo!, but because of the way their applications were written they have the possibility of an audience that they did not originally target by allowing someone to build applications around their base functionality.

One should note that creation of a user account is required in order to use the full functionality of the MapBuilder site. They basically ask you for a username, password, and your email address. Thats it. Registration for either a Google Maps API key or Yahoo! Maps API key is also required if you would like to host your map on your own web site rather than hosting it on MapBuilder directly.

Head First HTML with CSS & XHTML

Head First HTML with CSS & XHTMLLast week one of my team members requested a copy of Head First HTML with CSS & XHTML by Elisabeth Freeman and Eric Freeman, as we are doing some work on a CSS implementation of our web site based on the results of some initial research that I had done back in June of this year. I started vacation on Friday and by Saturday I had a note from the post office saying that the book was sitting there waiting to be picked up (apparently our postal delivery person was too lazy to get out of the truck and leave it on the doorstep).

I started paging through the book a little and was a little suprised and put off by the format at first. It seemed to me to be almost formatted as a kids book, with large pictures, large type, and conventions like interviews being conducted with tags, or conversations between specifications. As we were on our way Christmas shopping I was actually reading it to the family and kind of goofing on it. I couldn’t believe that my team members actually requested a book like this that tried to explain things in such simple terms. It seriously felt like a ‘Dick and Jane’ book.

Well, thankfully I didn’t write it off and actually kept reading it. What I soon came to realize is that there is a reason that ‘Dick and Jane’ have been around since the earth cooled. These are some great books, removing all of the technical jargon out of your way and explaining the concepts in an extremely understandable way. The book makes the concepts seem much more realizable and less intimidating to actually try yourself. Surprisingly, I learned quite a bit that I didn’t know by hitting the O’Reilly books that I had read earlier and found myself thinking about the concepts much more frequently (and freely) than I did as I was wading through the highly technical format of these other books.

So while I started out goofing on the book, I found a ton of value in it, so much so that I’m going to grab a few more of them. I think I’ll start off with Head First Design Patterns and then work my way from there.

If you are looking to dip your toes into CSS and XHTML and want to understand the purposes and reasons for the different specifications, I highly recommend picking up this book. I was absolutely pleasantly surprised and found a ton of value in the format and presentation of the information. It was really cool to finally run across a series of books that teach the concepts so effectively while giving you just enough technical information to be able to work.

Pick this one up. You won’t be disappointed.

Review of The Wisdom of Crowds by James Surowiecki

The Wisdom of CrowdsOne of the big trends in the tech and business communities for the past couple of years has been to begin to rethink sociological phenomenon. This is due to the great advances in communication technology in the past few years. During the Internet boom, the business and high tech communities were mostly focused on the emerging technologies such as distributed computing. The business interest in technology is focusing less on Moore’s Law and moving more towards the sociological and organizational impacts of technology. While academia has been focused on this for much longer, business books like this one have recently been gaining momentum.

The Wisdom of Crowds offers a nice introduction to relevant concepts in sociology and game theory and discusses them from a business perspective. While there may not be a whole lot of new information for readers already familiar with these topics, Surowiecki’s easy writing style is enjoyable and will appeal to a broad range of business decision makers.

One of the most beneficial new ideas to come out of this book is the addition of a fourth class of individuals affecting social epidemics, as described in Malcolm Gladwell’s book The Tipping Point: How Little Things Can Make a Big Difference. Gladwell identified the Salesman, Maven, and Connector as classes of individuals who start epidemics. Surowiecki identifies a class of individuals who can potentially disrupt an epidemic by merely by offering an independent voice. He doesn’t give a name to this class of individuals, but they could perhaps accurately be called Disruptors.

The title, derived from an influential nineteenth century book on large group dynamics called Extraordinary Popular Delusions & the Madness of Crowds by Charles Mackay, is a bit of a misnomer since the “crowds” to which Surowiecki refers can be defined as groups of individual agents working in an independent and more or less isolated fashion. Crowds, by contrast, are large groups that are acutely aware of each other’s presence and highly reactive, thus forming something of a single organism. The author’s foundational assumption, then, is that individuals can, under the right circumstances, express an individual agency that is not determined by crowd dynamics, in Mackay’s sense.

From an academic perspective, the populist crowd wisdom presented in The Wisdom of Crowds seems to be an extension, or perhaps an evolution, of the Hegelian concept of “thesis-antithesis-synthesis”, where the conclusion drawn from the reconciliation of two contradictory thoughts becomes a higher thought that transcends both original thoughts. While Surowiecki does not provide concise logical arguments concerning the notions of realism or social determinism, he does provide several pragmatic examples to back up his assumptions.

Surowiecki does a nice job of discussing effective management of these groups of individuals by creating a dichotomy of centralization versus aggregation. Centralization, according to Surowiecki, can either lose the benefits of collective wisdom by relying on a limited point of view, or worse, can actually destroy collective wisdom in groups through authoritarianism.

There is and important aspect of effective individual collectives that Surowiecki fails to fully explore. In each of Surowiecki’s examples, each group shares a common social context. Collective “wisdom”, by Surowiecki’s definition, can be described as merely a reflection of the prejudices and shared social reality of a collection of individuals (by social reality, I am referring to the idea that the way we view the world is highly dependent on the culture around us).

Diversity, for the author, is central to the effectiveness of collective wisdom. This wisdom, however, is dependent on a relevant social context, thus requiring a certain amount of homogeneity within the group. The author acknowledges this only one time in the book, when discussing Schelling points:

“…The existence of Schelling points suggests that people’s experiences of the world are often surprisingly similar, which makes successful coordination easier. After all, it would not be possible for two people to meet at Grand Central Station unless Grand Central represented roughly the same thing to both of them… The reality Schelling’s students shared was, of course, cultural. If you put pairs of people from Manchuria down in the middle of New York City and told them to meet each other, it’s unlikely any of them would manage to meet. But that fact that the shared reality is cultural makes it no less real. (p. 92)”

While diversity is important to collective wisdom, it only makes sense within certain parameters. For instance, the NASA Challenger discussions did lack a diversity of individual contributions, but that diversity was only relevant within a certain context. NASA’s findings would not have been the better for taking a random poll of non-NASA employees. The collective wisdom in this case only made sense within the context of highly specialized engineers. What we must now consider is the amount of diversity required to produce a “wise” result. While Surowiecki is quick to point out that the lack of diversity of perspective can be detrimental to collective wisdom, the over-abundance of diversity can result in arbitrary or faulty data.

Of course, now the discussion revolves around what is meant by the terms “wisdom” and “diversity”. Different situations require different kinds of solutions and different levels of diversity. This is an area that would be very beneficial to explore, especially in the context of the Web (the impact and usage of folksonomy, for instance). Unfortunately, Surowiecki offers very little discussion on these points. Surowiecki does allude several times to the fact that individuals likely to be involved in a particular collective have an adequate incentive to participate. While Surowiecki does not explicitly point this out, he assumes, probably fairly correctly, that people likely to participate in something like a financial or information market have placed enough investment (time, reputation, money, etc.) in that market that they will have a strong desire to attempt informed judgments; these investments should, according to Surowiecki, be enough to raise the bar of entry enough to create a system of self-filtration.

Pragmatically, Surowiecki has provided enough examples to create a workable hypothesis that business leaders and policy makers can use. As business books go, The Wisdom of Crowds is an intelligent and interesting read, well suited to a broad audience of business professionals.