Who’s Riding? is up on itunes!

In my last post, I talked about an app I was submitting to the iTunes store.

The app was rejected twice. First, was for the name (it contained Strava, and also redirected the user to Safari to authenticate). I then changed the name, and added a login button. They still rejected it for the redirect. Finally, I used the Safari View Controller for the login instead of opening up the Safari app. It was finally approved:


Posted in Portfolio, Technology

Strava Club Calendar and Events

As a way to experiment with react native, I created a mobile application using the Strava API.  This fills a void left by Strava’s club feature. A user can join many clubs. Each club can post events and announcements, but there is not a place where a user can view an aggregated view of events and announcements for all of their clubs. Rather, they can only see information by clicking on one at a time.

   Simulator Screen Shot Apr 25, 2016, 10.12.29 AM

Github Repository

All of my clubs: 

Screen Shot 2016-04-28 at 8.06.34 AM

Event/Announcement sections for one club: 

Screen Shot 2016-04-28 at 8.06.42 AM Screen Shot 2016-04-28 at 8.06.45 AM

I wanted to use the APIs in a way to create a view where people can glance and see everything in one place.  Unfortunately, the Strava API does not have a single endpoint to get this information. First, I have to call /athlete to get the user’s clubs.

Screen Shot 2016-04-28 at 8.10.06 AM

Then, I have to iterate through all of the clubs (which for me is 11 different ones) get call clubs/events and clubs/announcements. This is definitely not ideal because it takes longer to make so many requests and then run through all of the sorting. I also have the potential to get rate limited very quickly if people actually download the app.

Screen Shot 2016-04-28 at 8.13.02 AM Screen Shot 2016-04-28 at 8.12.54 AM

First Version submitted to Apple store: 

I already have a list of things I would change, but I wanted to submit an initial version to the apple store for approval. As of now, the app is ‘in review’ at Apple.


Posted in Portfolio, Technology Tagged with: , ,

backbone.js upgrade calculator application

To help learn the backbone.js framework, I created an app that would serve as an upgrade calculator for cyclists. The app is not 100% finished, but it has a solid foundation.

Screen Shot 2014-11-19 at 9.01.06 PM

The app is currently written in a single index.html file. Eventually, I would like to split it up into views/models using require.js.  It utilizes the APIs mentioned in the previous post.

A live version of the app is available to view here: http://calculator.beckysiegel.com/

You can sign into a test account using the following credentials: test/password123. Feel free to play around!

The idea of the upgrade calculator is as follows:

In cycling, you race in a certain category that indicates your level. In order to move up levels, you must meet certain criteria.  There is currently no good system to calculate your upgrade points (with a certain number of ‘points’ you can move to the next category).  The idea of this app was to make the calculation easier, as a way to know how many upgrade points you have. This leaves the guess-work out as the rules can be somewhat complicated.  The calculator currently works accurately with the exception of some of the logic around stage races.

Note that the calculator is based on the following business logic:  http://www.usacycling.org/road-category-upgrade-guidelines.htm

View on github: https://github.com/rsiegel827/Upgrade-Calculator

Posted in Portfolio, Technology

API using PHP Slim Framework

I tried to familiarize myself with the backbone.js framework.   I found a great beginner’s video and sample code from Thomas Davis (see here) on getting started with Backbone. I always understand new concepts and technologies better when I have a solid example to start with.  I downloaded a copy of this code on my local machine, and tried to understand how it worked. I was a little confused, and wanted to start modifying slightly with some of my own data.

Of course, the data piece of this project was concealed, as it was accessing a restful API. Instead of focusing on the front-end, I turned my attention to the backend. If I want to learn how to use the front-end, I wanted to do it with my own data. Why not create my own API?  This wasn’t something I’d done before, and decided to turn to google for some advice. I found the Slim PHP framework, which seemed like a good option.

The idea of the application is that it will calculate upgrade points for cycling races. the database will store information that users add themselves, in order to keep track of their progress. So far, it only contains Race names and Race dates, but more data will be added once the structure of the program is expanded.

The API has the following functions:

Used for populating race list

GET /races – Returns an array of race objects

GET /races/:id – Returns a single race object

POST /races – Creates a Race Object

PUT /users/:id – Updates a Race Object

View the code here: http://www.beckysiegel.com/backbone-js-upgrade-calculator-application/


Posted in Portfolio, Technology

Python Web Scraper

Purpose: For our software projects class, we were tasked with writing a scheduler application. It would take events from multiple sources: Google Calendars, and the Oregon State University course schedule. For faculty that taught classes, they would be designated “busy” during class times.  This portion of the code that I wrote is the web scraper from the OSU catalog webpages.  It is a python script that uses the beautiful soup library that gets courses each term and adds them to a MySQL database. The other components of this project included getting information from the google calendar API, and then using this data to determine when people are free using a command line interface

Technologies: Python, BeautifulSoup, MySQLdb

View on github: https://github.com/rsiegel827/Course-Catalog-Web-Scraper

Posted in Portfolio, Technology

Mobile App with Web App and GAE Datastore

Purpose: To create a native mobile app that sends data to a cloud datastore and a web/cloud application that can view the data.  Create an account on either the web or mobile app. On the mobile app, leave messages based on your current location. When you log onto the web application, you will see a map that contains pins with the notes left from the app.  There is also a weekly cron job that sends an email to all users, updating them on how many notes they have and reminding them to log back in.

Technologies: Titanium Studio, Eclipse, Google Application Engine

Viewing data sent from mobile app

Viewing data sent from mobile app

Demo Video:

Posted in Portfolio, Technology

iOS Native App using Titanium Studio

Purpose: To create a native mobile app that utilizes features specific to a native device. I chose to use the accelerometer, camera, and the shake gesture.

Technologies: Titanium Studio, Javascript,  iTunes Connect

If you want to bore your

self for 3.5 minutes, and watch me talk about the app and demo it, go right ahead:

Posted in Portfolio

Web Application – Google App Engine

Purpose: The goal of this assignment was to use the google application engine’s datastore to implement a contact list with both text and photos.  Contacts are also editable after submission.

Technologies: The backend code is Java, using JSPs. Other technologies used: HTML, CSS, Javascript, AJAX



Posted in Portfolio

Single page website with mailchimp signup

Purpose: To create a simple website with Mailchimp form integration.

Technologies: HTML5, CSS3, Mailchimp, Javascript

View project here

Posted in Portfolio

Responsive mobile web front end

Purpose: For my mobile/cloud development class, we had to create a responsive mobile website that would adapt to various screen sizes. There are three pages: a landing/navigation page, a photo gallery page, and a form page.

Technologies: Jquery Mobile, Jquery Validate, HTML, CSS

View the project here

Posted in Portfolio