“Making Engineers Happier and Smarter at the Same Time!” By Chris Hanson

When Chris Hanson told us about the Perpetual Learning program at HauteLook – which institutionalizes the concept that engineers will be happier if they stay on the cutting edge by continuously adding to their skills and understanding – we thought it would be fantastic to share his insights with the community at large. As VP of Engineering for the company, Chris is not shy about describing the broad reaching effects of the below methods.

Fun fact: Since 2010, Google has acquired an average of one company per week.

Perpetual Learning at HauteLook, by Chris Hanson

Part of having an awesome engineering team means hiring awesome engineers. But after we hire awesome engineers, we need to keep them happy. We’ve found that one big factor in keeping them happy is helping them to continually improve. There are a number of ways that we do this:

  • Learning Series
  • Book Club
  • Workshops
  • Conferences
  • Involvement in Open-Source
  • Encouraging participation in hackathons and meetups

Learning Series

Every month, our software and QA engineers have the privilege of attending a presentation by one of their peers. And sometimes, depending on the topic, we also invite the Product Management team. Topics may be directly related to something that we do here at HauteLook, but they don’t necessarily have to be. These are done during lunch in one of our conference rooms, and lunch is provided. On average, the presentation takes around 45 minutes, followed by 15 minutes of discussion. A few of the topics that we’ve covered in the past include Android Development, Vagrant for VM Management, Software Design Patterns (Template Method Pattern, State Pattern, Strategy Pattern), Performance Testing and Monitoring, Node.js and Responsive Web Design, to name a few. To perpetuate the Learning Series, many of our team members have an annual goal of presenting at least once, although many enjoy it so much, they do it multiple times throughout the year.

Book Club

Last year, every developer had a goal of reading Clean Code: A Handbook of Agile Software Craftsmanship, and to encourage this as well as to solidify everyone’s understanding, we all met each week to cover a chapter in this book. Discussion included favorite parts of that week’s chapter, questions, and debate on how we as a team choose to follow clean coding. This year, the book that we’ve selected is Practical Object-Oriented Design in Ruby: An Agile Primer. Although we don’t use Ruby for much besides various dev-ops tasks, the lessons that this book teaches are invaluable and should be part of any software engineer’s arsenal. So far, our team has been highly impressed with this book.

Workshops

Our concept of a workshop involves two to three engineers being taught some concept or technique in a two- to three-hour hands-on session. We like to keep the groups this small because it results in each participant being fully engaged.

One recent workshop covered unit testing. In that workshop, we looked at a few particularly ugly and untestable methods (if you don’t know, a method is a function within a class), and we discussed why they were untestable. We then refactored the methods, one-at-a-time, to remove dependencies so that they could be tested at the unit level.

Every member of the e-commerce engineering team has an annual goal to organize at least one workshop, so this results in a lot of learning on a variety of topics!

Conferences

Our annual budget allows us to send each engineer to a relevant conference of their choice. Not only do we pay for their conference fees, but we also cover their time off. Conferences attended include WWDC, Mike Cohn’s “Cohn’s “Certified ScrumMaster” and “Succeeding with Agile”, a conference on Machine Learning and the most recent Ember.js Bootcamp.

Involvement in Open-Source

We’re an open-source shop, and we encourage our engineers to participate in the open-source community. One example of this is Vertebrae. Written by HauteLook, Vertebrae is a web application framework for a frontend built using RequireJS, Backbone.js, Underscore.js, jQuery, and Mustache.js. We’ve also become involved in the Ember.js project, and we’re currently rewriting our e-commerce web site using Ember.js.

Hackathons and Meetups

A subset of our engineering team, along with a member of the Product Management team, attended the Silicon Beach Hackathon in June 2012 and placed fifth overall. HauteLook also was a Platinum Sponsor of Startup Weekend Los Angeles in July 2012.

We encourage our engineers to attend local meetups, and we recently hosted the Ember-SC meetup. Many of our team members have attended meetups all over the L.A. area.

Conclusion

As you can see, the concept of perpetual learning is something that we take very seriously within the HauteLook Engineering team. Everybody here has an intrinsic desire to grow, as well as a passion to help others. And that’s a big part of why we have some of the best engineers around, and why we all get so much fulfillment out of our jobs at HauteLook!

Chris Hanson can be reached through his LinkedIn profile at http://www.linkedin.com/in/phpchris.

JQuery Meetup at Q

Great to have all of the JQuery folks at our office for the meetup last
week!

jQuery

Thanks to Troy Miles (@therockncoder) for his presentation: Responsive
Design and jQuery Mobile and to Natalie Maclees (@nataliemac) – who also
happens to be the fantastic organizer of the group – for her presentation:
Understanding this and Modifying Special Effects.

 

“Big Data is Huge (No Pun Intended)!” By Rizwan Ali

