More on Page Speed Tuning

May 14, 2010

A few weeks back I captured some notes about tuning page speed.  Since then I’ve learned a few more things.

  1. We found out the hard way that compression doesn’t seem to work right with IE6.   As unfortunate as it may be IE6 still accounts for something close to 10% of web traffic – more on my site.  Paul Turner documented how to change httpd.conf in his blog so that IE6 users don’t get compression.  I’m happy to see big companies like Salesforce.com and Google dropping ceasing to support it.
  2. One more thing to remember about working with compression is that it’s most effective on textual information like HTML, CSS, and JavaScript.  Typically web-ready images and binary downloads have already been (or should have been) compressed.  While the web server will happily try to compress these files there will be little benefit and it can slow down your webserver.
  3. Another tool that was recommended to me was the YUI Compressor which minifies JavaScript and CSS.  Minification removes any unnecessary characters from code without breaking the functionality.
  4. One note I found interesting on the Yahoo performance blog is that they estimate that between 40% and 60% of all page views are done with an empty cache meaning that the primary strategy should be to keep all pages as light as possible.  Everything else is a secondary strategy.   The other obvious thing to be cautious about when working with caching is the potential for serving stale content.  When properly implemented an HTTP 304:Not Modified status-code will be returned.  With these caveats in mind we’ve experimented with various header configurations changes to improve cachability.  Askapache.com has a number of suggestions that can be easily implemented in a httpd.conf or .htaccess file for adding cache-control headers and adding future expires headers for static files.  For dynamic pages (PHP, ASPX) headers should be set manually.
  5. Finally, all of these strategies are focused on improving web-server to browser experience.  There are a whole series of optimizations that can be done to get the content to the web-server including optimizing SQL queries using stored procedures or tools like memcache.

Rework

May 11, 2010

This past weekend I finally got around to reading Rework by Jason Fried & David Heinemeier Hansson the founders of 37signals and creators of Ruby on Rails.  Without question the 37Signals folks are absolutely brilliant. By all accounts they’ve created a sustainably great company and incubated on of the most influential frameworks for building web applications.

Rework is a very quick read – I was through it in less than 3 hours.  Unlike Freakonomics, Outliers, or Predictably Irrational or Jim Collins’ seminal Good to Great which are culled from extensive research and case studies from multiple different entities, Rework is based exclusively on what worked at 37Signals.  On one level I felt like the book really should have been a blog post or maybe a niche website.  On the other hand there is value in being able to consume the information in an evening and move on.

There are about 90 1-2 page vignettes based on the founder’s personal experience.  While their opinions are certainly valuable some of it felt like “Motherhood and Apple Pie” – common sense ideas such as “decisions are temporary.” I like a lot of the underlying thinking about doing something, no matter how small, now rather than holding out for something bigger.  I get the distinct feeling that the 37Signals folks embrace the minimalist mindset – do what is on the immediate horizon, execute quickly, get feedback, start over.  This is the heart of an agile life-cycle.   As I think about it much of this book is their recipe for success as a small, profitable business where every employee must be willing to pitch in whenever or wherever it’s needed.

Much of what works for 37Signals would not work at Microsoft, Apple, or more established companies.  In particular the sections on meetings, planning, and estimating will most often work best in a small company.  On the other hand, the sections on Hiring, Damage Control, and Culture could work anywhere.  I think of the best insights in the book is the advice to “Hire Great Writers.”

I am really glad that the guys at 37Signals took the time to put this together.  As someone who was a principal in a similarly sized professional services firm that was not as successful as they were I am keenly aware of how much they’ve accomplished. If you superimpose the tenants of Good to Great, which I appreciate are based on lessons from big companies, with the Rework model there is a clear roadmap for success.  Most importantly I see three direct ties:

  • Level 5 Leadership: to implement the 37 Signals model
  • First Who, Then What: Simply put no small company can succeed with anything but top notch talent.  The best idea won’t succeed without the right team and conversely a great team can produce a very successful company out of a small idea.
  • Hedgehog Concept: Identify what makes you money, what you can be the best in the world at, and  where your passion lies.

Bottom line this is a worthwhile read with valuable insights for anyone who manages software teams or delivers web-based products or services.


Thoughts about VMForce

April 29, 2010

The other day a friend asked me what I thought of Tuesday’s VMForce announcement from Salesforce.com and VMWare.  After reading up on it and giving is some thought I think VMForce is a big deal and is going to be an important platform that companies looking to move their apps to the cloud will want to consider.

VMForce will be a hosted platform for running Enterprise Java applications in the cloud.  This figure from Rod Johnson’s blog (GM of SpringSource) does a good job of explaining the solution.  The “database” is Salesforce.com and the applications run on VMWare in the SFDC data centers.  Java apps will run on the SpringSource tc Server leveraging VMWare’s aquistion of SpringSource.   Information Week characterized Spring applications: “as lightweight Java in the same way as PHP and MySQL are used for lighter weight Web applications.”  VMForce should be available in developer preview (no doubt in time to be demo’d at Dreamforce) later this year and in production sometime in 2011.  I did not see anything about pricing.

VMForce Overview from SpringSource Blog

