ChairNerd

Code, Design & Growth at SeatGeek

Jobs at SeatGeek

We currently have more than 10 open positions.

Visit our Jobs page

Vector Venue Maps Using Mapbox GL

At SeatGeek, we think about our venue maps as “maps” rather than “seating charts.” Therefore, we aim to make our venue maps as good as the best interactive geographic maps in the industry, such as those by Google and Mapbox.

As part of this aim, we recently made a major change to our venue maps on our web platforms. We now render a vast majority of our maps client-side using vector tiles and Mapbox GL. This is the first major user-facing change stemming from our GIS pipeline and opens the door for some really cool things to come.

Background

For those not familiar with modern web maps, it may be helpful to take a step back and define some concepts. There are two primary ways in which to define images in computer graphics: raster and vector.

Raster Graphics

In raster graphics, images are defined using a rectangular grid of pixels. Pixels are samples of a source image, typically represented by red, green, and blue values. Some common raster file formats include JPEG, TIFF, PNG, etc., with the primary distinguishing feature being the particular flavor of lossy or lossless compression involved.

Due to the fact that these images are based on pixels, they are resolution-dependent. Therefore, an image created at a particular resolution only looks correct at that resolution. Displayed at any other size, the image must be resampled. Through this process, things like diagonal lines in the source image can appear as “staircases” or “jaggies” in an enlarged image. Real life is not like CSI; you can only “enhance” a raster image so much.

Raster vs. Vector

Vector Graphics

Unlike raster graphics, vector graphics don’t store information for every pixel of the image. Rather, vector images are defined using higher-level primitives, such as polygons, bezier curves, and ellipses. Due to this, vector graphics are not resolution-dependent; they can be accurately rendered at any scale, regardless of the rendering device resolution. Common vector file types include EPS, AI, and SVG.

vector logo

For many graphics, vector representations are substantially smaller files, since they do not store the color value of each pixel. As you can see with the SeatGeek logo, a shape can be defined by just a few nodes and control points. Vector graphics are particularly useful for images which are composed of well defined geometric shapes and curves, such as fonts, logos, and maps.

Raster Maps

Until just a few years ago, almost all web-based maps employed the same strategy: displaying a specific area and zoom level of a map using a collection of raster image tiles (e.g. 256px PNGs). Tiles are particularly useful at producing the effect of a very large, interactive image on the client while being highly cacheable.

raster tiles

However, raster tiles have some downsides. Probably the most noticeable to the end user is that the tiles only exist at integer zoom levels. This means that any zoom action results in a “jump” between different zoom levels. Many libraries cover this using CSS transformations, scaling up the lower resolution tiles and replacing them with the higher resolution tiles as they load.

raster zoom

Additionally, because the tiles are rendered on the server, there is no way to manipulate or style the map on the client without using overlays, like we did with canvas tiles.

Vector Maps

Unlike raster maps, vector maps are rendered entirely by the client. Although they use the same tiling strategy as raster maps, these tiles only store geometries and metadata. The client-side renderer (Mapbox GL) takes the data from the tiles and style definitions and draws maps at a very high frame rate.

vector data

Even though vector tiles are also only defined at integer zoom levels, the renderer can render any zoom level. This means we can initialize our venue maps to be the perfect size for every screen and give the user an incredibly smooth experience.

vector zoom

In web apps, vector maps have only become practical in the last few years. For any moderately complex map to render at 60FPS, the renderer needs to be WebGL-based. WebGL permits the use of shader code in order to take advantage of dedicated GPUs, which are able to draw scenes much more efficently than any CPU-executed JavaScript. Unfortunately, it has taken a while for WebGL to reach a vast majority of users’ browsers. As recently as 2012, the only major offering of vector maps was Apple Maps, and that was only offered in native applications.

Thankfully, we have seen tremendous growth in WebGL support in the last couple of years. According to our tracking, over 95% of our visitors have a WebGL enabled browsers. Only for a sliver of traffic and a small number of older maps do we fall back to our Leaflet.js raster maps.

Next Steps

One of the major reasons we chose Mapbox GL is because of its cross platform support and we are actively working on bringing vector maps to our native applications.

Additionally, some of the design and UI decisions we made were reflections of the limitations of our legacy mapping stack. Now that we have the ability to fully access and manipulate the map data on the client, we are free to completely rethink how our maps work.

Final Thoughts

First of all, we want to give a shout-out to Mapbox. Our maps have benefited greatly from their open source work. They set a great example of how companies can contribute to the tech community and have been an inspiration for our efforts to do more of the same.

Finally, if these are the types of projects that excite you, come work with us!

Opening the Door to Live Entertainment

Last month, former Ticketmaster CEO Nathan Hubbard published a piece on “why you can’t get a ticket to the NBA Finals.” It’s a good article and Nathan does a great job diagnosing problems with the status quo – including how arbitrageurs use bots to buy tickets before real fans get the chance.

While I agree with Nathan that we need to solve the problem of how to get more fans to more events at a fair price, I disagree on the solution.

