<!-- Content Here -->

Where content meets technology

Jul 02, 2008

Book Review: Professional Plone Development

I just finished Martin Aspeli's Professional Plone Development

. This is the third Plone book that I have read over the years and it is definitely the most advanced. Do not take the words "professional" and "development" in the title lightly. Martin is a brilliant developer with a long history in the Plone project so I would expect nothing less from him.

What I found most helpful about the book is its coverage of the many new concepts that were introduced in versions 2.5 and 3 of Plone. If you have been away from Plone for a while, it may be time to check back in. I think the coolest stuff is the incorporation of Zope 3 constructs. The overall trend with Zope 3 is to make the platform less monolithic and more modular. This allows you to use Zope components in everyday Python applications and to use more standard Python programming techniques in Zope applications. The core Plone community has been energized by these new ideas for a while but they are just now starting to work their way into the mainstream. If you don't know about these concepts yet, you are starting to fall behind.

Considering the breadth, complexity, and innovativeness of Plone 3, Martin had a lot of ground to cover. Still, he was able to provide useful summaries and examples while keeping some semblance of narrative flow (don't get too attached to his case example though. the book frequently wanders away from the example project of a movie theater website). Professional Plone Development helps orient readers and prepare them to embrace and leverage the concepts that advanced Plone developers use in successful projects. Of course, to complete his education, the developer will have to read the source code and other online resources and, of course, learn by doing. One thing I would like to see more of is references to online documentation (both in-line references and a "further reading" section at the end of each chapter).

The ideal reader of this book is someone who knows his way around Plone and is proficient in Python - perhaps someone who has read Plone Live (which is now, unfortunately, pretty outdated - so much for a constantly updating book) and has built a few sites. This kind of reader will really benefit from Martin's best practices of test-first development and setting up an efficient development environment.

I also like how Martin de-mystifies the Zope platform which I have always regarded with fear and respect (except when I worked on a project to re-wire Zope to talk to an Oracle database rather than the ZODB: pt1, pt2, pt3). Martin reminds us that Zope is just a bunch of Python modules and it is OK to poke around and modify code to see how things work. Just remember to set the code back to how you found it or risk angering the mystical Zope spirit :)

Jul 01, 2008

Bakers and Chefs

A couple of days ago, when presenting to a client, I started to talk about different types of users and analogy popped into my head. It seemed to resonate with the group so I thought I would share it.

I find there are two high level approaches that people take when using software: to methodologically follow steps, or to play around with it until you get the results that you want. People tend to gravitate to one or the other.

People who like to follow steps use software like they are baking a cake. When you bake a cake, the ingredients combine to create complex chemical reactions that you have no hope of understanding. The best you can do is religiously follow the steps and hope for the results that are promised. (Or at least that is how most people bake cakes. I am sure that expert bakers are different.) For many, that is what using technology is like. Cooking, for most of us, is a far more experimental exercise. You can follow portions of the recipe and improvise the rest. You can add flavors until you get what you want. If it starts to taste bad, you can usually bring it back to edible by adding a little of this or a little of that.

Not to be age-ist, but millennials are often chefs. They are comfortable enough with technology to improvise when completing a task or use a tool to do something completely new. Digital natives aren't afraid they will "break the internet." They won't read the documentation until they are stuck. People who didn't grow up with software tend to be much more cautious and follow the directions. They panic a little when something unexpected happens.

So why does this matter? It is important to user interface design when you have to serve these user populations. For the bakers, step-by-step instructions built right into the UI help. You also need to be very careful about consistency in naming conventions (just like the story of the user not being able to find the "any" key, a baker will tense up if the instructions talk about a "save" button but the button on the form says "submit"). For chefs, you need to do a lot more testing to ensure that unexpected uses don't mess things up. Expect chefs to do a lot of trial and error. If you know that they will not like the consequences of executing a function, warn them. The classic case is warning a user that if they navigate away from the page, their work will be lost. A baker wouldn't navigate away from the page unless the instructions told him to.

Anyway, I (and I think my audience) found it helpful to visualize a user carefully measuring their actions with a software application as if he is following a complicated cake recipe verses clicking around like he is throwing spices into a pot. Maybe you will too.

Jun 30, 2008

First Official Release of Sling

The Apache Sling team recently announced the first official release of Sling. Now you can download some nicely packaged Sling bundles to play around with.