Rizwan Ali is a Senior Data Warehouse Architect with deep experience in database design and big data. As data collection and analysis have become increasingly important to most technology organizations, we asked Rizwan to share some of his expertise. Below he discusses managing and customizing Cloudera Manager, in addition to providing a few tips to save time while working in a Hadoop environment.

Fun Fact: The “My” in MySQL database language refers to the daughter (whose name is My) of the co-founder of the technology (Michael Widenius)

Managing Cloudera Manager 

Big data is huge (no pun intended)! There are tons of moving pieces with a vast array of technologies such as Hadoop Distributed File System (HDFS), Map Reduce, Hive, HBase, Zookeeper (and many others) coming together harmoniously in a cluster and delivering the tools and frameworks required to extract rich analytics from our big data. Managing and maintaining a Hadoop cluster with multiple nodes is not an easy task, however tools like Cloudera Manager (CM) and Cloudera’s Distribution of Hadoop (CDH) make life a lot easier.

When installing Cloudera Manager for the first time, it will ask you for the root password or private keys for the nodes. I highly recommend using the private keys to connect to the nodes because if you decide to change the root password then you will not have to update CM again. Second, you should be using some kind of config manager like Puppet, Chef or Etch to keep user, groups and GUIDs in sync across all of the nodes which will prevent CM from complaining regarding mismatch users and groups.

Starting with CM 4.6, Cloudera included activity monitoring called Cloudera Management Services (CMS) which records activities, stats and events from all nodes. CMS puts a moderate amount of load on the server, so in my experience installing CMS on the secondary name node instead of a data node results in better performance. If you are managing one cluster, then using the embedded PostgreSQL DB for CM’s internal data yields higher performance compared with using a dedicated MySQL DB. However, MySQL will provide greater flexibility when managing more than one cluster.

I cringe every time I see the dreaded “Bad Health” or exclamation mark next to a node, which you may see frequently, if you are using the default rules and thresholds for alerts. I usually set the Data Expiration Period for monitoring services to 72 hours instead of the default 168 to prevent the logs from filling up the disks. I also disable the HDFS Canary Health Check on development cluster which checks that a client can create, read, write, and delete files. By default, CM will send all alerts to [email protected], make sure to change it to an appropriate email and set proper smtp settings from the Alerts Publisher configuration page.

All of the Hadoop nodes constantly communicate with each other. Creating a separate vlan for the hadoop cluster will minimize the chatter from the rest of the network. CM will complain if it cannot communicate with any of the Hadoop nodes and this usually happens if it cannot resolve the hostname. An easy solution is to update the host file on all the nodes with the IP address associated with the hostnames in the cluster.

What would you do if you accidently deleted all the data in your Hadoop cluster? It wouldn’t be a pretty scenario but luckily Hadoop comes with a Trash feature which saves any deleted files or directories in a special .Trash directory for easy recovery. If enabled, CM configures Hadoop to empty the trash every 24 hours, which is ideal for normal operations, but you can increase it depending on the disk size of your Hadoop cluster.  The settings for Hadoop, Hive, Map Reduce and other services are stored in CM and you can easily add or override any settings by supplying your own XML properties in the Configuration Safety Valve section of the service.

Finally, HBase service should go on its own set of dedicated nodes instead of the Hadoop data nodes since HBase requires tons of memory and CPU for processing. The HDFS service is not required to depend on Zookeeper, however it is highly recommended for the Hive Metastore service to depend on Zookeeper to prevent corruption of Hive Metastore data in concurrency scenarios. By default CM will make Hive Metastore service depend on Zookeeper and if the Zookeeper service is not running then Hive will silently hang while executing any hive query.  Also, if you are not planning to use Impala then you should think about bypassing the Hive Metastore service since Hive clients will talk directly to the Metastore DB resulting in faster queries.

Big data might be big, but Cloudera Manager is huge when it comes to configuration and performance tuning on its own. There are tons of other settings that can be discussed which are beyond the scope of this article. Feel free to tweak and test your Cloudera Manager settings to fit your Hadoop environment.

Feel free to contact Rizwan at linkedin.com/in/wrist1ali.

 

“Break through the noise in the marketplace” – Tips from Ori Neidich

We asked Ori Neidich  – consultant to CEOs of technology companies, studios, agencies, and international governments – to fill us in on some of his tried and true techniques to break through in crowded marketplaces. With nearly 20 years of technology experience, including a decade at Hollywood studios such as DreamWorks Animation and Digital Domain, he is an expert at the intersection of media & technology. His international work is focused on economic development through accelerators in technology, content and digital media.  Ori uses the below techniques, in addition to many others, to help his clients – which range in industry from technology to entertainment to government – on how to create next-generation products based on the emerging trends that are about to shake up our world of storytelling and content. He’s always happy to answer questions or provide more insight at [email protected]. Also, check out Ori’s recent presentation entitled, The Future of Storytelling: How You and Your Cell Phone Can Reshape Reality http://youtu.be/4yjB6r8LQ4g.

Fun Fact: According to areastartups.com, there are over 2000 registered startup companies in Los Angeles