Hubbard proposes restricting how fans can transfer tickets, locking them down within a closed platform. This technique is called “paperless ticketing” – if you’ve ever been to a concert that demands you swipe your credit card to get in, then you’re familiar with it. The idea is that by making it harder to transfer ownership, non-fans have less incentive to buy and resell tickets.

Paperless ticketing can be effective in reducing resale activity in some cases, but with it comes substantial downsides [1]. I think there’s a better, more open way to improve the experience for everyone involved: leagues, teams, venues, and most of all, fans. And it’s not too different from what has worked in other technology categories.

But first, a quick aside…

The power of the internet lies in how it enables developers everywhere to create technology to improve lives. Open approaches – ones that start with easy-to-use software, priced transparently and fairly, and built for others to share and improve – are transforming major sectors globally, from payments (Braintree & Stripe), to hosting (AWS), to communications (Twilio), to mobile (Android).

But somehow ticketing has been left behind. It remains closed, uneaten by software. Why?

The short answer is that it’s always been a pay-to-play business.

Ticketmaster (and its parent company, Live Nation) – and a handful of competitors – have used the power of their pocketbooks for years to lock up teams, leagues, and arena owners with rigid long-term contracts that force these stakeholders to use their platforms exclusively, leaving consumers with little choice other than to accept their considerable fees.

As a result, live entertainment remains largely closed, stuck in a world of pre-internet thinking. The core API endpoints of the live event commerce experience – purchasing, delivery, transfer, fan identity, access – are locked down within legacy primary ticket vendors, and are inaccessible to developers, artists and teams [2].

The end result? Everyone is unhappy. Fans are forced to deal with an awful checkout experience, are nickeled-and-dimed with fees at every turn, and are unable to openly transfer or sell tickets. Teams and artists aren’t able to manage their businesses effectively, e.g. they cannot move prices in real-time [3]. It’s no wonder that when you add all this up, legacy ticketing companies are some of the most loathed businesses in America, year in and year out.

It’s within this closed status quo – of legacy ticket companies controlling the ticketing rights and then selling through a locked-down experience – that Hubbard suggests the answer is an even more closed platform.

I’d rather make it open. And the good news for fans is that, behind closed doors, an increasing number of industry stakeholders, including teams and leagues – anchored by a new, tech-savvy generation of owners – are thinking similar thoughts.

What do we mean by an open ticketing ecosystem? Imagine a world where…

  • Artists and teams can sell their tickets on any website or app, whether it’s their own, Facebook Messenger, Amazon, every ticket site, or anywhere else. (In the status quo, artists and teams can only sell tickets on their ticket vendor’s site. Unlike most other ecommerce categories, they can’t leverage omnichannel distribution to sell across the web [4]. Think about how strange that is…not even Apple, the most iconic brand in America, sells exclusively on Apple.com!)
  • Fans can, in turn, buy tickets anywhere. They can also sell or transfer tickets anytime. Can’t make it to a game last-minute and want to send your tickets to your favorite co-worker on Slack? Cool. Want to list your tickets on StubHub and reissue a new barcode to the buyer? No problem. You own the tickets. You decide what to do with them.
  • Using open APIs, enterprising software developers can write apps that improve the fan experience. Maybe a team wants to sell tickets from within Uber, bundled with an UberPOOL ride to the game? Easy to do. And Uber can further use the ticket platform API to make sure your carpool buddies are fans of the same team (it’ll make for a more fun ride!).

So how would an open ecosystem help artists get tickets in the hands of fans, not bots? There’s an obvious answer, and there’s a more important answer…

The obvious answer is that openness allows ticket sellers to better understand the identity of buyers. In the legacy ticketing status quo, a bot doesn’t need to prove it’s a real person, it just needs a credit card. A smarter system could ask a buyer to authenticate via Facebook, Twitter, or Spotify. It’s more difficult (and less scalable) to create an account on those platforms with many real friends/followers/listens than it is to get a new credit card [5].

But the more important answer is that I don’t know what the best solution looks like. No single person does. A core feature of the API-driven open web is that disparate software systems can work together to solve problems more effectively than a single, monolithic one. One company can’t possibly build the best version of everything, including Ticketmaster. The free market of ideas usually wins. That brings me back to a solution Hubbard mentioned in his piece…

“Artists and teams can use technology to design a screening system that gets below-market-priced tickets directly to passionate fans who will use them. This is an aspirational but unproven concept, one that seems risky to implement at scale in a way that doesn’t violate privacy or completely piss customers off.”

I’m confident that the best solution to that problem can best be found by a bunch of smart developers trying a bunch of different approaches that we haven’t thought of yet.

There’s reason for optimism within live entertainment; we’re finding an increasing number of industry stakeholders see the world in this way. Last year Eventbrite launched Spectrum, a marketplace of services that easily integrate on top of Eventbrite. NYC-based Ticket Evolution created an elegant API that allows any third-party to access a large swath of resale ticket inventory that can be sold and delivered anywhere on the web. At SeatGeek, we’ve opened nearly all of the data on our platform via our API and encourage any seller to list inventory via our Checkout APIs or our consumer marketplace. We also allow artists and teams to reach millions of incremental fans by working with their primary ticket companies to list inventory directly on SeatGeek.

At the end of the day, artists and teams care most about creating great experiences for fans, and fans care most about enjoying them. Closed platforms add friction to the ecosystem. Open platforms at their core are enabling, harnessing the power (and collective wisdom) of the internet to solve existing problems and create heretofore unconceived experiences. And the best part? That means more fans, at more events, having more fun.

This post was also published on TechCrunch.



Notes

[1] Restricting transferability is, at best, an uncreative half measure. On one hand it does indeed disincent some arbitrageurs from buying tickets (although many work around this using Visa gift cards); on the other hand it inconveniences fans who can no longer attend the event or want to send tickets to friends, and it’s a pain at the door. On balance, the net impact is negative. Fans can receive tickets as much as ten months prior to an event…what happens when their plans (or credit card numbers) change? When paperless ticketing has been tried in the past, the only clear conclusion is that it annoys consumers.

[2] Facing increasing client pressure, Ticketmaster has stated it intends to open certain parts of its software to third parties via APIs. I am not optimistic these APIs will provide the industry with real openness. Third parties will be required to pay exorbitant sums for access to endpoints core to improving the fan experience – purchase, transfer, identity, etc. When teams and artists are unable to freely distribute their tickets to fans using any channel they choose, that isn’t true openness.

[3] Dynamic pricing (moving prices in real-time, in response to changes in supply and demand) is standard in industries like air travel, but absent in live entertainment. The reason is simple: ticketing systems do not expose APIs that allow for moving prices.

[4] The mono-channel status quo means that legacy ticket companies have minimal incentive to avoid charging hidden fees, using dark UX patterns, etc.

[5] Better understanding fan identity also has the potential to help venues offer better security, something that Hubbard and others are increasingly raising as a concern.

Employee Spotlight: Adam Waxman, Product Manager

Welcome to SeatGeek Employee Spotlights - an opportunity to meet the fantastic folks on our world-class team.

By day, we’re a group of talented developers, designers, marketers, and businessfolk working together to build something new and different. We represent live event junkies of every kind: diehard sports fans, passionate concert-goers, sophisticated theater enthusiasts, and more. From our lives outside the office and before SeatGeek, we all have interesting stories to tell.

Up next: Adam Waxman, Product Manager.

Adam Waxman

Where were you born?
I was born outside of Cleveland, Ohio, and lived there until I went off to college.

Have you lived in NYC since college?
After school I lived in Atlanta for a year and a half. While there are many great aspects of Atlanta (weather, food, live music scene, etc.), I was interested in moving to a more walkable city with a greater percentage of people from all over the country (and world), so I decided to move to NYC.

Where did you go to school?
I went to Emory in Atlanta, GA. Initially interested in the business school, I ended up studying Economics, Math, and Philosophy after being convinced by a great freshman professor that liberal arts was the way to go. He told me it was important to be able to communicate clearly and learn how to learn rather than just memorize formulas. I couldn’t agree more with that mindset given how quickly the world changes these days.

So how’d you get your technical skills?
About a year after school I decided I wanted to build an app to help friends make plans. This forced me to learn basic tech lingo and ultimately convinced me to quit my job in finance to learn how to code. I spent my first 6 months going through online tutorials and building out various website ideas, and then decided to go to a 12 week developer bootcamp to hone my skills. Upon graduation I was lucky enough to stumble upon a unique role at SeatGeek where I’d be able to continue to hone my developer skills initially but ultimately move towards a product management role as the company continued to grow.

How would your friends describe you in 3 words?
Curious, genuine, goofy.

Best project you’ve worked on at SeatGeek
I really enjoyed working on our rebranding, which we launched earlier this year. It took a bit longer than expected, but I couldn’t be happier with the end result and I was able to learn an incredible amount along the way.

Three “fun facts” about yourself that people would be surprised to know
1. I grew up with 7 dogs
2. I don’t eat red meat (and haven’t in 15 years)
3. I tend to fall asleep a majority of the time I watch a movie, even the most action-packed movies

Favorite place(s) to hang out in NYC
I’m a big fan of the Westside Highway for both running and hanging out on a nice summer day. I also love reading a good book or working on a side project at a nice coffee shop. My current favorites are Grounded, Matchabar, Cafe Grumpy, and the FIKA on 16th and 6th.

Favorite SeatGeek snack
I’m a huge fan of the Cliff for Kids fruit ropes. I was turned on to these when I worked at a summer camp and one of the campers always had one packed in his lunchbox but never ate it. I couldn’t let it go to waste!

Why do you love SeatGeek?
I love the people I get to work with and learn from on a daily basis. Everyone is super talented but also very humble and collaborative. I also love the live event space - it’s fun working on a product that my friends and I use on a regular basis.

Favorite part of the new office?
I am a huge fan of the little personal booths/couches on wheels. When I first saw them I thought they were a bit silly but they’re actually very functional and comfortable.

