Welcome to my website! My name is Albert Gong and I am a Shodor Apprentice this year. Currently, I am a freshman at East Chapel Hill High School. I like to do math and science, and during my free time, I like to read, watch TV and run. I have also been playing the violin for at least 7 years. As an Apprentice at Shodor, I hope to broaden my knowledge and skills in STEM, as well as to gain experience in collaborating with others. I also look forward to new approaches in learning and problem solving from mentors, peers and myself. I am excited to be a part of Shodor and to engage in the Apprenticeship program this year.
The messenger application uses AJAX (jQuery), AngularJS and PHP
Blimp |
Taj Mahal |
Old Halloween Card |
Ernie Elvis |
NBC |
Nike |
Target |
Website Logo |
Background Selector |
Calendar |
Dane Joe |
Dice Statistics |
Dynamic Pages |
Random Hex |
Note: Blogs in the next section are stored in an XML file and accessed using PHP. (Click here to view XML Blog Project)
Vensim (System Model) |
JavaScript (Agent Model) |
These two models model a village from an agent and system perspective. Click here to view the HLD document.
Today was the first day of Shodor. We didn't do anything very major other than to go over the rules of Shodor (aka "Doom and Gloom") and get our Shodor accounts. We got our notebooks and a High Level Design (HLD) document for our websites. I need to brush up on my HTML and CSS skills and the Shodor tutorials will help me with that. I met this 8th grader named Joseph who goes to Carnage Middle School. He likes to play ultimate just like me but is probably way better than me at it. I also met this high schooler named Nick.
Dr. Panoff taught us a lesson called "How do you know what you know?" I found it very interesting that many sources online have false information and how easy it was for me to get misled. When people use Google, they rarely question the validity of the search results. We learned about some key vocabulary scientist use, such as the words necessary, sufficient, consisten and conclusive. In addition, I started on the HTML tutorial, which was mainly review for me. I created some of the HTML portion my website, but still need to finish it and make the CSS part.
The first hour or so at Shodor consisted of us reviewing our homework from the previous week with Dr. Panoff. He further reinforced the notion that we must verify the information presented to us by ourselves and question its credibility. After that, Ron taught us a lesson about office ethics. We learned that we had to be prompt, courteous, appropriately dressed, etc. in professional environements. Ron dressed up unproffesionally, which was really funny, to show us what not to do. I also met with Ron for my first meeting with my mentor. After lunch, I worked on my website, completing the HTML portion and starting on the CSS tutorial. Joel demonstrated to us how to connect to the server remotely. Along the way, I picked up some command promt skills, which I had always wanted to learn more about before. Side Note: Met with my mentor Ron on Oct. 24th 2015.
Today we began our modeling unit. We first learned about the types of models, including system models, computer models, mathematical models and graphs. Then, we used a forest fire simulation made by Shodor and tried to determine the mathematical relationship between the probablity of the fire spreading and the percentage of trees burned. Finally, Dr. Panoff introduced us to a rabbit population on Excel. I realized how powerful Excel was in terms of modeling and how I failed to utilize its powerful capabilities before.
I was introduced to a modeling software called Vensim today by Dr. Panoff. I think Vensim is very useful because it allowed me to focus on the conceptual aspect of a computer model without making me worry about the computer code behind it. We first learned how to use the Vensim application by creating a few examples, such as a rabbit population and epidemiology model. Later, Dr. Panoff told us to add on to the disease model by introducing more factors, such as immunity and natural birth and death. It took some time to get familiarized with the software but I soon got that hang of it.
(Make-up for class on Nov. 21st 2015) Dr. Panoff taught us a new method of modeling called AgentSheets, which is a modeling software online that unlike Vensim, needs a paid liscence to use. Two other students and I started with the basics by creating a simple model simulating the spread of disease between agents. AgentSheets is different from Vensim and Excel because AgentSheets requires one to model the behavior of individual agents, instead of the entire system. Additionally, AgentSheets is more visual that Vensim and Excel. While the AgentSheets model is running, the user can see interactions between each agent. After learning about AgentSheets, I am very interested in using this new approach to model other things. Side Note: Met with my mentor Ron on Nov. 29th 2015.
(Make-up for class on Dec. 5th 2015) Today was an introduction to a project on modeling. The goal of the project was to model a situation using Excel, Vensim and AgentSheets, and to reflect on how each modeling approach was able to model the situation. Ernie put everybody, including me, who was absent on the Dec. 5th class into one group. The other members of my group were Adithi and Nikkhil. After Ernie told us the general guidelines of the project, we began to brainstorm ideas. We all wanted to model something related to the spread of disease, and we eventually agreed to model the bubonic plague. Next, we drew our model in our notebooks. At first, we planned on including the population of fleas, rats and humans in our model, but later we realized that including three populations would be too complicated. To simplify our model, we only included rats and humans. One challenge we faced was connecting the rat and human aspects of the model. More specifically, we could not come up with a mathematical equation that incorporated the number of dead rats, healthy humans and sick humans.
Today was basically a day when everybody worked on their modeling projects. Since my group only started its project the previous day, Adithi, Nikkhil and I had a lot of work to do. Our first goal was to complete our model on Vensim, mainly because our Vensim model would act as an outline for our Excel and AgentSheets model. However, we still did not have an answer as to how we can connect the rats and humans in our model. After some thinking, Adithi and I realized that the number of sick humans equals a fraction of the number of interactions between dead rats and healthy humans. With Vensim, my group and I noticed that we kept on having floating point errors every time we ran our model. With the help of Ian, we concluded that our constant values in the model were too great, therefore causing some values to be too big for the Vensim software to compute. After tweaking it, we finally got the Vensim model to function properly. Once the Vensim model was done, we moved on to AgentSheets. At first, we had trouble getting our model to work. Our AgentSheets skills had become a little rusty since the last time we learned it, but after a few minutes we go the hang of it. Unfortunately, out computers got very slow and editing our model was very tedious. Adithi spent a descent amount of time getting the dead rats to fade over time, making our model more realistic. At the end, our AgentSheets model came together very nicely. We still needed to do our Excel model though, and we decided to come in during the weekday and work on it together.
Today was the last day of the fall module. Adithi, Nikkhil and I finished our project on time and gave a great presentation! I think we really pulled it together, even though we missed a week to work on the project. We spent quite a bit of time working at home, but in the end it was worth it. Overall, I felt that we were very productive. This project was both interesting and beneficial because it allowed me to apply multiple skills that I had learned in October and November, mainly modeling using Vensim, AgentSheets and Excel, HTML and CSS. Furthermore, I was able to utilize the project structure that Shodor emphasized from the start of the program: expectations (i.e., HDL document), observations (i.e., creating models using different approaches) and reflections (i.e., website). Of the three modeling approaches that we used, Vensim and AgentSheets are most intuitive to use. They are very visual and mainly focus on the conceptual aspect of the model, rather than the mathematical aspect like Excel does. Howeverm Excel is the most powerful because it can compute many more numbers than Vensim and AgentSheets can; Vensim frequently outputted float point errors and AgentSheets is limited by the number of agents one puts on the world. Using Vensim and AgentSheets, my group and I were easily able to create very complex models. On the contrary, Excel was harder to use and our lack of experience limited us to create simplified versions of our Vensim and AgentSheets models. Hence, I am very interested in building my Excel skills and experience so that I can create more robust and realistic models in the future. Side Note: Met with my mentor Ron on Dec. 19th 2015.
Today was the first day back at Shodor after the Fall Module. It was nice to get back into classroom and to begin to learn something new. We mainly learned the basics of JavaScript, which included strings, boolean, variables, conditional statements and "if" statements. We also practiced what we learned by implementing them in mini-projects. The most interesting thing I learned was linking the JavaScript and HTML codes because I had never done that before. Most of the other topics were basically review for me. Aaron was the main teacher, but an intern at Shodor named Anja also taught us. I liked the curriculum that Aaron and Anja taught better than other JavaScript lessons that I had previously learned from, like CodeAcademy, because it focused on using JavaScript in order to solve specific problems, rather than on simply learning JavaScript syntax. Shodor's curriculum better enables me to use JavaScript for larger projects in the future.
(Make-up class for Feb. 13th 2016) Today I learned more about JavaScript. Aaron taught me about "for"/"while" loops and arrays. I had already learned about the concept of loops and arrays from JavaScript tutorials and by learning Python, another scripting language. As a result, most of what I did today was reviewing JavaScript syntax. Aaron walked me through examples of loops and arrays from some example projects, such as the Bouncing Balls Model and Follow the Leader Model. Afterwards, I practiced using loops and arrays in several practice problems and mini-projects. Side Note: Met with my mentor Ron on Feb. 27th 2016.
(Make-up class for Feb 20th 2016) Today was the last day of learning JavaScript in class. Aaron taught me functions and objects. I found this to be the most interesting lesson out of the three Introduction to JavaScript lessons because it was about more complex concepts. I had learned about functions and classes in Python before, so I was familiar with the idea of functions and objects in JavaScript. Aaron told me that classes and objects are essentially the same even though they are called different names. One thing that I found to be different between Python and JavaScript is that in Python, one can define methods (functions for a defined class), while in JavaScript one cannot. I hope to use functions and objects in future programs and projects.
Today we started our Spring Module Project. My partner was Armaan and our goal was to create a simulation using JavaScript in order to model a forest fire. We first did the HDL, which had to be more detailed than the one we made for the Fall Module Project because we had to include pseudo-code and a step-by-step plan for coding the JavaScript part. Pseudo-code is basically a detailed explanation of all the functions and variables to be used in the code. I found using pseudo-code to be very helpful because it allowed me to plan the specifics of the program before coding, ultimately reducing confusion and errors later in the project.
After Aaron approved my group’s HDL from last week, I was able to start coding with JavaScript. Although Armaan wasn’t able to come to Shodor this week, he had created a website for us to put our model in it. Because the HDL was detailed, I was very clear as to how to create my program. I obtained the “fire starter” code, which allowed the model to “ignite” wherever the user clicked, from Ernie because I did not know some of the functions needed in order to implement the “ignite” feature. By the end of the day, I had finished the forest fire model with “firefighters” who “extinguished” a burning tree within a certain distance from a firefighter. However, a bug in my program existed that caused some of the trees extinguished by a firefighter to reignite.
Because I was mostly done with my project, I mainly helped other people with theirs. I helped my friend Shawn and a girl named Varsha, improving my teaching skills and deepening my understanding of programing concepts used within the project. I noticed that the most difficult concept to explain was that of objects. I helped Varsha with the basics of her program by explaining my code to her and helping her write some of her code. I also helped Shawn to implement the spread of fire and people/firefighters in his model. Side Note: Met with my mentor Ron on Mar. 19th 2016.
This week was the last week for us to work on our projects and to present them to the class. Armaan came today but had to leave before the presentation, so I had to present our project by myself. My model was basically done except for the bug mentioned in the previous blog. Aaron was able to help me fix the bug and told me that the issue was with assigning the color property to each tree object. Afterwards, Armaan and I added more features to the model like wind direction and customizability of the number of trees, percent chance of fire spreading, number of firefighters and tree burn time. Jim helped me with the wind feature and Armaan added input boxes and buttons on our website. After lunch were presentations. I found it interesting that every group had similar models, especially in terms of additional features like customizability. Dr. Panoff suggested that we should have added a feature to analyze the results of running the forest fire simulation or at least a way to output data. I thought this was a good idea because it allows one to learn something from the model.
This week was all about parallel computing. Aaron was our main teacher, but Dr. Panoff started the morning by introducing the topic to us. Some of the most important things I learned from Dr. Panoff were the uses of parallel computing: to make tasks better, to make tasks faster or to do more tasks. Afterwards, Aaron took over and we created our “parallel computing notebooks” which were used to record answers to activities we would complete throughout the lesson. Using real-world examples, activities helped us conceptualize parallel thinking. After a few activities, I found them to be quite repetitive. I was particularly intrigued by the top500.org website which lists the most powerful supercomputers in the world and some information about measuring computing power and specific supercomputers, like the BlueWaters supercomputer in Illinois. Side Note: Met with my mentor Ron on Apr. 9th 2016.
Today was the last Shodor class before the summer. The main goal was to finish the parallel computing unit. We finished our parallel computing notebooks after completing the rest of the activities. After lunch, Aaron led the entire class through an actual supercomputer which was created by linking the apprentice computers using a custom Linux operating system specifically designed for educational purposes by Shodor. Aaron showed us some command line, which we used to access a galaxy simulation. I thought it was pretty interesting, especially since it was the first time during this unit that we used parallel computing for a computer program. Before, we had mainly done activities to help us with parallel thinking, not necessarily parallel computing specifically. I want to learn the details of parallel computing, such as how to create a program that utilizes parallelism.
Today was the start of my first block at Shodor. Since it was Block 2, we would be learning PHP. Kaleb first taught us PHP, which has syntax very similar to JavaScript. PHP is also very different from JavaScript, though, because PHP is a server-side programming language whereas JavaScript is a client-side programming language. In other words, PHP runs on the server and JavaScript runs on the client's computer. After learning the syntax, practiced PHP by doing some exercises, such as listing the numbers from 1 to 20. We then worked on some more complex PHP exercises, like a website that changesthe background to a random color every time the page is loaded and a website that displays a calendar. I helped Jim, Akash and Shawn with some of these exercises, and Vincent and Kaleb helped me with mine.
In the morning I documented for the Explorations in Engineering workshop, in which Herjot taught about bridges and trusses. In the afternoon, I finished most of my PHP projects, and helped Shawn, Akash and Adithi. Ernie helped me with the Dynamic Pages project, which uses page variables to display multiple webpages using a single file, and the background selector project, which uses cookies to store a user's background color selection. I still need to work on XML blog.
Today I documented for the Forensics workshop. Dylan taught ink chromatography, which is about identifying ink by separating its different pigments. In the afternoon, I finished my background selector PHP exerciese by fixing cookies and the XML blog, which Aneesha helped me with. I also helped Shawn, Akash and Jim with the XML blog and Adithi with the dice statistics project. Travis taught us some mySQL, but I wasn't able to attend his lesson because I had documentation. I wanted to learn more about mySQL because I heard it was very powerful to organize data.
Today I just helped other people with their projects since I had finished all of mine. I also improved my website and other projects, especially their HTML and CSS components to make them more user-friendly. I was looking forward to working on the calendar project that would use PHP and mySQL, but Travis told us that we wouldn't do it today.
In the morning I documented for the Web Design workshop. Joel taught the students about JavaScript, HTML and CSS. Afterwards, Ernie reviewed mySQL with us, which was helpful. He also explained to us the PHP project which we would be working on next week. I was thinking about creating a calendar which can display, create, delete and edit events. Later, I went to the trial going on in the Forensics workshop. The forensics students were to use evidence that they had gathered throughout the week to determine who stole the cookies (the "crime").
Ron and Caroline taught us engineering using a ramp to launch a marble. My group consisted of Shawn and Jim. After experimenting with the effect of marble height on distance, we used a Shodor applet to model our data and extrapolate the height at which the marble would need to be dropped in order to get the marble into a target on the ground. Then we raised the target onto a chair and used the model again to calculate the height of the marble. My group won/tied both times. Afterwards, I started on my PHP project, which was a calendar.
Today Kaleb taught us about circuits. He first showed us a powerpoint to explain the basics of circuitry including resistance, current, voltage, resistors, capacitors, wires and batteries. Afterwards, we created our own circuits using breadboards and an online applet where one can create and run their circuit virtually. I had used breadboards before in a Science Olympiad event called Amazing Mechatronic, but I didn't really work on the event that much. After practicing with some simple and complex circuits, I felt more familiar with circuitry. After lunch, we worked on our PHP projects.
Today Herjot taught us about bridges. I had documented for the Explorations in Engineering workshop, in which Herjot taught the same lesson the workshop students, so I knew most of what we were going to do beforehand. We first used LEGOs to create possible two-brick structures and recorded which structures toppled and which structures stood. We synthesized our results into a hypothesis as to what makes a structure topple or stand. Afterwards, we constructed more structures both physically by using LEGOs and online by using an applet. We finally concluded that a structure would stand if the center of mass is over the base of the structure and topple otherwise. We then used another applet with which we could explore forces on trusses. Following break, we participated in a challenge to see who could create a structure of trusses using the applet with the least highest force exerted on a member of a truss, which Jim won. In the afternoon, I worked on my calendar project.
Caroline taught us about structures. The main activity was to create structures using straws and pipe cleaners that would be able to hold marbles. My partner was Shawn. My initial idea was to create a giant tetrahedron, but after some experimentation with smaller models I realized that the straws would bend. Shawn's idea was to create a structure in the shape of a triangular prism. We believed that this design would ultimately be stronger than the tetrahedron. The main focus when creating our structure was keeping it rigid so that it would not bend or twist under pressure. We reinforced each layer of the structure with cross beams and extra pipe cleaners. After building for about 3 hours, we tested our structure. Our structure was about 34 cm tall and held the maximum amount of marbles possible, getting us first place in the competition (scores were the product of the height and marbles). The second half of the day consisted of working on the PHP project. I had difficulty fixing a bug related to deleting events in my calendar, which I was eventually able to fix at home.
Ojas taught the apprentices about buoyancy/boats, but I was documenting for Intro to Programming Concepts. After lunch, I worked more on my calendar project and helped others with their projects. One of the issues I had with my program was preventing form resubmissions when the page is reloaded. If a user submits information into a form, he/she can resubmit that form by reloading the page without re-entering information. This could be a problem, since duplicate events could be created unintentionally. I worked with Nick to find a solution and finally stumbled upon a way to solve the problem using method called GET/REDIRECT/POST. Essentially, it uses headers in order to redirect the user every time the form is submitted.
Having figured out how to use the GET/REDIRECT/POST method, I helped Anagha prevent form resubmissions. I then helped Shawn, Jim and Abia with their PHP/mySQL projects. I left at 2:00PM though because I had a dentist appointment.
I helped Shawn and Jim with their PHP/mySQL projects and Armaan with his background selector PHP mini-project (he wasn't at Shodor for the second block). I then tried to learn Ajax, which allows information to be sent to the server without reloading the page. Keith helped me a little, but we didn't get my program which is supposed to send information in a form to a server to work.
Today I helped Shawn and Jim with their PHP/mySQL projects. Their calendar programs couldn't delete events. Then I did reception.
Tomorrow everyone will have to present a Shodor applet of their choosing. I chose the Cross Section Flyer and Derivate applets. The Cross Section Flyer displays the cross section of a 3D shape, such as a cone, cylinder or prism. This can help users understand conic sections, a concept usually learned in precalculus math class. The second applet, Derivate, graphs the line tangent to a function over the function's domain, helping the user to understand derivatives in calculus. In the afternoon, I helped a student named Gilani and another named Ritvik in the Advanced Programming Concepts workshop. I also met with my mentor today in the morning.
Today we presented our applets. I presented Cross Section Flyer. Afterwards, we watched the workshop students present their programs. Adrian, Andy and Ritvik presented their Pacman programs and Gilani presented his disease model program. I liked how Adrian and Andy implemented an algorithm to allow the ghosts to chase the Pacman. I also liked how Gilani created a graph of the healthy and sick populations in his model. After Shodor was the LAN party. I played cards and video games and ate pizza.
Today we implemented form validation into our PHP projects. Essentially, it prevents users from injecting code into forms, making them more secure. Nick helped me with form validation by explaining to me some of the required functions. Because most of the apprentices had finished their PHP projects, Ernie introduced us to a new project, for which we were to research a programming library of our choosing and implementing it in a previous or new program. For the afternoon, I documented for the Shodor Scholars Program (SSP). Levi taught the SSP class about computational rounding errors and agent models.
Today I worked on my new project. I decided to create a messenger/email application using the AJAX library from jQuery. I tried to use AJAX before, but until today I had not been able to get it to work. Today I finally implemented it successfully. I also helped Jim with implementing a JavaScript library called FullPage.js into his website. I am thinking about using FullPage.js for my website as well because it is very user-friendly.
Today I worked more on my project. I also helped Abia and Anagha with encrypting their database. Encryption doesn't seem too complicated. I hope I can implemenent it in my calendar application in the future. However, I will need to understand how the encryption works before I use it.
Today I worked more on my messenger project. By the end of the day, I got it so that a user is able to send his/her message to and view messages he/she sent or received. Because the program uses AJAX (or Asynchronous JavaScript and XML) which sends information to the server automatically while the user is on the website, the messenger website is not refreshed when a user submits a message. However, the user is still required to reload the page in order to view messages sent to him/her by another user. I need to improve the program so that messages are received the instant the sender sends them.
To improve on my messenger program, I decided to implement a method of sending information from the server to the client without reloading the page called push technology. There are many ways to use push technology, but one of the easiest ones to use is called AJAX Long Polling. Essentially, it allows the server to continuously send small chunks of information to the client, which is then able to piece these chunks together, without the server needing to know the actual size of the entire message. After getting the push technology to work, I formatted the webpage using CSS so that sent messages will display on the right-hand side of the chat window and received messages will display on the left-hand side of the chat window. This took some time, as I had to find a CSS property called justify-content and learn about the display property.
Today was the start of the fourth block. As a result, we received new projects. One of the projects is for everyone to create a high level design document (HLD) for a story/model. We are then to choose an HLD besides our own to follow and create a model accordingly. Today was primarily for us to write our own HLDs. There were multiple model "stories" to choose from. These "stories" are basically scenarios that are to be modeled. For example, the story I chose is about the spread of cancer among a Tasmanian Devil population. The goal is to model healthy and cancer cells in a petri dish using any modeling method (AgentCubes, Vensim, Excel, JavaScript, etc.).
Today I finished my HLD. Ernie suggested that I include more instructions in my HLD on how to build a system model for my story in case someone chooses to use Vensim or Excel. In an agent model, each agent or individual change independent of other agents. On the other hand, in a system model, certain aspects of the model are modeled collectively. In addition to the HLD, I also worked on my messenger application. This time, I implemented a JavaScript library called AngularJS. Basically, it extends HTML attributes with directives and binds data to HTML with expressions. For example, an input box using AngularJS would be able to display the value of the input box while information is being typed into it. I used AngularJS to show search results for senders and recipients in my messenger program.
Today I did documentation for SSP and improved my website. I implemented FullPage.js, which structures my website into blocks and slides. Jim helped me since used FullPage.js on his website. To use the library, you first download the FullPage zip file, which contains CSS and JavaScript files, and link them in your index.html file. Then I migrated my blogs from an HTML file to a XML file. Using my XML blog PHP project, I was able to access my blogs from my website, making my website file easier to read and more organized. FullPage allowed me to quickly format my website because much of the JavaScript and CSS were already written, but it is not very simple to use nor is it very versatile because the pre-written files have thousands of lines of code and what it can be used for is very limited.
Today I started working on my model. Shawn gave me his HLD, which gives instructions on creating it. The model, called Levi Conquers All, is of a village with builders, who collect wood and build houses and villagers who gather smurfberries and water. For the model, I decided to use JavaScript because it is easier to use than AgentCubes, especially since each agent in the model has many properties. I started by creating a canvas in the HTML file and creating agent objects in JavaScript. I also worked on getting the builders, on type of agent, to move towards the trees, but didn't get this to work.
Today I worked more on my JavaScript model. Using the distance formula, I created an algorithm that moved builders towards trees. I used the same algorithm to move the villagers towards smurfberry bushes and houses. I also created an algorithm to prevent objects from overlapping when they are spawned. Previously, trees and smurfberry bushes would appear randomly anywhere on the canvas, but, now, they can only spawn in an open space. So far, creating this model has been pretty tedious. Although I have learned everything I need in order to create the model, the model has so many components, requiring a high level of organization in the code. However, the model will probably be more realistic than a less complex model. In addition to working on my model, I helped Varsha by teaching her mySQL and getting her started with her database project. I first showed her the basic mySQL commands (CREATE, DESCRIBE, SELECT, INSERT, DROP, ALTER, SHOW). Afterwards, I explained to her the project. Using my own database project as an example, she was able to connect to her database from the server using PHP.
This week is the last week at Shodor. As a result, I will mainly finish my photo editing assignments and wrap up all the projects I did over the year by fixing bugs and adding small improvements. I do not have much experience with photo editing, at least compared with programming, but would be interested in learning. The photo editing application I used today was Inkscape, mainly used for creating vector-based images. Because they are expressed using mathematical equations, vector-based images are useful as logos, which are frequently resized. Bitmaps, on the other hand, are expressed as a matix of individual pixels, making them look grainy if zoomed in. My Inkscape assignment was to create several logos, such as that of Nike and Target, while following a tutorial. Inkscape definitely has a learning curve due to its myriad of tools and features. Hamza showed me the pen tool and helped me with the Nike logo while Shawn helped me with the Target logo. In the afternoon, I helped Varsha and Anagha with their database projects. Varsha's had issues with constructing valid mySQL queries while Anagha's was unable to display a table.
Today I finished my Inkscape projects, the last one of which is to create the NBC logo. I also organized my files and added my database project (calendar) and my messenger application to my website's portfolio. I still need to implement AJAX in my calendar project in order to allow users to edit events and add my PHP projects like my background selector and dice roller to my portfolio. By the end of the week, I will need to meet with Ron, my mentor, in order to show him my projects. Before lunch, I helped Varsha with her database project. Then, I left for a violin lesson.
Today I worked on my Gimp projects. I started with the blimp project, in which I used a select tool to create three blimps from one original blimp. Jim and Shawn helped me with layers and other tools. Second, I worked on adding an image of the Taj Mahal a background of fireworks. Next, I learned about using image filters and changing brightness, contrast and saturation by creating an old Halloween card from an image of a forest. After using Gimp and Inkscape, I noticed that Gimp is more useful for editing while Inkscape is more suited for drawing.
Today I created a Vensim model of a village based on the HLD Shawn gave me. Anagha helped me review Vensim since the last time I used it was during the fall module. Because Anagha modeled a village too, I used her Vensim as an example to help me. When planning my model, I realized that had to change key components of my JavaScript model. For example, because I was created a system model, there would be no difference between day or night and the villagers and builders would not need to spend time moving (food and wood would be "collected" instantaneously). I also learned about using "if then else" statements and the min and max functions in my equations. I found the villager population graph interesting because it was not entirely linear or exponential like many previous graphs I had seen before. Instead, it was a piece-wise function that decreased quickly and then increased slowly.
Today I finished my projects and presented some of them. First, I worked on my Ernie project. I decided to photoshop Ernie's face onto in image of Elvis Presley, which surprisingly didn't take very long and turned out very well. I then updated my personal portfolio with all my projects, including my Gimp, Inkscape and modeling projects. Most of the time was spent on formating screenshots of my projects onto my website. After lunch, I presented four of my projects: my website, the database project, the programming library exploration project and my Vensim village model. For my website, I explained the JavaScript library I used to format my website into vertical sections and horizontal slides called FullPage. Next, I demonstrated my calendar and messenger applications and explained AJAX, push technology and AngularJS. Lastly, I described my Vensim model. Overall, I am glad to have attended the apprenticeship program and proud of the work I have done. I hope to become an intern this coming school year and am excited to learn even more.