This is a blog about technology, with a title borrowed from an evolutionary biology concept. I am a believer that building technology is best done by recognizing, embracing and optimizing the evolutionary forces and processes at work. We can learn a great deal about how to build world class products and technology by thinking about why zebras got their stripes.
My Brush with a CMS Lynch Mob at the ASBPE Digital Symposium
November 07, 2009I spoke at the ASBPE (American Society of Business Publication Editors) Digital Symposium Friday afternoon. I was in a session with two other speakers discussing CMS platforms and what Editors need to think about in selecting a platform. We each had about 20 minutes and I was the third speaker. This is how things unfolded:
Speaker One: “All Content Management Systems suck. The ‘S’ in CMS stands for ‘sucky’” -- and this was just the beginning of about 20 minutes of general CMS bashing! This was not just some disgruntled IT professional either – this gentleman has been around the block at several prominent publishers, leading CMS efforts with platforms that included Vignette, Interwoven, Movable Type, Drupal, etc. [Speaker One = Fredric Paul, publisher and editor-in-chief, bMighty.com ]
Speaker Two: Another mildly uncomfortable 20 minutes as the Editorial Director of an online property strolled through your standard list of CMS woes that he had experienced in the last few years: the homegrown system that fell apart after the developer left, the CMS project that was 6 months late and 100% over budget, the ridiculous confines of an inflexible platform, the pain to publish new content, etc. [Speaker Two = Tyler Davidson, Editorial Director, Meetings Media ]
Speaker Three: When I took the podium I was a bit fearful that the audience had been turned into an angry lynch mob against the token CMS vendor (aka me!) and were about to exact revenge for years and years of painful web publishing experiences!
I resisted the urge to dive into how the Clickability Platform solved all these problems, how we empowered our non-technical users, how we provided BOTH flexibility and control, and all the other wonderful things I wanted to say in defense of our CMS Platform, but I refrained. Rather, I acknowledged that these pains were exactly why we decided to get into the Content Management business. We knew CMS was broken and we knew that we could do something new, different and powerful through our SaaS model. I then moved on to outline our vision for the next generation of websites and WCM.
At the end, it was Fred (aka. Speaker One) who asked me the best question. His stated that he loved our future vision of Websites and WCM, but questioned how customers can move onto this sort of thing if they are still struggling with the basics? This is indeed a great question. With all of the exciting, innovative, and compelling things that you can do on the web right now, we must remember that the vast majority of website publishers are still struggling with the basics. And these are problems that we solve on a day to day basis for our customers.
Overall, I am thankful that everyone left their rotten tomatoes, pitchforks, and torches at home yesterday, and hope that my fellow speakers and the rest of the audience will indeed take up my challenge: allowing me to prove that there is at least one compelling WCM offering on the market.
November 07, 2009 | » Comments (1)
Omniture and Adobe: Missing Steps?
September 17, 2009Six years ago at Clickability the vision for Clickability's Web Content Management platform was formulated. A central element of this vision was our idea of the Content Value Chain. This sequence of steps defines the path that content goes through during its lifecycle:

The first three steps are the fundamental activities of all WCMS systems:
- “Create” is to author the content or digital asset
- “Manage” is to apply metadata, establish workflow, and organize with other assets
- “Publish” is to combine content elements into a fully rendered format
Traditional WCMS systems stop at this point, requiring the customer to figure out the rest of the steps on their own. However, we saw the value of an integrated solution across the entire value chain and worked to deliver a platform that also did the rest of the steps, too:
- “Deliver” is to transfer the content to the consumer be it as a Web page, an XML feed, an email, or any other mechanism
- “Interact” is when the content consumer does something with the content, saving it, sharing it, commenting on it, etc.
- “Measure” is observing what happens to the content as it passes through the value chain
- “Adapt” is taking what is learned and using this information to optimize the entire value chain or individual steps of it
I recently saw a very similar value chain represented in the context of Adobe’s move to acquire Omniture. Adobe's point of view on the value of the combination is published on their website and includes the following:

Aside from some semantic differences, there is only one key difference between the two value chains – the missing steps of “Manage” and “Publish” from the Adobe and Omniture combination [Aside: should this be refered to as Adobiture or Omnobe?].
What does this mean? Well first off, it is great to see the idea of the Content Value Chain being recognized as an important way of viewing content and content processes. Secondly, it also means that to really have a complete solution, Adobe needs to be thinking about how to include management (and publishing) capabilities into their overall offerings.
September 17, 2009 | » Comments (0)
When will IE6 be extinct?
August 06, 2009IE6 is the current nemesis of web developers everywhere. As of the last release of our CMS platform at Clickability, we have finally discontinued support for IE6. When released in 2001, IE6 was state of the art, now it is considered, well, something that a dung beetle would be quite found of.
Once software is released, it will typically evolve for a period of time with patches and updates, but at some point a new faster, smarter, bigger product or version will come along that will put the original software on the slow march towards extinction. SaaS is a bit different in that it can evolve can keep pace with the evolutionary forces at work - this is indeed one of the key benefits of the SaaS delivery model.
I found this the other day and love the approach that Weebly has take to speeding things along for IE6: www.ie6nomore.com/
August 06, 2009 | » Comments (2)
Most Popular - a quick retrospective
May 19, 2009I had an interesting conversation with The Numbers Guy (aka Carl Bialik) from the Wall Street Journal yesterday. He was researching the idea of popularity and how it affects peoples’ choices. One of the areas he was exploring was the Most Popular lists that are now standard on all premium media websites. He published a blog posting today about this, entitled The Growing Popularity of Popularity Lists .
At Clickability, we have been providing a Most Popular service since 2001, at which point we started aggregating the data behind our EMAIL THIS, SAVE THIS, and PRINT THIS products into the Most Popular.
Several interesting aspects of these lists came out during our conversation:
1) Most Popular lists started as standalone pages/features (ie. You click to a full page that contained the most popular articles), and over time evolved into page components and widgets. We actually had a widget for this in 2002, but had very little uptake on it as embedding 3rd party page components was not standard practice at the time. Evolution of web publishing practices to be accommodating (and even relying on) 3rd party components and the emergence of standards like RSS changed everything in the use of embeddable lists.
2) These lists were some of the earliest forms of “social media” – they provided a voice back to the publishers about the content. This was either in a passive was (by tabulating page views) or in a more active way by using stats from tools like “email this to a friend” or ratings to generate the most popular lists. In fact, Digg and others like it are actually an extension of the “most popular” from one site to the Internet at large.
3) With some of our customer, the Most Popular feature leapt from being just an end user feature, to an editorial tool. The managing online editor at a premiere news brand was a shining example of this. He reviewed the up to date most popular list throughout the day as an ongoing decision making tool. The Most Popular was also reviewed in the daily editorial meetings as well. In the end, we built some special analytics tools (the Most Popular Tracker and Calendar) specifically for people like him to rapidly asses the lists as part of their editorial role.
4) The most popular lists had also jumped from just being on the website to other publishing channels as well. Places that I have seen Most Popular that we power propagated:
a. RSS feeds into My Yahoo! and other personal portals
b. Within of periodic email newsletters
c. Shown and Reviewed on television (by CNN)
d. Published in newsprint the following day
e. Published in periodical magazines
5) The metrics behind the most popular have also changed. The first metrics where viewed, and shared (by “email this” type tools). This has evolved into ratings, most commented on, most blogged about, most searched for, etc. NY Times has some really nice things in this area. Also, segmentation on most popular lists based on geography is now showing up – makes a lot of sense for those with global audiences.
While the basic functionality of the Most Popular lists has remained the same, they certainly have evolved over time (almost a decade!) since they first appeared.
May 19, 2009 | » Comments (2)
LAMMP gets an extra M
May 04, 2009I recently had the pleasure of connecting with Patrick Galbraith who works in the realms of MySQL, memcached, open source, web development and other such things. He is working on finishing up a book entitled “Developing Web Applications with Apache, MySQL, memcached, and Perl” and was looking for some real world applications using memcached (as we do at Clickability).
His book adds another “M” (for memcached) to the standard LAMP stack as this has become a staple building block for building scalable web platforms.
This got me thinking – we are close to the LAMP stack, using Linux, Apache and MySQL. However, we use Java instead of P(erl|HP|ython). Is there an acronym for us? JAML, LAMJ, JLAM? A quick foray on Wikipedia indicates that there is no clear winner to date:
- JLAM: No results.
- JAML: “Junctional Adhesion Molecule-Like… composed of two extracellular immunoglobulin-like domains, a membrane-spanning region, and a cytoplasmic tail involved in activation signaling”. Interesting, but not really what I was looking for.
- LAMJ: This at least redirects to the LAMP page, so this would appear to be the front runner.
Please share your opinion on the poll in the right column and definitely let me know if you have any other great ideas for it.
BTW – Patrick’s book is available for pre-order on Amazon here.
May 04, 2009 | » Comments (0)
MySQL User Conference 2009 Presentation
April 22, 2009On Clickability's 10th Birthday I was pleased to speak at the MySQL User Conference. It was an interesting conference coming on the heels of the news of Oracle buying Sun, who just over a year ago bought MySQL.
Click here for the presentation. The accompanying narration, sidebars, and jokes available by request.
April 22, 2009 | » Comments (0)
Phases of SaaS Hardware Purchasing
March 06, 2009SaaS is a business model requiring an investment in infrastructure -- and hardware costs money. There are many different approaches to deploying and managing hardware, and many different preferences on the choice of hardware for the job. As a SaaS business starts up and matures, I believe there are three phases the company will go through in purchasing hardware and the overall needs of the business itself changes.
- Bootstrap - Unless you are backed by big VC bucks from day one, you are likely ramping up on a shoe string budget. Frequent cost saving measures include buying generic hardware, skimping on support, and finding deals on the used equipment market (including eBay!) This is a period when you are figuring out how the platform will operate and where the scaling points and operational needs truly are.
- Growth - During the growth phase, the company is growing, the platform traffic is hopefully growing rapidly and technical resources are best devoted to quickly deploying proven infrastructure building blocks and building a stable, scalable platform. The last thing you want during this period is to loose momentum by spending time troubleshooting unreliable hardware, or time tuning and tweaking the hardware before it is ready for prime time. This is a time to buy brand name servers (with support!), top quality network gear, etc. The added expense will be worth it in terms of ability to execute quickly.
- Mature - When a SaaS platform hits a certain point of maturity, scaling issues should have been recognized and addressed. There should be enough fault tolerances built into the platform such that anticipated hardware failures are seamlessly handled. At this point, you have the opportunity to increase margins by optimizing the hardware cost. It's time to revisit generic servers, time to benchmark different brands, and figure out how to get the best bang for the buck. Every dollar saved goes right to the bottom line.
Not all companies will go through each of these phases and of course there are those who will choose to outsource all of the infrastructure and operations from the outset. For those who choose to forge ahead themselves, think about how to maximize the value of your hardware investments, and don't be afraid to either go higher end or lower end depending on the evolving needs of the business.
March 06, 2009 | » Comments (0)
To Infinity and Beyond!
February 22, 2009"Web Scale" is a phrase I use quite frequently. I encourage engineers to think in "Web Scale", and consider such things as "how will this work when things get really, really big?", or "what happens when you have 10x or 100x that many users?"
I believe that there are three categories of scale:
- Prototype Scale - This is the first phase of things. You never quite know what you get when you start out building a product or application, but by following some good technology practices (ie. using database indexes correctly) you can be reasonably confident of getting something that works that you can provide to some real customers and users. Only then can you truly start figuring out what needs optimizations and scalability work.
- Enterprise Scale - You have hit Enterprise Scale when you are confident that you can service the largest customer that you are likely to get. For installed software, you may actually be able to stop here. But for those providing SaaS solutions or Internet services, there is a critical next step.
- Web Scale - When you hit Web Scale, you have identified and solved all scaling challenges. Everything in the platform will scale linearly such that you can not only service your largest single potential customer, but you can service any number of such customers of that size.
There are several big name internet companies that pop to my mind when I think about Web Scale: Google, Yahoo!, Amazon. There are even some SaaS platforms that can make that claim, like Salesforce.com and Omniture. One thing that these companies all share is a well architected and crafted platform that uses distributed computing and sharding to take HUGE challenges and make them small and repeatable.
February 22, 2009 | » Comments (1)
Sharing the Load? Or Sharing the Poison?
February 10, 2009Our network engineer and I have been going back and forth for a while now about load balancing strategies, both at the web/application layer and also at the database layer.
It is clear that there are two competing interests at work:
1) To distribute load and provide redundancy and high availability
2) To limit the propagation of problems and confine issues
The former is clearly driven by one of the key principles of SaaS – that by running the application for many customers in a single instances, economies of scale in the infrastructure can be applied to such challenges as creating high availability.
However, blindly allowing the automated pools and failover of all resources has danger too. There is the potential that problems will spread from one server or pool of servers to other servers and potentially to the entire platform (“Sharing the Poison”).
Such things do happen. We have seen it ourselves repeatedly - there is always that one customer who does things a little bit different and hits that one query that crushes the database load, or the traffic spike of a magnitude that nobody ever expected, or the crippling bug that is exposed out of the blue by a user.
Is there a load balancing schema that both maximizes high availability and also protection? We have no silver bullet yet, but it seems that by making some tradeoffs, configuring a combination of segmention and pooling, and having "safe" failsafe mechanisms, that we can potentially strike a nice balance of these forces.
February 10, 2009 | » Comments (0)
MySQL User Conference 2009
February 03, 2009I will be speaking at the MySQL User Conference again this year, presenting a session titled: Clickability: Scaling SaaS with MySQL and Memcached. My basic plan is to walk through the evolutionary history of the Clickability platform and how it evolved from a few servers to hundreds of servers across multiple data centers delivering hundreds of millions of pageviews.
An evolutionary story? Certainly. Cell division? Absolutely. Primordial soup? Perhaps.
I hope to see you there!
Clickability: Scaling SaaS with MySQL and Memcached
http://en.oreilly.com/mysql2009/public/schedule/detail/6929
3:05pm Wednesday, 04/22/2009
Location: Ballroom G
Building a SaaS platform requires application and infrastructure engineering that push beyond “enterprise scale” to “web scale”. MySQL and Memcached play a key role in scaling the Clickability platform. This presentation will tell the evolutionary story of the core architectural and technology components that have allowed the Clickability Platform to scale from 0 to 400 million pages delivered per month without changes to the core platform architecture.
February 03, 2009 | » Comments (0)
"Rubbing Technical Antennas"
January 19, 2009
One of my favorite quotes ever from talking to a customer is when someone mentioned “getting the engineers together to rub technical antennas”. What better metaphor could be used to portray the idea that engineers and technical people just plain communicate differently with each other.
[Interesting side note: Antenna has two plurals. Antennae is used for the jointed, movable, sensory appendages occurring in pairs on the heads of insects and most other arthropods, while Antennas is use for a conductor by which electromagnetic waves are sent out or received. In this case, I think antennae would have been more appropriate, but I am just relating what was said.]
Being able to communicate effectively about technology with technical people is obviously a critical function for any CTO. However, equally important is the same effectiveness in communicating about technology with non-technical people. The true duality of this jumped to the forefront for me last week as I was immersed in days straight of Power Pointing.
The two diagrams below are of the same thing (our technology platform). The first was created as part of a marketing/investment pitch deck, while the latter was prepared as part of our architectural planning process. Are they each effective in their intended context? Yes, I’d say so. Are they interchangeable? Certainly not! I don’t even think that I used the same parts of my brain to create them.
The ability to communicate in both the technical and non-technical context is something that I continuously work at – in fact, I consider it one of the most important parts of my role, perhaps just below driving technology vision.
And finally, a closing message for all the other techies out there: bzzz – buzzzz – bizzizz – uzzzib – bizzo.
January 19, 2009 | » Comments (0)
And the winner is Jaguar!
January 14, 2009Thanks to all the Local Peaks visitors who voted on what animal we should name our "J" release. Voting is officially closed. The final results were:
Jackal | 13%
Jackrabbit | 14%
Jaguar | 47%
Jerboa | 25%
Please stay tuned for future Local Peaks polls, including additional release naming opportunities.
January 14, 2009 | » Comments (0)
Iteration 1, Day 1 of multiple scrum teams....
December 17, 2008Today was a milestone for our development team at Clickability. We have made the quantum leap from one scrum team to two scrum teams and today was the first day of the first sprint as such.
Please consider this post as an initial report of what we are doing, to be followed up with future posts as to what has worked, what we have changed, and what has been challenging.
As of today, each scrum team consists of:
- 3-4 java engineers
- 1-2 QA engineers
- 1 Product Manager
- A tech writer (too frequently over looked!) that serves both teams
Members from these groups serve in the roles of:
- Product Owner (the PMs)
- Scrum master (one of the Engineers)
- Tech Lead (another one of the Engineers)
[Note: We have found the role of Tech Lead to be particularly important right now as we have a lot of team members who have only recently joined the company. If everyone on the team had been here for a long time, probably not as important to distinguish]
There are definitely things that we are concerned about in doubling our number of scrum teams. The top ones and how we plan on addressing them are as follows:
- Knowledge sharing – all code reviews will be performed across scrum teams to prevent the silo’ing of information
- Parallel teams / single code branch – this is both a challenge and an asset. Conflicts will occur, but we have a build engineer to keep things running smoothly and by maintaining a single branch, our continuous integration environment can uniformly deliver on a, well, continuous basis
- Coherent design and architecture - we are forming an architecture committee that will consist of members of each scrum team that will ensure that architecture and design decisions are made consistently and in the context of "the bigger picture"
- Consistent practices - over the past year, the team has collaborated to produce a well documented set of best practices around code style, refactoring practices, etc. that will serve to maintain consistency in the code base regardless of how the team operates as a whole
- Stand up meetings – who goes first at the daily standup meeting has already been decided by a coin toss…
Below is a picture of our expanded scrum board, or as I have taken to calling it, the “double barrel scrum board”. If it looks like it takes up an entire wall, that is because it does! If you are ever in the neighborhood, feel free to stop by and look at all the PostIt’s.

