Thumbtack Engineering

Welcome our newest engineer, Katie

Katie Thomas

Welcome to Katie Thomas, Thumbtack's newest engineer. Katie is joining us from Hackbright – "The Engineering Fellowship for Women." Before honing her engineering skills, Katie was teaching mathematics to middle-schoolers. Her favorite topic was (of course) computer science. She especially loved helping people, especially young women, who might not have otherwise had a great opportunity to learn math and CS.

It should be no surprise that Katie's final Hackbright project was course management software for a fellow teacher. The software emphasized student participation, and helped teachers and students both find common ground on the ever-important topics of grades, assignments, and exams.

Katie has lived all over the US prior to landing in California. Now, when she's not leading the office climbing club up the walls of the climbing gym, you might find her cooking for friends or practicing at a yoga studio. She claims that the Eka Pada Koundinyasana is as difficult to perform as it is to pronounce. You can also find Katie on Twitter or Github.

Katie's already working on some great improvements to Thumbtack that you'll see rolling out in the coming weeks.

Welcome, Katie!

Moving to Wyoming

From the Dec 12, 2014 SoMa Tech Talk series.

Steve Howard presents on dependency injection, composition, and global state. Slides available here.

Mobile Web Anti-Patterns

From the Dec 12, 2014 SoMa Tech Talk series.

Ryan Stevens and Josh Everett from BandPage present thoughts and tips for building and testing scalable mobile websites.

SoMa Tech Talks - AngularJS

The following talks on AngularJS were from the September 26, 2013 SoMA Tech Talk event hosted at Thumbtack.

Zach Snow - Data binding in AngularJS

Chris Mueller - Chris Mueller - Migration Patterns from Backbone to AngularJS

Ari Lerner - Services in AngularJS

Brian Ford - The Future of AngularJS

PyCon 2013 Coding Challenge Roundup

Thumbtack sunglasses and mug

This year's PyCon was again, extraordinary. Our heartfelt thanks go out to the entire community for such an amazing event. We especially enjoyed getting to know other engineers from all over the world.

In fact, we’ve found that one of the best ways to start a conversation with an engineer is to start by talking about code. Thumbtack’s second annual code challenge gave us a great opportunity to do this.

Last year's challenge was to determine whether there was a winner on a given Connect 4 game board. This year's challenge required looking for anagrams of word pairs in large bodies of text. Big thanks to Jeff Kramer, who posted the problem description online.

In response to feedback from last year’s challenge, this year's anagram challenge had two components: an easier challenge that required finding anagrams in a paragraph of text, and a harder challenge that looked for anagrams in the full corpus of Alice in Wonderland.

We offered two prize sets to match the two difficulty levels: a mug and sunglasses for the easier challenge, and a beer mug and shot glass for the harder challenge.

Solutions

The general form of solutions to this year’s challenge was fairly consistent. In fact, there were no solutions that deviated from this general pattern:

  1. Parse the input text to filter and transform input words
  2. Remove duplicate words (can be done at this point or later)
  3. Find all possible anagram pairs of those words (often using itertools.combinations())
  4. Create a data structure to hold matching anagram pairs, usually keyed off the sorted letters of the pair

We received 53 total (working) solutions to the Alice In Wonderland challenge.

The best solutions were all on the order of O(N^2^) (where N is the number of unique words in the corpus), while slower solutions were often O(N^4^). The difference was almost entirely due to the data structures used in step 4: faster solutions used a dictionary (search is constant time), while slower solutions used a list (search takes time O(N^2^), where search is linear on the number of word pairs).

We tested all the solutions on a modern Mac laptop and pulled out some of the fastest solutions to highlight here. O(N^2^) solutions generally run in the 15-40s range. We see a massive spike (literally, off this chart) for slower solutions.

anagram challenge speeds

Hall of Fame

Chris Moultrie's solution was the fastest of all the solutions we received. On our testing machine, his solution to the Alice problem routinely ran in under 12 seconds. There are several clever optimizations specific to the challenge, so, while this is not a general-purpose solution, it is extremely quick. (Find Chris on GitHub and Twitter.)

Second place for speed goes to Łukasz Balcerzak. His solution routinely took ~13.5s. This is a more general-purpose solution that is also well-factored and readable. (Find Łukasz on GitHub and Twitter.)

Samuel Merritt's solution is also commendable for its speed (ranked in the top 5) as well as its clarity and excellent word choice. (Find Samuel on GitHub and Twitter.)

Congratulations to everyone who participated! If you submitted your solution but were not able to claim your prize at PyCon, please email us and we’ll try to get your prize to you.

We had a great time with this challenge and hope to see you all again at next year's PyCon in Montreal.

Page 1 / 5 »