Raz's Capstone

For me, coming up with my capstone was easy. Last summer I took a course in web development at the New York Code + Design Academy. I really enjoyed it and once I completed the course, I had a strong feeling that I wanted to find a career in web development. It’s a really interesting field and it’s growing more and more as years pass. So, I decided to focus my capstone on improving my knowledge and experience with web technology.
Learning by practice is the best way to learn, so that’s what I did. I started a website, and roughly every month of 2015-2016 school year, I made projects and put them on my website. These projects were mostly just web games, written in the standard web languages: Hypertext Markup Language (HTML), Cascading Style Sheets (CSS), and JavaScript. I devised these projects with the help of my mentors, Mr. Miles and my dad. The process of making each project was designed to teach me some aspect of web development. For example, one of my projects was a jigsaw puzzle game called “Jigsaw Joust” that used a leaderboard to keep track of top times. For this, I needed a database, and that’s the area of learning that that project covered.
My website has more than the projects -- I am in Senior Computer Science and I wanted an easy way to keep track of the assignments I completed, so I put them on my GitHub account. I have provided a portal to my GitHub on the website as well as a page detailing some of my favorite projects I’ve done for the class. I also have a blog on tumblr where I have kept track of my capstone’s progress over the months.
The final product is online at http://raz1.com/.


NOTE: some of these sources I did not cite in MLA format because I was citing the entire website as a source.

Stack Overflow is the most popular branch of the Stack Exchange Network. Like all Stack Exchange sites, it is a question and answer forum. Stack Overflow specifically is centered around programming and coding topics. It has a system that allows users to vote for the best answer to a question, assuring that the original asker and any other viewers with the same question are answered as completely as possible.
Stack Overflow is a popular option among web developers and has been extremely useful for me over the past several months that I’ve been working on my capstone. Its voting system combined with a round-the-clock team of moderators (who are mostly professionals in computer-related subjects) makes it a very trustworthy source of information. If you have any sort of programming or coding question, chances are it’s already been asked and answered on Stack Overflow.

W3Schools Online Web Tutorials. www.w3schools.com

W3Schools is the largest online web developer information website. It offers tutorials on all the following web languages: HTML, CSS, JavaScript, PHP, SQL, Bootstrap, and jQuery. It offers quizzes and exams on these languages. It also has a YouTube channel with guides on making websites. It also offers the very useful “try-it-yourself” webpage editor, which contains examples of how a certain functionality in one of the languages works and allows the user to modify these examples and observe the result.
W3Schools has been criticized for making its content too simplified for users who are new to web development. I think this criticism is accurate but I think its simplicity is helpful -- when learning a new concept or trying to wrap your head around object-oriented programming the easy explanations and basic examples are conducive to “getting it.” For the more experienced developer, Mozilla is probably a better option.

Mozilla Developer Network. https://developer.mozilla.org/en-US/

MDN, created by Mozilla, the same group who made the Firefox browser, is a community-maintained resource for web developers. It offers a thorough and detailed explanation for all functionalities of web languages such as HTML, CSS, JavaScript and NodeJS. MDN’s web APIs (application programming interfaces) are especially helpful because of their comprehensiveness and organization.
MDN is useful for the above reasons, though its guides often lack examples. Despite this, it always provides solid explanations -- for some JavaScript functions it will even show the user how the function is written (as in, it shows what the code does with more code). I believe it is best used in conjunction with W3Schools because both sites have strengths in different areas.

Firebase is an online application that does cloud service providing and data management. It is integrated into JavaScript as a library that allows the developer to read information from and write information to one of its servers. It was acquired by Google in 2014 and just this month underwent some big structural changes.
One of the projects I did required the use of a database. I thought that learning SQL (Structured Query Language) or one of its variants would take too long and probably delay progress on other parts of the capstone, so I tried using Firebase. I think I made the right choice in using it because it’s fairly easy to comprehend for someone who has experience with JavaScript (which I do).

Udacity Nanodegree. https://www.udacity.com/

Udacity is an online classroom offering “nanodegrees” in web development. These “nanodegrees” are certificates that one has completed the Udacity course, which takes roughly 6 to 8 weeks with a few hours spent learning per day. It was founded by Sebastian Thrun, a former Google VP and Professor of Computer Science at Stanford (read: really smart guy). Udacity also offers courses on other computer-related subjects, such as building robotic cars.
Once I’m near the end of the year I plan to start the Udacity nanodegree in web development. The goal of my capstone is to learn as much as possible this year to prepare myself for a potential career in web work, so though I have not used this source yet, it will be useful in a few months. I am waiting for the end of the year to start it because I will have more free time then to complete this fairly demanding program.

Ellingwood, Justin. “How To Launch Your Site on a New Ubuntu 14.04 Server with LAMP, SFTP, and DNS | DigitalOcean.” DigitalOcean. N.p., 13 May 2014. Web. 12 Jan. 2016. <https://www.digitalocean.com/community/tutorials/how-to-launch-your-site-on-a-new-ubuntu-14-04-server-with-lamp-sftp-and-dns>.

DigitalOcean is an online cloud infrastructure that provides developers with online servers. Basically, it’s a website hosting program. It’s the one I chose to host my website. This article I found on their forums is a guide on how to launch a website on an Ubuntu server using their service.
This source was very helpful as there isn’t a guide for this particular process anywhere else on the internet. It’s accurate, readable, and isn’t too technical. It does rely on the user’s knowledge of other process required for the launch such as installing a LAMP (Linux, Apache, MySQL, PHP) stack, but it provides links to guides on these processes.

Carranza, Pablo. "How To Use Filezilla to Transfer and Manage Files Securely on Your VPS | DigitalOcean." DigitalOcean. N.p., 17 October 2013. Web. 12 January 2016. <https://www.digitalocean.com/community/tutorials/how-to-use-filezilla-to-transfer-and-manage-files-securely-on-your-vps>.

DigitalOcean is an online cloud infrastructure that provides developers with online servers. Basically, it’s a website hosting program. It’s the one I chose to host my website. This article I found on their forums is a guide on how to transfer and manage files using Firezilla.
This article was super useful because transferring files from my computer to the server is roughly ten percent of the time I spend working on a project. In order to make changes to my website, I have to modify its files on my machine and then upload them to the server. This process is especially necessary during debugging, when I need to make changes and until I fix whatever problem I’m having.

Ellingwood, Justin. “How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 14.04 | DigitalOcean.” DigitalOcean. N.p., 18 April 2014. Web. 14 January 2016. <https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-14-04>.

This is another guide I found on DigitalOcean’s site that I used to launch my website. This article specifically explains how to install Linux, Apache, MySQL and PHP (LAMP) on an Ubuntu server.
This article was useful to me because Linux and Apache are, for my website, necessary components. In order to manage the site’s files I need control of the terminal, which is provided by the Linux operating system, and in order to actually host the files I need a web server, which is provided by Apache. MySQL is a database language and PHP is a dynamic content language, both of which my website has alternatives for.
The guide itself, like most of the other DigitalOcean guides I have found, is very clearly written and not too technical or abstruse. It can be a little intimidating to someone who has never used the terminal before and the guide doesn’t completely parse and explain the lines it tells you to run, but it’s reasonable since the audience of this source most likely has at least some experience running shell commands.