Passing the Torch     

Passing the Torch

/Purdue App

As all great things must come to an end, so must my involvement in the Purdue App. I started on this app as a Freshman and back then I had so much free time. Now that I’m in grad school (Molecular Engineering at UW), I don’t have the luxury of hours of time to pour into the app.

Letting go of this app is very difficult for me. I’ve put a collective 1,300 hours of programming into it and that doesn’t include the time I’ve spent thinking about it. This, paired with the fact that more than 6,000 people still use the app means that I must carefully pick my successor.

I want to find someone (or a team) that is willing to spend large amounts of time on this app to add new features and to fix it when websites and bus routes change. I must warn you from the start that this is a 70,000 line “hacterpiece” written by one person with a very good memory. Documentation is virtually absent; only the most obscure functions have comments. In addition, all 164 source files are in the same folder.

I have decided that the best way to Pass the Torch is to hold a competition where the winner will receive nearly full control of the Purdue App. The competition will involve two phases:

Entry Phase

This is the entry level phase. Anyone who is a student at Purdue can participate. Participants can download the Purdue App Shell which is a stripped down version of the Purdue App with only the framework and dinner menu code remaining. The objective of this phase is to add a Laundry section to the Purdue App based on the data on this webpage. I have mirrored that webpage to my own site and valid entries must read from this link when submitted in order to not overload Purdue’s servers.

Final Phase

A number of people from the Entry Phase will be selected to move on to the final phase. In this phase, participants will receive the full Purdue App source and related materials. The purpose of this phase is to prove that you will continue to move the app forward and are the most fit for the job.

The details of this phase will become more clear as it approaches. But as there can only be one winner, going above and beyond is absolutely expected. I want to find someone who is willing to devote most of their time to this app so that it can continue to be useful.

Rules for Entry Phase

  1. All submissions must be in by 11:59pm December 23rd, 2016
  2. All submissions must be emailed to me. A valid submission contains: a compiled .apk, the complete source code required to produce said .apk, your name (or names) and graduation date (or dates)
  3. The subject line of your submission email must be “Purdue App Entry Phase Submission”
  4. Please don’t email me your submission before December 20th. (You can if you must)
  5. You may resubmit if you must. If resubmissions occur, the last submission from your email address will be used.
  6. Only one submission per team. If you submit multiple, I will email you.

The Laundry Viewer

  1. Your laundry viewer must be accessible from the swipe in menu on the left.
  2. Your laundry viewer must be a Fragment (ideally a MyFragment), you are not allowed to start a new activity.
  3. Please don’t test against the real laundry site. Not even once.
  4. The laundry site your code must access is given here.
  5. Your submission must be able to access all of the laundry pages available in the drop-down list.
  6. Your submission may not cache the location=<number> numbers. The first downloaded page must be this one
  7. It’s ok to cache the location names. You could even hard-code them.
  8. My version of the laundry site is slightly modified because I can’t run code on my site. Take a look at the changes I made and deal with them. It’s also missing the images and css, but you don’t need those.
  9. You must actually display the info on the site in a new and creative way. You can’t just copy their layout. (This actually applies app-wide)
  10. I know on the actual site you can get an email when a machine is done. Don’t worry about this. You can include a button in your layout if you wish, but it should do nothing.
  11. Don’t use the LocationLayout. I don’t think any exist, but even if they do, don’t use them.
  12. Please don’t test against the real laundry site. I can’t stress this enough. At least one person is going to make some faulty code that downloads 1000 pages and I don’t want to get in trouble for starting this competition.

General

  1. While an icon resembling the 9 on the home screen of the app is not required for Entry Phase, you will be required to make one for Final Phase so it wouldn’t hurt to start.
  2. Don’t email me for help. I didn’t have any help when I made the Purdue App so you don’t get any either. The only thing I’ll help you with is if you find a fundamental flaw in this contest. (i.e. something critical is missing)

Judging Criteria

The judging criteria for your submission will be related to the standard I set for myself when creating this app. If your submission looks and works like the rest of the app, you will probably move on to Final Phase. Here are the categories I’m looking for (not in order):

  1. Loading times – Every click should bring about an instant action. No lagging!
  2. Visually appealing – Make your submission look nice, but no photos.
  3. Easy to understand – Your submission must make sense without explanatory text.
  4. Easy to use – Well planned user navigation should be the base of your design.
  5. Resource use – Swiping through every laundry room to get to the last one (and loading all of them along the way) is not a good idea.

Contest Materials

When you email me, please delete the bin and gen folders. Also, you don't need to send me the libraries I mention in the readme. Just the PurdueAppShell folder and any other libraries you need.

In addition, check back here periodically. If I have to make any major changes to the competition I will list them at the top of this page.

Best Practices

I learned a lot about app design over the years and formed some strong opinions. Here are some things to keep in mind when working on this app:

  • Page loading times should be under 0.1s. If you have to connect to the internet, load the page in 0.1s and show a loading bar.
  • In order to achieve this 0.1s loading, you will need to profile your code. Details on how to do that can be found here
  • If people can’t see it, they won’t click on it. Anything you expect people to click on should be in plain sight. No menu button.
  • There should be no mystery states. When writing the app, think about every possible situation and code for it.

Recommended Readings

Here are some resources that I read when developing the Purdue App. By no means do you need to read these, but if your goal is to win, these will definitely help:

  • Google’s Material Design – this is perhaps the best visual design guide ever released. This was my guide for all graphics in the app.
  • Android developer tips – I read every single one of these back in the day. This is basically a guide written by Google on how to make apps. (This link and most of the "Best Practices" categories)
  • Android developer blog – I read most of these. Not every one is useful but you may learn some useful tips.
  • Romain Guy’s blog – I read some of these. If you finish off the android developer blog, this is probably the next place to start reading as Romain Guy used to work for Android.

About this site

If you’re not sure whether or not to get a website, I highly recommend it. Google app engine doesn’t charge for static websites (like this one) and you can buy a domain name from them for $10/year. I didn’t really have a use for the site when I got it, but here I am using it.

Also, if this page feels hacky, that’s because it is. If you go here you can see what it was originally for. This whole thing was typed by hand and I don’t really know what I’m doing, hence the weirdness. But the same page works for both mobile and desktop and works all the way back to IE7.

Finally, since you're on my site. I figured I'd show you what I've been working on in grad school. My goal is to work in David Baker's lab, but I don't have a PI yet. So I've been using his program Rosetta to produce this. The entire webpage was produced by my python file on my computer. It's comparing a protein structure prediction to the solved crystal structure. (If you want to see some hacky html, take a look at that page's source.)

Brian Coventry October 20, 2016