Sunday, August 7, 2011

Post #10 - Final Reflection

I have been working here at NC State for a total of 201 hours (35 Days/2 Months). I came here hoping to learn how to work in a UNIX environment, but I learned much more than that. Not only did I learn how to navigate through a UNIX/Linux operating system, I learned how to program in Python, Graphviz, C, and Bash Script. I'm sure that there is no way that I would have learned this stuff if I had taken another internship. It is true that this internship didn't have many perks as opposed to many other internships. Sarat told me that there is a trade off, "You can do what you love for little reward, or you can settle for a job you won't enjoy as much that has more reward." I got the opportunity to work in a university lab with a bunch of graduate students, doing real programming work. Not many high school students can say that.

In a nutshell: I have enjoyed working here at NC State with Aishwarya, Kevin, Sarat and Dr. DeCarolis. I have learned a lot; the things that I have learned here will definitely help with school, college and future job opportunities.

Wednesday, August 3, 2011

Post #9

Dates: 7/27/11 - 8/01/11

Activities: Code Cleanup and Debugging

Technical Information: Python/Graphviz, TEMOA

Reflection: I am wrapping up my job here and NC State and I am glad to say that Aishwarya and I have accomplished our long goal. Our task was to give the TEMOA Project a nice graphical interface (much harder than it sounds). We have managed to accomplish this task and we even added a few of our own features to enhance the models. I am spending my last week searching for errors in the energy models, and documenting any undocumented code. I also got a chance to go on the NC State Campus tour and saw centennial campus which had a bunch of businesses such as Red Hat or Gold Leaf.



The things that I have done here that make me proud are the facts that I learned a lot and that I made a contribution to a real world project (as opposed to a school project or activity).

Wednesday, July 27, 2011

Post #8

Dates: 7/22/11 - 7/26/11

Activities: Finalizing TEMOA models, code documentation and cleanup, Final model additions

Technical Information: TEMOA Project (Graphviz/Python), code documentation

Reflection: This week Aishwarya and I have been doing some code cleanup and documentation for the TEMOA models. Most of the goals that we were assigned to us have been accomplished. Dr. DeCarolis has assigned us a few things to add before the internship is complete. Some miscellanious features such as easier readibility, easier navigation, and better organization of the models will be added over this and next week.



I definetly think that I have gained more responsibility over the summer. I started out having almost no clue of what to do. As I progressed, half-way through the internship I became more independent and was able to do tasks without the aid of someone else. I can now, work in a UNIX environment, program in python, bash script, graphviz, and C.

Friday, July 22, 2011

Post #7

Dates: 7/15/11 - 7/21/11

Activities: Organizing TEMOA Project (Graphviz/Python), Bash Script functionality moved to python files

Technical Information: TEMOA (Graphviz/Python), Bash Script

Reflection: This week I have transfered the functionality of the bash script I made last week to the python file that I always work on. This helpful because it is one less file to manage, and it is a "cleaner" way of organizing the images.

Aishwarya and I are almost done with our long task of making the models look nice. We have been doing some code clean up, documentation, and fixing some small overlooked errors. Along with that, we have been adding in some more miscelaneous features for the users benefit.

I have gotten used to programming in Bash script and Python. I don't use the numerous books that I got at the beginning of the internship that often (Thats not to say that I am an expert on Python, Bash, Graphviz, C, etc...).


These are all the books I have used in my internship (click for larger image).



There are a few frustrations with my work but they aren't that major. Python is a great language to learn, but it has its drawbacks. The language uses tabs to keep the file organized rather than using braces. Because of this limitation, Aishwary or I must re-tab the entire python file. Another limitation is the Graphviz functionality. Graphviz does not have all the tools we want, so we have to find another way around that obstacle.

Friday, July 15, 2011

Post #6

Dates: 7/11/11 - 7/14/11

Activities: Created Subgraphs for the TEMOA Model, and linked them together

Technical Information: TEMOA Project (Graphviz/Python), Bash Script

Reflection: This week Aishwarya and I have been working on subgraphs for the TEMOA model. They look good and work perfectly. I linked the main model diagram to the various subgraphs so that when a user clicks on a certain area of the model, a subgraph pops up with with more specific information.

