Jack Shade

Shodor Apprentice, 2015


About Me

Hello, World! My name is Jack Shade and I am currently a rising Senior at the Emerson Waldorf School in Chapel Hill. I have been a part of the Shodor Apprenticeship Program since October of last year, and I have enjoyed my time here learning the many different facets of computer science and STEM in general. This website is my personal portfolio which contains many of the projects I have been working on throughout the past year, as well as a blog page for a personal perspective of my time here. Feel free to explore my site to find out more about me and my work here at Shodor.

In school, my favorite subjects are math and chemistry, though I will be applying as a computer science major on my college applications this fall. I am also one of the cofounders of the Computer Club at my school along with Andrew Nyland, another Apprentice here at Shodor. The goal of our club is to introduce programming concepts to new students who have had little exposure in this field growing up. We believe that computers are incredibly helpful and versatile tools, and we hope to show members of our club how to utilize them in the best way possible.

In my free time I enjoy snowboarding whenever possible: a difficult hobby to keep up here in North Carolina. I also enjoy playing video games, particularly FPS and RPGs, and currently my favorite game is Dishonored. I also enjoy playing soccer to keep active, and I look forward to playing for my school this fall.


August 14th, 2015

Today was my final day in the Apprenticeship Program. I presented on all the work I had completed this summer, which can be found on the portfolio page of my website. Formally, I want to thank Shodor for the opportunity they have given throughout the past year to explore computer science with a focus on the conceptual rather than the technical. My experience here has been entirely positive, and I am greatful for the opportunity they have given me. *Command-Shift-Q*

August 13th, 2015

Today I continued working on linking data beween tables, and I also created a login page. However, towards the end of the day I accidently broke the page and spent most of my time fixing it. The bug I am facing is an if/else statement in which the if condition is seemingly not met, but the else outcome does not occur either. It is as if the condition is true and not true at the same time. In terms of linking table data, I made less progress than I would have liked. I stored each row of my first table as an array, but I found it difficult to develope a method that would detect from which row the user was choosing. I need to finish this method tomorrow morning in order to complete my PHP project in time.

August 12th, 2015

Today I finished my image gallery including a few bug fixes I needed, then quickly started working on my PHP page. I found that I had forgotten most of the PHP I had learned earlier in the year, so I had to research how to implement a number of the features I had in mind. I created a login page which adds accounts to a database, and gives users a balance as well. I also started linking my MySQL tables using sessions, though I made less progress in this area than I would have liked. I hope to finish this feature tomorrow as well as finish working on my admin page, which will allow the owner of the store to add and modify the items for sale in the store.

August 11th, 2015

Today I fixed all of the bugs left on my page, including my troublesome bug affecting page changes. I also started working on an image gallery, which proved to be more difficult that I had anticipated. Images in html seem to be particularly difficult to work with, and I spent most of the day coming up with designs to accomodate this. By the end of the day I set up a somewhat buggy test page with a design that works the way I want it to. However, the aesthetics of the page still need to be worked on. Unfortunately I don't think I'll have time to work more on my website as I really need to finish my PHP project by the end of the week. Hopefully I'll find to come back to my website by the end of the week.

August 10th, 2015

Today I worked on updating and debugging my website. I added content to my portfolio page and created an image gallery for my image editing work. I also made a number of layout and aesthetic changes. There is still a major bug when users select the Blog page, then the Portfolio page, or vise versa. This is because of the way I am animating using JQuery. I know how I want to fix this, and I intend to do it tomorrow.

August 7th, 2015

Today I worked entirely on redesigning my website. I created a blog page with some 40 entries I've accrued, and fixed some bugs which were causing me trouble yesterday. I also started creating a portfolio page, though it is not entirely complete. I decided that rather than link to different pages for my website, I would instead have everything on the same page, but hidden off to the side and only displayed when the user clicks. There are still a number of bugs I need to fix, but my website is now more than halfway done!

Augst 6th, 2015

Today I worked quite a bit on my personal website. I created a home and about page which, rather than linking to one another, sit above and below each other, and swap places when clicked using JQuery. I also accidentally created an alternate style to my website, which happened to be one of the requirements anyways. I gave a div element the background color of black to constrast my white background so that I could see it better while styling. It turned out that I liked the look quite a bit, so I decided to keep it as my alternate style.

I also created a login page for my PHP project, though I intend to work more on this project next week as I've really enjoyed starting to redesign my website.

August 5th, 2015

Today I worked with Rohin to put the finishing touches on our program. I wrote a function to allow for users to select the color of the balls in our model using an HTML dropdown selector. Then, I worked on updating the help file for our application while he worked on the CSS of the website.

Next, we watched Apprentices present on the projects they had completed throughout the summer. I, myself did not present, but it was interesting to watch and see the solutions other Apprentices had to the same projects I had worked on.