SeatGeek’s 15th Hackathon

Last week, we completed the 15th edition of the SeatGeek Hackathon. For those who are unfamiliar with this company tradition, it’s a quarterly event during which people work in teams to develop an idea or concept. Hackathons were originally all about software, but have since expanded to include a variety of different types of projects. In our case, all that matters for two days is building out big ideas that are meaningful to SeatGeek.

Below is a roundup of a few of the brilliant projects that emerged out of Hackathon 15:

City maps of live events

SeatGeek’s goal is to help people have more, better live experiences. Members of our marketing and product teams joined forces to allow users to explore venues on a map of their city, which makes finding something to do easier than ever. Whether traveling to an unfamiliar place or searching near home, venue pins that include event information make sure you never miss out on a hot show.

A hackathon for female engineers

This may be a first: a hackathon project that created a hackathon. With the goal of encouraging female engineers to “come together, network, and create badass projects,” G/url.Code is a hackathon for women coders. Aiming to empower women to use their talent and build innovative products together in the tech industry, the first edition will be held by our recruiting team this fall at SeatGeek HQ.

An email with the best deals on Hamilton tickets

Hamilton has been the hottest show on Broadway this year — and, maybe, ever — with resale ticket prices to match. A glance at upcoming listings can be discouraging for a hopeful Hamilton attendee, who may face a bit of sticker shock at some of the ticket prices. But with eight shows a week, and over a thousand seats in the Richard Rogers Theatre, surely there must be a good deal out there somewhere. Fueled by this quest for a good deal, some folks on our marketing team wrote a script to crawl every Hamilton ticket available for the next 300 upcoming shows, find the five least expensive tickets, and email out the options to users who are tracking the show.

Ticket selling backed by data

SeatGeek is the best place to buy tickets on the web, and SeatGeek Marketplace now means it’s the best place to sell tickets, too. It can be hard to decide how to price tickets when listing — so based on existing sales data, two members of our data science team plotted the probability that a listing will sell against the length of time the tickets will be available. This way, SeatGeek sellers can figure out how to best price their tickets in order to increase the likeliness they will sell — and put money in their pocket.

Ricky Tickets, a new SeatGeek mascot

We know SeatGeek helps people have world-class live event experiences — but why take our word for it? One of our talented designers thought this message might be delivered better by a new company mascot: Ricky Tickets. A lovable, animated ticket on a quest for live event bliss, watch out for Ricky’s upcoming big screen debut.

Employee Spotlight: Jamie Hooker, Director of Talent

Welcome to SeatGeek Employee Spotlights - an opportunity to meet the fantastic folks on our world-class team.

By day, we’re a group of talented developers, designers, marketers, and businessfolk working together to build something new and different. We represent live event junkies of every kind: diehard sports fans, passionate concert-goers, sophisticated theater enthusiasts, and more. From our lives outside the office and before SeatGeek, we all have interesting stories to tell.

Up next: Jamie Hooker, our Director of Talent.

Jamie Hooker

Name: Jamie Hooker

Role: Director of Talent

Where were you born?
I was born in Georgia - outside of Atlanta.

Have you always lived in NYC?
No — I’ve lived in close to 10 places, but have been in New York for almost three years. I came to New York from Wisconsin, and was in Tennessee before that, and Colorado before that — Colorado will always be home, though.

Where did you go to school?
I went to Vanderbilt — go ‘Dores! I’m one of a few Vanderbilt folks here, and actually wasn’t the first Vandy hire — Ben Clark holds that title. There are four total now, and hopefully we can add more to that count!

Where is the weirdest place you’ve ever lived?
I don’t think I’ve lived anywhere very weird, but when I was little, we lived in France and Belgium, which is unique I suppose. I was there for a couple years when I was a toddler so my memories are pretty limited — we moved back to the states when I was about 5 years old.

Any funny roommate or apartment stories in NYC?
When I first moved to New York, we decided to turn our living room into an additional bedroom, as many people do, to make our apartment more affordable. I was lucky enough to be able to live in the extra room — my “lean-to.” I had to get a wall built, and for some reason there was a really big disconnect between my landlord and the wall company, and I ended up living without a wall for my first two months here. Basically, you’d walk into the apartment and be in the living room, the kitchen, and my bedroom at the same time. The wall is still there, and I’m still in the same apartment, but I’ve since upgraded rooms.

What’s the best project you’ve worked on at SeatGeek?
Being involved with hiring so many people in one year was really exciting — we hired around 50 people, more than doubling the size of SeatGeek. Of course, there were a lot of people who were a part of that, but being able to be involved was really exciting. Seeing that SeatGeek had gotten to a point that we were really taking off was so cool.

