If I had to summarize 2015 in a single word it would most certainly be travel.  This past year has been an amazing set of experiences getting to travel all over the world both for work and for pleasure.


The final stats were:

  • 145,000 miles flown
  • 4 continents
  • 22 countries
  • 1 US Territory

It’s been a whirlwind of new experiences, food, and amazing sites and I’ve loved every minute of it.  Especially getting the chance to catch up with old friends, and make new ones, all around the world.

I’ve also found an odd joy in maximizing my travel rewards, status, and credit card spending to get the most of my new found travel expenditures.  I’ll probably elaborate on some of these in a future post.

So in short I’m thankful for a wonderful year that allowed me to travel the world with the coolest person I know – my wife.  Here’s to hoping 2016 is just as amazing.

Posted in Introspective, Travel | Tagged | Comments Off on 2015

You are not your company

I’ve had several conversations recently with other entrepreneurs with a common theme. It is the early days of the company, with just a hand full of employees. They are going through a crisis or big decision of some kind (it seems like you always are in this stage) and completely stressed out. After talking through the issues, the thing I walked away in all 3 cases was that the founder has completely tied themselves in with the company in their own heads. If the company fails, I am a failure. If I don’t work non-stop the company has no chance. If I sell my company I am selling my own soul and will have money, but lose everything.

All of these traps are easy to fall into, but are the wrong way to think about it. You are not your company. If you are, then you are either just starting out and can’t really assess this new creation yet, or you are probably doing it wrong. The idea of an entrepreneur is to ideally build a company that is bigger than the founder. In the early days you are critical, but over time your job is to build systems and hire people (or teams of people) to fill in these critical roles. In many ways the true measure of success is when you’ve managed to make yourself no longer a necessary piece.

In this way, the company’s success or failure is clearly separate from your own personal success or failure. The “I must be essential to my business” mantra starts to sound like more of an ego driven desire for importance than a cry of exhaustion. And the ability to sell a company that can operate and be valuable to someone else (especially in your absence) starts to sound like a success instead of “selling out” and “giving up your baby”.

When you are building your company, it’s going to be your life for a period of time. It’s long hours, constant fires, and completely all-consuming. It’s still important, though, to remember that the end goal is to build something bigger than you. To build something where you are not a critical piece of it’s successful daily operation. Something other people find value in with or without you. The sooner you can untangle the company and your own sense of worth and move to this idea of “bigger than me”, the easier it will be for you to be pragmatic about your company and ultimately be more successful; in particular when viewed over a career instead of just a single company.

Posted in Entrepreneurship | Tagged , | Leave a comment

Don’t Put Your Dreams in Jeopardy


I was at dinner a little while back with a friend and he told me a story I thought was worth sharing. It was about a friend of his who was obsessed with the TV show Jeopardy. He would watch it constantly and decided he wanted to try to get on the show some day.

Already, he was a fountain of trivia and random knowledge, but in preparation he spent all his time working through flash cards, reading a variety of related books and articles, and preparing his mind for the show. His one form of relief from this relentless shovel of knowledge into his brain was when his friends would convince him to take a couple minute break and play a video game with them. However he was awful at the video games they played. He was constantly dying, not able to hold his own, and didn’t really enjoy it much. He just had no hand/eye coordination and slow reflexes, and didn’t do well with these games.

So he continued to practice his flash cards, have people quiz him, just fill all his free time with preparation for the game show. Then he finally had his moment and got called up to compete in the show. This was it; his big moment. So he focussed even more on his trivia. No longer having time for the silly video games, he worked non-stop preparing, in any way he could think of, to dump more random facts into his mind.

He flew out to do the show, full of nervousness and excitement. He was finally about to get his dream and have his moment on Jeopardy. Once the show started he had confidence as he read over the categories. Then the first question (or answer I guess in this case) came and he excitedly reached for his buzzer, confident in his answer. However he was too slow, and didn’t get the points. As the game continued, he continued to struggle with the buzzer – and although he knew most of the answers he was getting no points during the game while he continually fumbled or delayed when it was time to buzz in. It turns out his short comings with hand/eye coordination and his reflex time were preventing him from ever getting a chance to use all that great knowledge he had spent so much time crafting and preparing.

In the end he lost, quite egregiously, not because he didn’t have the answers, but because he wasn’t able to buzz in fast enough. In all the preparation he had done for the show he hasn’t spent any time practicing the simple act of buzzing in. And without that critical skill, all the knowledge in the world wasn’t able to win him his moment on the game show of his dreams.

So don’t let your relentless focus get in the way of seeing all the steps in your goals. Because if you do, you might end up putting your dreams in jeopardy too.

Posted in Introspective | Leave a comment

Intro to Navigation Timing API

Navigation timing API has been around in browsers for several years now, but I’m still often surprised how many people I meet that have never heard of it or don’t actually understand it. If you fall into this category consider this a quick primer.

