Archive for December, 2011

My Average Saturday

Saturday, December 17th, 2011


Fly into the clouds with me…

Saturday, December 17th, 2011

[This is a repost from Blogger and Juniper Networks site. I wanted to merge it into this blog as I really like the content.]

The cloud is a term that I first heard about over ten years ago. I was really into
Microsoft and the launch with Windows 2000. Steve Balmer talked about these magical
services. These new magical services would sit out on the Internet, they would sit on powerful
machines but that really didn’t matter. What was important to me is that I saw limitations melt
away. The need to plan, rack and stack, cable, assign IPs, all of that was over. Of course
someone, somewhere had to deal with that but you no longer did.

Of course at the time people thought that Microsoft would stop selling Windows. Software would no longer sell software and that it would all be rented. The subscription model had been born but not fully realized. It took ten years before Microsoft would talk about the cloud again. While I had heard about this for a long time it took my wife to ask me what the cloud is that I knew that it had arrived. She had just watched a commercial by Microsoft for the cloud. The challenge with it is that the exact workings of this cloud weren’t described. The people in the commercial used some online applications “in the cloud”. Which to me it translated to “hey people use
our service to do things without the need for fancy applications.

This made me happy because isn’t this is what the cloud is supposed to be? Its a magical pool of compute that can make your wildest dreams occur. The only challenge is you need to bring the dream. Insert one dream into the cloud and perhaps a game changing idea will come out. There are many companies that tapped into a shared cloud and turned that
into gold.

Zynga, a maker of Internet games that run primarily on Facebook, is hosted in the cloud or Amazon EC2 to be exact. As needed they add and remove virtual servers. This reduces costs buy never really owning or having to upgrade anything. In this case the cloud made a cost effective business possible by having an on demand compute environment.Another excellent example is Dropbox. Allows you to synchronize files between your desktop and the “cloud” in this case Amazon’s S3. It makes backup, sharing, and multi-client synchronization simple. I have been using Dropbox for a while but I knew the service had made it when I recently saw some banking executives sharing files through it.

I think what is so exciting to me is that in the 1960’s and 1970’s saw the garage revolution for creating technology outside of he labs at some business minded company. Here you had revolutionaries making computing devices that changed the world overnight. From Jobs and Wozniack in Palo Alto to the software revolution that became Linux in the 1990’s. Linus Torvalds didn’t set out to create the largest project for collaboration in human history, he wanted make a faster
way to dial into his University.

Today is the time of the cloud. Today anyone can launch a application that can scale over the entire world. Today anyone can make a game changing service that you could never live with out. What is so
exciting is that it can be done by a few people and litterally reach millions overnight. While I wish I had the opportunities that Jobs and Woz had I think today is equally as exciting. Dream up an application or service and launch it into the cloud. The underlying architectiure of servers, switches, and security is still very important but it is abstracted from the group that launches the applications. Its something thats best left up to the cloud providers and kept in the back of the minds of the developers. So when someone asks you what is the cloud you can easily answer that its the place that dreams are made of.

Scale: The noun and Verb

Saturday, December 17th, 2011

In my day to day job I often deal with scale. We sell large firewalls and beyond that we sell some amazingly huge pieces of networking gear. Its common for us to discuss and design networks that encompass millions of users or insane scale for network traffic handling. But lately we have had lots of challenging discussions around what “scale” means. Why such confusion you may wonder? Well because often people don’t scale their expectations of the word “scale”. Or in less confusing terms people think that everything needs to infinitely scale even when it does not need to. Scale has many definitions but for this discussion I mean “to represent in proportional dimensions”.

To solve some design problems you need to scale a solution to huge proportions. This may encompass hundreds of millions of dollars of equipment in a design that is so large it needs a book to explain in. But scale is just that proportional. Just because a solution can scale to an enormous size doesn’t mean that it has to. To scale is to build a solution to the correct sizing that is necessary. Now the reason that this is such a hot topic is because I always get into heated discussions that most people want a solution that can scale to infinite amounts. The larger you scale something the harder it is to keep it stable. Scaling anything requires a huge amount of infrastructure to make it stand tall. When you choose to build something so large that it has to scale to such a huge sizing that you need to be more worried about its infrastructure. In networking this can be management, logging, physical location, cooling, nearly any aspect around the solution needs to scale.