In that same Information Week article Jerry Chen, manager of cloud strategy at VMWare is quoted as saying “Java has emerged as the leading enterprise language of choice.”  I am not sure that I would agree with that statement but don’t necessarily have the data to prove otherwise just a gut sense that Java’s day may have passed.  Michael Coté points out that “Heroku [Ruby Cloud Platform] is increasingly heralded as a good way of doing cloud development…”  I am a pretty big fan of Rails but not so much Ruby.  VMForce is potentially very interesting in the context of being able to use Rails and Java on Spring’s Groovy on Grails.

VMForce probably will turn out to be a very good thing for both SFDC and VMWare.  SFDC has rock-solid infrastructure, great development tools, mature reporting, and a well establishing data model.  Moreover, the folks at SFDC are fully committed to Java as their tool of choice for developing their own platform.  Salesforce will benefit from this partnership by opening up their platform for hosting enterprise Java applications.  My sense is that SFDC has been underwhelmed by the market’s adoption of  their solution as Platform as a Service (PaaS) beyond the CRM market.  Unless you have an enterprise application that is deeply intertwined with your customer file in some way why would you host it on SFDC?  SFDC made a strategic decision to develop their own languages – Apex Code and VisualForce – for applications that run on their platform.  While similar to Java and JSP they are syntactically very different and despite what SFDC would have you believe there is a learning curve even for experienced developers.  Further, many developers are not all that jazz’d about learning a “stove pipe” language that is only useful in a niche market.  I think VMForce will address many of these problems.

The biggest question I have is how much will it cost.  For non-trivial applications cloud-based solutions can be very expensive.  Beyond that I’d like to get confirmation that all VMForce applications will be multi-tenant.  I am sure that there will be some reasonable restrictions on the applications to ensure security and prevent abuse though those are not yet clear at the moment.

I can certainly understand why SFDC would want a deal like this but it does move them a bit further away from Google who has a  similar offering in AppEngine (Python and Java).  VMForce, which is again a year away, will almost certainly have less restrictions than AppEngine which limits access to a finite number that have been “White Listed.”

Bottom line with VMForce SFDC / VMWare now becomes a fourth serious player in the PaaS space.

It will be interesting to see how the other big players in this space -  IBM, Oracle, SAP – align themselves or if they choose to build something themselves.

Good reference links:


How to examine SPF Record

April 21, 2010

Just found an exceptionally useful tool for examining SPF records.  http://www.kitterman.com/spf/validate.html.  Three tools are provided:

  • Check to see if there is an SPF record for a domain
  • Check to see if the SPF record is syntactically valid
  • Test the SPF record

For reference the SPF record for google.com looks like this:

v=spf1 include:_netblocks.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all

To see the SPF record in action view the message header of an email message.

Received-SPF: pass (google.com: domain of user@domain.com designates xxx.xx.xx.xxx as permitted sender) client-ip=xxx.xxx.xxx.xxx;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of user@domain.com designates xxx.xx.xx.xxx as permitted sender) smtp.mail=user@domain.com


Thinking about Browsers

July 13, 2009

Browsers

I have all three of the current major browsers installed on all three of my machines – Internet Explorer 8.0, Firefox 3.5, and Chrome 2.5.  I use IE as my default browser only because I know that the majority of my customers use it and I want to see the web like they do.  The latest web stats suggest that IE is losing share to Firefox.   (Our internal stats suggest don’t such a precipitous drop off but I think the trend is right.)

I am still searching for something to like about IE over the competition.  It’s not like IE is bad per se; Its just that there just isn’t anything to love about it.  IE is not particularly fast and with all due respect to web slices (which could be interesting) there are no overly compelling features.

Although the broader Internet has yet to embrace Chrome its hands down the fastest of the three browsers.  The Firefox 3.5 benchmarks suggest that it is as fast or nearly as fast as Chrome.  In my real-world experience there is no comparison.  Almost certainly the add-ons that make Firefox so great also make it slow.

Almost everyone I know that works on the web professionally prefers Firefox.  The thing that makes Firefox great is the add-ons.  Pretty much everyone I know that uses Firefox has the ad-block extension.  When you do what I do and run IE on the mainstream web it’s the equivalent of coming out a quiet lounge with soft lighting to a casino floor – bright and loud.  You have to wonder how different the web would be if all browsers supported ad blocking like pop-ups.  (As an aside its now possible to suppress ads in IE 8 using the In Private filtering.)

My single wish for Firefox is that it would load as fast as Chrome.  On the other hand I’d be happy to make Chrome my platform of choice if it would support extensions like Firefox.  I’ve read that both camps are working on these features.  http://mashable.com/2009/06/29/firefox-next/ and http://dev.chromium.org/developers/design-documents/extensions/samples.

The other serious players in this space are Safari and Opera.   Safari is obviously a very compelling choice if you own a Mac otherwise not so much.  Sometime ago I tried the Windows version of Safari and was not at all impressed.  I don’t know anyone who uses Opera as their primary desktop browser.  I think their prospects are better in the mobile device market.


Web services that are worth buying

July 7, 2009