Frontend web performance matters. This is the time it takes from the moment my browser starts a request for a URI to the moment the page is fully loaded (or functional and visible – different people want to measure different things). If you’re not convinced it’s important consider the fact that Google includes page speed in it’s prioritization algorithm and many different studies (including our data from Torbit) show a correlation between site performance and conversions.

Ok great, so performance matters – now what? Well in the past it turns out it was actually pretty hard to reliably measure frontend performance on your site. There was synthetic testing (basically a fixed browser in the cloud that would hit a site and record timing data), but this was not usually representative of actual end users because the testing took place on big internet backbones with relatively fast computers.

So some sites starting doing various hacks to calculate the load time in the browser when visitors would come to their site. The initial implementations of this were basically just hooking into the browser onload event and subtracting the start time from a script inserted into the head of the document. Over time these hacks got a little more sophisticated (using cookies to track time since you started to unload the previous page, for example), but they were definitely hacks.

Then came the magic of the navigation timing API. Essentially this is a Javascript API available in most modern browsers that gives you direct access to a bunch of timing information about the page load on the current page.

Navigation Timing

With navigation timing you could now access a new property window.performance.timing that had entries for all the major timing events shown in the graphic above in milliseconds. For example:

Finally you can get access to the actual load time the current visitor experienced for the DNS lookup, the TCP connection, the transfer time, and fully loaded time (among others). Then you can use that data to either take an action for the current user or beacon it back to a central server for aggregation and reporting. This is fundamentally what all RUM tools do (including Torbit’s Insight product).

So if you’re not already using navigation timing give it a spin. You might be surprised to see how slow your site can be for some users.

Posted in Javascript, Performance | Tagged , | Comments Off on Intro to Navigation Timing API

Currency Conversion When Traveling

Recently I’ve been traveling a lot more (a topic for another blog post) and I thought it might be good to write up some of the travel tips I’ve learned along the way to make life easier for those of you reading this. I’ll probably have a few other posts along these lines in the future.

One of the big headaches when traveling is converting money to the foreign currency of the country you’re traveling to. You often need local cash shortly after you land for taxis or other incidental purchases, but getting foreign cash while in the US or at the airport is often very expensive due to poor conversion rates and fees.

So what should you do? I suggest using a local ATM to withdraw some local cash instead. I can hear you already, “Really? Aren’t ATM fees just as bad, if not worse?”. And yes, in fact, they are often quite expensive. However there are a handful of banks that will actually reimburse your ATM fees, which suddenly makes the ATM conversion not that expensive. You essentially are just getting the current conversion rate of your bank, which in my experience is much better than the rates and fees that come with traditional currency conversion services. I personally use a Charles Schwab checking account, which I’ve been pretty happy with, for my ATM reimbursements. They just put a credit on my account at the end of the month for that month’s ATM fees – I don’t even have to do anything to receive it.

And perhaps the best part about this tip is that it’s actually often even more convenient than finding a currency conversion service. ATM’s are readily available in most places (especially transportation hubs) which makes converting cash a very simple task.

Posted in Travel, Travel Tips | Tagged | Leave a comment


I recently took a trip up to Toronto, Ontario on short notice for work. Since I didn’t have a lot of time I didn’t plan anything for my mobile phone and ended up just turning it off while I was there. This ended up being a really interesting unintended experiment for me of temporarily getting off of the “always connected” lifestyle I’ve come to know.

The first couple days it was weird. I felt like I was missing stuff and just felt a general discomfort with the situation. I was suddenly aware of how often I use my Google Maps and Yelp. Especially being in a new city. Perhaps the most noticeable change for me, though, was my tiny down times throughout the day when I would pull out my phone but have nothing to do on it anymore. Waiting in line, waiting for a friend to finish in the bath room, etc were no longer moments to check in to my online world. This left me feeling disconnected, frustrated, and a general sense of missing something or being out of touch.

It wasn’t long though (probably around day 3) that I found myself actually enjoying it. I found that without the ability to always use GPS and Maps I actually learned my way around the city much faster than usual (and I am definitely geographically challenged). I found myself using my short down times to actively think about my mental backlog and pay attention to my surroundings. I definitely felt like I got more out of my short trip to Toronto than I have from other similar trips in the past. But the biggest and best change I noticed was an appreciation for not being constantly interrupted throughout my day. No more Facebook links being shared or Meetup comments or any of the other junk that comes streaming my way throughout the day. This was something I greatly appreciated by the end of my trip.

Its worth mentioning that I never complained (or really actively considered) any of these issues before. It has been a slow change over time that I never really realized had happened. But the abrupt change to zero was very interesting.

I don’t plan to turn off my phone in general now that I’m back. It is an amazing tool and being with out it gave me a new appreciation for how life changing the mobile revolution has been. It did make me decide to be a little more strict on which apps can notify me and how I use my micro downtime throughout the day. I also think it will change how I vacation and I will actively try to eliminate my interruptions when I’m off work and spending time with the wife.

