The Wayback Machine - http://web.archive.org/web/20150315013353/http://blog.houzz.com/
The Houzz Blog
Houzz.com

A Peek into UK and Irish Kitchens

image

To kick off 2015, we surveyed Houzzers in the UK and Ireland about their kitchen remodeling plans. We found that British and Irish Houzzers are updating their kitchens on average every 13 years. By comparison, Houzzers in the U.S. wait an average of 16 years before updating their kitchens. U.S. homeowners are also four times more likely to wait over 30 years to make renovations.

What motivates kitchen updates? A new home purchase tops the list (38%), followed by a dislike for the old kitchen (30%). It’s not surprising that personalizing spaces is key as homeowners in the UK and Ireland spend nearly three hours a day, on average, in their kitchens.

When making updates, they’re substantial, with nearly two thirds of homeowners in the UK and Ireland increasing the square footage of their space. Open-plan kitchens are in vogue and will make appearances in over half of new kitchens.

As for ‘must-have’ elements, 42% of Brits admitted that a kitchen or dining table was essential for gathering around for family meals, cups of tea and relaxed chatting. This was closely followed by a TV, breakfast nook, music system and - most surprisingly - a wood burner. There won’t be any need to leave the kitchen at this rate!

imageimage

It’s Raining Babies!

image

There’s definitely something in the water at our Orange County office. Baby showers have practically become a quarterly celebration.

Last week the office came together over tasty treats and towering diaper cakes to celebrate five Houzzers who will soon be first time parents. Kennie, Laura, Casey, John and Ashley shared how they’ve been preparing for the arrival of their little ones – with lots of nursery decorating help from Houzz, of course. 

Congratulations to the five soon-to-be parents, we can’t wait to meet the new additions to the Houzz family!

image

Houzzer Profile: Sean O’Brien, Data Architect

image

Sean is a Data Architect at Houzz, where you’ll find him building new infrastructure, analyzing data to understand user behavior and a touch of operations. Outside work, he’s a new dad of twin girls and likes to spend time snowboarding, surfing and cycling. 

When did you have your engineering calling?
In junior high, I had to create a tiny program for a merit badge and found it fascinating. I was playing a lot of half life mods and unreal tournament and figured I could make my own fun modifications and tweaks to this game. This realization - that I could create and modify a lot of the software I was using - sparked my interest in programming.

How did you get into data architecture from there?
At the end of high school, I worked for a web consulting startup and decided I wanted to study computer science in college. While I was in college, I spent a couple summers working in a lab at UCSF using bioinformatics tools to find novel gene targets for experiments. I learned how powerful good data mining and analysis can be for solving problems

What about Houzz’s approach to data is unique?
One of the great things about how we’re handling data is our team structure. Many companies create separate silos for data - for example, one team does big data mining for site experience and sits in a separate universe from the team that does business intelligence reporting for operational teams. At Houzz, we keep the teams flat and open so that we can collaborate easily. Since we don’t have silos for data, we all use the same source of “truth” and approach problem solving the same way. Having a team that really cares about keeping it this way makes a big impact, versus the other approach, which causes a lot of pain at big companies.

What’s your favorite part about working at Houzz?
Hands down, having a really strong team. I can trust my peers to always do their best work and produce fantastic solutions. More importantly you can count on the team to help you do things that may not be part of their current priorities but help unblock you in some way. This is key to keeping a very high pace of development at Houzz.

What’s something that has surprised you about working at Houzz?
When I started at Houzz, I was surprised by the ownership people have over projects. Without having a written structure for planned work, our projects are able to move very quickly and the team is able to figure out priorities and move things forward on their own. This keeps engineerings more engaged in what they’re doing since they know that users will only benefit if they push through on releasing something.

What’s your favorite thing you’ve worked on at Houzz?
Our analytics infrastructure. Some of the tools and services we’re building in house could be purchased, but by creating them ourselves, we can specifically tailor them to fit our needs and the needs of our community members. We’re not dependent on anyone else’s tools and never get stuck because a tool doesn’t allow us to do what we want.

When do you do your best work?
It’s a mix of early in the morning and late at night. Mornings are distraction free, afternoons can be a bit scattered when you have ad hoc requests to handle or discussions you need to have with the team.  After heading home for some family time the evening can be a great time to wrap up things you may have spent the day trying to find the right approach for.

What do you do when you’re not working?
I like to get outdoors and do anything from hanging out with my dogs to hiking to snowboarding. More recently, when I’m not working, I’m managing two young, beautiful twin girls!