I often go to the Computer History Museum in Mountain View, CA. First its about a mile from where I live so its accessible, but secondly its amazing. I often reflect on computer history to learn from the past. Tapping into the energy and creativity of our computing forefathers (and foremothers) is an amazing experience. It wasn’t too long ago that I would watch Pirates of Silicon Valley or read Revolution in the Valley and dream of being involved in the evolution of technology. The people that crafted the products in the museum helped make the world we have today. Many of the names forgotten, much equipment left to turn to scrap, but the work put forth is with us every day. When the engineers that worked on these historic artifacts were going through the creative process they all determined the scale of the solutions they created. They all had to put a cap on how much metal and silicon that can go into a solution. Why didn’t Seymour Cray pack in more wiring into the Cray-1 or the Enigma machine have a more complex substitution method? Because the designers built them to the correctly scaled solution.

When something is created it needs to have bounds to what it does. By having bounds you have a place to stop building, you have a goal. By having a goal you can gage when something is big enough. But all solutions are not created equally. Some solutions need to be small, they need to only scale to meet specific needs. Others need to scale larger than can be understood at the time. The real judge of “how big” something should be is the end goal of the solution. Scaling something to enormous proportions when it doesn’t need to be will only hurt your goal. This is the same as when something that needs to be scaled to the extreme. If its too small then its not going to work.

So why am I so frazzled about this scale discussion? Well it all came to be when I was in a discussion about scaling databases. Today’s application architecture is much more than the days of LAMP. While LAMP works for a lot of sites (scaled correctly) many applications use several tiers of databases and app servers. The traditional three-tier application design has scaled to new heights. This leads many people I talk to think that everything that is built in the cloud has to scale to infinite proportions. Solutions that call for MongoDB or CouchDB some people turn into Hadoop or Cassandra because they think that is something can be scaled that it should be. I don’t mean scale in regards to 2x or 3x but to the largest possible level. Scaling something too large is just as bad as scaling something too small. By forcing a solution to be way too large it causes its own set of issues.

So then what is the correct scale for a solution? Whatever the solution calls for with the possibility of expansion. Meaning meet the needs of today but also make sure that you have an out for tomorrow. This means that if you choose to go with something like MongoDB explore it so that your sure it will meet the needs to today and then see if it can scale with you as you grow. Don’t throw it out just because you don’t feel that it can’t do 100x what you need today. Be prepared that if you need to move to a new solution that it what you create is flexible enough to work with what you will do in the future. In this case make sure that your programming in such a way that it is abstracted from the database so that way if you have to change it that you can. Or you may need to reinvent the rules. Facebook did this by creating their own PHP compiler. They scaled PHP with them as they grew. They didn’t start with Erlang as their primary language and then scaled with it. They started with PHP and evolved PHP in ways that would meet the needed scale.

I beg of you that when your looking to build something, from a cake to a software stack, that you think of the end goal or the requirements that are needed. Please don’t simply jump past the “right” sized solution to the super-sized solution just because its available. Over scaling is just as bad as under scaling. Scale your solution what is rightfully needed not to the maximum possible need. Being a great engineer is all about trade-offs. You need to build something that solves the problem at the right size. If we didn’t do this would we have thermonuclear mouse traps? Although the mini mushroom clouds would be entertaining, its the radioactive fallout from this over scaled solution that will get you.

Building a team means picking the players

Saturday, December 17th, 2011

In the past week I went on a road trip back to my origins. I went to Detroit to split my time between work and family. But to me those things are one in the same for me. We all come into this world with a family of some sort. This can be your traditional blood related types or perhaps you were adopted. Either of these are the family you gain by existing. As you age it becomes your own responsibility to keep these relationships together. In today’s world of social media, SMS, FaceTime, Skype, Instagram, and so forth it becomes easier to share your day to day with your family. These tools certainly help you to keep your family abreast of your day to day life. I always find it amazing when a somewhat distant family member brings up a witty comment or interesting antidote that you posted months past. It feels great to leave that type of lasting impression on someone that you otherwise would not be able to do.

