When running a public-facing website like Eventbrite, there are a number of reasons to keep track of your most active IP Addresses, API Keys or User IDs. Unfortunately, if you have a site that sees significant traffic, the volume of data you need to store and process to generate these “Heavy Hitter” statistics can become daunting.
To illustrate some of the issues with trying to generate these counts, let’s simulate a naive counting algorithm with some Python like this:
While developing seat designer we used a lot of patterns and tactics to keep our code base clean and happy. We learned a lot from Addy Osmani’s book on design patterns useful for frontend.
Here are 3 of the most powerful patterns we used during the creation of seat designer:
Python includes a powerful debugger, but using it well requires practice. Setting a break point and inspecting local variables is easy, but what else can you do? What if you need to set the breakpoint in one of your dependencies, or only fire it conditionally? How do you navigate calls, or change them? Nathan covers how you can better use PDB to debug and understand programs.
After working in online ticketing for many years, I’ve seen how speed is everything especially during large on-sales where the general public swarms on a site as if it were a DoS attack. Since the items being sold are unique inventory, the system has to be much more fluid than found in your typical retail store. Tickets must be locked, reserved or released back into the pool when users reject their seat choice or simply walk away from their browser. This may seem straightforward but the concurrent nature of ticketing where you have multiple users competing for the same inventory is what can make the system behavior very unpredictable. Too much latency from the added bloat of things like message buses and ORM libraries will sink a ticketing system quickly which means it must be extremely lean and efficient in order to survive. Teamed up with a small group of ticketing veterans, our goal was to build Eventbrite’s first reserved seating system to demonstrate the value of keeping things simple for the sake of performance and long term maintainability.
Software engineer and Hackbright graduate Nicole Zuckerman took the stage with Kate Heddleston at PyCon this year to talk about how to make junior and new engineers into independent and productive members of your engineering team as quickly as possible. They focused on python specific resources and libraries that will help you create a simple but effective on boarding program, and talk about case studies of companies that have had success using these techniques.
Eventbrite has been onboarding junior engineers out of Hackbright Academy in the past year and has some new techniques we’ve learned to get engineers up to speed quickly.
- You don’t need to be an expert in order to help a new engineer out with something – having other relatively new engineers helping your new one get started takes load off the more senior engineers and helps both teacher and student. Student feels like they’re not SO behind, and teachers get a better grasp of the material they’re teaching. This is particularly useful when setting up the dev environment; have the most recent addition to the team assist in dev env setup.
- Buddy system – unrelated to teaching, but bringing new engineers on board culturally
- Code labs – a hour set aside for new engineers to ask questions about code, and usually lead into topics like Django’s ORM
- An environment where it’s OK to ask questions
- Short, medium, long term goals – explicit ones- i.e. tracing a web request in Django (short term goal).
This is the first of a series of posts that will explore the evolution of the styleguide since its inception in March 2013, and the ways it has changed our approach to development.
Dorsal on GitHub
Dorsal allows you to register your bespoke, artisanal, hand crafted plugins. It will then scour the DOM in search of your plugins and instantiate them. We were inspired by the directives system in Angular and wanted to bring something similar to our frontend stack. Dorsal, is platform agnostic, has no dependencies and is designed to work IE8+.
Fully interactive applications on the web have been a dream for years. A few hundred minor changes and some engineering talent focusing on frontend web in the past 3 years has made the bar much lower for creating these immersive experiences. Here at Eventbrite we pulled out more than a handful of tricks to get seat designer launched. This series of blog posts is our official run down!
Asheesh covers the practical use of Python packaging tools. You’ll see how to keep your system clean as an end user excited about installing a Python module from the web, the purpose of setup.py, how virtualenv makes life easier (and sometimes harder), what Ubuntu/Debian tools can offer, and how to make a complex app easier for new contributors to run. It is heavy on stories and recommendations.
Messaging is a powerful addition to any Android app. It opens up many functionalities for users and allows you to engage with them in brand new ways. Implementing these capabilities into your app can be a struggle, especially if you are unsure of the different options that are available.