What’s the best place to snowboard?
Kirkwood. Cornices and chutes everywhere, it rocks.

New Home Renovation Industry Study

image

I’m excited to share that this week we launched the Houzz Barometer, a quarterly industry research program covering the U.S. residential renovation, building and decorating markets. More than 5,000 U.S. residential service providers have joined the Houzz Industry Panel to participate in the research program. The critical aim of the research is to track national and regional trends at companies along the entire value chain of the U.S. residential home renovation, building and decorating markets.

The insights generated from these efforts should provide individual professionals on Houzz with a better sense of how their businesses compare with those of their peers, collaborators, subcontractors and vendors. Additionally, homeowners, media, government and others may use the Houzz Barometer insights to derive implications for the health of the larger economy.

This first Houzz Barometer study generated a number of timely and relevant insights into market performance in 2014 and the outlook for 2015. Additionally, Houzz released its first quarterly index of industry confidence in the home renovation market for the last three months of 2014 and the first three months of 2015.

Here are the Key Houzz Barometer findings:

  • 2014 was a strong year, delivering high single-digit to healthy double-digit revenue growth, meeting or beating expectations for a large majority of firms providing goods and services to the home renovation, building, and decorating markets. Overall, industry revenue growth was fueled by improvements in both the number and the scale of new projects or orders.
  • Economic recovery is reaching very small firms (i.e., firms with fewer than 5 employees). Overall, revenues are improving for firms of all sizes, with a particularly even recovery in the construction sector. Many smaller interior designers, landscape professionals, builders/remodelers, specialty trade and other industry firms report aggressive rates of growth (50+ percent annually), and roughly a third hired new employees in 2014. Smaller residential architects saw more moderate growth rates, but similar hiring trends.
  • Looking forward to 2015, firms in the Houzz community continue to be bullish about their expectations for 2015. Many more firms expect revenues and profits to increase in 2015 than those reporting increases in 2014. The expected rates of growth continue to be in the high single to healthy double-digits in 2015, with an observed shift toward more moderate growth expectations than in 2014.
  • Key concerns are top of mind among firms, including the shortage of qualified workers and subcontractors, the shift toward a budget-conscious and commitment-phobic homeowner, and a continued sense of uncertainty about the U.S. and world economic and political climate.
  • The inaugural Houzz Renovation Barometer posted a reading of 74 or higher for each of the six industry groups in the last three months of 2014, pointing to strong year-over-year improvement in the home renovation market. Widespread optimism in the market recovery continues into early 2015, with the Q1 2015 Houzz Renovation Barometer showing a year-over-year reading of 75 or higher for each industry group.

Note, the Houzz Renovation Barometer is calculated as a diffusion index, where an index score above 50 indicates that more firms report an increase than a decrease in the business activity related to existing homes in a given quarter (e.g., compared to the prior quarter).

For more information on the study and the Houzz Renovation Barometer, see the study highlights and study white paper.

image

image

Dribbble in the Houzz

image

Last Thursday our Design team hosted our first Dribbble Meetup, which brought together nearly a hundred Bay Area designers for some great food, drinks and networking. It was fun to meet other members of the design community and to welcome new friends to our home. 

Here are a few photos from the night.

image

Some happy Houzzers

image

Taking over the “Houzz Cafe”

image

Arya Goudarzi, one of our engineers, joining the party

image

Dribble swag

Houzzer Profile: Tom Hacohen, UX and Visual Designer

image

At Houzz, Tom has worked on everything from branding and visual identity to web and mobile products. When Tom is not at work you’ll find her taking a painting class, snapping photos or exploring San Francisco, the place she’s called home for two years.

When did you realize design was in your future?
It was during my semester abroad in Paris. My French was terrible when I first arrived and I could barely understand what people were saying to me. For one of my classes, I had created a bunch of posters and mood boards to present as part of an assignment, but I couldn’t understand what the professor and the other students said during the critique that followed. After class, my friend told me that the professor had liked the colors, composition and design of my work, but that it had nothing to do with the assignment! What I took away from that experience was the power of design; where language failed, design could be a powerful medium for communication.

How did you get into product design?
I actually wanted to be a photographer early on. When I was 16, I bought an old Pentax camera, and I was always taking photos and developing them in darkrooms. I loved creating compositions and beautiful frames. A few years later I decided to study graphic design and immediately fell in love. I worked as a print and brand designer for a couple of years and then decided to get into product design where I found my new passion.