What are three “fun facts” about yourself that people would be surprised to know?
1. I have not always been a Broncos fan — shocking, I know. I did not become a Broncos fan until I moved to Colorado in the fifth grade — prior to that, I have a vivid memory of the Broncos and Falcons playing in the Super Bowl and rooting for the Falcons. I try not to remember my pre-Broncos era — I think I’ve seen the light since then.
2. I really, really love the Nathan’s Hot Dog Eating Contest on the 4th of July — it’s one of my favorite American pastimes. I went to the event the first 4th of July I spent in New York, and Joey Chestnut won that year, but he didn’t break the record. It was the first time they split the contests into Men’s and Women’s competitions, and Sonya “The Black Widow” was the female champ.
3. I lived in Europe as a child, but I guess you knew that already.

Any favorite place(s) to hang out in NYC?
I like to watch sports at my favorite sports bar, Triona’s — any time there’s a major game going on or if it’s an NFL Sunday, you can find me there. It’s become a really fun gathering place for me and my friends. Other than that, I’m probably eating out. I do that a lot, and keep a running list of places so that I can get to as many different restaurants as possible. I’m also really lucky that my building has a nice courtyard, so I spend a lot of time eating dinner outdoors or drinking a glass of wine out there.

What’s the best vacation you’ve ever taken?
Last fall I went to Thailand and we split up time between several different cities — they were all pretty amazing and wonderful in their own right. But the bulk of the trip was spent on an island for some beach time — it was really nice to be literally on the other side of the world. And I got to play with elephants, which was a big highlight.

Do you have a favorite SeatGeek snack?
I have two favorite snacks — one is Babybel cheese and the other is chocolate, which we always have a really nice selection of. They serve very different snack purposes in my life, but they’re equally important.

Why do you love SeatGeek?
I love SeatGeek because of the people who work here. Everyone really believes in SeatGeek as a product, and you can tell that people here are really passionate about what we do. People are really driven and work really hard, and it’s very easy to believe in the mission and what our product stands for. People are also really great from a social aspect as well — they hang out with each other, get along well, and I enjoy spending time with my coworkers. It’s exciting that we can all work together on something that’s so cool.

What is your favorite part of the new office?
I still need to do some more exploring — I like so much of it — but I think the stadium seating is really cool. Not only is it great because it gives everyone in the company a really nice spot to congregate, but I think it will be really great for hosting events. It’s perfect for hosting meetups or recruiting events.

Using GIS Technologies for Venue Mapping

Event Page

At SeatGeek, our interactive venue maps are something we take a lot of pride in. We are constantly striving to make our maps more useful, performant, and beautiful. Whether this involves us opening up the MLB rulebook in order to get the pitcher’s plate on baseball fields correct, or implementing a custom canvas tile layer to achieve buttery smooth, 60FPS map interactions, we are always looking for ways to improve.

In this post, we will discuss something a little more hidden from the day-to-day customer interactions with our venue maps. Over the past several months, we have drastically changed the way our maps are created, updated, stored, rendered, and served. For now, this has very little effect on the appearance and usage of our maps, but it lets us produce new maps faster (turns out Taylor Swift fans don’t like waiting for maps) and opens up a multitude of ways in which we can use our maps data.

Background

Maps have been a core part of SeatGeek since the very early days. Initially, we used a variety of third-party venue map services. While these services were functional, we felt somewhat constricted by them. We had very little control over the styling and no direct control over fixing any mapping mistakes or prioritizing new maps. Additionally, most of these tools used older technologies, such as Flash, whereas we wanted to build our site using a more modern web stack. Therefore, we decided to bring map creation and interface development in-house. An early third-party map can be seen here in a throwback event page from 2010:

2010 Event Page

Original Mapping Pipeline

Our original mapping pipeline was conceived to launch by the 2010 NFL season and has remained mostly unchanged since then. Maps are created in Adobe Illustrator by a group of very detail-oriented people on our mapping content team. Aside from some scripts that assist with drawing rows and labels, this is mostly a manual process. These SVGs are uploaded to a web service that pulls out some simple geometry data which is used for drawing highlights as well as placing the DealScore markers. It then takes the vector SVG and performs tile-cutting, producing a set of square raster tiles for each zoom level that we support in our clients.

The geometry data and associated raster tiles are stored in Amazon S3. When map data is requested, whether for an event page, venue page, or visualization, a lightweight (and heavily cached) service serves this data from S3 without any modification.

Advantages

This system is really nice due to its simplicity. Mapping outages are exceedingly rare due to the fact that we are just serving from S3. A map SVG ingested into the system is effectively guaranteed to look exactly as planned when a user requests that map.

Disadvantages

The downside of this system is a complete lack of flexibility. We have thousands of rendered maps sitting in flat files on S3. This means things as simple as “change the color of the sections” or “change the fonts of the labels” would require thousands of files to be altered and reprocessed. Additionally, it is hard to answer any questions about our data, e.g. “how many rows does section MVP 117A have at Yankee Stadium?”

Goals

Our primary goal has been to essentially “unlock” all of this valuable and interesting information we had sitting in thousands of flat files. Therefore, we needed some sort of persistent datastore in which to store our map geometry and associated metadata. Additionally, we really wanted to separate the data from the presentation. For example, instead of storing the color and stroke of a section object alongside the geometry, as was done in the SVG, we wanted to style objects, labels, and fields based on a series of rules. Finally, we wanted to be able to do this on the fly, rather than pre-baking a set of image tiles for every map. This would let us more quickly and dynamically make changes to our maps.

