I am a CS student attending Dixie State University. Even before I became a student, I had lots of experience with web development. I started learning HTML when I was 13 and by 15 had created my longest ongoing project Eternal Reminder.
I especially love working with PHP and jQuery. I have several open-source projects on GitHub but my best work is closed source.
Eternal Reminder is a FamilySearch Certified Application that sends users an email reminder when their ancestor turns 110.
Eternal Reminder was started in the summer of 2013 and is built using PHP. Since then, it has been built from scratch twice as I learn more about coding and design methods. I now consider this project complete(ish) and don't plan on re-designing it again for quite awhile.
It connects to the FamilySearch API to retrieve data on a user's ancestor. A cron job runs every morning to check for ancestors who have turned 110. Users receive an email reminder every 5 days until they take action on the reminder.
Along with the main Eternal Reminder homepage came the opportunity to build a Google Chrome Extension. The extension is loaded into the DOM when a user visits FamilySearch.org and when, while browsing their ancestors, come across an ancestor that needs a reminder, the extension shows them a notification and allows them to simply click a link to have the reminder added.
The creation of a Chrome Extension required me to create an API for Eternal Reminder. There are only two endpoints, creating a reminder and viewing a users current reminders.
I purchased two virtual servers for this project. They are exact copies of each other and the database is replicated between both. They are geographically isolated (L.A. and Dallas) and they use round-robin DNS which allows for some level of redundancy in the event that there is an outage on one of the servers.
High Desert Homeshttp://highdeserthomesonline.com
High Desert Homes is a home builder in Southern Utah. Their old website was created in the early 2000's and used tables to structure the content.
The old page was never finished so I created a new site for their company. They had very few requirements:
- It must look modern, or at least more modern than the tables layout :)
- The site needs to represent their business and effectively communicate their services.
- They needed a way to update the content on their website without having to call up a web developer.
- Because they build houses, they wanted to be able to post listings for them on their website.
Their re-designed web page uses Couch, an easy to use, markup based, CMS which enables them to update their site content including listings for their current building projects.
The Nauvoo Pagent is a program put on by The Church of Jesus Christ of Latter-day Saints that recounts the early historical events of the church. I created a web application for them to help run some of the behind-the-scenes cast services. The program had to be easy to use (old people proof) and had to read in the data from an CSV file with changing column names depending on who did the import on that particular year.
A couple of things the web application does...
- Keep track of how many cast members signed up to eat on any particular day so that food could be accurately ordered
- Keep track of the cast members that actually ate on a particular day
- Print name badges for all of the cast members and volunteers
- Provide a place to upload and edit pictures of each cast member
- Generate reports on the cast members
I created this open-source project in my spare time. It is a very simple survey system written in PHP and using MYSQL as a database. This project is posted on GitHub and allows people to get a feel for my coding style.
The survey currently allows for only one admin user created at install. The admin user can create questions from the following categories:
- Multiple Choice
- Short Text
- Long Text
- Number Slider
- Yes / No
The admin is automatically emailed the results from each survey submitted. They can also get an overview of the results in the dashboard where it shows the number and percentage of votes for each option.
HTML & CSS
I began learning HTML and CSS in eighth grade, at the age of 13. I particularly love designing web applications. The one thing that I am most passionate about, when it comes to web design, is to present users with the least amount of options possible. Instead of throwing everything out on a page for a user to try to decide what they are trying to do, I believe in gently nudging them in the right direction by using tools such as radios to display only what they need to see.
PHP is by far my favorite and best language. I began learning PHP as soon as I finished learning HTML, at about 13. Since then, I have learned so much more and have developed a passion for PHP. Within the last year I have began to use OOP in my projects. I have never used a framework and I don't plan on learning one. I prefer to write all of my code from scratch so that I know how every piece functions.
I don't have I choice on this one. I get to learn Python for school. I know a fair amount, but I am always learning more (because I go to class). On my todo list is learning how to use Python for developing websites as I have only used it on the desktop.
I am proficient with MySQL. I use the MySQLi extension with PHP to access my databases. Most of my queries are very basic so I am always trying to learn more about writing advanced queries.
I use Ubuntu Server on all of my personal servers. I have also used some other Debian variants. I am extremely proficient in setting up full LAMP stacks including mail (exim) and DNS (bind) services.
I use Apache as my web server of choice. I have experience setting up and configuring Apache and Virtual Hosts via configuration files, but I prefer to use a web administration panel. I have used cPanel and VestaCP (check it out!).
I use GitHub to automatically deploy changes to my project. When I merge the development branch with the master, all of my servers for a specific project will pull the changes from GitHub instantly. This is the easiest way I have found to get my code out to all of my servers automatically.
I configure most of my databases with a master-master configuration between my two servers. This ensures that if one server were to go down or experience a surge of traffic, the other database would be able to help out and the end user wouldn't know a difference.
I love dealing with networking. While it's defiantly not my strongest point, I enjoy it a lot. I could probably get the Network+ certification if I ever bothered to take the test. I am A+ certified if that makes any difference :)