What inspires you?
Many things inspire me. People, for one. I like looking at people and trying to understand their behavior, and how they think. Talking to other designers is also inspiring. It’s incredible how you can fill a room with designers, give them the same task, and each will come up with something different. Identifying a problem to solve is another great source of inspiration for me. That’s a lot of what we do at Houzz. I’m constantly asking questions and trying to find ways to create something that will not only be beautiful but also solve a real problem for our community members.

What’s your favorite part about working at Houzz?
My favorite part is our design process. We work fast. We’re fearless. We try new things and we get to explore. I also love the people and the culture at Houzz. Everyone here is talented and passionate, and I’m always learning from them. Finally, I love the content. Who doesn’t like to look at beautiful homes all day?

What is the style of your home?
I like very minimal and clean designs. I would say my style is contemporary and a bit eclectic. I like to incorporate unique items, such as pieces I’ve found at a flea market, or a photograph I’ve taken into my decor.

What’s one of the things you’ve worked on at Houzz that you’ve most enjoyed?
It’s tough to answer this question because we always seem to be working on a fun project! It goes back to what I love about our process; we’re constantly in the mode of redesigning and thinking of new ways to deliver the best experience and tools for our users. We recently kicked off a redesign of the user experience on our site, which includes new profile pages that give users, especially home professionals, even more control over how they present themselves on Houzz. I love getting instant feedback from our users and being able to evolve our product in real-time to address their needs.

Data Pipelines for Non-engineers

Data pipelines manage some of the most important tasks for a web company. As data comes in from users, it needs to come right back out as improved user experiences and provide fresh analytics to the team as quickly as possible. I was quite proud of having built an easy to use pipeline framework at Houzz that made it simple to add new mapreduce jobs, hive/impala queries and data transfers, while integrating them seamlessly with existing jobs. The framework grew with the needs of my fellow engineers and did a really good job at what we needed. It became an integral part of everyone’s jobs and met all their needs. Then I discovered that analysts just a few seats over from me were scheduling cron jobs to run their analytics jobs rather than use our pipeline.

Beyond the cron
Cron jobs are great for making sure something runs regularly, but they have a lot of limitations that make them poorly suited for data pipelining. They aren’t guaranteed to run after their inputs are ready. They don’t automatically retry upon failure, validate outputs, or transfer data to our reporting structure. The Houzz data pipeline did all of these things and more. So why would an analyst use a cron job rather than the pipeline? The initial answer was pretty simple. They didn’t know that the data pipeline existed. All of the data engineers knew about it because it’s what we work on and with. It’s all over our internal chat rooms, e-mail threads and group discussions. Of course everyone knows about the pipeline and how to use it, unless they aren’t participating in engineering chat rooms, e-mail threads and discussions. The first step to getting non-engineers to use your tools is to let them know the tools exist.

More than just letting them know the tool exists, you have to walk them through how to use it. When other engineers wanted to know how to use the pipeline, I would just send them code paths for usage examples and the underlying framework code. This was usually enough to get them started. This doesn’t work for less technical people. Instead, sit next to them and help them use the pipeline for the first time. They’ll likely take detailed notes that can become the reference you point people to for how to use the data pipeline. Make sure these notes get shared. This will likely even be useful to engineers. Encourage the person you’re helping to post their notes on an internal wiki or website or offer to do it for them. This will save you a lot of future effort.

Users versus pipelines
Once you have non-engineers using your pipeline, you have an entirely new and more intractable problem: non-engineers are using your pipeline. They’ll tend to do things in ways you never anticipated. When the assumptions behind the design of your pipeline are broken, your pipeline is broken. Our pipeline was originally written so that a single misconfigured job would completely break the pipeline, making it completely obvious that the job was misconfigured and ensuring that all jobs are properly configured. This worked well with engineers, who either tested before merging or at least quickly noticed and responded when they broke something. Non-engineers don’t have the same aversion to broken builds that we do. They will merge code without testing it, never check to see that it’s working, and be slow to respond when informed that they’ve broken the pipeline. You need to either prevent these jobs from being merged or handle them gracefully. Our data pipeline now safely prunes misconfigured jobs and their dependents and prints a warning. Not seeing their data produced is enough to alert people that their jobs aren’t working, and the warning makes it clear to anyone who tries to test their job at all.

