I Challenge you to a Duel: Indeed’s 2013-2014 coding competitions

This past February, 136 collegiate coders from UT Austin, UIUC, MIT, UTokyo and 10 other Japanese universities gathered in classrooms across the nation to compete in Indeed’s Coding Duel. This “final showdown” coding competition resulted from the culmination of two duels held in Fall 2013, in the United States and Japan.

Where the Fall 2013 Indeed Coding Duels were isolated to each university, this showdown pitted the top finalists from previous duels against one another. The February showdown also raised the stakes by challenging coders to solve 10 logic and mathematical problems in exchange for a $3,000 cash prize for the top finisher.

What events led up to this final competition? What programming languages dominated the competition? Read on to find out how the competition went down, and how your university can get involved next year.

University Fall Face-off: U.S. competition

The Fall 2013 Indeed Coding Duel attracted about 100 participants from UT, UIUC, and MIT. Participants were given three hours to attempt seven programming exercises similar to the types one might find at an ACM-ICPC competition. With MIT as the new competitor and a friendly rivalry between UIUC and UT, the atmosphere became increasingly lively as the results began rolling in on our live results dashboard.

MIT had the first correct answer on the board, but UIUC and UT quickly followed. As the competitors entered into the final hour of the competition, the competition was neck and neck between MIT and UIUC. In the final half-hour, we turned off the results board, increasing the suspense of the event’s finale. Despite their newcomer status to the competition, MIT edged ahead and won the competition. Both UIUC and UT were close behind, with Illinois ultimately coming in second, and UT in third. The winners at each school won Chromebooks. The second and third place finishers at each school won a Nexus 7 and a Das Keyboard, respectively.

Many students seated at desks and focusing on their laptops

UT students at Indeed’s Fall 2013 Coding Duel (Photo by Jolynn Cunningham)

The casual walk-up nature of Indeed Coding Duels at the U.S. universities attracted engineers representing a variety of programming languages and skills, and underclassmen were eager to hear how they could prepare for future duels (practice makes perfect!).

A December Duel in the East: Japan competition

On December 8, 2013, Recruit and Indeed hosted a similar contest in Japan, inviting all Japanese computer science students to participate. 159 students (109 in Tokyo and 50 in Kyoto) joined the competition.

The excitement of all the participants was palpable in the room and on Twitter at #rprocon. To our surprise, 34 coders submitted a correct answer to the first problem in less than five minutes! Within one hour, one contestant had already solved seven of the eight questions, so we added a ninth question that was not used in the U.S. to keep the winner entertained for the last few hours. An hour later, we had to add a tenth question. The final results were astounding: 19 people solved eight or more problems, including one person who solved all 10. No one from MIT, UIUC or UT Austin had solved more than seven. It was clear to us that the coders from Japan would be a force to be reckoned with in the final competition in the U.S.

Many people seated at desks, focused on laptops

Indeed/Recruit’s Coding Duel in Japan (Photo by Shigeru Nishikawa)

East Meets West: Top finishers from Japan compete stateside

In February 2014, Indeed flew the top finishers from the Japan Indeed/Recruit Coding Duel to Boston for a final showdown against the top U.S. contestants from UT, UIUC, and MIT. Of the 136 competitors in the final duel, 117 students submitted at least one correct solution.

Breakdown of final showdown participants by university:

  • Japanese universities (22)
  • UIUC (26)
  • MIT (35)
  • UT Austin (53)

Doug Gray, SVP Engineering at Indeed, describes the competitive environment at MIT, “We held the competition in a lecture room. Nearly every seat was taken and reporters from Japan and spectators formed a ring around the room. It was quiet except for the sound of clicking keys.”

Many people coding at laptops in a classroom setting

The scene at the final showdown at MIT (Photo by Takeshi Akita)

Our live results dashboard showed coder’s scores as they solved each problem and provided a view into the competitions that were occurring on the UT and UIUC campuses at the same time. The composition of the top 10 finalists included 2 students from MIT, 1 from UIUC and 7 from Japan.

