Guest Blog Post: Work Experience at endjin – Week 2
As mentioned in the last post, we've been hosting Joshua Cheung, 15, for the past two weeks for his work experience placement. What did he do in week two? Read on...
Where has the time gone? The days being at Endjin have just flown by. The days were jam packed with information and excitement. Just as great as the previous week. I just could not wait to enter the HQ again and resume the projects using the Netduino and Visual Studio.
On the 17th of May, Howard sent me an email via my uncle, Mark Mann and he managed to answer a few questions I had asked about a week before. Which was great because he told me where to go, who to contact and the most important item of all... DRESS CODE. Only kidding but I rather not be the one walking into the office with a football jersey and shorts. So I sent an email back saying how I was thankful about getting the opportunity to join Endjin for 2 week and that I was looking forward to the experience.
Howard sent one back not so long after and he said and I quote "hopefully we put you off wanting to join the Software Development Industry"; ha ha, sorry Howard, but if Endjin has done anything to me, its made me want to join even more. So today would be the last day I will be ringing the door bell at the Endjin HQ as a job experience student.
Day 6 began at Endjin and Howard wanted to try something new. Howard wanted me to get a better understanding on how to program and what do some of the commands mean. He introduced me to a website where you can take lessons about programming from very basic to advanced. The lesson that I took was called, Teaching Kids C#, it was very basic but very informative.
They went step by step and taught me how to download new packages and to decide what properties you would like to use. I started out coding for a tortoise. To move the tortoise along the screen, to change the colour of the line it makes, the width of the line and the direction the tortoise moves in.
Some of the code for the tortoise was very straight forward and quite self-explanatory. Take for example the code to change the colour of the line that the tortoise made.
Tortoise.SetPenColor("Blue"); -> That would be for a solid colour. (BLUE)
Tortoise.SetPenColor(Colors.GetRandomColor()); -> For a random mix of colours.
The code for everything else was basically the same. Movement would be, Tortoise.Move(how many pixels).
For the angle in which the tortoise would turn,
Tortoise.Turn(180) -> Clockwise
Tortoise.Turn(-180) -> Anti-Clockwise.
The '-' would decide if the number will be negative and anti-clockwise.
You could make the tortoise move from 1 being the slowest and 10 being the fastest. Depending on the angle you have set the tortoise to move, that will depict the design of the lines. These are some pictures taken from that project.
After that 2 hour tutorial. I moved onto this multimedia program called Scratch. Scratch is a program created by MIT and it allows you to created music, stop animation movies, games and much more. I tried creating my own little animation and it was quite fun but then I moved onto watching other peoples projects about the Netduino and see what they managed to accomplish.
There were a few very cool projects. Someone managed to hook their coffee machine to the internet so now he can control the time he wants coffee or what type of coffee he wants using his iPhone. There was a robot created called, Mantis Bot, it was basically a very powerful remote controlled car with a router and a Netduino connected to it. They controlled it by the little Android app created for it. What awesome things a Netduino can do.
The Coffee Machine Video :
The Mantis Bot :
Day 7 and I arrived at the Endjin HQ much later that usual but nevertheless I got straight into the work. The day before, Howard asked me if I could find the code and the project we used to create the traffic light. I searched all over for the solution file but with no luck the file was no where to be found and all I could find the outdated file with all the warning and errors. I had a read on my blog to see what computer we used and funnily enough we used Mike's computer that day. I asked if I could use Mike's laptop and about 15 minutes later, I copied that file onto my Endjin flash drive and I staged, committed and pushed that file up to Github for later.
Howard was in a meeting and that left me with not much to do but I decided to do something creative with the Netduino and camera. I had the idea to create a little tutorial to help the people who own a Netduino and it would help them assemble the device to create a traffic light for themselves.
I started the video with an introduction of the Netduino and of what you'll be needing to create this project. I had to take apart the Netduino to show the steps in assembling the device (with the LED's, wires, what to do with the breadboard). After taking all the pictures needed and giving them all a caption. I made sure all the video that I used were muted. I had to test if all the LED's were still "alive" otherwise the traffic lights would not glow. I uploaded the video onto YouTube with the code in the description box and in less than 7 hours, I got about 20 views and a couple of retweets on Twitter, even a retweet from Netduino. The video was very fun to do.
Day 8, last night I had received a comment on my YouTube video saying, I should have used resistors for the LED's so that they don't get burnt out so quickly. That was good advice as it would enable me to make the LED's last much longer. I was going to make a second video on the traffic light project so that the viewers LED's would also no burn out so quickly but before that, I had to figure out what type of resistors I would have to use. I saw a few pictures on reading the resistor stripes and a video on how to calculate it but I found a resistor calculator on the internet, which was very helpful. The next video would be exactly the same except for a few items. Substitute the mini breadboard for a regular sized breadboard, input the 3 resistors. I named the video, "How To - Traffic Light Project 2.0 w/ Netduino" and I shared it on Twitter. I had to go through all the same steps to create the video but with a few extra stills as I used more items and more steps were needed to create the traffic lights. Re-tested all of the LED's to see which LED's are still "alive" and which ones are "dead" so I knew which ones I should keep.
Here is the second video :
After lunch, Howard created me an account for TeamCity. We will be using TeamCity for out next project. Howard and I wrote some code on receiving information from TeamCity, that information would impact the LED's. If the program has failed, the red LED would be turned on, if it had succeeded the green LED would turn on and if the program was running, the yellow LED would turn on. At the beginning, the code was quite buggy. When you ran the project it would work the first time, turn red, but then when you pressed the switch again, all the LED's would just turn off. Howard set the return information to FAILED which means no matter if the programs succeeded, the LED would stay red. That was just a little test to see if the actual code would work.
Day 9 at Endjin and I got here at 10.05 which I have noticed is the time I usually got to the office. Howard and I resumed on the project from yesterday using the original code for the traffic light project. There were a few problems here and there with the code and later we encountered larger problems. We programmed for about an hour longer when Howard needed to install a few new references for the code to work with no errors, at the time. That was our first little hurdle.
Finally we had the code corrected and the project was ready to be deployed onto the Netduino so, we deployed it. We had a few warnings, Howard placed a few breakpoints to see where we were actually going wrong. We ran the project again but this time there was another problem. A window popped up and it read, device unable to receive information so Howard wrote some extra code only to realize, there was no Ethernet cable connected to the Netduino to gain information from the internet!
We changed the website to see if it would work from TeamCity to Endjin. Now, this time the problem was not due to no internet, with the code but there was a lack of random access memory (RAM) in the Netduino - it's didn't have enough to hold all of the HTML from the Endjin website homepage - it contains too much information! It was like Déjà vu. We moved over to Howard's PC and he managed to create a "proxy" website that would make the call to TeamCity for us, process the data and return us a single result that would use far less memory.
Did a little more tweaking and finally, a green light!
EUREKA! Success at last.
The 2 weeks being at Endjin have been a blast. So much to learn, never bored. There was always something I could do. I would like to thank Mark Mann for setting me up with the placement and Howard for allowing me to join Endjin for this period of time. Thank you to Matthew, Pascal, Mike, and Paul for being very helpful, welcoming and informative. I would like to continue programming in the near future and to hopefully create something.
By the way Howard, you might want to put the milk away. It's been out for a while.