Retiring Penn Study Spaces

Since 2011, Penn Study Spaces has been an aggregator of all the various study spots on campus. The website was fully developed by Penn Labs, with funding from VPUL and the UA, and launched in early 2011. However, over the years, it has become increasingly difficult to obtain information about Penn’s spaces, and data sharing talks were unsuccessful.

Within the next few days, we plan on completely retiring Penn Study Spaces and all related services. We greatly appreciate all your support over the years, and apologize for any inconvenience.

We hope that we can revive Penn Study Spaces using university open data or crowdsourcing the data. The Penn Study Spaces source code is open source and available at If you have project ideas, suggestions, or a successor, please let us know!

Penn Labs is hiring!

Calling all developers, tinkerers, hackers, and coders!

Reasons you’d be interested:

  • Develop a variety of technical skills by working on challenging projects
  • Work on impactful projects that thousands of students will use
  • Join a community of talented, collaborative developers
  • Work with other organizations on campus, including the UA and the DP
  • Get paid!

We’re looking for student developers who:

  • have technical experience (especially with mobile)
  • are passionate about building for students
  • have a desire to work on new projects and learn new technical skills

Please fill out the short application here. Applications will close Saturday, September 26, at midnight.

Questions? Email us at

PennMobile goes open source!

The official Penn mobile app for iOS and Android is now available on GitHub

After a year in development and release, PennMobile is now being open sourced to the general public! With over a thousand active users, PennMobile continues to grow and we’d like to get your input. We all make mistakes, so don’t hesitate to report a bug or make a fix—we’ll take a look at it ASAP. The apps are licensed under the MIT license, and you can check them out on the iOS and Android project pages.

Interested in more Labs open source projects? Visit our GitHub page today!

What’s coming in the new PennMobile?

A new school year is about to get started, and the Penn Labs team has a brand new release of PennMobile to go along with it. After a huge amount of developer effort over the summer, this is what’s coming in the Fall of 2015.

Transit Routing

For the longest time, Penn students have had access to the PennBus, which has two primary routes, East and West. At the same time, knowing which bus takes you where is difficult to find out, and so many Penn students opt to take a cab or SEPTA into center city when it isn’t needed. With the PennMobile app coming in the fall, you’ll be able to navigate to any destination using the PennBus system – just like Google Maps navigation!


Campus Map

The first day of classes is always challenging, especially for new students (hey class of 2019!) or in a new building (engineering, looking at you). Now PennMobile has an integrated campus map with every building on campus, and a course search with an integrated map to find your classes. It’s as easy as a search away. Bonus: tap the navigate button in the bottom right, and you’ll get walking directions to your class.


To try out these features, and many more, visit the PennMobile website at Hope you enjoy!

A Second Side to PennMobile’s Launch

The Penn Mobile app release day was an absolute fiasco. We had app review behind schedule, API crashes, DDoS attacks, and no sleep. What a week.

Things started to go wrong on Tuesday when we decided to push a new build to Apple for the Wednesday release deadline. The Dining API providers made a few requests the weekend prior and we decided to try to squeeze them into the app last minute. Bad decision.

The one thing going for us was that Apple had approved our last 5 builds within 1-2 hours of submission. Turns out Apple decided to balk on that timeframe for the one release that mattered. We stayed up Tuesday night prepping for release after a 5 hour work session Tuesday evening. Wednesday came, 3am came, 6am came, 9am came, nothing.

I skipped class and dropped all meetings Wednesday to fill the void left by marketing centered around an incorrect date. So work started back at 9am. We struggled and scrambled to put up a count down timer on the PennMobile landing page to cover the broke store links. iOS was invalid and Android was not working. So, I woke up the directors and we collaborated to put up a functioning javascript timer. One thing down.

Then we saw the DP article. Misspellings, inaccuracies, and more focus on the negative than the positive. That was a great addition to the day. I should mention that by this point in the day (11am), posters were hanging all over campus. Now those were wrong too.

Android came through in the early afternoon. A silver lining! Finally!


Turns out the app had many functional problems (non crash causing) that rendered many subsections unusable. Cue damage control from developers. Now we had members of labs, the UA, and the DP working on damage control. Hours went by. Classes missed. At some point I considered writing a script to record how many times I refreshed the iTunes Connect App Submission page.

We had blown our launch. Android was in shambles. iOS was MIA with no alibi. Hundreds of dollars in marketing materials down the drain. 5 cups of coffee didn’t help either.

At about 9:30pm, Apple came through. We had approval! I took down the countdown timer, we deployed site changes with updated links, and we were good to go!

By 10:30, we had 40+ users. By 11, 80+. Then I pulled up the app on my own device and was met with an error.


I ask Adel if he sees the same. He does. That was a BOOM moment. We knew the issue had to be with the server. We try to SSH into the server to find the issue. No luck. The VPS was totally dead. So we restart it. Adel begins to dive into /var/log. That’s not a place you want to dive into. Soon after, I try to help, but by the time I do, he’s already found the bug.

Someone had hit us with thousands of SSH login attempts form various IPs at This was a deliberate DDoS attack.

We proceed to get the server back up and running after going through all forensic data possible. Whoever created the attack didn’t leave much of a trace. But we have our suspicions. There are very few people who know our API server info. And even fewer who would DDoS it.

Adel manages to get the server back. While he’s doing so, I work on the patch for update 1.1.1. I manage to find the top 5 most common bugs (causing 90% of crashes) and fix them. Adel does the same. Midnight comes, 1am comes, 2am comes, now at the point of 40+ hours with no sleep. We are delirious.

But now, its 3am, and the app is out on both devices. Its not perfect, but its there. We’ve learned out launch lessons. We secured our server. But we made mistakes. Lot of them. No future launch will ever match the stress level and frantic sense of today. That’s the goal of this blog.