One of the most exciting parts of this competition was the variety of programming languages used by the participants. The two most common languages used were Java and Python, but we also saw some C++ and Ruby. Interestingly, competitors at UT primarily wrote in Java, MIT students favored Python, and UIUC represented a diverse mix.

The programming language breakdown at the final Coding Duel is as follows (by solution, not by contestant):

  • C++ (281)
  • Java (279)
  • Python (234)
  • C (48)
  • Ruby (11)
  • Perl (6)
  • Matlab (3)

The overall winner of the final competition walked away with a $3,000 prize after solving 10 correct problems in three hours. He solved all of the problems using C++.

Japanese tech media reported the results of Indeed and Indeed/Recruit’s Coding Duel’s in Gizmodo (Japan) and Wired (Japan).

Get coding!

Want to be a part of Indeed’s 2014-2015 coding competitions? Make sure to keep your coding skills fresh by participating in Top Coder or by trying your hand at past problems like these from the ACM-ICPC World Finals.

Would you like your school to participate in an Indeed Coding Duel next year? Please email university-tech-recruiting@indeed.com.

UPDATE (2/11/2016): Changed recruiting contact instructions.

Efficient Query String Parsing with util-urlparsing

We’re excited to announce the open source release of util-urlparsing, a Java library we created to parse URL query strings without unnecessary intermediate object creation. It also includes number parsing methods in ParseUtils that are faster than Java’s equivalent methods like Integer.parseInt and Float.parseFloat.

Java versions 1.6 and lower have a significant flaw that leads to inefficient memory usage when using the String.substring method. When processing data from our log repository, we need to extract small substrings from much larger strings containing event data key/value pairs. The primary class in util-urlparsing, QueryStringParser, was written to efficiently parse this data without generating any intermediate string objects. It does this via a callback mechanism that lets you only parse the keys you are interested in from the larger query string.

Our query parsing benchmark shows nearly 4X speedup over a naive Java implementation using String.split under significant heap space constraints. It can parse a million key-value pairs in under 3 seconds given a max heap of only 64MB. Our number parsing benchmark shows over 2X speedup compared to equivalent methods like Integer.parseInt and Float.parseFloat.