GIS Pipeline

When looking for inspiration for our new pipeline, we looked towards the world of GIS (Geographic Information Systems). There is very impressive work being done in this field and a substantial number of mature open source projects as well. In particular, the Mapbox team has made some great open source contributions. Many of the most difficult aspects of creating a map pipeline and serving geospatial information have been solved in these projects and systems, so we were eager to use and mimic them heavily.

One of the inherent complications of our maps is that they are 2D projections of a 3D, overlapping structure. When creating our maps, we have several constraints that we try to balance: the map should be generally the shape of the venue, each section should be fully visible, and sections should generally have the correct spatial orientation with respect to each other and the field. There is a lot of artistic leeway in how these sections are portrayed.

The Treachery of Maps

Due to this, we are unable to use true latitude/longitude when storing our maps. However, given that none of these tools are designed to work within a local coordinate system, we have to do a little customization (hacking) to make these tools work for us.

GIS Pipeline Overview

Map Creation

Similar to our original pipeline, our maps are initially created using Illustrator as well as Rhino3D. We have a team that is very comfortable and efficient in these tools, so we did our best to try and fit the pipeline into their workflow rather than the other way around. One of the major changes, however, is that the maps produced in Illustrator or Rhino3D only need to contain the geometry and metadata. The mapping content team no longer needs to worry about section colors, label placement, etc, which greatly speeds up their workflow.

OSM Database

Once a map has been created in Illustrator, it is uploaded to a web service that converts the geometry encoded in SVG paths into Open Street Map (OSM) elements stored in a Postgres database. One of the first challenges is that OSM supports only polygonal data, whereas Illustrator supports Bézier curves. Therefore, we first perform a piecewise approximation of the curves as described by Fisher (2000) [PDF]. Then, we parse the IDs of the SVG elements, which we overload to support inputting arbitrary key-value metadata in Illustrator (e.g. this row is wheelchair accessible).

In OSM, objects are generally classified into 3 categories: “nodes,” “ways,” and “relations.” We found this to be an incredibly elegant data model and it worked fantastically for our purposes. In our world of venue maps, a “relation” would be used to represent a section. This “relation” would have multiple polygons which are the “ways” (many sections consist of distinct shapes in our maps). Each of these ways would have ordered “nodes” that define the shape of the polygon. We use this approach for defining many things, such as rows in a section, sections in a group or level, etc.

Further drawing inspiration from the OSM model, any changes to a map are stored as a changeset, allowing us to maintain an archive of maps at any given point in time without storing an excessive amount of data.

PostGIS Database

While the OSM data model is very flexible and great for maintaining a full history of all the maps, it is not a great format for rendering map data in production. Therefore, we use osm2pgsql to dump current versions of each map into a more “flat” format that is more useful for rendering and geospatial operations.

Map Rendering

Image Tiles

For all of our interactive maps, we generate image tiles that the clients stitch together so they appear as one large image. Upon receiving a request for a tile, the tile server calculates the bounding box defined by that tile. The server then queries our PostGIS instance for the relevant geometry and metadata, a particularly efficient query due to spatial indexing.

Given the geometry data, mapnik renders the map tile based on styles that we define in CartoCSS. This lets us style maps using CSS-like style sheets, achieving our goal of separating data from its visualization. Here is an example of what one of our style layers might look like:

CartoCSS

Mapnik performs complex operations, such as label collision detection and high-quality antialiasing, and does them very quickly. In fact, the entire chain, from querying PostGIS through responding to the client HTTP request with a tile, takes less time than pulling a static tile in the old pipeline from S3 (all under 100-200ms). Now, we heavily cache these tiles so as to make them load even faster for clients, but it goes to show just how performant these open source GIS technologies are.

Next Steps

To date, we have been working on just achieving parity with our old pipeline, at least from the point of view of a user. However, now that we have all of this geometry data for our maps in a datastore, we are looking towards new ways to use this. Whether it is displaying data visualizations, points of interest, or new ways to interact with our maps on our event pages, we have a lot of possibilities to explore.

Final Thoughts

One of the themes that kept coming up in this project was when to use existing software vs. when to build it in-house. More than most projects we have worked on, this consistently straddled the line of “very similar to existing use cases” but “just different enough to make it difficult.” Although it didn’t always result in the most “elegant” software, we found that the gains from using high-quality open source libraries were more than worth any difficulties. It’s natural for a software engineer to want to write code to solve a problem, but sometimes it’s worth taking a step back and seeing if there are any shoulders you can stand on.

And now a quick plug: If these are the types of problems that excite you, we have a lot more of them in the pipeline. Check out our jobs page and come join us!

SeatGeek Android 6.0: Sell With SeatGeek