This week I have also been working on Bash Scripting. A Bash script is a simple script that can be executed to move, create, and execute other programs. Many files are being generated when the TEMOA model is executed. The Bash script is useful because I can tell it to run TEMOA, and then immediately organize the images.



I am working with graduate students on this project, so one would obviously need a bachelors degree. However, everyone I work with has a different major (i.e. Civil Engineering, Computer Science, Environmental Engineering, etc), and all of them are working to get their masters degree. I am more interested in programming that communicates with hardware (Robotics/Electrical Engineering), but I am learning a lot of stuff here that i'm sure is also used in what I hope to do in the future.

Sunday, July 10, 2011

Post #5

Dates: 6/30/11 - 7/09/11

Activities: Work on the TEMOA Project (getting into subgraphs)

Technical Information: TEMOA Project (Python/Graphviz), Bash

Reflection: The past few weeks, Aishwarya and I have been working on the TEMOA project. We have accomplished creating the basic looks of the models. Of course that isn't enough; we are starting to get into subgraphs. Subgraphs will contain even more specific information about the models without cluttering them. We are skeptical of how this will turn out, and we will be working on these for the next week or two. If it turns out that the subgraphs work very well for us then we will create html links that will allow the user to click on a certain part of the main model diagram to pull up a subgraph.

I am still working on a Linux system (Fedora) for the project. I use an application called the Terminal (similar to the command prompt in windows), and is a client for Bash. I have adapted to using the Terminal over the past month so much that I find it easier to use it rather than using the GUI (Graphic User Interface) on linux. I typically use it for creating, copying, executing, and installing files. The VIM editor (In Bash) is a text editor that I use almost everyday to read and write code in any language (Python, Graphviz, C, C++, Bash Script, and many other languages). I plan to use this system in the future since it is fast and very useful (I am slowly starting to dislike Windows).


VIM editor menu inside the Terminal (click for larger image).



I feel that my main contribution to the TEMOA Project is to help come up with innovative ideas to make good looking (and easy to understand) models. Along with that, I collaborate with Aishwarya a lot to make these ideas work.

Thursday, June 30, 2011

Post #4

Dates: 6/27/11 - 6/29/11

Activities: Working on TEMOA Project (Making the Graphs look "Prettier")

Technical Information: TEMOA (Python/Graphviz)

Reflection: This week I have been working with Aishwarya on the TEMOA Project. We are nearing our goal as the graphs are starting to come together and look nicer. We are working on a way for users to click on certain points of the graph so that more information can be viewed without having a cluttered graph. The file that controls how the graphs are outputted has to be coded in such a way that any data set that is inputed will have a nice looking (and soon interactive) graph.

The way that the TEMOA Project works starts with a data file. Another file will read the data file, make sure the user has entered in the data correctly, and will write to another file in graphviz. The graphviz file will execute and create a nice looking graph in the end (I am making this sound a lot easier than how the program actually executes).


Over 600 lines of Data! (click for larger image)



All combined into an easy to read model (Many different models are created when the program executes). (click for larger image)

We are making progress and we should have a good looking model by the end of the summer.



My classroom experiences have definetely helped me perform the work I'm doing. I program mostly in Python, Graphviz, C, and Bash Script for this job, but syntax isn't the problem. The programing logic I have been learning in school is what prepared me. I wish that I had learned Python earlier, and that I had more familiarity with Bash. Nevertheless, I did manage to pick up fairly quickly on these concepts.

Saturday, June 25, 2011

Post #3

Dates: 6/21/11 - 6/24/11

Activities: More work on the TEMOA Project, C/C++ Project

Technical Information: TEMOA (Graphviz & Python), C/C++

Reflection: This week I have been working a lot on the C/C++ project given to me by Sarat. I recently submitted it by the deadline given to me. The application had to add, subtract, and multiply matrices entered in by the user and I had to program the application in both C and C++. As easy as this sounds, I had to program it in a way that will allow matrices of ANY size to be accepted without the program crashing. Nevertheless, I managed to figure it out (with help from Sarat).