I have been experimenting with the Sling/CRX bundle that came with Day Software's JCR Cup 2008 competition (entries due midnight September, 30) and was really impressed by what I saw.

Sling allows you to write applications on top of the JCR using either server side or client side Javascript. On the server side, you can create Java Script Templates (ESP files) that give you access to the full JCR API. Templates are stored in the repository and called using an elegant MVC request processing framework. Templates can be called directly, or can be associated with content types and executed when an asset of that time is requested. As you might expect from Roy Fielding's employer, it is all very REST. For client-side scripting, you just import a Javascript file called sling.js and you get methods like "Sling.getContent" (which gives you an array of Javascript objects).

Despite the fact that Sling is still an incubation project, it is fairly mature and robust. Day's upcoming release of Communiqué (version 5) uses Sling extensively. I envision Sling being used in a presentation tier where pages are statically rendered (baked) from content in the JCR and Sling is used to power dynamic AJAX overlays using content from replicated JCR workspaces.

I really like the fact that logic is written in an interpreted language like Javascript. Development and deployment is faster when you take out the compilation step. Furthermore, Sling is built as OSGi (using Apache Felix) bundles so it is more modular and flexible than a typical monolithic Java web application.

The CRX (or the free Apache JackRabbit implementation of the JCR) and Sling should be considered along side Alfresco with its elegant Web Scripts (which also uses Javascript as a scripting language). Alfresco has some nice virtualization features but there may be a higher level of lock-in to the Alfresco API's. Alfresco has a user-oriented user interface while the CRX only has a JCR browser which is really only intended for administrators. However, in both cases, you will probably want to develop your own user interfaces because Alfresco's current WCM UI is not optimized for managing web content (improvements are scheduled for mid 2009 - interestingly, the Alfresco team is calling these enhancements "project _Sling_shot).

Jun 24, 2008

Watch Out Webex

Skitch
Uploaded with plasq's Skitch!

I just got through a 2 hour WebEx session where I walked through my deliverable with my client. At $0.33/minute/person for a pay per use session, the bill probably came to around $120 (without integrated voice). That is actually more than the train ticket to get to New York where the client is. Still, when you factor in the time (9 hours of travel round trip!), parking at train station, and (of course) the carbon, it was an economical choice.

An even more economical choice would have been to use Google Doc's presentation feature for free. It would have worked for me because I wasn't showing anything other than slides. If I was demo-ing an application I would have needed to use WebEx or some other real screen sharing application.

Oh well. Something to keep in mind for next time.

Jun 23, 2008

Python Gets Drupy

Via Boris Mann's blog, I just learned about Drupy - a full port of Drupal on Python. Among all the initial reactions I have to this announcement, the one that screams the loudest is "why?"

Drupal is an intentionally, non-object oriented framework. Drupal does not use PHP's implementation of classes and there is no inheritance - at least not in a classic OOP sense . The architecture works by exposing hooks by which modules can be called by core system functions and do extra stuff. To a Python programmer thats just, well, un-pythonic.

Python is a super-object oriented language. EVERYTHING is an object. Even a function is an object (pause to wait for non-pythonista heads to stop spinning). Python also has plenty of frameworks of its own. Zope is the grand-daddy of content oriented web application frameworks but it is a lot more complicated to fully understand than Drupal. Django fills the role of a leaner, content-friendly Python web application development framework. Furthermore, one of the really great things about Drupal is that it is written in PHP and it doesn't take too long for a good PHP programmer to understand how it works. There are far fewer Python developers than PHP developers out there.

The single reason why this could be a good idea is if you could run Drupal modules on top of Drupy. However, given that modules often don't work across multiple versions of Drupal, my confidence that they could integrate with Drupy is very low. I think a better idea would be a CMS that is functionally similar to Drupal written on top of a Python framework (like Django). In particular, a CMS with strong user profile management, a taxonomy based system for organizing the repository, and extensible through the addition of modules.

Of course, like with a lot of other things, I reserve the right to change my mind when I see more. But for now, I'll take my Drupal in PHP and go with something else when I want to code in Python. Drupy team, I welcome you to prove me wrong.

Jun 23, 2008

Time Machine Restore

Although few people do it, restoring from backup is the only way to ensure that your backup and recovery system works. Since upgrading to Leopard, I have been using Time Machine to back up my laptop over the network (onto a and external hard drive connected via USB to my Airport Extreme). What better way to test a restore from Time Machine than to put in a bigger hard drive and restore? I figured if it didn't work, I would still have my old hard drive (still working but too small).

I am happy to report that the restore went perfectly. The general instructions are to be found here. The only difference is that I restored from the network rather than directly through the USB port. The one little hitch I ran into was that it took a couple of times for the utility to see my new local hard drive.

I am the kind of person who is frequently shocked when things work as advertised so I was in awe that, after I swapped out the hard drive and ran through the process, it was like nothing happened but the free space of my hard drive grew. All the software was as I left it. Even my BASH history was intact. The only thing missing was my "Downloads" - I had to recreate it. I guess this is because Mac regards this as a temporary space and not worth recovering.

So, don't hesitate to set up Time Machine. It could help you recover from a massive hard drive failure, a stolen laptop, or any other disaster - as if it never happened.

Jun 19, 2008

Book Review: OpenCms 7 Development

I just got through reading Dan Liliedahl's book OpenCms 7 Development (Packt Publishing). I met Dan when I was at the OpenCms Days developer conference and was impressed with his presentation. Dan knows his stuff (not just about OpenCms - he worked for FutureTense in the early days).

The book was first introduced at the conference. I was surprised that Dan was able to get it out so quickly after Version 7 was released. It seemed like Version 6 was out a long time before a book on it came out. Dan did mention that writing about the product as it was being developed was a challenge.

When I started reading the book, I was pleasantly surprised to not have to go through any content management theory. The book stays true to its title. Not that theory isn't important but I think it is reasonable to assume that someone developing on a CMS knows the about the basic concepts. If you don't, some background reading (and also some requirements analysis too) is in order.

One short-coming about diving right into the OpenCms architecture is that the beginning is a little choppy as the author tries to orient the reader to the platform (OpenCms is a very mature and elaborate application). Although it is choppy, there are some very good explanations of things like OpenCms's request processing chain and how the code is organized. There are also excellent tips on configuration management and how to configure your IDE. Still a reader may want to supplement the book by reading some additional OpenCms doc to help introduce him to some of the bigger OpenCms concepts.

The book hits its stride as it gets into the examples, which revolve around building a blogging site. There is good coverage on everything from creating content types and display templates to building extensions. By over-engineering some of the design, Dan is able to go into depth in modularizing code and managing logic in Java classes. Dan's experience in building big sites shows in how he designs for manageability and reuse. All the code is put into modules that can be exported and deployed to different OpenCms instances. The book also covers some of the new features like WebDAV, the new security model (with organizational units) and the relationship engine.

The one area that I think could use a little more coverage is on the TemplateOne and TemplateTwo frameworks. Dan builds everything from scratch to show how OpenCms works but these frameworks allow you to get up an running with less development. Unfortunately, neither of these are particularly well covered in the OpenCms documentation. Perhaps a whole book on TemplateOne and TemplateTwo is in order.

Overall, OpenCms 7 Development is a must read for anyone who wants to implement robust sites on the OpenCms platform.

OpenCms is covered in the Open Source Web Content Management in Java report. The standalone evaluation of OpenCms is also available.

Jun 19, 2008

Web Content 2008 Notes

Flickr tag: wc08
Twitter: #wc08

I am on my way back to Massachusetts after thoroughly enjoying my time at Web Content 2008. Thank you Scott Abel, Michael Silverman, and the rest of the Duo Consulting team for putting on another great conference. The event was sold out this year. I would register early next year.

Also, it was great to meet Deane Barker and Adrian Sutton and hang out with the old crew: Scott, Lisa Welchman, John Eckman, Rahel Bailie, and
Jarrod Gingras.

What follows are my rough (and I mean rough) notes from the sessions that I attended. They are as much for my memory as for your information so feel free to skim and click through to the slides which Scott has conscientiously posted. Not all of them are up yet but I am sure that Scott will track down all the speakers and beat their slides out of them sooner or later :)