util-urlparsing is available for download on GitHub (github.com/indeedeng/util/tree/master/urlparsing) or maven.org (search.maven.org/#browse%7C-525259937), and we have documentation which includes usage examples to help you get started. If you have any questions, check out the Q&A forum for our open-source Java utilities.

If you’re interested in learning more about Indeed’s log repository, check out the video and slides of our January 26th talk “Logrepo: Enabling Data-Driven Decisions.”

5 Tips For a Best. Hackathon. Ever.

It’s been a week since the 5th Semi-Annual Indeed Music, Food and Art Festival Hackathon and I’ve fully caught up on my sleep. How did it go?

Screenshot of Indeed's internal social media feed in which an Indeedian states "Best. Hackathon. Ever." with 30 likes and one comment.

Screenshot from IndeedFeed: “Best. Hackathon. Ever.”

Here are some of the lessons we’ve learned for putting on hackathons.

Tip 1: Pick a theme, but have room for interpretation.

Although it may seem liberating to have a no-theme hackathon, a few boundaries actually help people to come up with ideas – creativity loves constraints. Our approach is to have a theme, but allow people to interpret it as they like – or even ignore it if they have some idea they’re passionate about. Past Indeed hackathon themes have included the usual suspects for a consumer-focused Internet company: mobile, social, data, etc. For this hackathon, we did something a little different. At Indeed, our mission is to help people get jobs. Our theme this time was “Help People Who Help People Get Jobs,” which encouraged the hackers at our engineering offices around the world to think of their colleagues in other departments (sales, marketing, client services, etc) and how they could be helped.


To: All Sites
From: Indeed Hackathon Committee
Subject: Hackathon Theme

Who helps people get jobs? WE DO! All of us – from Ops to Dev to HR to Marketing to International to Sales and Client Support. We’re pretty good at it. Jobseekers love Indeed, and we love them. But for the first Hackathon of 2014 lets give some attention to another special group of people: Indeeders.

That’s right. It’s time to help people who help people get jobs!

  • Does your buddy in International look stressed out? Write some code to generate his powerpoints!
  • Think our software should sell itself?  Make it so with Twilio!
  • Know a CS rep who needlessly suffers because he or she can’t automate away some daily task?  Prevent hardship with Python.
  • Feeling particularly subversive? Build a web app to replace your (or someone else’s) manager.

To solicit ideas from the whole company we had an idea wall on IndeedFeed (our in-house social network) where everyone could vote. Then we had an idea happy hour and pitch-fest where folks from all parts of the business could practice their elevator pitch and entice hackers to work on their ideas.

Tip 2: Provide plentiful good food.

Great hackers deserve great food (better than pizza and soda). And healthy food! That’s why we kicked off mid-day Thursday with a chocolate fountain at lunch. Oops:

  s/healthy/delicious/g

For dinner, Korean-Mexican fusion food truck Chi’Lantro set up a taco buffet. Foodies in Austin love Chi’Lantro and so did the participants. But it wouldn’t be Austin without some high quality barbecue! FYI: in Texas, barbecue (“BBQ”) does not mean meat cooked over an open flame on a grill, it means smoked for many hours at low temperature in a smoker. Fortunately for us, we have a couple of amateur pitmasters on staff. They brought a smoker and treated us to a whole side of beef brisket at midnight and another mid-day Friday. Delicious!

People filling plates with various snacks, including chocolate from a chocolate fountain

An open smoker grill with a slab of brisket cooking on it

Photos: The chocolate fountain and brisket (not at the same time). Yum!

Tip 3: Get quality T-Shirts.

Make t-shirts that people want to wear. Besides great artwork, this means comfortable good-looking t-shirts in a range of women’s and men’s sizes. We’ve tried a number of suppliers, and our current favorite is American Apparel tri-blend.

T-Shirt Design with cartoon people grouped together to form the word "Hack"

Many thanks to Hans Krebs, one of our visual designers, who made the artwork for this hackathon’s t-shirt. The design depicts Indeed employees, wearing our trademark blue “I Help People Get Jobs” t-shirts, arranged to spell hack. But it’s also a game: find the 10 unique representations of people (hint: one has a mustache, one is wearing a skirt, etc).

Tip 4: Involve everyone, not just coders.

Pieces of artwork Indeedians created, including one that says "I love Indeed"Not everyone can code, but everyone is creative and can make stuff. Our hackathons are more than just code-a-thons. They’re a 24-hour creative-expression-fest. For example, at previous hackathons we’ve painted artwork, including a giant system diagram, on the walls. At this hackathon we had non-coders learning to code (thanks codecademy!), we had a product manager direct a movie, and folks made some great oil-on-canvas paintings. Next time we’re thinking of expanding the art-side of the hackathon even further.

A cartoon character DJ with turntablesAs for music, if you were saddened by the shutdown of Turntable.fm rejoice! PlugDJ is a great replacement – a real-time shared music-playing experience. Set up a PlugDJ community room for your event and send your hackathon participants the link. For our hackathon everyone moves into one big workspace and we set up loudspeakers hooked up to our PlugDJ room. This way everyone gets to take turns choosing the music, and people can vote it up or down.

Tip 5: Finish strong.

After a hard 24 hours hacking, everyone deserves the opportunity to show off their work. Teams need to be encouraged to practice their presentation ahead of time. We limited our presentations to 2 minutes, which is very short when you’re trying to demo something and explain it. To keep the 30+ presentations moving, we set up two presentation stations, each with its own laptop and projector. While one team was presenting, the next team was setting up their demo. This made for fast transitions, which everyone appreciated after being up all night.

The best part of this hackathon? 15 projects are going into production to help people who help people get jobs! These include a new internal Question & Answer platform, a tool for managing translations, several new reports for various departments, improvements to IndeedFeed, and much more.

If you have other suggestions for a great hackathon, share your thoughts with us, we’re @IndeedEng.