Kele is a Ruby Gem that allows users to access Bloc’s REST API. Developed in the winter of 2017, I aimed at creating a gem that accessed the Bloc’s API in order to deepen my understanding of gems, API clients, and data manipulation (including JSON data).

view code


Techtannica is a Rails based application that allows users to create public or private wikis (based on membership credentials). If a standard user wishes to create private wikis and allow for collaboration with other users, there is an option to upgrade for a small fee (through stripe).

This application deepened my knowledge of user authentication (with devise gem) and authorization (with the pundit gem). I also gained a stronger understanding of Active Record and data manipulation through querying.

view code

Chatty Cathy

In the fall of 2017 I developed a web application called Chatty Cathy, which is a chat application that sends and receives messages in real time. Like Bloc Jams, Cathy’s structure was a good fit for a single page architecture and proved to be a great opportunity to expand my knowledge of databases, JavaScript and AngularJS.

I used firebase as the database, which stored various data such as user generated chat rooms and messages. To access the database, I developed a factory that defined all room related API requests and created a reference to the firebase database. After developing the rooms, I went on to create a message factory that defined all message related API requests. One challenge I faced was that all messages depended on what room the user was currently in. After some research I found that the best solution was to use Firebase’s equalTo() method which allowed me to query the database and link the message to the room id in which the user was currently in.

Before a user is allowed to enter the website, they are required to create a user name. Cookies proved to be the most appropriate method to store the user’s name. Angular modules have a run() block which get executed after the injector is created and are used to kickstart the application. This run() method was used to insure that the application would not start until the user stored a username in the browser (with cookies).

This project pushed my problem solving skills and greatly expanded my conceptual and technical understanding of AngularJS and Javascript in general. It also was a nice introduction to the use of Firebase and AngelFire.

View Site

Bloc Jams: AngularJS

After completing Bloc Jams with HTML, CSS, and JavaScript, I refactored the application with AngularJS. Since Bloc Jams structure lent itself to a single page architecture, Angular JS was an ideal SPA to build on. AngularJS was my introduction to Javascript frameworks and opened my eyes to how powerful a tool a framework is in building a dynamic, sophisticated web application.

I started by bootstrapping Angular to Bloc Jams. I then configured the routing and states of the application. Since Bloc Jams is an ideal app for Angular JS’s single page I then used controllers to control the flow of data and refactor the code to be more modularized by creating templates for the different states. A crucial “ahhh” moment in my coding journey was the understanding of the concept of declarative vs. imperative view manipulation. Since “The Angular Way” is based around the concept that views are open books which “declare” the functionality by using HTML (contrasting the jQuery way in which much of the html elements have hidden functionality which lives in the JavaScript), it was helpful for me to see the clear relationship between the javaScript functionality and the forward facing HTML.

I used several Angular service recipes to share data and behavior across several components. Along the way I used a git repository to store my work. You can view the project here.

Bloc Jams

In the summer of 2017 I developed a digital music player called Bloc Jams, which has similar functionality as Spotify. This project was the first frontend web development project in the Bloc curriculum and gave me a solid conceptual foundation to develop and deploy a responsive frontend web application.

I started developing the application’s backbone and layout with HTML, then added style and responsiveness with CSS, and implemented interactivity and user experience with JavaScript. While developing the application I learned DOM scripting, JQuery, expanded my ability to design responsive web pages and dynamic grid layouts using media queries and gained crucial experience with general workflow by using the command line and Git.

Bloc Jams culminated and pushed my problem solving and coding experience thus far while giving me a greater understanding of how different pieces of a web application fit together.

view site