Complexity is another enemy of wider pipeline adoption. Reducing complexity helps every user of your pipeline, so you should see this problem as a partial blessing. The part of our pipeline that gets used by non-engineers is the reporting structure for running sql-like queries against hdfs data using hive or impala. A job consists of a query template and a configuration for how and when the template should be filled and run. The configuration causes all sorts of problems for non-engineers and should really be eliminated as much as possible.

Consider the following configuration that used to be in production for one of our impala queries:

user_segments:
   <<: *report_table_date
   table_name: user_segments 
   first_time: 2013-09-01
   report_name: "user_segments"
   dependencies: 
      - web_request 
   frequencies: 
      - daily
   dependencies:
      - primary_db

This is in yaml format, and is very confusing. First, we have the initial line of <<: *report_table_date. This copies entries from a mapping defined earlier in the file to save some typing, but obscures the configuration. This is not something you want to be doing. We also have the name user_segments appear twice in the mapping, even though the whole mapping is nested underneath a key user_segments already. This makes 3 places that someone who has copy-pasted a configuration needs to make the exact same edit. As an engineer, this makes sense. The config identifier, storage table, and query template identifier are 3 different things. But if they tend to be the same, you can just make that the default so people who don’t understand or care about the distinction will have an easier time. Similarly, we can also remove the daily frequencies specification by making that the default too. Pulling out all this cruft, we end up with the more streamlined

user_segments:
   db: logs
   first_time: 2013-09-01
   dependencies:
      - web_request
   dependencies:
      - primary_db

The db: logs line was originally hidden in report_table_date but now it’s clear that you must specify the storage db. Now a nasty bug in the configuration has become more apparent. The dependencies sub-map has been defined twice. Because this is a yaml configuration, this means that the first map will be overridden, and we will only have primary_db as a dependency. This section specifies which tables the query depends on, so this report might now get run before the web_request table is ready for that day. This is an easy mistake to make, as updating the report config is usually an afterthought after changing the query template. Oftentimes people would neglect to even update the configuration at all. In this case, the actual query did not depend on either of web_request and never had. This was probably just a bad combination of copy-pastes. To avoid these unnecessary mistakes, we now automatically infer table dependencies from the query itself, resulting in the shorter config that actually gets the dependencies right:

user_segments:
   db: logs
   first_time: 2013-09-01

We could probably even get rid of the two lines in this config for most cases, and may well do so in the future, but this is enough of an improvement that misconfigurations rarely cause problems anymore.

The template language used for our queries has also been a challenge. We’ve kept things simple by just using mustache templates to substitute in variable information like dates and times. This is pretty easy to use. People have no problem replacing where dt <= ‘2015-01-11’ with where dt <= ‘{{dt}}’ in a query to generalize it. They simply write a query template like

select photo_id, count(*) from photo_views 
where dt = {{dt}} group by photo_id

and you can easily produce daily reports on photo views. The problem is that needs grew beyond simple daily reporting, so people started writing queries like

select photo_id, count(*) from photo_views
where dt between DATE_SUB({{dt}}, 30) and {{dt}}
group by photo_id

to get a 30-day window. This contains an annoying fencepost error leading to a 31-day window rather than the desired 30-day window as well as breaking the dependency inference. When the pipeline tries to run this query, it will only ensure that photo_views is ready for the one day corresponding to {{dt}}, and not other days. I had already fixed this by allowing a template like

select photo_id, count(*) from photo_views
where {{dt_window}}
group by photo_id

We can then control the window size via configuration and everything will work properly. The only problem is that only the other engineers knew that I had done this, as it was only mentioned in engineering chat rooms. It’s important to keep educating users about new features and requirements. I had to correct a lot of templates and make public announcements to make sure that everyone knew how to use this feature going forward. I also took the time to add clear explanations of all template features to the internal pipeline documentation.

Fixing broken queries
Most surprising of all the challenges presented was the way in which a non-developer develops a query. An analyst or salesperson doesn’t really care about maintainability or scalability. They only care that it produces the desired results. This is a very pragmatic view, but it means that the queries will often break as systems change and the underlying data grows.

It’s not uncommon to see jobs failing and inspect them to find a 500+ line query. Trying to figure out what’s going wrong with such a query can be a daunting task, but most of these lines were probably not hand-written. If you look for patterns, you’ll likely see where copy-paste was used and be able to refactor it into something smaller. Often there are a few repeated sub-queries that can be put into their own tables. If you check other jobs, you may find that these sub-queries can be factored out of many other queries as well. Not having to store these intermediate results fully in memory can make a big difference. Another common issue is the use of UNION and WHERE clauses to achieve what GROUP BY is meant for. For example, you may find a query like the following to count the number of users in different age brackets:

select "<18" as age_bracket, count(*) from users where age < 18
union
select "18-24" as age_bracket, count(*) from users where age between 18 and 24
union
select "25-34" as age_bracket, count(*) from users where age between 25 and 34
union
select "35-44" as age_bracket, count(*) from users where age between 35 and 44
union
select "45-54" as age_bracket, count(*) from users where age between 45 and 54
union
select "55-64" as age_bracket, count(*) from users where age between 55 and 64
union
select "65+" as age_bracket, count(*) from users where age > 65

which causes a lot of unnecessary extra work and can actually break if the query runner tries to load 7 copies of the user table simultaneously in memory to run the queries in parallel. It’s also easy for errors to creep in when the unioned sub-queries get more complicated, as every edit needs to be repeated 7 times. It’s fairly simple to remove all the unions by using a case statement for age_bracket and grouping by age bracket:

SELECT
   CASE
      WHEN age < 18 THEN "<18"
      WHEN age BETWEEN 18 AND 24 THEN "18-24"
      WHEN age BETWEEN 25 AND 34 THEN "25-34"
      WHEN age BETWEEN 35 AND 44 THEN "35-44"
      WHEN age BETWEEN 45 AND 54 THEN "45-54"
      WHEN age BETWEEN 55 AND 64 THEN "55-64"
      ELSE "65+"
   END AS age_bracket,
   COUNT(*)
FROM users
GROUP BY age_bracket

Simplifications like this make queries easier to read and debug and can also actually fix them sometimes. It’s important to keep an eye out for these issues and help both to fix these types of issues and show your pipeline’s users how to avoid them in the future.

Conclusions 
These are just a few of the things we’ve had to do to keep the Houzz data pipeline accessible to non-engineers. It’s a lot of hard work, but quite worth it. Over 40% of our report queries are now written by non-engineers, providing a lot of useful data that is always ready when needed. This makes everyone’s jobs easier. For more technical details on how our pipeline works, stay tuned for an upcoming post on how we use Luigi for pipelining. Or apply to work at Houzz now to become a part of it.

Maison&Objet Paris? Oui!

image

Last week, Houzz France joined the biannual Maison&Objet, one of the largest trade shows in Europe dedicated to all things home decor, including furnishings, textiles, tableware, decorative accessories, and more. Celebrating its 20th anniversary, Maison&Objet brings together more than 80,000 industry professionals to preview the latest innovations in design and new collections from brands from all over the world. Set across nine halls in Northern Paris covering over 135,000 square meters (over 33 acres!), the fair is a true celebration of creativity, vibrant colors and materials. The Houzz booth buzzed with activity during the five days of the fair as our local team met with thousands of industry professionals and members of the Houzz community. It was busy and exhilarating week for our team, and we’re excited to see what the September event has in store!

image

Meow! 1 Million Views and Counting

image

We love to celebrate milestones, whether it’s through a champagne toast, a walk out for gelato, or tasty treats for breakfast. This week was a feline frenzy as one of our first HouzzTV videos surpassed one million views (as of this writing, we’re at 1.8 million!). A few months ago, our editorial team found Peter Cohen, a California home builder who constructed elaborate catwalks, tunnels, platforms and perches throughout his home to keep his 15 rescue cats occupied. Peter opened his doors to the Houzz community and gave us a glimpse of his unique home. Check out the video for yourself here:

Thanks to Peter for sharing his home – and story – with us!

Houzz Germany Takes Over imm Cologne 2015

image

Every January, the city of Cologne becomes the center stage for trends in interior design and home furnishings as leading brands and designers unveil their newest collections to industry professionals and the public at imm Cologne. As the first leading trade fair of the year in Europe, imm Cologne attracts over 100,00 architects, interior designers, product designers and other home design professionals who want to discover the products, styles and trends that will influence design in the coming year.  

Just three months after our launch in Germany (and lots of exciting preparation), Houzz unveiled our first booth at the fair and welcomed thousands of design professionals and home design enthusiasts. The Houzz booth was a hub of activity, where our local team shared the findings of our recent survey of German homeowners and renters on their remodeling and decorating activity, motivations and plans; and helped thousands of pros learn tips and best practices for getting the most out of their free Houzz profile.

We can’t wait to join imm Cologne again in 2016!  

image