Dick Costolo - The Next Content Wave: Hypersyndication (slides)

The general theme is that the conversation is more important than the content. Commenters are creating brands for themselves without even having a website. The conversation is distributed and does not revolve around the source (FriendFeed, Twitter, Digg, Del.icio.us, etc.).

This is a major disruption in the marketplace. Evidence: the mainstream media companies and investors have been resisting it. Investors that missed out on opportunities like FeedBurner are seeing potential here.
[Seth: I still don't know how these services will monetize the value]

All media is going to be social.
What Comes After Post Modernism? is a great post. The comments (all 132 of them) are just as good. The problem is social media is that you lose authority. [Seth: is just just a temporarily as authority shifts to new sources? Will we have the capacity to recognize so many authorities or will authority become more personal?]

What does this mean for advertising? Feed originated traffic has a much lower CPM than search originating traffic [Seth: that was why I wasn't making millions in Ad Sense on my blog! This makes sense, search is more intent laden. People search because they need something. Feeds is more informational. Advertising strategies focusing on direct response marketing (rather than branding campaigns - see more detail this on my notes from Gian Fulgoni), will get better results from search traffic)]
Feed traffic demands a new strategies for monetizing content.

Get Satisfaction is a cool new concept. It allows companies to outsource their customer service. It is basically a third party hosted forum that allows vendor employees and the community to answer support questions. Whole Foods is very active with it. This could harness the power of the "professional commenter" who wants to build a brand out of his expertise. As a customer, wouldn't it be cool if your vendor and other customers competed with each other to give you the best answer to your question?

Darren Barefoot - The Many-Armed Starfish: Today and Tomorrow in Social Media (slides)

Social media has been around forever. What is new is broadcast/publishing media and that is turning out to be short lived. Mash-ups are old too. Great example of the fact that modern remakes of Elizabethan playhouses are based on a drawing made by an amateur artist visiting the original.

Darren's presentation had lots of ideas from Clay Shirky and Jay Rosen. He describes the rise of the creative class and the notion that the Internet can make you a "little bit famous." In the broadcast, 1 to many style, fame was an all or nothing type of thing.

There are 7 characteristics of social media: Conversation (2 way through comments etc.); collaboration (connects people that were not connected. like wikipedia 7million editors.); sharing; scope (web is infinite. itunes has broken our idea of what an album is); community (find affinity groups); transparency and authenticity;

Piero Tintori - Running an Efficient CMS Evaluation and Procurement Process (slides)

I wouldn't normally expect to hear good advice about software selection from the CEO of a CMS vendor but Terminal Four's Piero Tintori is such a genuine and nice guy that I had to sit in and see what he had to say.

With very little promotion of Terminal Four, Piero did a very good presentation on how to work more efficiently with CMS vendors. It has been a while since I had worked for a CMS vendor and it was a good refresher see things from the vendor perspective and think about how to make the little adjustments to make the process easier on everyone.

Some really good points worth calling out:

  • Take the time to understand your requirements to write a clear, concise and thoughtful RFP. The response is going to be 2-3 times as large as the RFP and you don't want documents that take forever to review. Leaving in irrelevant cut/paste text (like procurement questions designed for other types of products such as "is your product radio-active") or repetitive and/or contradicting requirements shows that you are not serious about your RFP and the vendor will may put less time in the response. Furthermore, showing yourself to be sloppy may make the vendor inflate the price to mitigate the risk of having to spend more resources to make you successful.

  • Be realistic about timing. Don't set an overly aggressive timetable. Everyone hates a hurry up and wait relationship and you want your vendor to take your deadlines seriously. Piero had some nice rough guidelines of 6 to 8 weeks from RFP to selection on projects less than $50,000 and 8-12 weeks for projects more than $50,000. Companies should expect 4-12 months from initial inception to selection. My experience is that there is usually some organizational hiccup that delays these projects. To make things as efficient as possible, it is best to line up and plan with people from procurement, legal, and budget holders.

  • You are looking for a product that is right for your organization [totally agree]. Piero recommends working with a software vendor that is the same size or smaller than your company [Piero would say that. Terminal Four is small. This advice would take big vendors like Oracle and IBM out of most company's short lists. On the other hand, working with really large software vendors is hard if you are little company]. You should also try working with a vendor that is excited about your project.

  • Communicate your budget. Most buyers are afraid that if they tell how much money they have to spend, the price will always be exactly that amount. However, your budget is one of your requirements and a vendor can tailor his solution better if he knows that constraint. If the product is way out of your price range, it is a waste of everyone's time to evaluate
    it. I would tend to agree with Piero here even though I understand why my clients will want to hold back this information.

  • Follow through with reference checking before you make your choice - not as a formality after it is too late.

  • Timing is important. In the U.K. vendors are really busy responding to RFP's in Feb, July, and December. I know that customers in the U.S. buying from public companies try to do deals around the fiscal quarters to get preferential pricing. If you try to work with vendors during the busy season, the good vendors (that are busy) will be rushed. The marginal vendors (who are not busy) will have an advantage. Also, I know that if you work with a large vendor, it takes them a long time to process a purchase when sales volume is high so you might miss end of the quarter pricing if you try to hold it to the wire.

Tim Yager & Jim Thaxton - Size Doesn’t Matter: How to Build and Maintain Huge CMS Projects (slides)

Tim and Jim (two developers from Duo) did a great (and funny) talk about migrating big web sites. It was a little like a midwestern millennial version of Car Talk. They had useful, down to earth advice about prototyping a solution, migrating content, gradually phasing out the old system, and applying lessons learned to future maintenance and enhancement of the system. The slides are worthwhile reading.

John Eckman - Upload, Tag, Share, Discuss: Content Management in the Age of User Participation (slides)

I think John's talk would have been an excellent keynote (future conference organizers, consider it!). He described it to me as "high concept, low information" but sometimes you need the big ideas to make sense of the little facts.

The big idea that John had was that social media is less about the tools (or containers) and more about the empty spaces within that people fill with their creative energy. We, as content management professionals, tend to focus on technology and process. We think that content management should be done by qualified professionals. Social media is changing things as it breaks down the barrier between the contributor and the reader.

Classic content management is not going away but it is starting to share the stage with community management. The rest of the talk was about ways to manage a community.

You need to establish norms and standards and socialize community. Decide what kind of community that you want. Do you want to create the stereotype of a library (strict rules, quiet behavior), the coffee house (somewhat boisterous), mardi gras (anything goes).

It is not one conversation. There are many conversations and they can happen in different environments. Behavior is a function of person and his environment. Offering different environments will encourage different behavior.

How to control communities

  • Terms of service. Avoid surprising people. The terms of service need to be readable and understandable by the community but also have the appropriate protection to satisfy the company. Wordpress.com has a good model of a legalese version and a common language version.

  • Identity: anonymity can lead to bad behavior. Make it easy for people to build a reputation. If they can build a reputation, they will try to make a good one.

  • Communities are hard to start but resist the urge to fake it by artificially seeding content. You can seed content but it has to be real. There was some follow on discussion about the relative challenge to start social media inside and outside the company. John said that there needs to be genuine executive sponsorship and real incentives. I need to follow up with him on this. We have both worked for companies that talked the talk here but were not successful.

  • Exclusivity for everyone. All these new services have private betas to create the feeling of exclusivity and establish a value of membership (in addition to controlling growth). I think that Fire Eagle is a great example. Invites have been hard to get and this has created a lot of interest around a service that is not all that useful (IMO).

  • Moderation. Fully moderated may make you liable for the content. Meta moderated (slashdot. Amazon's "Was this helpful?"). Community moderated (flag as offensive). Post moderated (let it through. check it later). The R.E.M. tour site (built with Drupal) pulls in content from flickr and twitter.

A mixture UGC/Professional content has higher CPM.

Take your content and put it in lots of different places. Interact with customers where they are.

Gian Fulgoni - Maximizing the ROI from Online Marketing

The big idea is that web marketing is too focused on click through as a measurement of value. We are attracted to click through because it is the easiest thing to measure but there is equal or greater value in delayed purchases (not-trackable) and brand awareness and recall.

Advertisers are not thinking about enough global campaigns even though the internet is growing more rapid outside of the US. 77% of global internet users are outside of us.

In a down economy, advertisers may push more of their ad dollars online because it is cheaper and they can save money. Online advertising is represents 7% of the total ad spend but there are 40% more ads on the web than on broadcast.

Direct mail is at the top of 21% [Seth: no wonder I get so much junk mail]. Broadcast is 15%. Newspaper is 14%

Search is 41% of online advertising.

60% of advertising spend is for branding campaigns. not direct response.

Search is better for direct response marketing.

The number of unique visitors reported by publishers is inflated by cookie deletion. 30% people delete cookies every month or so (usually 4x per month).

Who is clicking? Most of the clicks come from a small population of young, low income surfers (low value to advertisers).

Most purchases are buying offline. Conversion metrics are missing this.

Research:
Direct online was only 16% of buying effect. 21% purchased little later like in another browsing session. 60% bought later offline.

ROI is a lot bigger than currently thought.

Searchers are older, wealthier, and more educated. Retail is hurting brand and increasing price sensitivity through their price based marketing campaigns.

95% of google ads are not being clicked on.

16% improvement in brand association for top ad - just a text ad.

Success of craigslist shows that coupling of content and classified advertisers is less natural in the internet. when people want stuff. they don't go to the news content. they go to the classified site.

Jun 18, 2008

Hos(t)ed?

502 Server Error
Uploaded with plasq's Skitch!

There has been some interesting posts and white papers (for example, CrownPeak's whitepaper "Open Source Isn't Free (It's not Even Cheap)" (registration required)) about the trade-off and relative merits of open source and hosted solutions. I think this is an important topic because, as I have said before, both strategies are worth considering for companies looking to lower their up front costs of deploying (or redeploying) a website on a new platform.

As someone who covers open source software and who hosts their blog on Blogger, you would think that I would have something to say about the matter... and of course I do.

It all boils down to a simple question of "what business are you in?" In the world of content I think there is a clear breakdown into two categories of businesses: content businesses and content distribution businesses. A content business competes on the basis of the quality and/or exclusivity of the content. A content distribution business competes on the accessibility, reach and engagement of the content consumption experience. A content business will often partner with several content distribution businesses through syndication relationships. Content distribution businesses often have the same content as their competitors and need differentiating technology. Product companies (and other companies whose content is about their products) tend to operate and behave more like content business. They shouldn't care about the stickiness of their own website (I am reminded of the Web 1.0 bubble when Internet strategists tried to convince their clients that their business, whatever it was, would suffer if they failed to do something fancy on the web). Content businesses (and product businesses) need their web presence to serve their customers, support their brand and reinforce their credibility. They don't need to be sticky. Professional, well organized, stable, and up to date is good enough (sadly, better than average).

Content Here is a content business. You can read the articles here and here and here and probably other places as well (I am just happy you are reading them). The tools I use to compose and publish content are cheap and simple. I don't care if other websites have similar branding treatments (as a matter of fact, other websites have used this template). I am satisfied with the average uptime standards that Google is able to provide. Yes, blogspot does go down from time to time but at least when it does go down I don't have to frantically troubleshoot to get it back up - I just wait. And, yes, I would like to to have a slick little friendfeed commenting plugin. But I have more important things to worry about like finishing my next report and blinding my consulting clients with value.

When there is a good fit, I include a SaaS products in CMS short-lists for my clients. However, I often find that business users are drawn to the promise of what could be done on high end commercial platforms (with adequate levels of customizations that will probably never be done). A solid, simple, basic feature set on a product that is well managed is not sexy to a buyer. Business users don't usually sit through a product demo and visualize what the UI would look like if it was broken because their I.T. department didn't invest the right time and resources to adequately configure, customize, host, and maintain the platform. I.T. departments don't think enough about how hard these applications can be to upgrade. The hosted solutions in the marketplace succeed with good customer service and smooth upgrades that lead to high retention rates - not through feature/function/flash competitions. The UIs tend to be boring but functional. Business users like feature/function/flash competitions.

If you make the right choices, hosted solutions can give you better than average service at a lower cost (in terms of time or money) because they can take advantage of specialization and economy of scale. For example, an outsourced data center is going to have better failover and redundancy than an average corporate server room (much better than the converted desktop server with the noisy fan under my desk). A hosted application is going to have better administration support than an average installed application. Better than average is good enough for the context aspects of your business but not the core (I knew I would be dropping a little Geoffrey Moore knowledge before this post was through). For the core, you want excellence and to be excellent you have to invest disproportionate resources and ownership. You can't settle with a service that your competitor can also buy and, therefore, have just as good you.

If I were in the content distribution business, I would make the investment to achieve greater than average uptime and continually add new features to the website. I would do a lot of custom development on the platform to make the functionality unique. Open source would be a key component of the technical strategy because it would help achieve an optimum mix of a commodity foundation, fast-follower (me-too) features, and unique features that I built myself. Instead, I am pleasantly surprised when I log in and notice that a new feature (that probably has been available on alternative platforms for ages) has been added.

There is actually a lot of overlap between hosted and open source. Most of the Software as a Service providers rely heavily on open source frameworks and components to deliver their services. There is also a great opportunity for systems integrators and commercial open source companies to deploy highly managed, turnkey solutions using open source content management systems. The customer doesn't even need to be aware that the solution is open source because they go directly to their partner if they need any help.

Untitled
Uploaded with plasq's Skitch!

Recent developments in cloud computing and third party services allow businesses to specialize even more. With a service like Amazon's EC2 and S3 and Google's App Engine a company can specialize in software development and outsource the management of the underlying architecture and infrastructure. This is great for companies that want to run research and development teams to rapidly execute and test out new business ideas. But, to use these services companies need to be satisfied with the level of uptime that Amazon and Google are willing to provide. Some cloud computing resources are delivered using excess capa
city so we don't know what will happen when there is no surplus available. I would feel better if the market for cloud computing was mature enough to establish a sustainable price and service level agreement. Until that happens, if five nines of uptime is important to you, these services are not for you. Better to run your own software at multiple data centers on different continents and have well vaccinated, highly caffeinated support staff monitoring things around the clock.

There is also a marketplace for add-on widgets (as an aside, what word do business school professors use to describe a fictitious product now that there are actual products called widgets?) like JS-Kit that can be plugged into nearly any existing platform. This trend allows a content distribution company to differentiate its offering by creating a unique assemblage of commonly available components. To win with this strategy, the company has to get very good at vetting partners and integrating their solutions. Trend spotting, partnership building, and integration become the core competencies rather than just software development.

If you are in the content distribution business, you are in the technology business because technology is how you distribute your content. You need to be able to be able to execute a strategy with an appropriate balance of outsourcing, development, and assembly. Outsource where you want to be good. Build where you want to be great or unique. Or, if your special sauce is going to be breadth, get really good at finding the right third party providers to partner with and integrate their solutions in ways that allow you to nimbly shift from parter to partner.

Jun 17, 2008

I Use This

I have been on a Mac since I started Content Here a little over a year ago. The migration for me has been an unqualified success. I won't go back. Here is a list of apps that have made the experience that much more pleasurable.

Mail, Calendar, Address Book: Mac Apps

I decided to go with the Mac defaults: Mail.app, iCal, and Address Book. Since these applications are pretty much always open, I wanted them to be stable, well integrated, lightweight, and just good enough. They work as advertised and I have absolutely no complaints.

Blogging: MarsEdit

When I started taking longer trips for client projects and conferences, I realized I needed an offline blogging tool. For a while I used a simple text editor and then copy paste into the Blogger web UI. Then I went to Ecto which I used for around a month until I got annoyed with its quirky notions about HTML. I bitched a little on the support forums to no effect and then decided to vote with my feet and went over to MarsEdit, which I love. It doesn't try to give you WYSIWYG editing features and that is OK by me.

Simple Editor: TextMate

I started out with TextWrangler because it's free. I tried TextMate because I like to be able to set up "projects." Before I discovered you could set up a "disk browser" in TextWrangler, I fell in like with TextMate. I seem to be in good company because I keep recognizing TextMate in screencasts.

XML: oXygen

I write my reports in XML (DocBook) so a good XML editor that validates as I type and runs my transforms is important to me. I was disappointed to learn that XMetaL doesn't work on the Mac. I bought oXygen. I first used the Eclipse plugin but then I transfered my license to the stand-alone version, which is a lot faster. I am pretty happy with it. It comes with the Syncro SVN Client which works well enough.

IDE: Eclipse

I rarely do serious coding anymore but when I do, I use Eclipse. Eclipse takes so long to load that it makes me think twice about whether I want to get sucked into my programming head and lose track of time for the next few hours.

Source Control: SVN via Wush and the Syncro SVN Client

Old habits are hard to break and I am a religious source control user for my website and my reports. Wush.net takes care of the Subversion hosting. Syncro is my client when I am not in a command line mood.

Office: iWork

When I bought my Mac, I felt obligated to throw in a license for Microsoft Office. Big mistake. I thought I hated Office for Windows. The Mac version is worse. I am very happy with the iWork applications and tend to write deliverables and presentations in Pages and Keynote and then export to the Microsoft formats. It is a good thing when your office applications don't suck your will to live. I have NeoOffice installed for the occasional Open Document file I receive. It sure would be nice if iWork would support Open Document. Maybe if both MS Office and iWork supported it, ODF would realize its vision.

Drawing: OmniGraffle

The one Windows application that I thought I was going to miss was Visio. Then I found OmniGraffle and I have moved on. Although there are not as many stencils as Visio, you can read and write from Visio's XML format with relatively good accuracy.

Image Capture: Command-Shift-4, Flickr, Skitch

For work I look at a lot of software and I take a lot of screenshots. Typically, I use the key command Command-Shift-4, then space to get a .png image of the active program saved to my desktop. Then I upload the files to Flickr and tag them appropriately. After doing that for about a year, I have a nice little library of screenshots that is organized by keyword. When I want to blog a picture immediately I tend to use Plasq software's Skitch because it lets me quickly post the picture with all my cheeky annotations.

Browser: "CaminoFoxIfari"

I have absolutely no loyalties to any browser and I switch whenever the wind changes direction. Today I am using Firefox 3 because I wanted read my feeds offline with Google Gears. I think I like the Camino keyboard shortcuts the most though. I also like how Safari and Camino share a password database. For some reason I have been leaving Opera out of my rotation. I guess even fickleness has its limits.

Time management: OfficeTime

When you run your own business, you need to be very careful to manage your time efficiently. No one else is going to do it for you. In addition to keeping track of billable hours, I also track time for internal projects including research, reports, conferences, blogging, and general admin. OfficeTime is like a little stopwatch that you can start and stop when you work on different things. There are reports that tell you how you spent your time today, yesterday, this week, last week.... I find that tracking time in this way helps keep me focused on doing the important work and prevents me from task switching inefficiently. OfficeTime is not the prettiest application in the world but it works. I even like the sound effect of the clock ticking for a second when you start it. It gives a sense of urgency to get started on your task.

Accounting: QuickBooks

QuickBooks on a Mac is lame but my accountant uses QuickBooks so I am stuck with it. The Windows version (which my accountant uses) is totally different from the Mac version but I can export a Windows friendly "Accountant's Copy" of my "Company File" and I can translate his bookkeeping instructions to the Mac UI. I don't care enough about accounting software to switch even if there was a cooler Mac-oriented accounting package that could export a QuickBooks Company File to share with an accountant. For personal finances, I use Mint.

Project Planning: Concept Draw Planner

Usually having a white computer gets you out of being responsible for making Gantt charts. However, on the off chance that I need to put together a project Gantt chart, I use Concept Draw Planner. It's good enough.

Task Management: Things

I didn't like the changes to iCal's task feature that came with the Leopard upgrade so I started to use Things. I organize my work into "Areas of Responsibility" like "blogging," "household," and "research" and "Projects" a particular client project. Content entry is very quick and the "Next" view gives you a nice hit list of what to do when you have a free moment. Amazing piece of software. Try it!

FTP: Transmit

I like Panic Software's Transmit.

Bit Torrent: Transmission

I am not saying that I use Bit Torrent but if I did, I would probably use a client like Transmission. :)

Twitter/Friendfeed: Twhirl

It just keeps on getting better.

Chat/IM: Adium and Skype

You can get me on pretty much all of the IM services as sggottlieb. Funny thing is that I have been using IM a lot less recently now that I use Twitter and Friendfeed.

IRC: Colloquy

When I am on IRC, I use Colloquy

Mailing lists

I subscribe to a bunch of open source mailing lists and the best tool for that is Gmail. I really like the rules feature so I can automatically delete some messages (like a build failing) and tag messages by the open source project that they are from. I usually bulk read a project at a time to get caught up on what is going on.

My absolute favorite app isn't really an app. It is an app launcher: Quicksilver

Quicksilver is a program that runs in the background. When type Ctrl-Space, a little window pops up. I start typing and Quicksilver filters down its index of files and applications on my computer. For example, when I want to launch Camino, I hit Ctrl-space then "ca" and I see Camino. Then I hit enter and Camino launches. Or I type "web" and a bunch of files that have the word "web" in them pop-up including my slide presentation for WebContent2008. That reminds me. I have have to finish that presentation :).

← Previous Next → Page 39 of 75