The Importance of Structured Data in eCommerce

What may be obvious to a human reader can sometimes be really hard for a computer to understand. You and I can go to a retailer’s website, look at a product and it’s completely obvious to us what the name of the product is, what it looks like, what it costs, read a description, etc. The content could be aligned in a completely weird way, pictures could be in a random location, but we would immediately understand what is what.

This is much harder for computers. In simplistic terms, computers are much more discrete in how they process a web page. For the most part, they look at the HTML code of a web page rather than the visual representation that we look at in a browser. Of course there are systems which try to comprehend the graphical representation like we do, but to do this and to “make sense” of a page is non-trivial for a computer.  Moreover, they may be programmed to understand one retailer’s format really well – maybe a handful of retailers – but the problem devolves when you try to generalize past that to all retailers. Right now, we do not have the algorithms available for a computer system to do mass-scale retrieval and digesting of web content in a visual way like humans do.

So then how do you tell a search engine like Google or Bing what’s actually on your site? Traditionally, things like keywords, meta tags, inbound links, etc. have been important to tell a search engine what’s on a site. Google still uses some meta tags. They’re still important, but many of the tags were easy to game, particularly the keywords tag, and so they’re not really used anymore. The net result was bad search results for users.  Continue reading

Input requested: the MBA tech curriculum

Over the last few months I’ve spoken to a number of professors and staff from Chicago Booth and they basically have one general question: “how can we get students better prepared for a job in Silicon Valley?” First off, I’d like to say that it’s great to see Career Services, deans, marketing professors, entrepreneurship centers and various others reach out to me and fellow Booth grads in the Bay Area to get our input. I felt we had very productive sessions. Moreover, it seems like you do appreciate the often candid feedback I (we) provide and are willing to consider our ideas.

Continue reading

Emails my dad forwards: Generation Y

My dad is one to forward relatively funny stuff usually. It’s a great break from my day. I enjoy it, but then there are times when he forwards something, I chuckle and then start wondering if it’s more than just a blind forward. Not that I care (I really don’t,) but it’s fun to see subtle messages being sent. So in honor of this kinda stuff, I’m adding a new “dadism” category to collect them. Stay tuned for more. First installment below, entitled “Generation Y”:

People born before 1946 were called The Silent generation.

People born between 1946 and 1964 are called The Baby Boomers.

People born between 1965 and 1979 are called Generation X.

And people born between 1980 and 2010 are called Generation Y. 

Why do we call the last group Generation Y?

Y should I get a job?
Y should I leave home and find my own place?
Y should I get a car when I can borrow yours?
Y should I clean my room?
Y should I wash and iron my own clothes?
Y should I buy any food?
But a cartoonist explained it very eloquently below…

Hats off to Helmet City customer service

I ordered a mid-tier car racing helmet last Thursday from Helmet City (, @helmetcity) and got a call Friday (the next day) that it’s out of stock. Sucks, I was bummed. I really wanted that helmet and I also need it next weekend. Car racing helmets are hard to come by in store, so online is by far the best option.

Kyle, the customer service agent, was friendly, apologetic and admitted to a mistake in the availability listing on their website. Fair enough, that can happen. He suggested another color, but I said I really wanted matte black. Dunno why, I just did. Kyle completely understood that. No pushing in any way.

Actually, he immediately gave me some other options, both lower and higher in price. I pulled up the website and tracked along his suggestions. Without my prompting in any way, he suggested I get what’s essentially the next model up helmet, at the upper end of the mid-tier range, but give it to me at a price barely above the original. In fact, the price is what looks like their cost. While I didn’t really want to spend any more money on this, I did need a helmet on my doorstep by Thursday morning, so I took the deal.

I also took the deal because Kyle made a textbook move on how to make good on a bad situation:

  1. Apologize, show empathy if you screwed up and do it with a phone call. They had bad inventory listing. There’s no hiding that, so just say it like it is. And don’t just send a “sorry” email. Pick up the phone.
  2. Listen to and understand the customer’s situation. I needed a helmet somewhat urgently.
  3. Provide options. I was given both higher and lower-priced helmets at a choice.
  4. For extra credit, give the customer a deal for their troubles. I was given a better helmet for just over the price of the original one. Depending on how the margins line up of the two items, give the lower of same price or cost of the better product. Who doesn’t like being given a deal?
  5. Follow up as you said you would. I got a revised order via email within a couple minutes after getting off the phone. My card had never been charged either, which is a very correct business process.

So with this situation, would I buy from Helmet City again? For sure. Now I really can’t wait for that helmet.

I’m an MBA student, how do I get a startup job?

You: Second-year MBA, smart, driven, hard-working, confident that the hard work will pay off quickly in a meritocratic startup. Desires to work in one with the goal of starting your own sometime.

This feels like a daunting challenge, especially when you see all those fancy employers doing on-campus interviews and moreover, your classmates getting jobs and signing bonuses. Here’s how I suggest you break this down, based largely on good advice I was given and the path I followed myself.

Grocery pricing – I dun git it