I continue to collaborate with Aishwarya on the TEMOA Project with the goal of improving the look of the graph. The final graph's need to be easy to read given any set of data. We are making progress and continue to meet the goals set by Dr. DeCarolis.



The work atmosphere is fairly layed back for me. I do not have many deadlines to meet (Kevin says that he doesn't like deadlines), and my work hours are very flexible. There isn't a set dress code, but everyone dresses casually. There are a bunch of restaurants near by that offer good food for a good price. The work environment is great and I am thrilled to be working here


Usually I will either be collaborating with Aishwarya, or working by myself using a second monitor (click for larger image).


This chalk board is in the room that we all work in. People typically use it to draw out an explanation (I'm using the word "typically" loosely) (click for larger image).

Tuesday, June 21, 2011

Post #2

Dates: 6/16/11 - 6/20/11

Activities: Getting used to using "Bash", Working on the TEMOA project, C/C++ Project

Technical Information: TEMOA (Graphviz/Python), C/C++, Bash

Reflection: As my first week ends and the second week begins, I have gotten used to using the "Bash" environment for work. Sarat, my mentor, said ,"At first Bash seems like a bad interface that isn't very user friendly, but as you use it more, you learn to appreciate it a lot." This is very true, I have started to like using "Bash" because its very efficient and I can do work on it fairly quickly. I even figured out how to find and download games quickly using "Bash" (on my own time of course!).

I have been working on the TEMOA project (programmed in python and graphviz) with Aishwarya and we are making progress (She is also new TEMOA project so were both trying to figure out how it works). We managed to condense a large confusing graph into a much simpler and easier to read graph.

Along with the TEMOA project Sarat gave me a side project to do. I have to create an application that will allow the user to add, subtract, and multiply matrices (he said that I will soon understand why he gave me this project). This application must be programmed in C++, along with another copy programed in C, and I have 1 and 1/2 weeks to finish it.



I will be collaborating with Aishwarya on the TEMOA project for the majority of my internship along with a few side projects that may be given to me. Kevin and Sarat will be continuing to help me along the way. I am enjoying working here and I still have a lot more to learn.

Thursday, June 16, 2011

Post #1

Dates: 6/13/11 - 6/15/11

Activities: Learn how to use UNIX, and program in Python

Technical Information: Bash (UNIX Shell), C/C++, Python, Linux, TEMOA, Graphviz

Reflection: This week I began my internship at NC State and learned how to use "Bash" which is a "UNIX Shell" (Command line interpreter). Bash is a command processor that is typically run in a text window, allowing the user to type commands which causes actions (i.e. opening files, creating files, executing programs). I was given a laptop with a Fedora (Linux) Operating System. Most of my work will be done using this system.


(This is what shows up on my command prompt (Bash) when I log into the server. Click for larger image)

In addition to learning how to use "Bash", I was introduced to the TEMOA Project, which is what I will be working on for the majority of my internship. TEMOA is and acronym for "Tools for Energy Model Optimization and Analysis." In order to work on this project I need to learn Python (a general purpose high-level programming language), and Graphviz (short for Graph Visualization Software, and a fairly easy to understand language). I will be working with another graduate student, Aishwarya, to figure out how to make easily readable graphs from a set of data.

My mentors, Kevin and Sarat (also working on the TEMOA Project), have been great teachers and will continue to be. Without them it probably would have taken a month for me to acquire all the information I've learned this week. Kevin said to me, "Your learning curve this week is not vertical, 'cause that's impossible, but it's almost!"



The main purpose of the TEMOA Project is provide future insight about energy policies (uses of different energy resources such as coal, wind, nuclear, etc.) and technology deployment (such as heating, lighting, transportation, etc.). This is important as over the next few decades climate change and how we use our energy resources will determine changes in the global supply, transport, and use of energy. TEMOA is an open-source model that anyone, who is interested, can view the source code and run it. Stanford also has energy system models that anyone can view, but the underlying code is not viewable, which means the user cannot see how the underlying equations and data lead to specific outcomes. More specific information about the project can be found at: http://www.temoaproject.org/about/