It seems like just a few weeks ago we were working on adding native SeatGeek Checkout to make buying tickets to live events simpler. Alas, we’ve actually spent the past nine months—and 3 major version changes—working on our ultimate goal of making SeatGeek for Android the easiest-to-use live event app ever.

Today marks the release of SeatGeek for Android 6.0: The One With Ticket Selling.

Before we get to the selling part, let’s first take a look at some of the things we’ve released in the interim.

An amazing new look and feel

An amazing new look and feel. SeatGeek is constantly putting a ton of thought into making the best possible experience for users, and part of that is how we convey SeatGeek as a whole. SeatGeek does this by creating a comprehensive and cohesive platform for design that users absolutely love. SeatGeek’s new brand for Android combines Google’s material design with SeatGeek’s core aesthetic to present a truly engaging experience that makes sense to first-time and long-time users.

View your tickets in-app

View your tickets in-app. After we integrated in-app checkout in the fall of last year, viewing your tickets and scanning in seemed like the natural next step for us. We took time to carefully cater the experience to make it one that would get you excited for your event, whether it’s seeing the Flyers play the Islanders at Barclays Center or Justin Bieber at Madison Square Garden. We employ a heavy use of performer imagery and complementing colors to build a ticketing experience that feels more like you’re diving into the event than just getting out a flimsy piece of paper to show the concierge. One of the best parts about our in-app ticketing experience: you don’t have to have an internet connection when you get to the venue… we automatically sync your tickets to your phone before the event so you don’t have to worry about too many people connecting to the network in the same area!

On top of that, we’ve included a bonus feature! When you’re approaching the venue for your event, we’ll automatically notify you to give you an incredibly convenient way to open your tickets from anywhere on your phone—a feature users already love.

Go with friends

Go with friends. One of the best parts of going to a live event is getting to experience it with people you love. One of the worst parts can be figuring out where to meet up before the concert to give each of your friends their ticket—especially if any of your friends are running late. Despite how much you love ‘em, you don’t wanna miss the opening ceremony! To make getting in easier for everyone, we added the ability to send tickets directly to anyone with an email address, phone number, or SeatGeek account from directly within the app!

Finally, it’s what 6.0 is all about… Friend can’t make it? Save some $$$… sell tickets! We want going to live events to be a great experience, which includes not losing money on tickets you or your friend can’t use. With SeatGeek Marketplace you can now list your tickets using the new in-app Sell feature from the My Tickets section. You’ll get suggested pricing based on our world-renowned Deal Score™ algorithm, notified when your tickets sell, and paid by direct deposit or Venmo!

Get it now!

The updated Android app is rolling out today in the Play Store, so check it out and let us know what you think!

SeatGeek’s 14th Hackathon

We recently wrapped up the 14th SeatGeek Hackathon, a quarterly company event focused on innovation and collaboration. It’s a caffeine-fueled sprint where all that matters for two days is building something cool – and for many of our team members, it’s their favorite thing about working at SeatGeek.

What is a Hackathon?

A hackathon is an event where people work in teams to develop an idea or concept. They’re generally short – short enough to allow the participants to work in a sustained burst of energy. The time limit encourages teams to come up with solutions to problems they might not otherwise have thought of.

Why do we hold Hackathons?

The point of these events is to explore “out there” ideas that might not otherwise make it into our daily workflow. It’s uninterrupted time to quickly develop a proof of concept for ideas that are meaningful to SeatGeek, whether they’re business-related or not. The big picture view is that our Hackathons are time to learn and to teach. A project might involve someone’s first line of code, graphic design work, or marketing pitch. While we often remember and celebrate the end products developed during a hackathon, we think the knowledge sharing that occurs throughout the process is even more important.

What do people work on?

Hackathons were originally all about software, but the concept has since expanded to include a variety of different types of events and projects. Software is still usually a major component of the products developed, but it’s not required to be.

Here are a few of the ideas that emerged out of Hackathon 14:

An improved interactive buying experience

SeatGeek offers fans interactive seating maps and a stadium view from each section to allow for the most informed buying experience possible. But the winners of this quarter’s Hackathon took that concept a step further, building an answer to the following question: what if SeatGeek users could experience what a live event would actually look and sound like from each seat – with a 360 degree view – as they browsed listings?

Programmatically generated marketing assets

We have some very talented designers on our team, who work on SeatGeek campaigns both online and offline. After noticing some success with team-specific advertising on social media, a Hackathon group of marketers and engineers built a tool that edits the colors and text on previously developed marketing assets with the click of a button. Now, SeatGeek can let fans know about the best deals on every game – in proper style.

Easily expensed company perks

Everyone’s favorite company benefit is the monthly ticket budget to use on attending live events. The dark side of this perk is the end-of-month scramble to file the expense for reimbursement. Enter “Get Tickets” – a software tool that not only recommends event tickets to buy within the perk budget, but also automatically files your expense reports after purchase.

New hire survival kit

New hires at SeatGeek have a lot to learn: meeting new teammates, finding the bathroom, and understanding the snack landscape are all keys to week one success. A scavenger hunt to aid in this employee transition makes the onboarding process worry-free – and a whole lot more fun.

