A Brief History of Scaling Uber

On a cold evening in Paris in 2008, Travis Kalanick and Garrett Camp couldn't get a cab. Fast forward to today where Uber is the largest mobility platform in the world, in over 70 countries, 10,500 cities, and 130 million users. Here's the story of the key moments in scaling Uber engineering ...

The Pre-Mortem: Software Engineering Best Practice

The software post-mortem is well known. It’s a standard best practice that really marks the end of any software project. It also fits in well with the Agile manifesto, specifically the retrospective - always be reflecting, always be improving.

Don't Ask for Feedback, Ask for Advice

Everyone wants feedback. In fact, studies show employees who get regular feedback are more engaged and higher performing. The problem is, unless you have a strong trusting relationship with a person you are asking, you may not the concrete feedback you are looking for. People don’t want to hu...

A Brief History of Scaling LinkedIn

A post I wrote on the LinkedIn Engineering Blog that tells the story of how LinkedIn scaled over the years. It touches on the larger tech initiatives and key milestones throughout. Throughout my time at LinkedIn, I was involved in various tech initiatives across the company. I also was fortun...

Custom Android Tabs

Wanting to change the default TabWidget look and feel for Android? In this tutorial, we will investigate a few different ways to customize your app’s tabs.With Android SDK 1.6 and above, the SDK allows you to set a View as the tab instead of just text and an icon. We use be using that tech...

Android Tabs with interacting map and list views

Last tutorial, we wrote a simple app that displays two interacting list views in a TabActivity. In this tutorial, we will up the ante and add a MapView as the content of one of the tabs. Why again are we using multiple views in an activity instead of using a separate activity for each tab co...

Android TabActivity with two list views

Often times when creating an activity with tabs, it’s easy to have a separate activity for the tab content. However, things get tricky when those activities need to interact with one another. So the solution is to create a tabactivity with views (instead of activities) as the tab content. ...