Cloud to Enterprise: Resistance is Futile

Borg Collective

At the end of its Journey to the Cloud, will an enterprise still be running its own data center?

Perhaps, but if it does, it will be much, much smaller. It will be the Private Cloud part of a Hybrid Cloud that will run only a small portion of enterprise workloads. On the other hand, many enterprises will live entirely in the Public Cloud.

Consequently, most of the enterprise data center capacity in the world will disappear, assimilated by the Borg, that is the Public Cloud.

Why is the gravitational pull to the Public Cloud so strong?

One reason is that the price-performance of the Public Cloud is much superior to that of a dedicated data center, even one with Private Cloud. And the gap is widening all the time.

At the heart of this price-performance advantage is scale and specialization. The kind that takes Public Cloud service providers to places like Prineville, Oregon to build massive chiller-less data centers with custom-built servers.

Facebook’s done exactly that. There is a fascinating, if somewhat dated piece in Wired magazine, which goes into a lot of detail on Facebook’s data center in Prineville. Needless to say, the scale and level of specialization is such that every single element of cost and energy coinsumption is highly optimized. Not something an average enterprise can or should be spending their time on.

Facebook’s not an enterprise cloud service provider (yet?). But Amazon, Google, and Microsoft will undoubtedly have the same laser focus on cost and performance.

Cost advantage also comes from “pooling” – the simple notion that the capacity required to run a pooled data center is less than the sum of the capacities of the individual data centers. Pooling is a powerful cost driver in many services from electric power to limo services. It has nothing to do with specialization, but the cost savings are quite real.

But it’s not just about price-performance. Over time, specialized cloud service providers will add product features that will simply make them better. Or allow customers to do things they couldnt do before. Big Data is certainly shaping up to be one of those areas.

This has happened before. A close analogy would be how started out by being the cheaper, easier to implement SaaS competitor to on-premise CRMs, but is now functionally a superior product.

Better price-performance and superior feature-function may be quite enough to explain the exodus to the cloud. But there is actually an even bigger force at play here. Something that doesn’t lend itself well to ROI calculations, but nevertheless, CEOs understand it very well.

Running a data center is not core to any large enterprise. Its business is selling widgets or serving customers. And for it to be the best in the world at what it does, it needs to focus on what makes it good. Running a data center is not one of those things.

Which is why if I was a data center today, I would be saying my prayers. Resistance is futile. Prepare to be assimilated.

Posted in Uncategorized | Tagged | 1 Comment

I Want My Customer Data

