Gapslot: Version 1


Last week, I was sitting with some friends as we discussed our newly assigned schedules for the semester. Naturally we were trying to figure out when everyone was free so we could hang out. As we scratched our heads trying to coordinate 6 or so schedules (each one more scattered and hideous than the last) I made a passing comment that it probably wouldn’t be too hard to write a program that solved this problem. One of my friends suggested that we instead just write everything down on a piece of paper. Anyone who knows a computer scientist will tell you how much comments like these make us twitch. Why? Because it is our (or at least my) firm belief that any task that can be automated should be automated.

So I took his statement as a challenge and decided to make an app just for fun. I worked on it intermittently over a week and this is what I came up with. It’s coded with python on Google App Engine (side-note, they limited my choice of names so I had to pick one I didn’t really like), using jinja2 for templates and I learned a little bit of javascript/jquery to make the interface. It’s quite lacking in the design area because I am not well versed at making things pretty but it should work well. There are a couple of bugs; I know. If you think these are bad, you should see the ones I spent the week fixing. I would have fixed the rest but this project was taking too long so I decided it’s better to post something that works with one or two bugs than to get sick of it, give up and have nothing to show for all my work. If I get around to making a V2 I’ll fix them but for now I’ll just note what I know about.

Here’s the link to the app if you want to check it out, and below is a walkthrough of the app’s functionality.


I made the homepage as simple as possible. Apps should try to guide the user where they want to go and minimize confusion.


Assuming you’re a first time user you’ll click the right button and be taken to a page where you create a group. Obvious issues: nothing to stop you from messing up your password and nothing to stop a script making tons of groups. Worst case scenario: the app exceeds the datastore write limit and nobody can make new groups for a day. Precautions I DID take: passwords are hashed (with a salt to prevent the use of a rainbow lookup tables) and html is escaped.


Now you have a group, and you want to add your schedule.


Type in your name and click and drag to fill out the table. I tried to program the click and drag functionality myself using jquery so it gets a little funny sometimes. You can click slots individually if it does and submit when you’re done.


Once you submit you’ll be taken to your group schedule page. A slot is red if at least one person is busy. If you want to plan a group activity, go for white but if you find yourself free during one of the red slots, hover over to see who else is free. You can also navigate to this page from the “View Group Schedule” button. If you go back to the main page from this one you can try it but you’ll have to refresh the page or empty all fields except for the group name and password. This is another minor bug but it’s a step up from having the entire app crash whenever one field was wrong.


And there you have it! First pet project of the semester. Check it out, play around with it and let me know what you think. More to come soon.


One thought on “Gapslot: Version 1

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s