D. Nicholas Currault III

Programming Projects

Web

I have experience (through Udacity's CS253) in creating web applications in Python using Google App Engine. I have also used PHP to develop applications on Heroku.

Brady vs Grey (Original)

View Source Code

I made the app with experience from CS253 and some research of the YouTube API. It was my first popular application. It was inspired by Hello Internet, a podcast of which I am a fan. The app uses the YouTube Data API to tally videos on several channels. This app was mentioned on the podcast and received over 12,000 pageviews in the following month. Since then, it has received a total of over 73,000 views by people from all 50 states and 132 other countries.

I also learned the hard way how embarrassing mistakes can be. Within a week of its debut, I deployed a feature that gave an average number of views. However, when the number of videos that matched the criteria became zero (due to a new video by CGPGrey), the app tried to divide the total views (0) by the number of videos considered (0). This attempted division by zero threw an error. I promptly fixed it, but in the interim hundreds of people had seen a "500: Internal Server Error" page.

Brady vs Grey (Improved)

View Source Code

I made this app using some CS253 experience and research of Bootstrap, jQuery, and other common web libraries.

A few months after Brady vs Grey's success, a friend recommended that I clean up the aesthetics of the app. I agreed, and also wanted to reprogram the app using PHP, a language I had planned to begin using.

Polus (server-side component)

I applied my web experience to an independent study at my high school, Distributed Systems Design. The Polus platform emerged as a result. More info is available at polus.io.

The Tragic Voter

View Source Code

In my English II class, we were encouraged to apply what we had learned the previous semester in an inventive medium. I chose to create a website that would collect input from "users," my classmates, and perform some calculations to render a results page, which compared Othello and Things Fall Apart, two works we had read that semester.

The biggest challenge of the app was attempting to take literature, an inherently qualitative field, and measure people's opinions programmatically. The app used the PHP and Bootstrap experience I had gained from the second iteration of Brady vs Grey.

"In The Chips"

View Source Code

As a final project for Economics, I implemented a game we had played in class with an online interface that enabled players to interact in real time. The game recorded "transaction data," enabling me and a classmate to compute market data: consumer surplus, producer surplus, and deadweight loss (when we "imposed a tax," tweaked the buyer/seller ratio, or otherwise shifted the supply and demand curves)


Desktop applications and scripts

Stanford's CS 106B

In Stanford's CS 106B course in the summer of 2016, I created several noteworthy programs for homework assignments. Due to Stanford's Honor Code, I cannot post any of this code online, but it is available upon request: email me@nicholascurrault.com.

  • A text implementation of Conway's Game of Life
  • A "word ladder" finding program
  • A program that uses ngrams to generate text that sounds like an original source
  • A maze solver
  • An anagram finder
  • A Boggle player and checker
  • An implementation of Huffman Encoding for arbitrary files
  • Implementations of Depth-First Search, Breadth-First Search, Dijkstra's Algorithm, A* Search, and Kruskal's Algorithm using Stanford's C++ BasicGraph class

Project Euler

Problems Solutions

In my spare time, I have worked through several Project Euler challenges using Python.


Pebble (Smart Watch)

Shortly after I got a Pebble, I began exploring its API. I had several ideas for custom watchfaces. And, using Pebble as a platform, I was able to develop these ideas and share them on Pebble's app store.

Classy Sweep

View Source Code

On every other analog Pebble watchface I had seen, the second hand "ticked" because the screen only refreshed once every second. I wanted to add a "sweeping" second hand, so I created a watchface that uses Pebble's AppTimer to schedule screen updates 20 times per second. I also learned how to draw a clock's hands, a suprisingly complex graphics task.

World Time

View Source Code

This watchface is based on xkcd #1335, which shows a map with labels corresponding to the current time around the world. I wanted to put one of the key features of this comic on my wrist.

Unfortunately, the first-generation Pebble was not capable of outputting UTC time, so I could not make a version of the app that worked in other timezones. So the project was shelved until Pebble released the Pebble Time. This watch used a different operating system, which made UTC time available. I modified the app and published it for Pebble Time users only.

Not Sure If

View Source Code

This watchface imitates the "Not Sure If" meme. Although it is a rather simple face, I wanted to make it both for myself and to share with other fans of Futurama, the TV show from which the meme originates.

Party Time

View Source Code

This is another simple app, and it is the first one I made after the obligatory "Hello World" program. The screen's color inverts twice each second as the words "party time" appear on screen.

Tempus Latinum

View Source Code

After reading a passage in my AP Latin class that utilized Roman calendar language, I decided to apply this knowledge with the Pebble. I was able to use the Pebble to automatically substitute Latin names for months and days, utilize Roman numerals, and convey the date in relation to the Kalends, Nones, and Ides of each month.