I’ve recently been doing a little more of all the grocery shopping on my own and given my attraction to numbers and getting a good deal no matter what the price point is, I took a closer look this last time. I was fairly surprised at the large variations in price for different versions of essentially the same item. Sure, some of it can be explained by packaging size, origin and preparation, but a lot of it you can’t explain. It’s just smart pricing and I get what’s going – I did take “Pricing Strategies” in B-School so I know the math that goes on in the background to get to a lot of these prices. I also like to call it “serious trickery for make benefit to glorious corporation.”

Continue reading

Just stick your hand out

No, not to beg for something, although I’m sure the folks in Japan could definitely use your help and would never ask for it. Consider donating to one of many worth causes like the Red Cross or Save the Children. (there are many others)

But I digress. What I really mean is, when you’re in a social situation, you’re sort of milling around and looking to talk to someone, stick your hand out and say “Hi, I’m XYZ” to the person seemingly doing the same. You’d be surprised at what happens. People don’t bite. People aren’t going to say “ugh, you’re weird” unless you’re in middle school or wearing a pocket protector. They’re actually going to embrace it, introduce themselves back and be very happy that you made a move. I guarantee it.

Continue reading

How to run an efficient meeting

I often feel that there’s tremendous preventable inefficiency in meetings, so on the heels of Fred Wilson’s “How To Get Your Emails Read” post, here’s some of my quick advice on how to run an efficient meeting. This is somewhat project management-oriented.

The very first and sometimes non-obvious question to ask is whether you really need to have a meeting. Meetings chew up a lot of time and you better be certain that you need to tie up all those productive resources for an hour. Just think about the salaries involved: a fully loaded software engineer conservatively costs a company $200-$250K in San Francisco (fully loaded is with all benefits, taxes, rent, etc. allocated). That’s a minimum hourly rate of around $100 and that doesn’t even include the opportunity cost of them doing something else during that time. Now imagine the cost of more senior staff. It gets expensive fast.

Step two is to ask yourself if you really need all the people you’re considering inviting. Sometimes you can get away with a more junior person who knows the subject matter just as well, yet sometimes you just need that one senior person and you can ask the others to continue being productive by not attending. I’m ok with managers making judgement calls to bring one of their staff members with them to meetings as a silent observer for the purposes of training, but if that doesn’t lead to the manager soon relying on that person to attend in his/her place, it’s a waste of time. The goal here also is to have fewer, but the right voices in place so that a consensus/decision is reached more quickly. Conversely, the question sometimes is whether you have the right people in place to make decisions. If you don’t, forget the junior people and don’t bother having the meeting. You will have wasted everyone’s time.

Continue reading

Releasing some simple open source code

I’ve lately been intrigued by doing some of my own analysis of the stock market and so I naturally decided to write some code to do so. I’m not a huge fan of doing this kind of analysis in Excel, because I don’t find it a repeatable/scaleable way of doing a lot of analysis across various equities. It’s hard to have a template and have live data flow into it without having to do a ton of setup with commercial plugins on Windows. I guess I also just find the Excel work daunting and it forces you to only be able to use it from one computer.

Finance geeks will likely disagree with this, but my goals are also likely different. I’m basically trying to go for coverage across lots of different stocks, go semi-deep and easily update the inputs/assumptions vs. going super deep on a much smaller select few with harder to update inputs. It’s a bit of tapping in the dark to find a light switch (none found so far FYI) but my approach is to intentionally go through a process of learning about the stock market and about coding at the same time.

My approach also intentionally starts out with a large, growing and automatically updating opportunity set, i.e. putting the kitchen sink in and then starting to slowly clean out. I’m a rookie at this, what can I say, but it’s letting me explore a lot of different industries, companies and most importantly, I’m learning a lot about analysis metrics that I’m simply not that familiar with.

Long story short, I decided to use PHP to write some of the analysis framework and tools, because it’s client/server, I’m somewhat familiar, the syntax is simple and there’s tons of great documentation. It’s definitely not resource-efficient by classical standards (buy/rent a bigger box!) and it does make some things more complicated (forces you into client/server, not desktop, but that’s good thing). Yet there was really not much choice because I could readily do the basics of the rest of LAMP to be up and running pretty quickly. I’m also not at all on my way to writing high-frequency or algorithmic trading code (hot stuff these days), so an interpreted language was just fine.

And so as part of this, I needed some basic financial numerical and statistical analysis packages. PHP has the very very basics built-in and supposedly some others are available in a PECL library, but it’s a messy install. I therefore proudly present to you my homebrew solution and first piece of open-sourced code, “PHP StatFin 0.1”, released under the Apache License 2.0. The Apache License is just about the least restrictive, which is why I chose it. Although it’s short and simple code, I’m pretty happy to give a little code back, even though the application is highly nichey.

In the package there are two files containing 4 useful functions:

  1. Covariance of two arrays. Note: this is a covariance of two known samples, not two random samples, so it divides by n, not n-1, exactly like Excel does.
  2. Variance of an array. Note: divides by n-1, like Excel.
  3. Beta of a set of equity prices vs. a set of index prices.
  4. Beta of a set of equity return vs. a set of index returns.

As you can tell, it’s pretty bare bones right now, but as I make updates, I will release them. You can view the files after the jump.

Continue reading