Removing the bias in candidate screening

Hiring is hard, and the challenges present themselves even before the interview stage begins. Candidate screening is rich with opportunities to let biases influence decision making, and a team of recruiters and engineers teamed up to hack our software and create the most impartial process possible.

SeatGeek’s New Look

At SeatGeek, our mission is to make it easier to experience the thrill of live events. Today we’re excited to unveil a new brand that helps us achieve this goal.

Our new brand communicates what we believe a ticketing experience should be like: simple, smart, trustworthy, and fun. We work day in and day out to create this kind of experience and now have an identity that reflects these core values.

Simple

Buying good tickets shouldn’t be a struggle. On SeatGeek you can buy and sell tickets in just a few taps. By removing friction we hope to empower more people to see their favorite live events.

Smart

Deal Score™ analyzes thousands of tickets to help you easily spot the best deal. Carefully crafted maps let you see the view from your seat from the palm of your hands. These are just a few of the ways we leverage data and technology to help you enjoy more live entertainment.

Trustworthy

We pride ourselves on making the ticketing experience as trustworthy and transparent as possible. Every ticket on SeatGeek is backed by a 100% guarantee. Additionally, all of our prices include fees and shipping costs so there are no surprises at checkout.

Fun

While buying and selling tickets won’t ever be quite as fun as the main event, we do our best to add playful elements where we can.

The ticketing industry has come a long way over the past several years, but there is still a long way to go. By communicating our core values through our new brand we hope to spread our fan-first mentality and continue to push the industry forward for music junkies, sports fanatics, casual event goers, and everyone in between.

See the new look in action.

SeatGeek Marketplace

We started SeatGeek out of personal frustration. Buying tickets was so consumer-antagonistic that we went to far fewer events than we’d like. Today, millions of fans shop on SeatGeek. We hope that by creating a simple, transparent way to buy tickets we’ve empowered people who would have stayed home to instead get out and see a show or game [1].

Today we’re taking a big, exciting leap towards further democratizing live entertainment: we’re introducing SeatGeek Marketplace, a new way to sell tickets. As a component of Marketplace, we’re also launching peer-to-peer ticket transfer and sales.

Selling on SeatGeek

We set out to create a selling experience as easy as the SeatGeek buying experience. The status quo for mobile ticket selling is a pain; as a result, fans often throw out unused tickets or simply don’t buy them in the first place [2]. For years, we’ve been getting emails from users asking how they can list their tickets on SeatGeek. That feature has been requested more than all other features combined.

Selling on SeatGeek is dead simple – upload your tickets and we take care of the rest. After uploading, we automatically parse the file for all relevant details, such as the event, section, row, etc. We use our valuation engine – the same one that powers Deal Score – to recommend a price that maximizes your expected earnings.

Suppose you bought tickets to see the Raptors play the Clippers this weekend, but your spouse is sick, so the two of you decide to stay home and catch up on Netflix. The money you paid for those tickets is not lost! In 17 seconds you can have them listed on SeatGeek [3].

Sharing & Peer-to-Peer Sales

Rather than selling your Clippers tickets on the Marketplace, suppose you want to give them to a friend. The SeatGeek app now allows you to send tickets to anyone else, right from your phone. Your friend will be able to get into the game with the app – no printing, no meeting in front of the venue.

You also have the option to request money as part of your ticket transfer. In these cases, the recipient won’t be able to access the ticket until they pay you (protection against that friend who keeps telling you she’ll “pay you soon” for a dinner bill from four months ago). Even though money is changing hands, SeatGeek charges no fee for these transfers. You can get the money paid into your bank account or sent to you on Venmo.

Try It Out

Sharing and Peer-to-Peer Sales are available today on our website and iOS app. Marketplace is available on our website today and will be available on iOS & mobile web within the next few days. We are busily working on adding these features to our Android app, and will be rolling out Android support over the next few months.

Get Out There

We believe that experiences – more than physical things – bring happiness to people’s lives; our mission at SeatGeek is to build software that enables that happiness.

We created Marketplace to empower you to have more fun. Getting to a game or show doesn’t have to be a pain, and yet often still is. We hope that by creating a simple, liquid marketplace for tickets, live entertainment becomes a bit more accessible to everyone. We hope you love it.

Notes

[1] Venues and teams we’ve partnered with tell us that 80% of the users who bought tickets on SeatGeek were completely new to their arena.

[2] By way of analogy, suppose there were no way to resell or give away an iPhone – when you bought a new phone, you simply had to discard the old one. People’s willingness to pay for new iPhones would decrease. I know I’m far more willing to buy products online when it’s free and easy to return whatever I can’t use.

[3] The 17 second datapoint comes from this video, but single digit times should be attainable! Standard marketplace disclaimers apply here: we can’t guarantee your tickets will sell. The ticket resale market is dynamic, so prices may have moved down since your purchase, meaning you only get back a fraction of what you paid (on the other hand, prices may have increased, giving you some extra spending money).