PS - Those who have read my bio will realize that the last time I was dealing with 2 scrum teams was in a very different context....
December 17, 2008 | » Comments (1)
No “four legged fish”, please.
December 03, 2008Evolution is a powerful force in nature. Through a long sequence of small, sometimes imperceptible, changes, land mammals became whales and apes became man. But such roads are not straight and narrow - evolution makes mistakes, it goes off on tangents, it starts in one direction only to be steered back in another. The products of such digressions are the out-of-place creatures such as Ichthyostega, the “four legged fish”. Some oddities linger around for a while in their obscurity, but for the most part, they are forgotten.
In software development, these evolutionary offshots are such things as "custom" or "one-off" features. How many SaaS platforms out there have platform code specific to individual customers? Does
if(customerid==1234){
look familiar? I suspect more SaaS companies have such code in production than would like to admit it.
Sometimes deals require one missing feature or enhancement to be added. Whenever possible, it is far better to either turn the “special” request into a legitimate feature for all customers to use, or to simply say “No thanks, four legged fish are not allowed here”.
However, in some extreme cases (particularly with early stage products and companies) the right thing to do is actually to make that custom addition and acquire the new customer. CAUTION: this must be done with acceptance that this WILL (and I repeat, WILL) come back to haunt you at some point. These custom additions are difficult to maintain and there is usually only one of two people who may remember how the code is supposed to work when it either breaks or needs changes. Certainly not a scalable or sustainable practice.

The “four-legged fish” Ichthyostega is not the "missing link" between marine and land animals, but rather one of several short-lived “experiments”.
December 03, 2008 | » Comments (0)
Details of our MySQL Query Analyzer Use Case
November 20, 2008Last week I was interviewed by Charlie Babcock from InformationWeek about the MySQL Query Analyzer. I love tools that provide immediate, actionable information, and the Query Analyzer is just that.
His article ( http://weblog.infoworld.com/openresource/archives/2008/11/mysql_query_ana.html ) presents a few facts from our results and I chose to publish a more detailed description about it as I think there are some very interested things to learn from our experience.
Optimizing a SaaS platform is a never ending task. I'd like to think that after 6+ years of running our platform in production, and scaling it multiple orders of magnitude, that we've eliminated the obvious bottlenecks. There are just not any killer queries left that are simply too slow.
Having eliminated those low hanging fruit over time, we were left with writing Perl scripts to parse SQL logs and other rudimentary analysis mechanisms. From the first use of the Query Analyzer, it was apparent that the data available in it was opening up a new door of analysis to us, focused less on manual inspection and more on collected statistical information.
Below is a description of our first use of the tool several months ago while it was in alpha.
Test case
1) We pointed one of our production application servers (a website publisher) to MySQL Query Analyzer instead of the MySQL database server. The Query Analyzer proxied the requests to the database, capturing statistics and metadata on the fly.
2) We let the Query Analyzer gather statistics over a 20-30 minute period of time. This was live traffic - not a controlled test environment or benchmark test.
3) We analyzed the statistics to determine what was the most "expensive" query. This was determined by looking at several of the statistics that the Query Analyzer records, such as Most Frequently Run, Most Records Return, Largest Result Set (Bytes), and Most Processing Time.
In the end, the chosen query was NOT the most frequently run query, nor was it the slowest query. Rather it was the one the collectively used the most processing time, returned the largest results sets and also ranked in the top 10 in terms of frequency.
We had a software engineer take a look at the code and figure out how to optimize it.
Optimization
The query in question was intended to load the "placement list" for a website section. It is a single table query that filters based on date ranges and performs a sort based on a rank value. The query is well indexed and very efficient for small result sets.
However, we realized that the query was unbounded and that over time, some of the result sets have grown from the hundreds to the tens of thousands of records. There were two optimizations that the engineer coded:
1) The sort was removed from the SQL query and performed in the java code once the result set was returned as we like to push work out from the databases and distribute it in the application layer when possible.
2) We added logic to the code such that a bounded query was run first. If this satisfied the data need, great! If not, the unbounded query was run. In the end, we end up running more queries, but the average result set size (and cost) is much, much lower.
Results
We have a benchmark test that we run against the website publishing application. It serially hits the server with several hundred URLs from real websites that we publish. This isn't a perfect "real world" test as it doesn't take into account concurrency, but by running the test against a cold server (nothing cached in memory) it does provide an indication of raw speed of execution.
The baseline benchmark times before any optimization was done, averaged over five minutes long at 5:27.
After the code was optimized, the benchmark times dropped to an average of 2:54, a 1.9x performance improvement!
For the amount of time put into the analysis and ultimate optimizations (less than two days of total analysis and engineering time), this represents a HUGE win from a scalability, performance, and cost saving perspective. It was only possible from the database usage and load nuances provided by the deep inspection of the Query Analyzer.
November 20, 2008 | » Comments (0)
Barack takes spotlight and steals web traffic
November 10, 2008Election day 2008,and then again the day after, was a record setting traffic day for us at Clickability. Many of our customers are traditional media companies, like TV stations and newspapers, and events like elections (and tornados!) are huge traffic drivers. The 2008 elections were no exception.
However, the most notable aspect of the traffic pattern this day was not the overall volume (this was not a surprise) but rather it was what happened at 9pm PST. When Barack Obama took the stage in Chicago, there was a dramatic and instantaneous drop in traffic to the media sites that we deliver.
People stopped clicking and just listened.
As soon as the speech was over, the traffic once again bumped up to where it was before. A historic moment for the country, and a fascinating moment in the evolving social dynamics around media and the web.
November 10, 2008 | » Comments (1)
So, Is SaaS Cloud Computing or Not?
November 07, 2008Cloud Computing is rapidly becoming the buzz word du jour. As with all emerging buzz words, it is a term that means many different things to many different people and a consistent industry wide definition is yet to emerge. Some like to take a narrow approach and define Cloud Computing as only pure, virtualized utility services like storage and CPU usage. Others have created a much broader approach to defining Cloud Computing, encompassing everything from utility services to MSPs to SaaS to seemingly anything else that connects to the internet.
I’d say that my own current definition has been altered by a conversation I had last week with Eric Knorr, Editor in Chief of InfoWorld. I used to take the narrower view of Cloud Computing, and distinguished that Cloud Computing was truly the realm of “infrastructure components” (ie. Amazon S3) while Saas was the domain of full on demand applications (ie. Salesforce.com). Eric started our discussion with the premise that “the cloud“ was originally a metaphor for the internet, and therefore Cloud Computing encompasses all services, platforms, and applications accessed over the internet. When explained this way, the broader view of Cloud Computing makes sense to me – it adds some structure to the fuzzy topics . It also aligns well as a starting point in the discussion of the value proposition of cloud computing, as each of these sub-areas is geared towards the same goal: allowing IT organizations to add on-demand capacity or functionality to their overall IT landscape.
November 07, 2008 | » Comments (0)
Is there a Chief SaaS Officer in the house?
October 16, 2008This summer, I moderated a roundtable sponsored by the SIIA R&D Board. A group of SaaS technology executives were discussing sustainable SaaS practices. It covered a broad range of topics, including security, application development, rollout methodologies, etc. It was amazing how many times the conversation shifted back to some legal aspect of things – from SLAs, to negotiating with partners, etc. The CTOs and VPE’s sitting around that table (myself included!) are clearly being called on to perform analysis and duties far outside the traditional scope of product development, engineering or research and development.
This seems to be a prevalent theme in SaaS businesses, where complex partner and business relationships meet head on with complex technology and service models. People look to the CTO/VPE’s as the guys with the answers for such complex things as they are the ones who connect all the pieces together from a technology perspective. At one point someone suggested that maybe there is a new role that is emerging at SaaS company: the Chief SaaS Officer.
This would be someone with great technical aptitude, but also someone with the business acumen and legal training to be able to construct meaningful partner agreements from both a technology and business point of view, someone who could build SLAs that matched both the technology and legal requirements, and someone that can handle many of the ancillary tasks that are currently failing to the technologists.
I do not know of any Chief SaaS Officers out there right now, but I suspect that this role is currently distributed throughout the executive teams of most SaaS businesses with much of it failing onto the technologists among them.
October 16, 2008 | » Comments (0)
MySQL UC 2008: Mitigating Database Replication Latency
September 15, 2008At last year's MySQL User Conference, I gave a presentation titled "Mitigating Replication Latency in a Distributed Application Environment" This was a fun presentation to do as it highlights what I think is one of the thorniest issues we've encountered building the Clickability Platform.
We have a distributed platform environment that is built around the loose coupling of applications around a replicated database infrastructure. There is always latency in database replication and we've gone through several iterations of how to create a reliable cache clearing mechanism to account for such. The presentation is available online here:
September 15, 2008 | » Comments (0)
About Local Peaks
September 01, 2008This is a blog about technology, but with a title borrowed from an evolutionary biology concept. I am a believer that building technology is best done by recognizing, embracing and optimizing the evolutionary forces and processes at work. We can learn a great deal about how to build world class products and technology over time by thinking about why zebras got their stripes.
Evolution is driven by a process described as Natural Selection, whereby a set of environmental pressures force species to favor specific mutations and adaptations over time - camels developed humps to store water in arid regions, cacti developed spines to keep would be snackers away, and zebras got their stripes to confuse incoming predators. These selective pressures which not only relate to survival of the individual organism ultimately will define the entire species' ability to perpetuate in the face of these environmental pressures.
One way to think about natural selection is that it drives the species up an evolutionary hill. There will be periods of rapid change and periods of slow change, there will be big leaps and there will be small steps, but as long as the environmental pressures keep pushing "uphill", the species will continue to climb towards the peak.
Species that reach the peak (or are getting close to it) may seem to appear to be reaching the pinnacle of evolution. However, it is possible that the peak they are approaching is just a local peak. Perhaps it is just one of the smaller peaks in a mountain chain, perhaps it is a false summit, with the hardest climbing yet to come, or perhaps over the course of the ascent, the environmental conditions have actually changed and the peak itself has take a new shape.
The local peak is superseded by these higher peaks that represent greater ability to survive and greater proliferation of the species. But alas, a species maybe stuck on the local peak (at least for a while) without the ability to jump peaks.
With software too, this idea of local peaks must be recognized. Are we too focused on climbing the hill in front of us to recognize the bigger opportunity in the distance? Is there false hope that the summit we feel we are approaching is the true peak? And perhaps the biggest question of all: when we see we are on a local peak, can we jump our path to the higher summit?
In writing this blog, my goal is to capture some of the thoughts, ideas and lessons learned that I've had in the course of my tenure as a "web-native" CTO. I am passionate about such things as Software as a Service, Agile development methodologies, and open-source technologies. I will share successes and failures and in the end hope that some of the things shared here will help evolve your technical endeavors.
September 01, 2008 | » Comments (0)