If you haven’t tried disconnecting recently I would give it a go. Find a couple days and just put your phone in airplane mode or turn it off entirely. It might surprise you to see the impact being connected is having on you.

Posted in Introspective | Tagged , | Leave a comment


I’m not really a big fan of new year’s resolutions. I think it’s important to continually work on self-improvement, not hastily come up with some bold resolutions once a year. I do like the idea of new year’s day as a milestone marker, though, and a time of reflection on the previous year.

2013 was a very intense year for me. From having to fire my co-founder, to finding out my mom was diagnosed with cancer, to selling my second company and transitioning over to work at the largest company (by far) I’ve ever worked for – 2013 was definitely a year to remember. A strange mix of some of the worst moments and the best moments I’ve had in recent memory. I definitely couldn’t have predicted the way this year shaped up at the start of it.

Ultimately I see this as a good thing (even if some of the stuff I couldn’t predict wasn’t good), though. Volatility can certainly be unpleasant, but it’s also a key component to making big strides forward personally and professionally in my experience. I’ve also grown and learned A TON over the last year.

Here’s to a better 2014, hopefully one still full of opportunities to grow.

Posted in Introspective | Tagged | Comments Off on 2013


Often starting is the hardest part. Inertia is hard and the act of going from nothing to something is often the single biggest step.

I often find for myself that the ability to start new projects, adventures, or whatever, is a bit like a muscle. If you don’t use it for a while it begins to atrophy and starting new things gets tougher and tougher. However if I just force myself to be disciplined and dive into new things on a regular basis it gets easier and easier with each new thing.

So start something today, no matter how small and start building that muscle. Build a new routine that involves trying something new or starting something small regularly. It makes it a lot easier to make that difficult first step when it is really needed.

Posted in Introspective | Tagged | Leave a comment

13 JavaScript Performance Tips

Daniel Clifford recently gave a great talk at Google I/O 2012 called “Breaking the JavaScript Speed Limit with V8”. In it he goes in depth to explain 13 simple optimizations you can do in your JavaScript code to help Chrome’s V8 JavaScript engine compile / run your JavaScript code faster. In the talk he gives a lot of great explanations as to what they are and why they help, but if you just want the quick and dirty list, here goes:

  1. Initialize all object members in constructor functions
  2. Always initialize object members in the same order
  3. Prefer numeric values that can be represented as 31-bit signed integers
  4. Use contiguous keys starting at 0 for Arrays
  5. Don’t pre-allocate large Arrays (>64K elements) to their maximum size, instead grow as you go
  6. Don’t delete elements in arrays, especially numeric arrays
  7. Don’t load uninitialized or deleted elements
  8. Initialize using array literals for small fixed-sized arrays
  9. Preallocate small arrays to correct size before using them
  10. Don’t store non-numeric values (objects) in numeric arrays
  11. Prefer monomorphic over polymorphic wherever possible
  12. Don’t use try {} catch {} blocks
  13. Avoid hidden class changes in functions after they are optimized

If you have time to check out the full video and/or slides I would highly recommend it. I know I for one will check back to the list often and am trying to watch for these gotchas in my code going forward.

Posted in Javascript, Performance | Tagged , , , | Leave a comment

Torbit Insight – Measure Your Real Performance

I’m extremely excited about our latest product launch at Torbit called Torbit Insight. Insight is all about measuring the performance of your website and tying it into the business metrics you care about (conversion rate, bounce rate, etc). Up till now, the performance space has been pretty limited in ways to measure performance on your site. There are a lot of tools that do synthetic performance tests (a server in the cloud loads up your website and gives you some basic information about the performance of it), but these tools fail to measure what your real visitors are experiencing and often ignore things like caching and real world network conditions. The piece that has largely been missing is an easy way to measure the performance your actual visitors are experiencing.

Torbit Insight exists to answer this need. By adding a small asynchronous javascript snippet to your website we can measure the real timing of your website from your actual visitors. Every visitor and every pageview matters, so we make sure to sample them all. We then roll up all this data and give you a breadth of different ways to slice and dice the data. You can see full histograms, performance for different browsers, different geographic locations, and a whole lot more.

Insight Histogram
Insight Histogram
Insight Key Metrics
Insight Key Metrics

If that wasn’t enough, we also have a ton of particularly awesome real time analytics so that you can see how your website is performing for visitors on your site as it happens. There just isn’t anywhere else to get this kind of data.

Insight Realtime Map
Insight Realtime Map

I’m extremely proud of the Torbit team and all the hard work that went into the product launch. If you want to help us build awesome stuff and make the web a better place be sure to check out our jobs page – we’re hiring!

There’s a much more in depth post announcing Insight on the Torbit blog. You can sign up for free and start measuring the performance of your site today.

Posted in Performance, work | Tagged , , | 1 Comment