In Chris Anderson’s book Free: The Future of a Radical Price he makes a compelling argument that most digital goods should be free. A friend and I were recently talking about this idea and trying to find the counter examples – B-to-C subscription based web services that make sense to buy. Here’s my list:

  • Wall Street Journal: The best news paper in the country if not the world.
  • MLB Audio: For me the ability to listen to the Red Sox radio feed while on the computer is worth the $19.95.
  • TheLadders: Access to job descriptions for senior level jobs that simply are not available elsewhere.
  • Mozy/Carbonite: On-line backup software. I personally use Mozy but I believe both are good services. You don’t know how important it is until its gone.

I think in the B-to-B world subscription-based services may be somewhat more established.


Watching the clouds

September 2, 2008

I found the following list of sites that monitor clould based web services.

  • CloudStatus is a free service that monitors Google and AWS.
  • TrustSaas.com is an uptime monitoring and alerting service SaaS applciations.  The following applications are presently monitored: GMail (several flavors), Google Calendar, Google Sites, Google Talk, AppEngine, Salesforce.com (8 clusters), Facebook, MobileMe, MySpace, Twitter, TypePad, WordPress, 37 Signals (BaseCamp, Backpack, Campfire, Hirise).  Note: the GoogleApps listed do not appear to the the Google Enterprise Apps, they appear to be the consumer direct versions.
  • Salesforce.com has their Trust web site at trust.salesforce.com.
  • Twitter is using Pingdom here

On a related note

There may be others.


All about AWS

September 1, 2008

Recently I spent some time trying to understand AWS at the next level of detail.  I found some interesting stuff out there.   Here is a brief overview of AWS.

Infrastructure Services

  • S3 – Simple Storage System.  Web-based storage.
  • EC2 – Elastic Compute Cloud – On-demand processing power.
  • SQS – Simple Queue Service – Messaging service for transferring work between computers.
  • SimpleDB – Database version of S3.

Payment & Billing Services

  • FPS – Flexible Payment System – System for accepting payments
  • DevPay – Tool for developers to be paid for AWS applications

On-Demand Workforce

  • Mechanical Turk – Ability to farm out units of work to humans.

Amazon also operates four Alexa services (web search, web information search, top sites, and site thumnail).  These services are tied to the Alexa web search engine.  Finally, Amazon operates two other web services fulfillment web service and associates web service.  Both of these services are e-commerce services related to the Amazon store.

There don’t seem to be many books on the subjet.  The best looking book is “Programming Amazon Web Services: S3, EC2, SQS, FPS, and SimpleDB” by James Murty the author of JetS3t.  A number of the reviews say that its a “Ruby” book.  Another interesting book is “Amazaon.com Mashups” from Francis Shanahan.  Both books were written some time ago while Amazon keeps upgrading their services.

There are a couple of seemingly good examples of how to program AWS on the Amazon site.

Sample application to get started with Amazon SQS and Amazon EC2 – http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1457&categoryID=85. The client examples in C#, server examples are in Java.

Browser Uploads to S3 using HTML POST Forms - http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1434.  The examples are in Ruby, Python, or Java.

JetS3t is a free, open-source Java toolkit and application suite for S3.  The JetS3t toolkit provides Java programmers with a powerful yet simple API for interacting with S3 and managing data stored there.  (Description lifted from the web site.)

To use AWS you need to be prepared to pay for everything you do.  Its not clear to me why this not free to developers like Salesforce.com developer accounts and Google’s AppEngine.


AT&T and Cloud Computing – Sorta

August 25, 2008

A colleague of mine recently sent me an article from the Washington Post about AT&T getting into cloud computing. http://www.washingtonpost.com/wp-dyn/content/article/2008/08/05/AR2008080501574.html. The this article clubs AT&T (and eventually Verizon) into the same space as Google or Amazon. In my view this is not the right way to think about it. AT&T and Verizon are heading into the space occupied by OpSource, Rackspace (Mosso), 3Tera, Joyent. This is certainly a good this type of solution for clients that want to deploy a solution that will grow with them or need flexible infrastructure to seamlessly accommodate spikes in traffic (e.g., Superbowl commercial, Olympics, etc.).

I view what Amazon (AWS), Google (AppEngine, Gadgets), IBM (Blue Cloud), and Salesforce.com (Platform as a Service) are doing as being very different. Indeed these organizations are offering a platform on which an organization can deploy their application. I’ve seen this referred to as utility computing. The key difference in my mind is that you are running application code on the provider’s grid vs. having a scalable hosting infrastructure. The lines are fuzzy between on-demand computing and what I am referring to as utility computing as some of the on-demand computing players are offering services of their own (i.e., OpSource Billing). One way to think about it is that in on-demand computing a developer needs to be aware of the underlying operating system where in utility computing they do not.

Each partner offers different services. For example, Amazon S3 (part of AWS) is a great solution for an on-line backup application like Jungle Disk. IBM Blue Cloud appears to be meant for scientific research that requires mainframe computing resources. No doubt by design Salesforce.com has carved out a spot for themselves right in the middle of the pack and appears to be applicable for many general purpose applications.


Follow

Get every new post delivered to your Inbox.

Join 45 other followers