I've been going to Burning Man since 2007 but much less frequently in the last few years. 2023 was the first time back after a 3 year hiatus.
When I've gone to Burning Man i've always brought out some art, helped with a theme camp etc and for 2023 I decided to merge my work with my fun and build dust for Burning Man.
To create dust I applied for Burning Man's innovate program which gives access to Burning Man's datasets for Camps, Events and Art. The process of creating an app began and I made a few unique technical choices to make dust happen:
- Ionic - I work at Ionic as a solution architect so this was an easy choice. The Ionic Framework (a set of UI components designed for mobile) is something that I know well and any experience from building dust would help with my career.
- Capacitor - Capacitor is a mobile framework that allows you to take web development skills and use them to build a cross platform mobile app.
- Angular - Angular is an open source web framework developed by Google for creating web applications.
- Web Workers - I moved all the large datasets for camps, events, etc into a Web Worker, which allows all the processing to off the main UI thread and avoid causing a slow UI when processing thousands of rows of data.
- cdk-virtual-scroll-viewport - This component allows scrolling through really large datasets efficiently by only displaying the rows of data that are in the current view port.
There are a quite a few other pieces to the puzzle and if you are interested in what was developed you can take a look at the code as the project is all open sourced.
It took around 3 months of work to build dust, coding a few hours before work and on the weekends. The goal was to build an offline app that made it really easy to find my way around Burning Man and remind me of events that I was interested in. I'd always gone to the burn and thumbed through the "what, where, when" but had always gone on side quests, I figured it would be great to know what was happening around me right now and make an informed choice - this is what lead to developing features like showing events happening now, sorted by how far away they are.
The final few weeks before the burn, the data from Burning Man changes much more frequently as camps modify events, change their descriptions or implode, and with frequently changing data and a slow app store review process (a day or two) I needed a way to update data outside of the App Store review cycle. At Burning Man, you may have cell connectivity but an extremely slow connection and this is one of the hardest conditions to deal with in an app - it involves requiring the bare minimum amount of network calls and handling timeouts gracefully.
So, to ensure the data in the app is up to date there ends up being a dataset that came from the app in the app store, a check and update process that needs to happen before you reach Black Rock City and process in place to ensure things still work when you get there but have little to no cell service. The app also has to work perfectly the first time in an environment you cant really test in beforehand.
As people started using the app to favorite events they may interested in, a problem arose, Burning Man is attended by people all over the world flying in from different time zones. When they favorite an event that is happening in PST timezone in Nevada they are essentially setting up a push notification at a very specific time - that needs to be shown at the time when it will happen in Burning Man's timezone but using a device that will setup a local notification using a timezone that is completely different. To fix this I needed to scrub and sanitize all the times in Burning Man's datasets and cater for time zone switches on the device.
One of the biggest challenges however is mapping locations of camps and art. Burning Man streets and art are mapped on an iconic clock style coordinate system. You need to be able to translate a location like "D & 3:30" or "2:17 2900' Open Playa" into a GPS coordinate (ref) and a pixel X,Y coordinate to show on a map. To do this I needed at least 3 GPS points and their corresponding place on the map (ref) - one of those points being the "Golden Spike" which is the center of which all other points are measured.
In packing for the burn one of the last things I did before driving out was send off the last submission to the App Store and Play Store, print off a few QR Codes (so I could post them up in conspicuous places in Fernley) and hope for the best.