How we reimagined Midwest's premier technology conference

Soham Kulkarni
7 min readOct 16, 2023

Reflections | Projections

With powerhouse former speakers like Steve Woz, and Reddit founder Alexis Ohanian, R|P has a phenomenal legacy. And in its 29th year, we created a brand new attendee experience powered by some canny engineering.

Reflecting on the year before

I joined R|P to make new friends and memories, and I totally did! Bringing in speakers, meeting new people and making friends was amazing. Along the way, I noticed several missed opportunities to create an awesome attendee experience.

Missing Basics

R|P was lacking important components like automated mailing lists, in-house registration, a searchable resume book, and more. I felt that a technology conference at one of the best CS schools in the world should not be missing these essential pieces.

Underwhelming Sign-Up Experience

Signing up is one of the important moments for our users. It leaves a lasting impression about the conference and impacts attendance dramatically. In previous years, using Google Forms delivered an unexciting experience that wasn’t unique to Reflections | Projections.

Pain Points

There were many opportunities to make small changes that dramatically improve user experience. For example, users would often not finish signing-up on their phone because they did not have their digital résumé available. It is the little things that often matter the most.

Incentive

The biggest pain-point however, was that we couldn’t prioritize attendees who attended conference events for food, because we didn’t collect that information. Unsurprisingly, R|P was riddled with lengthy queues for food, affecting both organizers and our attendees.

Starting Over

With deep rooted problems like these, some major changes were in order. After putting together my team, we realized that the best course of action was to rebuild R|P’s infrastructure from the ground up.

Keeping it Simple

While 2,500 attendees is a big number for an in-person event, it’s a drop in the bucket in the world of software. We didn’t want to create obstacles for ourselves by over-engineering our systems.

For example, deploying our API on a fancy microservice platform would be complicated to set up and burn more cash. Instead, we went a monolithic API to run on a VPS that costs less than $1/day.

Handpicked Technologies

A welcome consequence of starting from scratch was the freedom to choose our tech-stack. I wanted something that was easy to learn, consistent across both back and front ends, and had a quick setup for local development. Typescript was the most obvious choice.

Our frontend stack was atypical — Svelte’s intuitive syntax, coupled with SvelteKit’s powerful features like routing & SSR made it a no-brainer. It has a gentle learning curve compared to something like react, but retains all of the reactive features we love and adore. As for Tailwind, it is hands-down the greatest stride made in modern web development.

For our backend, we used Nest.js for its rich, batteries-included feature set and chef’s kiss documentation. Our database of choice was MongoDB along with the the nifty mongoose wrapper for well defined schemas and type safety. Some other noteworthy libraries that we depended on were Day.js, class-validator, Iconify, and prettier.

User Experience

UX was one of the core guiding principles for our design process. At each step I encouraged my team to step in the shoes of our attendees. Doing so helped us make several important changes to our pipeline, such as adding support for Google Wallet passes, updating résumé and job preferences after sign-up, passwordless login, personalized rich emails, and much more.

However, the apex of our work was the brand new attendance tracking and priority system. It incentivized attendees to visit more R|P events and generated data points about our events. In return, attendees got entered into a daily lottery for custom R|P bucket hats, as well as priority standing for food.

Empowering Internal Teams

Another focus of ours was to reduce the tight coupling between teams that created repetitive work on both sides.

  • We started by creating an automated mailing list for R|P attendees using SendGrid’s marketing campaigns API. This gave our marketing team access to a rich email editor and fine-grained control over mail communications.
  • We created a QR|P, a QR-code scanner application for organizers. It helped check-in users for events and food within seconds, and had an intuitive UI with audio and haptics. Here’s what our operations team had to say: “Food logistics/handing out went better than last year! QRP is a huge contributor to this.”
  • With the help of our co-directors, we created an internal career portal, carp, for our recruiting partners to quickly search and filter attendee information, securely access attendee résumés, as well as export data to a CSV file.
  • We developed internal dashboards for things like user access and event management. This ensured that updates to the conference schedule could quickly propagate to the website by any staff member. We reduced the performance impact of dynamic data using SSR along with API caching to keep load times crisp.

Insurance Strategies

Even the best software in the world is susceptible to failure. At R|P, we developed multiple strategies to ensure uptime and handle failures at both systems and human levels.

  • QR Code passes worked correctly about 4 out of 5 times. This is why we added a fallback option to sign-in attendees using their registered email. To better support this, we added ways for staff to see the attendees’ emails in Google Wallet or by simply tapping the attendee pass.
  • Uptime monitors with email alerts, on-call shifts, and a comprehensive runbook to troubleshoot unexpected failures made sure that my team was prepared to handle anything that went awry.
  • Since we had a monolithic API, we ensured its robustness by using pm2, a process manager for Node with highly configurable restart strategies, and in-built logfile management. In addition, we hosted it all on infra with 99.99% uptime SLAs.

Lessons I Learned

We did some awesome work this year. But it was also far from perfect. I found aspects in which I could have been a better leader, mentor and colleague. Here are some things I learned.

Goal Setting & Organization

My vision for the team this year was ambitious, aiming to develop dozens of complex features on top of a brand-new system. Naturally, it was paramount to have good documentation and a strong roadmap to support this vision. Unfortunately, this was lacking, and my team suffered at times from having ambiguous tasks or an unreasonable workload. In the future, I would use an organizational tool to keep us on track, rather than play it by ear.

Cloudy Communication

Although my team took responsibility for views we needed to develop quickly, a sister team was responsible for designing key public facing views. I could have done a better job strengthening the two-way communication between our teams, and been more forthcoming about certain aspects of the design that worried us. Ultimately, we had some inconsistent UI which diluted our R|P branding.

Addressing Imposter Syndrome

Having intentionally recruited freshmen for 50% of my team, combating impostor syndrome was an important personal goal of mine. To this extent, I focused on a comprehensive onboarding for my team, with a “curriculum” of various concepts like version control, styling, APIs etc. Although this helped, I overlooked an important principle: A good mentor should be equally good at listening as he is at talking. Looking back, I see opportunities that I missed to be a better listener and be receptive to the needs of people on my team.

Post Event Anon Feedback

These setbacks weighed down on me because they were completely avoidable. However, I truly appreciate my team’s candor — bringing up issues that impacted them helps me learn from these experiences.

Wrapping Up

All in all, it was an immense pleasure to be working alongside the Reflections | Projections 2023 team. We went above and beyond our vision to fundamentally change the way the R|P operates.

I enjoyed all the highs and lows that came with this journey, and I’m looking forward to what R|P 2024 has in store for the CS community nationwide.

--

--

Soham Kulkarni

Self proclaimed pragmatist. I love music, food, software, and learning random facts.