Whether you’re a tech company, studio or agency – attracting new and loyal customers is essential to success. How can your products rise above the noise and add a lasting value to your consumer?

Here are some guidelines: 

Your product is its own marketing.  Marketing (no matter how well executed) will only get people to try your product once. If at that moment it doesn’t absolutely solve their specific needs and or problems, they are disappointed, and you will have lost them forever.

Your best evangelist is a satisfied user. The secret is to nurture their interest and passion so much that they will not only continue using the product, but also evangelize it for you.

Polish your product until it is the absolute best it can be, before gathering customers. If you execute a good product, then everything else starts to fall into place. Stop thinking of your product in terms of what you say about it. Instead imagine what one user would say about it to another user who knows nothing of your marketing materials.

Make your customers keep coming back from more from your lines of products by consistently adding value to their experiences.

Stay close to your customers as you build and launch new products. Your goal is to leverage the power of peer-to-peer communication and word of mouth marketing. Here’s how to begin:

  • Imagine what one user says to another prospect in    a 5-second sound bite (Instagram’s example: “it makes cool pictures”).
  • Make your user look cool using it (e.g. Autostitch, they don’t even say anything).
  • Use visual examples.  Almost half of our brains are dedicated to visual processing.
  • Observe and track customer behavior and then respond to it:  How often is your app used? Time of day? Situation? In what context?
  • Focus on what will create customer retention; this is the real moneymaker killer app (not conversion).

Focusing on these guidelines will cut through the incorrect assumptions in the marketplace, and will bring you closer to your customer and success.

Interview with David Subar, CTO of Break Media

One of the most important components in developing great technology products is building a strong team. Finding, keeping and empowering great talent can be one of the most difficult challenges a tech leader confronts. We asked David Subar, CTO of Break Media, to provide his thoughts on team building. He is a seasoned and experienced technology executive who has built teams in a broad swath of environments throughout his career.

Fun Fact: The Center for Creative Leadership in San Diego found that companies who are highly rated in employee motivation, development and communication have an average of 20% higher profits than those who are rated poorly.

How do you define a cohesive and high performing team?

A high performing team is, by definition, one that is cohesive. A team can’t be high performing if it is not cohesive.  Cohesion, though, is a necessary but not sufficient condition – you need more. First, you need a well-defined and understood goal. We focus on shipping product that meets Break’s business mission: to give the most entertaining content for our demographic (males, 18 to 34). Everything we do and every decision we make is focused on giving our demographic great entertainment. Other teams’ goals do not need to be the same as ours – they shouldn’t be – but they must be clear and well known. In addition to a clearly defined goal and cohesion, the people in the organization need to be “best of class”.  We endeavor to have the best product managers, the best developers, the best QA, the best tech ops, the best of everything. Still, that too, is not enough. It is not enough to have people that are great in their craft, but they must also be engaged in the product they are developing. We want our developers to critique the product they are working on. Is it cool or not? Can we make it better? The product managers must care about technology in the same way.

What are the key components you look for when hiring individuals?

There are three dimensions I look for: 1) Does the person I am interviewing have the innate skills I need? 2) How passionate is s/he about the role I have? 3) How much experience do they have?  For the first two questions, I look for A players – I would rather not hire than get someone who doesn’t have the skillset or passion for the work. In regards to experience, there are some tasks that require a senior person and others that a junior person would love. For both senior and junior people – and everyone in between – I want to make sure that all are challenged. Technologists seem to do their best work when they are stretched. Getting people with different experience levels is better for the organization and better for the development of the team.

How do you keep the team interested in the work and objectives?

It’s all about passion. You need to have a vision. The vision needs to be clear, communicated and easily understood. If you can’t say it in two or three sentences, you probably don’t have it. Ours is easy. We want to deliver the best content for our demographic. We have a lot of traffic; we have a lot of data. We should be able to use that data to deliver the right content to each person on the platform they want to be on.

How do you manage weak links within the team?

Sometimes the people are weak because they don’t have the requisite skills and talent. Other times there are things to be learned. Perhaps the weak link knows something others don’t. Communication needs to be open and frequent. When the person is really a weak link the issue needs to be communicated to them and they need time to improve. If they cannot, then a harder conversation needs to happen – but in any case, I always try to give individuals a chance to improve. It sends a message to the entire team.

What is the best way to keep multiple personalities functioning well together?

Focus on the problem at hand. Keep everyone working towards the same things. Always be ready to react, in the case that a business or technology need changes – the goals must change with it.

Can you recommend any events or activities for building team camaraderie?

I try to listen closely to what people ask for. We have monthly social gatherings where we bring in a speaker and beer – which are a great opportunity for our team to be social. We are celebrating big project wins with mementos and outings. Recently, for the launch of the new Break redesign we took the afternoon off and took the entire team out for bowling. We also have the team take new employees out to lunch. There are a hundred small things that you can do and the best ideas come from the employees themselves.

Pin It on Pinterest