Finally, I started redesigning my website using the JQuery I had learned from Ishaan. I made a menu bar with which I was quite pleased, and added effects for it to fold and unfold. I also designed and created a button whose style would change upon hovering.

August 4th, 2015

Today I created multiple new functions for my JavaScript project. First I wrote a program which gave each of the balls a unique velocity ranging from 1 to 5, though I think I might change this range in the future. This application changes the distance each ball will travel during a given redraw of the canvas: in our case once every 15ms. Next I wrote a resizing application which modifies the size of the canvas in our model to a user-defined one, then updates the canvas and moves all the particles within the new boundary.

I spent the next portion of the day writing an application which would draw balls where the user clicked on the canvas by finding the cursor's x and y coordinates. The application wasn't too difficult to write, but I spent much of the day implementing this function into our program. Currently, our project is nearly finished; all that we have left to do is allow for the user to choose the color of the balls.

August 3rd, 2015

Today I worked on a JavaScript model which simulates a number of balls bouncing around in an environment. My partner for this project is Rohin Shahi, and together we started by modifying our Bouncing Particles applications from earlier in the year. I started researching how to work with velocities in JavaScript, and he started implementing the working code from our previous programs into our new program.

For the second half of the day I learned JQuery with Ishaan Rao. He taught me the basic syntax of JQuery and a number of the effects included in libraries like JQueryUI. We worked on a number of simple examples, then once I had a good sense of the language I was assigned a few projects to work on. One project I created was an animated menu bar whose items would roll and expand to the right upon hovering with the mouse. This was a very exciting project, and I look forward to implementing more JQuery into my website in the near future.

July 17th, 2015

This morning I was assigned documentation duty, during which I documented the Programming Concepts workshop for middle and high school students. As JavaScript was one of my favorite languages in which to work throughout the course of the apprenticeship, I was excited to see the students learning the fundamentals of the language in this workshop.

For the second half of the day I worked more on my general store. I continued to work on accessing mySQL table data using PHP, though I honestly didn't make much progress. I was somewhat dissapointed in my accomplishments today compared to earlier in the week in this regard.

July 16th, 2015

Today I added an Admin page to my project from which one can change the items for sale, and the price and quantity of each item. This page is still incomplete, but I intend to work on it again tomorrow. I also learned about PHP sessions, and how to implement them in order to share data across multiple webpages. This was essential for my site, and I am still not finished with it.

July 15th, 2015

Today I added style to my website, and made a second webpage for completed orders. I wasn't very clear on how to link tables, so that is something I intend to work on tomorrow.

For the second half of the day we learned about proper project management through an application called Redmine. We also reviewed some of our fundamental in the command line, such as copying and moving files, as well as new concepts such as subversion which keep a record of the different versions of a project.

July 14th, 2015

Today I finished inputing data into my mySQL tables and worked on outputting this data into a PHP file. Having completed yesterday's work fairly quickly, I ended up mostly helping my peers for the rest of the morning.

In the afternoon I was tasked with documenting Shodor's Forensic Science workshop, during which I took pictures of the workshop and began writing an essay about what occurred. I thought forensic science was an interesting subject since I usually wouldn't think of it as a conventional branch of science. However, it heavily utilizes chemistry and deductive reasoning, and for someone who enjoys puzzles, it was really quite interesting.

July 13th, 2015

Today we started a new, week-long project using PHP and mySQL. The goal of this project is to create an online general store from which users can buy items and vendors can sell them. I set up a number of mySQL data tables today, such as tables which contain data for items, customers, and orders. Tomorrow I intend to start working on the PHP portion of the website.

July 10th, 2015

Today I finished up a few of my PHP projects, but mostly I explored more of mySQL. This time we used a text editor to edit our mySQL data rather than using the command line. I preferred working in the text editor as I was more familiar with it, but I feel there are advantages to both. Next week we will be working on a large PHP project. I'm not entirely familiar with the details of this project, but I'm quite excited to get started.

July 9th, 2015

Today we continued working on PHP projects. I learned more about the use of cookies in PHP, then implemented this knowledge into an application which would remember a user's background color preference.

For the second half of today we learned about mySQL and how to create data tables using this language. We worked mostly in the command line, and practiced various techniques. I look forward to learning more about mySQL in the future.

July 8th, 2015

Today we worked mostly on individual projects. I completed a program which simulates the rolling of dice, and a program which switches the letters in a persons first and last name. These projects involved a new concept of getting data provided by the user. For the second half of the day we were briefly introduced to the idea of cookies, which I hope to learn more about in the future.

July 7th, 2015

Today we began learning the language of PHP! We worked on a number of projects such as generating random hex colors and creating working calendars. We covered topics like "foreach loops" and the "echo" statement, and I found that the language as a whole worked in a similar way to JavaScript in its elements and syntax.

July 6th, 2015

Today was the start of the second block of our summer module. We began by learning how to use regular expression to find different strings of information within a given block of text. We used the website Regexr.com which provided tutorials for this subject and allowed for real-time results to be found while typing.

For the second half of today we worked briefly on the HTML canvas using JavaScript. We primarily worked on creating shapes with different colors and outlines, from simple rectangles to more complex circles and even a smiley face.

June 26th, 2015

Today I didn't have any assigned work to do, so I spent time teaching myself some PHP from the website Codecademy. I also came up with some features I'd like to implement into my website in the future, which mainly involved the use of JQuery, a language with which I am not very familiar. Finally, we were assigned new problems to model in Agentsheets. I will be working more on my model in the coming weeks.

June 25th, 2015

Today I wrote a color switcher function for my website which changes its color theme from dark to light, and vise versa, by using two buttons. Next, a coding competition was proposed between two groups of Apprentices. My group, comprised of Herjot, Aidan, Braxton, and myself, was excited to work on the project, but the other group didn't ever start the project, so our group won by default. Eventually Aidan and I competed against one another to solve a sample problem in JavaScript. Unfortunately, I wasn't as familiar with JavaScript as he was, so he finished a quite a bit earlier than me, but because there was an error in his code, it was decided, with some bias, that Aidan was disqualified. I still think he won. It was still a friendly competition, and we ended up working together to solve the problem.

June 24th, 2015

Having finished most of my work for the week on Monday and Tuesday, I had little assigned work to do today. I worked more on my website, primarily working on aesthetics, and revised my High Level Design document for the additions I plan to make in the future.

June 23rd, 2015

Today we worked more on image manipulation. I had completed all of the required tutorials yesterday, so I spent most of my time pasting the face of our Apprentice Director, Phil List, on to those of various famous people. Phil seemed to enjoy the joke. After this, I had plenty of spare time, so I completely redesigned my website from scratch. This was a fun project, and I felt the outcome looked much better with my more developed knowledge of web design, but I felt it could be better, so I look forward to improving my site even more in the future.

June 22nd, 2015

Today we primarily worked on image manipulation in the image editors of Inkscape and Gimp. I have used applications like these in the past, such as Photoshop and Pixelmator, so the process of editing images was fairly familiar to me. We followed a basic tutorial and manipulated images as instructed; then, we were given the task of creating our own personal logo and banner for our websites. I finished both my logo and header, but I am currently unsatisfied with both. I look forward to working on them in the future.

June 18th, 2015

Today was our third day working on our Software Engineering projects. Phil, our Apprenticeship Director, notified those of us working on the Art Walking Anew project that our project was significantly more difficult than we initially anticipated. He provided us with a solution to one of the major problems we were facing, which helped me make significantly more progress on my model.

June 17th, 2015

Today was our second day of Software Engineering for our modeling project using Agentsheets. I found the program very limiting in what it allowed me to do, meaning that progress was very slow. I found I often had to think about how I would do things in other programming languages like JavaScript, and find a way to implement them into Agentsheets.

June 16th, 2015

Today we began our Software Engineering side of this weeks modeling project by working on the HLDs give to us. Not having used Agentsheets, our modeling program for this project, for quite some time, it was fairly difficult to remember how to use the program. However, after a slow start I felt I made some good progress.

For the second half of today I was tasked with documenting a workshop taking place for middle school students. The workshop was titled "bases and functions," and my job was take pictures and write a short summary of what took place. It was interesting to watch the class from an outside point of view, observing how the students worked through problems and how the teachers presented the material.

June 15th, 2015

Today marks the first day of our summer module for the Apprenticeship Program. Our first project for this week is to create an agent based model as specified by a number of example problems. It is our job as apprentices to both create the High Level Design (HLD) document and to write the code for this project, acting as both Project Managers and Software Engineers. Today we worked on writing our HLDs as Project Managers, which we will distribute amongst each other tomorrow to work on as Software Engineers.

April 25th, 2015

Today we learned more about how parallel programming is actually executed, as well as how to write our own parallel programs. We applied these concepts to our Pi Approximation Application, and learned to run it using multiple threads. You can find my application on my portfolio page.

April 18th, 2015

Today we learned to program in the language of C! Using our virtual machine, we wrote programs that approximated the value of pi, using a unit circle. I managed to accurately calculate values up until the point of truncation, which I believe was 8 decimal places.

April 11, 2015

Today was the first day of our Parallel Programming Module. Parallel Computing is defined as "a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones.The website top500.org has a list of the top 500 fastest super computers which operate on this principle to compute at optimal speeds.Nearly half of all super computers can be found in the United States, with a significant number in the United Kingdom, China, and Japan.Their lightening speeds are reached by the massive number of processors they utilize, which number in the millions. The Blue Waters Supercomputer, the fastest computer on a university campus, operates at ~13,000 TFLOP/S, putting it in 4th place for the fastest supercomputers in the world, but it opted out of being placed in the top 500 list.

For today's class we created our own version of a supercomputer using a program called VirtualBox. The program was able to utilize all of the devices connected to it as nodes, and run processes with them. This is a very new and interesting branch of computer science for me, and something I look forward to exploring in the future.

March 21, 2015

Today we presented our JavaScript Seals and Fish project we had been working on for the past few weeks. My partner Tina completed much of the remaining work the previous week on her own, as I was absent taking the SAT, so we had very little to do today other than present.

I felt the presentation went very well, though there was little to be said as many of the groups went about the projectin similar ways. It was very interesting to see how other people approached the same problems as we had, and how similar or different their solutions were to our own.

March 7, 2015

Today we began working on our new JavaScript Project, which again involves working with an ecosystem of fish and seals. So far our project has been going very well, and we have complete most of the work already in the first day.

Feb. 21, 2015

Today we looked more in depth at loops, and applied them to a new JavaScript concept: arrays. We also looked at JavaScript objects in general, and practiced modifying programs with objects that were already in place.

Feb. 14, 2015

Today we primarily focussed on loops in JavaScript. We talked about the two different types of loops, for and while, and applied them to multiple JavaScript applications. It seems loops have a number of useful applications, and I look forward to learning more about them.

Feb. 7, 2015

Today we began our new module of the Apprenticeship Program with an introduction to programming concepts using JavaScript. Having already taken this course from Shodor, the material was somewhat redundant, though I felt the material was an effective refresher to the JavaScript language. I look forward to what is to come in this module.

Dec. 6, 2014

Today we continued working on our Modeling Project. Those who were working on the VenSim model found it particularly challenging to create a working model with the parameters we were given; with the range of values at our disposal, it seemed nearly impossible to create a balanced model. I intend to continue experimenting to try and find a model that will work.

Nov. 22, 2014

Today we started working on our Modeling Project, which we will be working on for the next 3 weeks. My partner is Rohin, and together we have been working on modeling an ecosystem of fish and seals. Today I mostly worked in VenSim on creating a basic model, while Rohin worked in AgentSheets.

Nov. 15th, 2014

Today we began by quickly reviewing the Vensim application, then quickly moved to a new program called AgentSheets. AgentSheet is a modeling application with many similar functions as those of Vensim, but it allows for 2d visual modeling as well. We learned how to make a basic SIR model in this program, then we were given the task of expanding on this model to make it more complex, by adding in factors such as recover or immunity, and death. Finally, we were given a little time to work on our personal websites.

Nov. 8th, 2014

Today we started with review of the command line and its functions. Then we quickly moved to modeling in the Vensim Application. At first the program took some getting used to, but it quickly became apparent that Vensim has many conceptual modeling applications. We were first instructed to create a model of the spreading of sickness, then given the task of expanding upon this basic model to make a more complex one. I added a recovery function to my model, which took a bit to figure out, but in the end it worked quite well.

Nov. 1st, 2014

Today we looked at the usefulness of the command line, or in this case the terminal application. The terminal functions much like the interface with which we are familiar when using our computers (point and click), but without a graphical interface. It was much more difficult to perform basic tasks without this visual aid, but we found the terminal still has a fair amount of viability.

Oct. 18th, 2014

Today the theme was modeling, both theoretically, and in the real world. We began in pairs with the task of naming as many theoretical models as we could come up with to represent physical properties of a piece of rope. Then we moved to Excel, where we spent the rest of the day creating and modifying models regarding the spreading of sickness, and the spreading of heat. Overall, I enjoyed the chance to actually work on models in a hands-on environment.

Oct. 11th, 2014

The theme of today was the idea of Expectation, Observation, and Reflection: the three main principles to any scientific endeavor. Our class was taught by Dr. Panoff, whose teaching was a balance between fun entertainment and informative learning. We also focussed on the difference between common synonyms such as Necessary vs Sufficient, Consistent vs Conclusive, etc. In the end we were taught to distinguish the difference between what we think and what we know.

Oct. 4th, 2014

Today we mostly glossed over what is going to come in the year ahead, and reviewed proper work ethics, or etiquette, for an office setting. The most interesting part of the day was when Ron Broadnax taught us about making a first impression, by coming in dressed up in an interesting way. Essentially he wore the complete opposite of the dress code, and his fashion sense was pretty comical.


This is where I will post all my work throughout the year, including projects done for the Shodor Apprenticeship Program.

Fall, 2014

Spring, 2015

Summer, 2015




My work with image manipulation using the application of Gimp and Inkscape, many of which feature Phil List:

View Images