API using PHP Slim Framework

I went down (actually, still going down) a rabbithole when trying to familiarize myself with the Node.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: https://github.com/rsiegel827/Race-Results-API


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

Web Development / Databases class project

Through my own work and school projects, I have created a variety of websites and applications.

School Project: Web development and Databases class

Purpose: The purpose of this project was to utilize front end and back-end technologies to create a web application that connects to a MySQL database, manages user accounts, and utilizes an API that was not taught during the class. We were also tasked with using AJAX for form validation.

Technologies: PHP, MySQL, MySQLi, HTML, CSS, Bootstrap, Google Map API, AJAX

I chose to “redesign” the USA Cycling database, in anticipation of adding on additional features that the current USA Cycling website does not have such as automatically calculating upgrade points, etc.

Databases / Web project

Google Map API


View the project here

Posted in Portfolio

Ladera Ranch Grand Prix

The 3:20pm race start was a welcome change to the 7am start time from last week, however it meant that our San Diego contingent would all get stuck in traffic on the trip up to Orange County. Without any warmup and a quick pre-race meeting with Dominic of Incycle, Jenny, Trina, and Tammy lined up alongside me & Bea for the Ladera Ranch Grand Prix. We had a pretty good sized women’s field of 29 motivated ladies in the Women’s 1-2-3 race.

Despite having no warm-up, Jenny, Trina, and Tammy were very active during the beginning of the race. They all covered or initiated attacks during the first 10 minutes of the race.  Not too much later, I covered a move and found myself in a break. Jenny bridged shortly after and were 8 riders with 2 SC Velo, PC and Suzanne from Helen’s, Charity from SBW, Hannah from Strive, Melina from Primal, and Jessica Cerra from JLVelo/Focus.  We were later joined by Erin Gunn of Catalyst who bridged across. With the help fo the Helen’s and SC Velo teams controlling the main field, the break quickly gained time on the main field.

Since Jenny and I were together, I figured our best change for a team win would be for me to set her up. the goal was to get her in a good position and then lead her out, hopefully starting her sprint ahead of PC & Suzanne since both of them are good sprinters.  I made my way up to the front going into the final lap.

I led the field around turn 1 and heard the horrible sound of bikes hitting the ground. I stayed looking forward for a while, not wanting to cause further issues, but after there was silence for a few seconds, I peeked back and saw daylight. There was nobody close to me at the moment. I got my focus back, and concentrated on the final three sides of the course. By the last turn, I could start to see Melina in the distance, but knew I had the win locked up.  Melina Bernecker and Jessica Cerra rounded out the podium in second and third, respectively.  Trina also showed great form by taking the field sprint!

This win was with mixed emotions. I’m happy & proud to have delivered a win for my team and our sponsors; it’s been a long time coming! Of course, this is not the way that I’d like to win a race I hate to see my teammate and competitors hit the ground. I’m happy to say that nobody was badly injured and they will all be back racing in no time!

When it came down to it, I was in the right position and luck was on my side. Thanks so much to our sponsors who have believed in us all season: Incycle, SC Velo, Cannondale, JL Velo, iRT, GU, & Smith Optics!  Without their support, this all wouldn’t have been possible.


Posted in Cycling, Road

CBR Cool n’ Fit Crit

When Trina, Tammy, Jenny, and I lined up at 7am with the master’s 55+/60+ for our first CBR race of the season, we thought they were going to race us all together & score separate. However, the officials told us that the women were going to start a minute after the men. Both races did a memorial lap in honor of Chris Cono (Who died after a crash in the previous CBR race, & proceeds were going to this race).

Attacks started quickly, mostly from Helen’s (also had four riders racing) and us. A few laps into the race, PC  from Helen’s attacked and I followed. The two of us had a gap and were working together to maintain it. After a few laps we were joined by my Teammate Trina, Suzanne from Helen’s and Amy from UCSD.  After a bit, Amy and Trina dropped off and it was just me, Suzanne and PC. After a little time as a trio, we were joined by Jenny and Hannah (Strive racing).

Eventually, Jenny and PC would drop off and were were left with me, Suzanne and Hannah. By the this final break was established, the men’s race was catching us. Throughout the remainder of the race, the three of us had to maneuver around the men’s field, to avoid drafting. We went back and forth a few times and ended up in front of their main field, behind a few breakaway riders.  Suzanne’s experience was extremely useful in helping us choose which lines to take, especially when we were consistently blocked by a full field of men

Suzanne & I were doing all of the work, as Hannah was struggling to pull through. I knew my only shot at a win was to make a move early, since Suzanne is an amazing sprinter. I tried once with one to go and again with 2 corners to go, but couldn’t shake Suzanne. When we reached final stretch, Hannah did not contest the sprint. Suzanne took 1st and I took second.

In the main field, Tammy drilled it in the last lap, keeping the pace fast for Trina and Jenny to go 1-2 in the field sprint for 4th and 5th!

This race was a great team effort and everyone contributed to our success of putting 3 riders in the top 5!   I couldn’t have done it without all of them!

Screen Shot 2013-06-16 at 8.05.46 AM

Posted in Cycling, Road