While I was in Detroit I enjoyed the conversations, food, and general merriment that my family can provide. I love sharing stories of my life in Silicon Valley and seeing people react as if I lived in the world of tomorrow that was painted by Disney so many years ago. The lifestyle of your average Detroiter is much more laid back than the ultra competitive world of Silicon Valley. I sometimes miss the laid back environment of Detroit. The nostalgia of the relaxing Sundays watching the Detroit Lions take their hand at trying to not only win a football game but revitalize a city is very comforting. I can honestly say that this year ended up being a great trip and very therapeutic in a time of great stress in my work life. I loved building a new computer with one brother and talking C++ with another. I enjoyed conversations over coffee with my mom and discussions about “pimpin” with my third brother.

But beyond visiting my relatives I take this trip to visit some of the remote members of my team. Currently in my team I have nine people. A far cry from when I started this team with just myself. Four of my team members are remote and three of them are close to my family so I try to meet with everyone. Although on this trip I only was able to meet with two of them due to the heavy travel load that my third team member has been under. I first met with Brad (@bradmatic517). I remember first meeting Brad so many years ago. He was a young graduate from MSU and he is still as hungry for knowledge as the day I met him. I was able to spend some time in Brad’s magical lab, exotic fish emporium, orchid garden, and otherwise loving home. We spent the day talking about the deep nooks and crannies around the state of computer security. I always feel that him and I can solve almost any problem when we work together. Perhaps some day that energy can be parlayed into a startup or open source project. Today we use it toward solving our employers challenges. I always love spending time with Brad because he always sees the positive in everything. It gives me a fresh perspective on topics I might as well have otherwise written off. We typically talk on a daily basis but you can never beat the intimacy of a face to face conversation.

After my weekend of fun I was able to spend a couple of days with my other team member Bill (@webguppy). I have actually known Bill the longest of any of my professional friends. He has always been a stand up guy. He is the type of friend that you want to pick up the phone when you are at your darkest point. His analytical mind is at genius level and beyond. Bill is a very technical guy but his specialty is solving people problems. I can certainly tell you that people issues are harder than technical issues so its great to have someone like Bill available. He is a great resource that I call upon often. Bill and I took a couple of days to plan and record some videos for Juniper’s VARs. We were able to get six done and a seventh experimental one involving Legos. The videos are ~5-10 minutes of technical overview around various topics. We always find that these videos are pretty popular because they cover some interesting ground. I love to share my experiences with others and I think that personal touch really moves people to learn. I watch many videos done by programmers and I know that the speakers passion really motivates me so I hope my videos do the same.

I unfortunately didn’t get to spend time with my last team member, Galina, that lives in the region. She has spent the last six weeks traveling and I didn’t want to make her miss another week away from her family. I will get to see her in a few weeks so I can hold on to then. We all need that “space” to let our mind think.

If I can say the most amazing thing that I have seen this year was the growth of my team. Besides the three mentioned here I have five more people back in California. Nothing makes me feel more proud to see my team in action. The brilliant ideas, strategy, content, motivation, all inspire me to work harder. I suppose this is what being a parent is all about. Taking the very kernel of an idea and watching it grow without your direct interaction. I can say that while I have completed many large endevers I think what my team has grown into is my best accomplishment in my professional career. I can only pick the players but I can’t make them be a team. They did that on their own. I am forever grateful and proud of all of the accomplishments of my team. They are highly diverse yet through their diversity they became a serious force for my company. I look at my team as a family. I didn’t get to just inherit them in this case, I had to earn them. I had to earn their trust to believe in the organization I was believing. Some of them uprooted their lives thousands of miles to join my team. For all of their efforts I am eternally grateful. They are also my family even though our bloodlines are very different.

It doesn’t matter if your family is blood, legally bound to you, or just a group of random people that have no good reason to be with you. A family is the group of people you trust and love. A family is certainly earned and must be maintained. These relationships are what makes us feel good to be human, its the reward you can’t put on a shelf or deposit in a bank. I am so happy that between my personal and professional life I was able to build such a rich and strong family.

%d bloggers like this: