Welcome to Jim Li's Website!

About me

Hello, my name is Jim Li and I am a Sophomore, class of 2019, at Green Hope High School in Cary. Currently, I am living with my mom in Cary, NC. I was born in China and I lived there until my parents and I moved to the United States. Last summer (2015 and 2016), I went back for a month to visit my dad and other relatives and I feel like my trip helped me learn more about different cultures.

In school, I have always liked History because I enjoy learning about past events and how our ancestors shaped the world into what we have today. I also like Science because I think learning about how cells work is very interesting. Outside of school, I take drawing classes and I am a green belt in Hapkido. Previously, I was in the neighborhood swim team and I played soccer in FC Cary.

I enjoy making and watching simulations because I can easily picture them in real life. I have played the piano for three years, but I stopped playing and switched to the violin in 6th grade. I like playing in the orchestra with a group of friends a lot more than playing solo or as a duet. I played in the Davis Drive Middle School Orchestra for three years, and now I am in the Green Hope Orchestra.

Jim Li's Blog

  • August 2nd 2016

  • Today morning I started working on researching a Javascript library. I wanted to improve my website even further, so I picked a library that would help me make improvements on my website. I chose fullPage.js, a jQuery based library that would fullscreen scrolling websites. I put my about me, blog, portfolio, and resources pages in vertical slides, and each blog and portfolio entry would be in horizontal slides. I helped Shawn with his website. He wanted to use animate.css to add animations to some of the text on his webpage. I also helped Ben with his PHP Dice Roller program. He needed helped with making his program print the results of his dice rolls. I also helped Hamza with his Dice Roller program; he needed help creating a form to let the user input the number of rolls.

  • August 1st 2016

  • Today morning Ernie introduced us to what we would be working on this week. The first thing we had to work on was to learn about form validation and add it to our php projects that had input boxes. This would insure that people would not be able to input code and mess up my programs. I had some trouble getting the form validation to work, but Shawn and Nick helped me a little and shortly after lunch I finished it. The second thing we had to do was to research a Javascript, PHP, or CSS library and either use it in one of our existing projects, or make a new project using that library. I am thinking about using a PHP library to add more functions to my MySQL/PHP Calendar project. Today I also made some changes to my portfolio in my website. I added a small picture to each item, so the user can see the project (or get a small preview) without clicking on the link.

  • July 29th 2016

  • Today morning I reviewed my two Interactivate Applets. All of the apprentices that were assigned this project then presented their applets. I feel like my presentation went ok. I think my presentation was a little short, since the applets I chose, Pattern Generator and Sequencer were very basic and self explanatory. Then we, the apprentices, watched the Advanced Programming Concepts workshop students present their projects. One student made a model that simulated the spread of a disease in a population. Two other students were partners, and they use Javascript, HTMl, and css to make a pacman game. In the afternoon, I was at the reception desk. While there, I added some finished touches to my new website, since I had finished all my projects that were assigned this week.

  • July 28th 2016

  • Today morning I was documenting the Advanced Programing Concepts workshop from 9:00am to 12:00pm. The workshop students worked on their Javascript project. I overhead Ernie in the other room talk about our Applet project. We will teach the class our two applets tomorrow. The workshop students also learned about the redraw function, which forces the page to reload. They also learned about using for loops or while loops to loop through and check each value of an array. One workshop student made a disease model, while another one made a Pacman game. This afternoon I reviewed the two applets that I will teach to the class tomorrow. I also improved my website. There is now a hand pointing to the icon of the page you are currently on.

  • July 27th 2016

  • Today morning I worked on my Website HLD. I decided that I wanted my new website to be simple and easy to use. It would contain much of the same information as my old website (blog, portfolio, etc). Today I helped Shawn with his Calendar project. His GET form was not saving the value into the url. I also tried to help him create a cookie to save the user input, but the cookie did not work. In the afternoon, I worked on creating my new website. I chose a new color scheme, and I put the links to my blog and portfolio at the top of the page, in clickable icons. I finished my new website at home.

  • July 26th 2016

  • Today morning I started working on my Applets project. I reviewed what both of the Applets that I chose were used for. The Pattern Generator creates a random incomplete pattern and lets the user complete the rest of the pattern. The Sequencer allows the user to create their own number pattern by inputting the start number, and what number the start number should be multiplied/divided and/or added/subtracted by each time. I also helped Adithi with the css on her website. I also started on the HLD for the design of my new website. Later, in the afternoon, I helped Shawn with his MySQL/PHP Calendar project. On my MySQL/PHP Calendar project, I also decided to allow the user to select the year; Albert helped me with the PHP date() function.

  • July 25th 2016

  • Today morning Ernie introduced us to a new project. We were to pick two applets from Shodor Interactivate and learn about them. On Thursday or Friday, we will teach the other apprentices about our two applets. This project should help us learn how to teach others, a skill that we will use if we continue as interns. Today, I added some functions to my MySQL/PHP Calendar. I added some code that would stop the program if the user inputs an invalid month. Otherwise, I am finished with my MySQL/PHP Calendar project. I also helped Shawn with making his PHP delete a row from his MySQL table. I also helped Akash make his Calendar display certain events from his MySQL table when the user clicks on certain days.

  • July 22nd 2016

  • Today morning we used an applet to simulate the buoyancy of an object. An object can float when their density is less than the density of the water. If the density of the object goes up past the density of water, then the object sinks. This is what allows certain objects to float. Our experiment was to get into groups. Each group would have $1000 dollars to buy certain materials (cardboard, tape, styrofoam cups, etc.) to make a miniature ship that could hold the most marbles. My partner was Nick. We bought seven cups and 15 inches of duct tape, for $470. We put four cups facing up, and three cups upside down, and we taped them together. Our idea was to use the four cups facing up to hold the marbles. Then the three cups that were facing down would hold air and keep the ship from sinking from the weight of the marbles. We tried to predict how many marbles our ship could hold, but we could not calculate the effect that the trapped air inside our cups would have. We predicted that our ship could hold 200 marbles. In the end our ship held 400 marbles (all the marbles that were available). Since our prediction was not the most accurate one, we did not win. I have done all of the Engineering things that we did this week, since I attended the Explorations in Engineering workshop last year. In the afternoon, I was at the reception desk. I finished my MySQL/PHP Calendar project, and I added it to my portfolio.

  • July 21st 2016

  • In the morning we used plastic straws and pipe cleaners to build a structure. Our job was to place a cup on the structure and see which structure could hold the most marbles without toppling. My partner was Mikayla. We built a triangular pyramid. Our structure got in 2nd place, but our structure was able to hold the most marbles (168 marbles). The group in 1st place held less marbles, but they had a taller structure, so they had more points (points = marbles * height). In the afternoon I worked on my MySQL and PHP Calendar project. I added features so that the user could click on a day and it would show them the event on that day. The user can also add a task directly to the MySQL table. The user can also view all the days with a certain task. Tomorrow, I hope to finish my Calendar project.

  • July 20th 2016

  • Today morning we worked on creating structures with Legos to see which ones stood and which ones toppled. The ones with their center of mass passing through the base tended to stand. We also used an applet to simulate the trusses in a bridge. Our job was to use a certain amount of nodes and members to hold a predetermined amount of weight with the least strain on our trusses as possible. I won the competition, with my biggest number being 29. In the afternoon, Keith helped us set up our PageRender pages. After that I worked on the calendar project. I tried to make the events for each day show up when the user clicks on the day in the calendar, but it is not working at the moment.

  • July 19th 2016

  • Today morning we worked on electrical circuits. We were given a small circuit board with a 9-volt battery, capacitors, resistors, LEDs, and wires. We used an applet that simulated electrical circuits. On the applet, we built a simple loop with a battery that powered an LED light. Then we built the same thing using our real materials. Then, we used a 555 timer chip with a capacitor to make a circuit that had an LED light that flashed on when the capacitor emptied, and off when the capacitor was refilling. Next, we used added another LED light that flashed on when the other LED was off. We got to keep our circuits. Next, Ernie updated our MySQL and PHP project. We could still do the calendar project, but we were to have a MySQl table with at least six fields. We also had to use PHP to allow the user to add more items to the MySQL table. In the afternoon, I documented the Web Design workshop. They learned how to make divs in html and set the background image of a page using css.

  • July 18th 2016

  • Today morning we did a project from the Explorations in Engineering workshop. We got into groups of three. Albert and Shawn were in my group. We put a chair on a table and put a half tube running down it as a ramp. Our job was to measure the ramp and use a formula to calculate how high we had to roll the marble down to land at a certain spot. This afternoon we learned how to use PHP to connect to a MySQL database and display the fields of a table in HTML. I ran into no errors while writing the program. Tomorrow we should continue testing our marble ramp.

  • July 15th 2016

  • Today I worked on the MySQL calendar project. I created a table in MySQL with dates of important holidays. I was able to connect the table to a PHP file. The next thing I have to do is to make the calendar show the holidays. I also learned about how Subversion can keep track of your files and the changes you made. This makes it easier to revert to an older version something goes wrong. Subversion can also keep older versions of web pages and documentation. After the afternoon break, we acted as the jury in the Forensics workshop. They were conducting a 'fake' trial to determine who was the culprit of a particular crime.

  • July 14th 2016

  • Today, the first thing I did was write a report of the Explorations in Engineering workshop that I documented yesterday. I asked my peers about what they learned yesterday afternoon, and they said they learned about MySQL tables. Then, I added my completed PHP programs into my portfolio. Then, because I was finished with my PHP project, I worked on my website. I tried using a different color scheme, but it did not look good. I then simplified the navigation menu. I also linked all of my PHP programs onto one page. We were then assigned a project. We have to use PHP and mysql to make a program that has a calendar with events on it.

  • July 13th 2016

  • In the morning, we worked on our PHP projects. I made a program that would take an inputted first and last name, and it would switch the first letters of both names. For example, the name Dane Joe would become Jane Doe. Next, I helped Albert with making a cookie in his program that would allow the user to select a background color. After that, Albert helped me with creating a program that would display blog entries from an XML file. I had trouble linking the XML file to the PHP file. After lunch, I was assigned to the job of documenting the Explorations in Engineering workshop. I took notes and took pictures about what the workshop students were learning. They built and ramp and rolled a marble down and used a formula to try and predict where the marble would land. Formulas that can predict trajectories are used in many real life situations such as space travel and military operations.

  • July 12th 2016

  • Today, as part of our "Other Duties as Assigned", I was at the front desk. There were no calls, so I worked on my php project until lunch. I worked on a program that could roll dice and show you the sum of each output. After lunch, I continued to work on my project. I made a PHP file that could dynamically load content. I used to $_GET variable to link to each page that I wanted to show. I also made a program that can let the user select the background of the page. I added a cookie that would save their selection and show the background they selected when they reloaad the page.

  • July 11th 2016

  • Today was the first day of Summer Block 2. I was not able to attend Block 1. We were introduced to the server side language PHP. We learned about variables, arrays, loops, about how concatenating can combine two arguments, and about writing if/else conditional statements. We learned about how PHP could generate HTML by using the echo tag. After we were introduced to PHP, we were assigned five exercises to practice what we learned. I created loops that could count to certain numbers while skipping the odds or skipping certain numbers. While trying to put the results from the loop into a table, Albert helped me with some of the code. After lunch, we were given a project with many different exercises to complete. With some help from an intern (I'll add his name later), I was able to make a function that could let the user type in a month. The function would then take the user input and generate a calendar for that month.

  • April 16th 2016

  • Today was the last class of the Spring Module. We continued to learn about parallel computing. We ran bccd on each of our computers. Every computer acted as a node in a cluster. We used some basic Linx to combile and run a model that showed an expanding galaxy. When we increased the number of stars, the model ran slower because we were only running it on our own computer. We then linked all of our nodes together and ran the model. We could put more stars and run the model faster since we had multiple nodes working together to run the model.

  • April 9th 2016

  • Today we learned about parallel computing. Dr. Panoff gave us a lesson talking about parallel interactions in nature; how many different life 'functions' can at the same time. We learned about the difference between Single Instruction Multiple Data and Multiple Instruction Multiple Data. We also learned about the different supercomputers in use today.

  • April 2nd 2016

  • Today was presentation day. We had until 12:30pm to finish our Forest Fire project. My partner Nikkhil was not present today. I added a wind variable onto our model. The user can choose to have the wind blow from the North, East, South, or West. The wind affects which way the fire spreads from tree to tree. I presented the project by myself. I think the presentation went well. I got a lot of feedback of more variables I can add to my model. I can add a fire intensity; the stronger the fire is the farther and faster it spreads.

  • March 19th 2016

  • Today Nikkhil and I worked on our Forest Fire model together. We were able to get trees to catch on fire. Our fire can also spread from a burning tree to a healthy tree. We ran into a lot of errors today, but Ian and Ernie helped us when we needed help. Next class, we plan to improve our model so that once our trees burn for a certain amount of time, they turn black, to show that they have burned out. I really enjoyed succesfully making the fire spread from tree to tree after we had fixed our errors.

  • March 12th 2016

  • Today Ernie checked our High Level Design document. Nikkhil and I started on the code for our model. We created a website to display our model, and we also made a tree array to hold the details of all of our trees in our model. We created a loop for our program to create and display every tree in a random spot on our website. Next class, I hope that we are able to work on our model so that we can get fire to spread from tree to tree.

  • March 5th 2016

  • I came at 11am today because I had a test at Chinese School that I had to take. Ernie got me caught up with our new group project. My partner for this project is Nikkhil. Our project will be simulating a forest fire. We have to create a plan for our program, then we have to get it approved before we can start coding. So far, Nikkhil and I are almost done with the planning stage. Next class, we plan to start working on our website and the code.

  • February 20th 2016

  • Today we expanded our knowledge Javascript. Aaron taught us about arrays, objects, and the canvas. We modified two programs. In a program where large fish ate small fish, I added a reset button. I also made an addiction function that could take two inputted numbers and add them together. Near the end of class, we practiced effective ways of commenting code, so that it will be easier for people to understand.

  • February 13th 2016

  • Today we learned about if/else statements, for/while loops, and arrays. We worked on two Javascript functions: one program uses if/else statements to tell the user what letter grade he recieved and if he is eligible to vote. Another program using loops to be able to find the factorial of an inputted number.

  • February 8th 2016

  • Today was our first class of 2016. We learned about Javascript conditionals, variables, and the "getElementById" command. We also made a function that can convert inches to centimeters.

  • December 19th 2015

  • Today everyone had three hours to work on completeing their project. Ernie helped us with our project website, and we added the links, downloads, and descriptions to each model. We also presented our project today. I think everything went well, but our Excel model would not download so we had to present our Excel model using our screenshots on our website.

  • December 12th 2015

  • I was not able to attend today so I communicated with my partners of my group and I also worked on my part of the project (Vensim and AgentCubes) during the week.

  • December 5th 2015

  • Today we received the instructions to our first group project. Each group had to choose a topic and create a High Level Design document, an AgentCubes, Excel, and Vensim models. I was decided to be in a group with Ben and Joseph. At first we were thinking about choosing the rise and fall of the economy as our topic, but we decided that modeling a predator vs. prey relationship suited us better. We create our High Level Design document for our project, and each of us got to work on our parts.

  • November 21st 2015

  • In class today we learned how AgentCubesOnline worked, and how to create a simple sickness model. Since I had already learned the basics of Agent Modeling in the Shodor Scholars Program, I was able to expand my simulation. In addition to sick and healthy people, I added a doctor who could cure sick people, and a soldier who could kill sick people. In addition, I also helped my peers in my pod with if/else commands in their AgentCubes model.

  • November 14th 2015

  • We learned about creating models in Vensim. Dr. Panoff walked us through the process of creating a model to simulate how sickness spreads. Near the end of class I added more funtions to my model, so it could count the number of dead and immune people. This class was mostly review for me since I already learned how to create models in a workshop.

  • November 7th 2015

  • Today we learned about the different types of models that we can use. As a class, we used a Interactivate Fire Model. Each of us was assigned a burn probability and we ran through the model and averaged our results. Then we plotted all of our data onto a graph.

  • October 24th 2015

  • Today everyone was allowed to bring their own laptop, because Joel walked us through how to access our public_html folder at home. That way, we could work on our websites or any future projects from home. Since I didn’t bring my own laptop today, I took notes instead.

  • October 17th 2015

  • Today Dr. Panoff gave us an interesting lecture about how a lot of the sources in websites like google and Wikipedia are either misleading or wrong. Some citations say that a source says a certain fact, but when you check the source, the fact isn’t there. Other websites just source themselves, or their own database. I also started working on my personal website today. I studied the HTML tutorial and I typed the basic HTML for my website.

  • October 10th 2015

  • Today we read the Apprentice Handbook together, and we introduced ourselves to every other apprentice. Dr. Panoff also explained how and why the work we do at Shodor affects people and organizations globally.

  • Jim Li's Portfolio

  • PHP/MySQL Calendar Project

  • This project uses PHP and MySQL to allow the user to view the tasks on each day, and the user can add and delete tasks. A Shodor username and password is required to view this. (7/14/2016 - 7/22/2016)

  • PHP Project Instructions

  • This document contains the instructions for our PHP project. (7/11/2016 - 7/13/2016)

  • PHP XML Blog

  • This program uses a PHP loop to display blog entries in an external XML file. (7/13/2016)

  • PHP Dane Joe (Letter Swapper)

  • This program allows the user to input their first and last name. The program then takes the first letters of their first and last name and switches them. For example, Dane Joe because Jane Doe. (7/13/2016)

  • PHP Background Selector

  • This program allows the user to select a background color, then saves the user's choice in a cookie to display the next time they visit the page. (7/12/2016)

  • PHP Dynamic Pages

  • This program contains functions to dynamically load pages. (7/12/2016)

  • PHP Dice Statistics

  • This function uses random number generators to roll dice and add the sum of the results. (7/12/2016)

  • PHP Calendar

  • This program can take the user input and generate a calendar for any month of 2016. (7/11/2016)

  • PHP Random Hex Code

  • Each time the page is refreshed, this program generates a random hex code to use as a background. (7/11/2016)

  • PHP Practice

  • We used this program to practice making cookies. This program takes the user's name and age, then it saves it into a cookie to display when the user visits the page again. (7/11/2016)

  • PHP Exercises

  • This contains some of the programs we made to practice what we learned about PHP. First is a loop that counts to five. Second is a loop that counts to ten using only even numbers (This is also displayed as an html list and as an html table). Fourth is an array that counts the number of characters in a predetermined array of strings. (7/11/2016)

  • Parallel Computing Notebook

  • This contains all of our notes about parallel computing. (4/9/2016 - 4/16/2016)

  • Forest Fire (Group Project 2)

  • This simulates a forest fire. Trees are generated randomly. When the user clicks somewhere in the forest, a fire will start. The fire will spread across the trees next to it. My partner was Nikkhil Niranjan. (3/5/2015 - 4/9/2016)

  • Code Commenting Project

  • We used this to practice commenting code. (2/20/2016)

  • Add Two Numbers Together

  • This function takes two inputted numbers and adds them together. (2/20/2016)

  • Loops Practice

  • This Javascript function can be used to find the factorial of an inputted number. One can input a number, and the function prints out to the page a triangle of stars. (2/13/2016)

  • Conditionals Practice

  • This Javascript model contains three functions. In the first function, the user imputs a number, and the program tells him what letter grade they recieved. In the second function, the user inputs an age and is told whether or not he meets the required voting age. In the third function, a random number between 1 - 10 is generated, and the user has to guess the number. (2/13/2016)

  • Hello World Javascript Model

  • This Javascript model is a little experiment we did in class. The "Print!" button displays "Hello World" onto the screen. You can type a number into the box, and either click "Submit" to put the number into the console, or click "Convert" to convert the number from inches to centimeters. (2/6/2016)

  • Prairie Ecosystem (Group Project 1)

  • This is our first group project. My partners were Benjamin and Joseph. We created an Excell, Vensim, and AgentCubes model to show the predator vs prey relationships between vegetation, grasshoppers, sparrows, and eagles. (12/5/2015 - 12/20/2015)

  • Sickness Model - AgentCubes

  • This is an expanded version of the simple AgentCubes model about sickness that Dr. Panoff taught us. The red agents are infected, green are healthy, blue are doctors, and the green-camouflage agents are soldiers.

  • Sickness Model - Vensim

  • This is an expanded version of the simple Vensim model about sickness that Dr. Panoff taught us. At the start there is a group of healthy people and one sick person. Over time, the sick people can either die, become immune, or become healthy again.

  • Professional Ethics Project

  • This is a homework assignment given by Ron. The scenario and instructions are included in the downloadable file.