Tug of War
For the last few years, I have been using Mint ( to keep track of our household expenses. My needs are very simple. I want to be able to answer simple questions like “How much are we spending on regular monthly expenses?” and “How much is going towards discretionary expenses like eating out?”.

But I find it difficult to answer the simple questions above. It takes a lot of time and effort to get to a point where I can say that I am reasonably close to the real answers to these questions. As I describe the problems that make it so time-consuming, it actually throws light on a new battleground for consumer services – customer data in the hands of customers.

Except for a tiny fraction of cash expenses, all of our expenses are in the form of transactions – debit cards, credit cards, electronic transfers, bill pay transactions, and yes, a few, hand written checks. We try to keep things simple so we don’t have too many accounts. All these accounts are hooked into Mint. Mint pulls all these transactions so that I can see everything in one place. So far so good.

To get a handle on our household expenses, each transaction needs to be categorized correctly into categories like Entertainment or Restaurants.

That’s where the problems start. Every time I log into Mint, I have a whole bunch of transactions that are labeled “Uncategorized”. I then have to manually go through each transaction, try to figure out the merchant to whom I made that payment and then categorize it. Often, the name of the merchant is completely garbled. If my wife made the payment, I have to wait for her to be around so I can ask her. It takes time and is annoying as heck.

It shouldn’t be that difficult to get this right. A typical card transaction is passed from acquirer to network (like Visa) to issuer (my bank or credit card company) and then to Mint. On the way, nobody seems to care enough to categorize the transaction intelligently, and ensure that the merchant name is represented correctly. It’s all left to Mint to do whatever it can with the data it has.

Mint tries. It allows you to categorize recurring expenses automatically. But non-recurring expenses are far too high in our family to ignore. Mint uses very little intelligence to extract the meta data from transactions. A typical transaction would show up on Mint like so


In this case Mint extracted the merchant name as “Lyfe Kitchen Pa” (correct) and tagged it “Uncategorized” (missed opportunity).

It so happens that the string “MCC=5812” refers to the Visa merchant code for “Eating places and restaurants”. A simple google search will tell you that. Why Mint would choose to leave it Uncategorized is difficult to fathom.

In other cases, while extracting the merchant name it applies no intelligence, it appears. It just pulls out the first two or three words that are not numbers. It typically fails for merchants like 23andMe or 37 Signals or 76, the gas station.

Ultimately, no one in the entire chain of merchant-acquirer-network-issuer/bank, all of who are making money because I am spending, care enough to do anything with my data, except the bare minimum to complete the transaction. They don’t recognize the value that I put in my data. Mint does. Which is why I spend a lot more time on Mint than on my bank account website. But even Mint doesn’t do enough.

Next, consider Simple (, a new banking service that I started using a few months ago. It is still by invitation only but if you can wangle an invitation, you won’t be disappointed.

Activity | Simple

This is a screenshot of what I might see on the Simple website. Simple extracts the merchant name quite well. And the automatic expense categorization works quite well. I don’t know how it does it, but I have never had to go in and change the category on a transaction. In fact if I had to, I wouldn’t know how to do it.

But that’s not all. It will put the address on a little embedded google map. That can be a big help in identifying where you were. If you went to a restaurant, it will tell you how much you tipped.

It’s not perfect, but I feel like they are putting the information that they have to the best possible use. To do more, they would have to get more information from upstream sources over which they don’t have much influence.

I have been comparing Simple with Mint which may not be a fair comparison. Simple has to deal with its own transactions (bill pay or their own debit card). Mint aggregates across many different sources of transactions each presumably with its own idiosyncrasies.

But if you were to compare Simple with any other bank that I am aware of, the difference in the use of customer data (and user experience) is vast. It is light years ahead.

Consumer services today offer a lot of choice. One of the most important ways in which consumer services will compete with each other is what they let their customers do with their data. For a long time, the focus of these companies has been on the use of customer data to extract insights for themselves – how to cross sell more, how to identify loyal customers to serve them better and so on. But this is different.

Customer expectations are rapidly changing. They are being shaped by companies like Apple and that set the standards, not just in their industry, but across industries. Customer data is now part of the customer experience. This is the new battleground.

So what are these customer expectations? Here are mine:

1. That my service provider will obtain and share the data with me in a timely fashion.

I’ll illustrate this with an example. Today’s smart meter technology allows my utility to obtain the power consumption at my home in at a resolution of 15 mins. At this resolution, the data can tell me a lot more than what my monthly bill tells me, which is almost nothing, other than the fact that it is high or low. (Currently mine is running too high and I don’t know why!)

But deploying smart meters costs money. Lots, in fact. Will it be worth it? It might have been hard for utilities to justify the cost. After all, they are all monopolies. Luckily, regulators in most advanced nations have been nudging utilities in that direction.

In every industry, there will be similar challenges. How do you justify the cost of gathering more data that is useful to the customer? Expecting new revenue from additional services to justify giving customers more data may be too short-sighted.

2. That my service provider will understand that that data is mine.

I shouldn’t have to pay just to get that data. Although I will gladly pay for a service using that data that is of incremental value. I should be free to take that data out myself, or allow another service provider to pull it out on my behalf.

Today, my bank charges me a fee if I want to see a used check image older than 6 months. Tax filing time must be quite profitable for the bank. I don’t have a problem with the bank trying to turn a profit. But not on my data. If your storage costs are too high (really?) allow me to easily export it to my Evernote or DropBox account. (New feature idea – managing check images!)

3. That my service provider will take the utmost care to secure my data

This is generally well understood. Because of laws and the damage that negative publicity around loss of customer data can do, most services try hard to protect it. Try harder! Lately, the hackers seem to be winning.

4. That my service provider will add value to the data

My online brokerage service has always given me a CSV download of my transactions. But till two years ago, they did not have a decent performance analysis of my investment portfolio. So I had to go and put my entire portfolio in a Google spreadsheet which would look up prices from Google Finance and calculate the rate of return. But with reinvested dividends and what not, it took a lot of work to keep the portfolio up-to-date. How you can be an online brokerage and not offer the most basic use of my data – portfolio performance – is beyond me?

Performance analysis, alerts, suggestions – they are all possible. And expected. If my credit card hits me with a foreign transaction fee, I want to know about that in an alert (thank you Mint!).

5. That my service provider will understand that the reward is mostly my loyalty

There was a time, when online retailers did not give you a transaction history. I stopped shopping on those sites. I don’t want to spend the time to search for the same item all over again, if I want to buy another one.

For service providers, this is going to become the cost of doing business. So if you think that you will invest in giving me more value from my data only if I pay you more for this value, your competitors who think differently will get my business.

But, if you are clever about it, you will discover value points that I will pay for. You see, the work that you do to help me get more value from my customer data, in turn helps you understand me better. And when you understand me better, you will be able to design services that I will want to pay for.

Posted in Uncategorized | Tagged , | 6 Comments

Wanted: A Rules Engine for Excel

Excel Error

James Kwak writes about the role of Excel in the JPMorgan 2012 trading loss

After the London Whale trade blew up, the Model Review Group discovered that the model had not been automated and found several other errors. Most spectacularly,

“After subtracting the old rate from the new rate, the spreadsheet divided by their sum instead of their average, as the modeler had intended. This error likely had the effect of muting volatility by a factor of two and of lowering the VaR . . .”

So @SUM instead of @AVG and boom – $2B in trading losses.

I am exaggerating of course. It didn’t quite happen that way, but it does appear that this Excel error made the trade appear much less risky than it actually was. [You’ll find a full analysis of the JPMorgan trade here. A lot more interesting is this history of Excel bloopers.]

Excel is the weapon of choice for financial analysts of all hues. You could be an analyst evaluating complex derivative instruments or an investor projecting a public company’s future earnings. If you are a financial analyst, you probably spend a big part of your life looking at a grid of tiny grey cells.

During my startup days, we built a product that would pull in data from our library directly into their spreadsheets and keep it current. Since we worked with our users to design the product we got to see many, many spreadsheets.

As a rule, these spreadsheets are massive, multi-MB beasts. They start big. Over time they gather more and more data and complex analyses and become massive. In their full glory, they are inscrutable to anyone except their owners. And often even that is doubtful.

Not surprisingly, we regularly found errors in the spreadsheets. As expected, data errors were common. But errors in formulas, of the kind above, were not uncommon at all.

Now think about it. Companies are making decisions worth tens, sometimes hundreds of millions on the backs of financial analyses done in Excel spreadsheets, that are understood solely by their owners and are impervious to scrutiny by anybody else.

Excel was never designed to be anything more than a personal productivity tool. If the stakes of getting a risk model right are that high, then shouldn’t that risk model be treated like enterprise software – with development standards, commented code, versioning, unit and integration testing?

It’s not as if enterprise software doesn’t have its share of messes. The CIO of a print publication recently told me that they did not think they knew all the different offers on the publication that were available out on the internet. Apparently, there was a link on some forum that was still allowing a special offer and they didn’t know how to turn it off! We recommended re-engineering the whole application and putting a rules engine in front of it.

Perhaps that’s what financial modeling needs. A rules engine that drives all the analysis below. The problem with Excel is that the formulas and the data are all mushed together into a blob of grey cells. They need to be layered. Data in one place, rules in another. If I want to project a company’s revenues by applying the average year-on-year growth in the last four quarters, that’s written in the rules area. The historical revenues are in the data area. If the gross profit is a fixed percentage of revenue, that too is written in the rules area. When I change the rule, the computation changes and not otherwise. There are no computations that aren’t in the rules.

When I review my model with my team members, we are just looking at the rules, confident that the spreadsheet itself is simply a manifestation of the rules and data. Once in a way, we do look at the data sets as well, just to make sure we are using the right ones and that they are current. And we test the model from time to time to see if it gives out expected results.

But this sounds more and more like a database application. And database applications need programmers. In the real world that we live in, no financial analyst will let a programmer stand between him and his model. But perhaps that is the challenge here. Can we build a rules engine that is enterprise strength, does not require a programmer and sits on top of the WYSIWYG goodness of Excel?

Excel is one of the most powerful applications of our times. It is the killer app in MS Office. It is ubiquitous and everyone who will ever build a financial model already knows how to use Excel. Which is why we do too much with Excel. Which is why we end up betting hundreds of millions on the backs of black box Excel financial models. This needs to change.

Posted in Uncategorized | Tagged | 4 Comments

The Journey to the Cloud

Oil Cooled Servers -

The beginning of the year is a good time to prognosticate. So here is my prediction – not just for the year, but for the whole decade. This decade in Enterprise IT is going to be mostly about the Journey to the Cloud.

Enterprise IT faces a raft of technology shifts in the coming years. The deep penetration of mobile devices into the enterprise, the impact of social media and the technology to extract intelligence from greater and greater quantities of data, are a few important ones. But what stands out for the disruptive nature of its impact is the Cloud. The Cloud is truly paradigm-shifting for Enterprise IT.

What is so different about the impact of the Cloud? It is not so much about the opportunity of value creation. While the size of the prize is massive, that is true about the other technology shifts as well.

The Cloud is disruptive. It upends the current order of things in Enterprise IT. It shifts control away from IT towards Business. It dramatically changes the role of the CIO and her organization. And it changes the way we manage the business of IT in profound ways – like managing by business outcomes rather than by costs and intermediate IT outcomes.

Why is this so? Since the beginning of Enterprise IT, IT infrastructure, particularly the data center, has always been firmly rooted in IT. Even when outsourced, the outsourcing contract has been managed by the CIO’s organization and they remained accountable for its results. But today, Cloud service providers, run their own infrastructure that is common across all their customers and charge a fee for use. Sometimes they provide infrastructure services only. Often, its more. But always, using Cloud services means transplanting IT infrastructure outside the domain of the IT organization.

IT infrastructure may not directly create value, but business leaders understand the risks involved. Something that could bring your company’s order processing system to a halt is not to be trifled with. So why would an enterprise undertake the risk of such disruption?

Economics, for one. From what we have seen with our clients, the potential for savings range from attractive to downright stunning. But there are other reasons as well – flexibility, developer productivity, time-to-market – and as you get up to the application layer, soon, state-of-the-art functionality will exist only in SaaS applications.

But the biggest reason why the Cloud is unstoppable is because running a data center is not “core” to anybody’s business, except a handful of Cloud service providers. These providers run mega data centers at locations and at a scale where every element of performance and cost is carefully optimized. No company can match that. Enterprise IT will find it difficult to justify “build” over “buy” when it comes to data center infrastructure.

And the future will hold even greater specialization. For example, Intel is running trials with oil-cooled servers (photo above) which need only 2-3 % of their power for cooling (against the usual 50-60%). Today’s data centers are all set up for air-cooling. Can Enterprise IT deal with such shifts in technology?

No, I don’t think so. The Cloud is written in every Enterprise IT organization’s future.

Like most paradigm-shifting technologies, the switch-over may never be complete (I still have a VCR or two at home). But it is inevitable and once it gathers momentum it will be unstoppable.

Cloud adoption will be gradual at first. CIOs will start with new development on IaaS or PaaS. Some will migrate small, non-critical applications to the Cloud. SaaS applications have some momentum. But the bulk of the core enterprise applications still run in the data center. There is a long way to go.

The Journey to the Cloud will be long. There will be risks, and many challenges on the way. There will be existential questions like what is the role of the CIO in this brave, new world. But “there is gold in them thar hills”. It will be worth the ride.

Cross-posted from with minor alterations. [link]

Posted in Uncategorized | Tagged | 5 Comments

What Do You Stand For?

What do I stand for? What do I stand for?
Most nights, I don’t know.

– fun.

Last week’s Economist carried an editorial called True Progressivism. I found myself nodding in agreement as I read through the long editorial. When I finished reading it, I felt like it had perfectly captured what I felt, what I thought, what I believed about government and public policy but would never have been able to articulate this well.

I hope you will go read it. If more people believed in something close to this True Progressivism, it could be a very important path out of the bipolar mess that American politics is today.

I happened to mention how much I liked this piece to a guest at an Infosys event last week. He said that his wife sometimes echoed similar sentiments about Tom Friedman’s writing – that it almost speaks to her. But he tells her that that is because her thinking has been shaped by Friedman’s writing. And now, obviously, what he writes agrees with her viewpoint.

Was it the same way with me and the Economist? Had I read it for so long that it had shaped my own belief system about politics and economic policy and now when I read something like this piece, it seems like it was speaking to me?

Perhaps. But I have read the Wall Street Journal longer, though less nowadays. I read the New York Times a lot more than the Economist. But I don’t always agree with the New York Times editorial page, and rarely with WSJ’s.

No, I don’t think the Economist has brainwashed me. I think that good newspapers are a little bit like friends. Your friends do influence you. But you tend to spend more time with the ones that think like you do. And the way you think is a product of your experiences and the people that have influenced you. And hopefully, rational, independent thinking.

The world is full of tribalism. If your family, friends and the people around you believe in something, you are almost predestined to believe in the same thing. Good writing like the Economist’s and thinking for yourself can save you from this dreary predetermined destiny.

Posted in Uncategorized | Tagged | 2 Comments

Why is That Ad Following Me Around on the Internet?

Forbes has a piece on Why Wall Street Likes LinkedIn More Than Facebook. The difference in how well the two companies monetize user interest is quite significant.

And when it comes to making money, LinkedIn packs a much harder punch than Facebook. LinkedIn manages to rake in $1.30 per user hour spent on the site, while Facebook scrapes by with a measly 6.2 cents per user hour.

The article’s explanation of this gap is that professional data is more important to enterprises than personal data to consumer advertisers. But I don’t know if it is just about that. Somewhere in there lurks a question begging to be asked? Does Facebook monetize user attention as effectively as it could?

Take me. I use Facebook regularly. Not a whole bunch, but I will check in a couple of times a week, mostly over the weekend. Here are the typical ads that I see.

I can link each ad back to something in my profile. I live in the Bay Area, am liberal, married and male. Is this kind of broad-brush targeting the best Facebook can do?

The ads are uniformly unmotivating. They are shown repeatedly. As if there was a very limited stock of ads to show and they had to show half a dozen on every page. So sorry, but we will subject you to the same insipid ads over and over again.

You might point out that I’m not a typical Facebook user. I share a little but not a whole lot of information. I never use my Facebook login on 3rd party sites. So FB doesn’t have much to work with.

But that wouldn’t be true. FB has a ton of personal data for me – my social graph, my status updates. If it still serves up ads that don’t result in any action, is it a wonder that their monetization is at 6.2 cents per user hour?

In contrast look at Google advertising. Comparing Google search advertising with FB advertising is perhaps not fair. Search clearly declares intent which makes targeting much easier. Display ads will find it tough to compete with that.

But Gmail ads are perhaps as close as it gets contextually, to FB. I find Gmail ads to be very relevant. Google’s algorithms are clearly analyzing my email content to determine which ads to serve up. FB isn’t doing that with status updates.

Users want to see ads that are better targeted. I am interested in seeing relevant ads. And advertisers want to reach interested users. The right economic model (a la AdWords) and some clever computer algorithms should get you there. It can’t be that difficult if you have Facebook’s resources. So I wonder why it’s taking them so long to get this right.

Twitter too is trying hard to get their advertising model right. Promoted tweets in my timeline show up from time to time. They are using the social graph cleverly and I find many of their promoted tweets relevant. I spend a lot more time on Twitter than I do on FB, so I do hope they find a non-intrusive but successful advertising model.

Meanwhile, an ad for a certain watch has been following me around wherever I go on the internet. It so happened that a couple of months ago I clicked on an ad for the watch. I then went and read a whole bunch of reviews and so on and then actually bought the watch. But now, the ad networks think that since I clicked on the watch ad, I am interested in it. So now I am bombarded by the same ad everywhere. All wasted advertising since I’ve already bought the watch. And very annoying.

So now I have done two things. Both of them are detrimental to the ad networks’ and the advertiser’s interests.

One, I opted out of all interest based advertising. They don’t make it very easy for me to do that, but I patiently went to all the websites and opted out.

Two, I will never click on a display ad again. If it interests me, I will google it and get to its website through search.

I am positive that I am not the only person who is doing this. Some may want to but don’t know how or don’t have the patience to. But many will opt out. Soon there’ll be a video on YouTube on “How to Stop That Ad Following You Around on the Internet”. And then the game’s over.

Posted in Uncategorized | Tagged , | 7 Comments

The Trouble With Powerpoint

Wrong tool, right idea

A couple of weeks ago, I was walking someone through a Powerpoint deck on the phone. The discussion was going well. But every now and then she would skip ahead. I’d be on slide 12 expounding some gory detail of our actions in Q1 and she would say “I have a comment to make about XYZ on slide 14”. Just a little unsettling.

So I thought about it. I had sent the deck to her the previous evening. It had a lot of detail – stacks of bullets and in places, full sentences. I wanted her to be able to understand the slide deck by reading it without my voice over. She did exactly that, and then the next day, I subjected her to my voice over anyway. No wonder she was skipping slides.

The number one problem with how Powerpoint is used in companies is that the same deck is used for different purposes. And it doesn’t work. Dual-use powerpoint decks are the single most important reason why the powerpoint slides used in stand-up presentations are so terrible.

IT Services companies are the worst perpetrators of the dual-use crime. We make illustrations with lots of boxes and arrows and inscrutable terms and acronyms. We put them in proposals. Then we take the same illustration and slap it onto a slide. In all its 14 point font glory. During the presentation we will actually turn towards the screen and read the whole thing out. Or sometimes you’ll hear “I won’t take you through all this information, but…”. Well then, why put it on the slide?

Dual-use crimes occur in other ways too. At Infosys, with globally dispersed teams across vastly different time zones, it is very common to exchange powerpoint files with the expectation that the other party will read the powerpoint and understand its contents. A typical email might read “Please find attached a deck that explains XYZ. Let me know if you have any questions.” You open the deck and it’s the same boxes-arrows style of presentation. Sometimes its useful because you already have the background and this is incremental information. At other times, you don’t understand a thing, or even why it was sent to you.

When you want someone to understand a document without a voice over, an email or Word document might work better. Because unlike a few paragraphs of a long email, a Powerpoint slide with boxes and arrows has no narrative thread.

I hand-wrote my transparencies at b-school, at my first job and even for my interview for Infosys in 1994. When Powerpoint was introduced, or rather when I was introduced to it, I thought it was an amazing invention. It completely changed the process of preparing for a presentation. The text on the slides was crisp, clear without having to send the slides to be done by an agency. Editing was so much easier. You could make changes right to the last minute before the presentation. You could draw diagrams and mix them with text easily. Later, we got fancy looking transitions too.

Powerpoint radically changed the overhead presentation. But somewhere along the line, it took over all forms of communication within business. The long form of writing just went away. I don’t know if we are unique at Infosys, but I don’t see much use of MS Word. It is all Powerpoint or Excel.

Dual-use is not the only reason why Powerpoint is overused and misused. The truth is that Powerpoint has become a crutch for the overworked modern-day employee. Its use makes it acceptable to not write full sentences, paragraphs or in fact, have a narrative at all.

As a consultant Powerpoint comes in handy in other ways too. If you aren’t sure about how a client will respond to some parts of the proposal why spell it out in detail. A brief bullet in the deck allows you wiggle room that you use based upon the body language of the client in the meeting.

Consultants also regularly create too many slides and too many words on each slide. This is a universal phenomenon. Why this is so, is not clear to me. It’s as if they are OK with any outcome in the meeting including the client passing out from sheer boredom. But god forbid, they should ever be accused of not working their butts off on the presentation.

Engineers are of course far worse at this than consultants. Most of us receive an education that equips us to solve problems, not communicate the solution to someone else. The engineering school I went to put a high premium on getting the funda (fundamental principle). Explaining how you figured it out was just wasn’t our thing.

Then we join a company where we see consultants flinging out decks with 50 fancy box-and-arrow slides. And we say, we can do that too. Thereafter all slides have boxes, arrows and 14 point text. And of course, tons of jargon and acronyms, because we engineers love them. It makes us look smart. All our formative years have been spent yearning for those small shots of dopamine to the pleasure center of the brain, when I get something that you don’t. Or when I say something that forces the listener to ask, “What does that mean?”. Now suddenly, you’re asking me to communicate simply. That just fries my circuits.

And of course it is also well known that most engineers are color blind. So our 50 box-and-arrow slides in 14 point text display all colors of the rainbow. The final product can be quite awesome to behold. Something that can kill a domestic pet at 20 paces. Clients are advised to wear protective eyewear.

In Indian IT Services companies I believe this is now a crisis. Not just the use of Powerpoint but all of business communication. And with the SMS generation now getting into mainstream business communication, the future doesn’t look too gr8 either.

Posted in Uncategorized | Tagged , | 17 Comments