Deep linking an Android app

This article was posted on SD Times

To weave a more intuitive mobile Web, individual companies and developers must navigate the various technologies and hurdles in forging those intra-app connections. As senior Android manager at online ticketing platform Eventbrite, Juan Gomez was integral in implementing mobile deep links in the Eventbrite Android app over the past year and a half. He spoke with SD Times about the difference in establishing deep links on Android, the benefits and challenges of mobile deep linking, and why he thinks Android has a leg up on iOS.

SD Times: Can you talk about what Eventbrite is doing with mobile deep linking in the Android development space?

Gomez: When I came in, we were not doing anything on deep linking at all. So my first job was to make the Android app feel more Android-y, if you will, so more in tune to the Android ecosystem, and part of that is deep linking. One of the important things about deep linking for Android is that Android has relatively good SEO. We were showing up on Google results, we just needed the last piece of the puzzle of sending people from the Google results into our app.

Then Google contacted us when they launched App Indexing. This was before they announced it at I/O. App Indexing is basically showing a button and the logo of your app on the Google search results when a user searches for something on their Android phone.

Continue reading

Software Developers to Nashville, “Stop calling us IT”

As originally published on SouthernAlpha.com

My wife and I recently moved to the Nashville (just south of Nashville actually) from Silicon Valley. We were drawn to this city over others because of nearby family, great schools for our kids and the fact that it had a growing tech community that would allow us to continue doing what we love for work.

Nashville’s investment in technology and programs like Hack Nashville, Healthbox, Entrepreneur Center, Jumpstart Foundry, and Nashville Software School are just a few examples of the strength of the tech and entrepreneurship community here.  But, there is something about the Nashville tech community I don’t quite understand – no matter what your role in the industry might be, I keep hearing people lump their teams together under the title of IT.

Now, I am not knocking IT people here, they play a really important role in the tech ecosystem, especially for larger companies.  But, for all of my years in this industry I’ve never worked in IT, called myself an IT person, or looked for a job in IT.  I am a software engineer.

So, what’s the big deal?

Continue reading

Announcing BarCamp Django SF

BarCamp Django

We’re excited to announce that the first BarCamp Django SF will take place at Eventbrite’s San Francisco HQ October 4th-5th, 2014. For a solid weekend, Django developers and enthusiasts spanning all skill levels and coming from a wide range of backgrounds will come together in a friendly, cooperative environment designed to educate and inspire collaboration. For 30 hours we’ll learn, build, play, and connect with others.

BarCamp Django SF will run for two days from 10am Saturday (10/4) morning until 4pm Sunday  (10/5).  Doors will be open throughout the duration of the event, and attendees are welcome to camp out overnight. (If you do plan on camping, please plan on bringing your own camping gear: sleeping bag, blow up bed, pillows & blankets and a toothbrush.)

A BarCamp is an ad-hoc conference (an un-conference, if you will). At BarCamps, everyone who attends is expected to actively contribute in some way – by giving a talk, arranging an activity, getting involved in an interactive session or generally helping out with running the event.

Grab your ticket

BarCamp Django SF is a community event
What does that mean? First, 100% of the ticket price will be donated to the Django Software Foundation. This event will rely on donations for space, meals, technology, and everything else required to keep 150 developers fueled for 30 hours.

Second, everyone pitches in. Attendees give talks, select workshops, help with setup, cleanup, and taking care of the space. Not only does it help us keep costs low, it adds to the collaborative nature of the BarCamp.

Third, unlike regular conferences, the schedule for a BarCamp isn’t set in advance; instead, it’s organized by the attendees at the start of the event. The schedule starts as an empty grid, with rooms and time slots but no sessions. Participants then write down the session they want to run on an index card and assign themselves a slot on the grid.

How does ticketing work?
We are charging $15 a ticket to curb no-shows as space is limited, the event capacity is capped at 150 attendees to encourage participation from everyone. Again, all proceeds from ticket sales  are donated to the Django Software Foundation.

We’ll be releasing tickets in several rounds today and over the next few weeks to ensure equal access. Get your ticket here.

Limited numbers of tickets will be released on:

• 9/4 @ 10am PST
• 9/10 @ 4pm PST
• 9/17 @ 12pm PST
• 9/24 @ 8pm PST

We’re looking forward to building our community of Django enthusiasts. 

BarCamp Django SF is a professional event, and we want the space to be welcoming to all members of the community. All attendees must agree to abide by the Eventbrite Code of Conduct.

Heavy Hitters in Redis

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:

Continue reading

Seat Designer (part 2): Design patterns

What’s it take to be a frontend engineer? It isn’t jQuery or a bad ass library that has promised to change your life. It also isn’t the ability to write “pure” javascript. What it really takes is understanding all the design patterns at your disposal, and how they fit together to power a munitions depo of frontend weapons. You’re about to enter a war zone, and you need heavy artillery.

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:

Continue reading

In Depth PDB

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.

Building a Scalable Reserved Seating Ticketing Solution with Redis and Lua

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.

Continue reading

Technical on-boarding, training, and mentoring

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.

  1. 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.
  2. Buddy system – unrelated to teaching, but bringing new engineers on board culturally
  3. Code labs – a hour set aside for new engineers to ask questions about code, and usually lead into topics like Django’s ORM
  4. An environment where it’s OK to ask questions
  5. Short, medium, long term goals – explicit ones- i.e. tracing a web request in Django (short term goal).