I've written about endjin's commitment to Apprenticeships before and we're almost at the anniversary of our first apprentice joining the company. At DevOps London earlier in the year I was approached and asked if we would be open to accepting a work experience placement for a year 10 secondary school student. We thought it would be an excellent idea and after many conversations about how dull our work experience placements were (I spent a week in a local solicitors office, reading Conveyancing, witnessing a divorce trial and getting to read through the company's industrial accidents cases), we decided that we'd try and make it a more interesting experience and teach him to program, but in a more fun way.
The following blog post is from Joshua, 15, who is spending two weeks at endjin.
My first week at Endjin has been unbelievably good. I have learnt so much in this short span of time but there is still much to learn.
When I first got to the HQ, everyone was very welcoming. I met Mike first as he opened the door on the Monday at about 10:30, just after I got lost. I then met Paul, Pascal, Matthew , who all welcomed me to the company. Howard had just left to go and find me and came back about 10 minutes later. I didn't know what to expect when I first set foot into the studio.
Day 1 at Endjin was very exciting for me as I would be introduced to new software that I've never been around and also to the new environment. I had a talk with Howard about what Endjin does, who they work with and about their clients. After a brief Health and Safety talk by Paul, Mike introduced me to the web apps and programs they use to get work done and to stay organised. He also showed me a small device called a Netduino Plus would be the device I would be working with for the whole week and gave me a book that had a series of projects.
A Netduino is a little computer with a LED, a button, ports for connecting other devices to and an external storage connector that could fit an SD card. I was also given a book which contained project and code samples. My first project was to assign the button to turn on and off the on board blue LED when you pressed it. It took me some time to write the code, but luckily it worked on the first try. That was my first eureka moment!
After that, we all went out for lunch. Howard bought me a piri-piri chicken sandwich and orange juice.
The next project was to create a set of traffic lights flashing red, amber and green like an ordinary traffic light. We set out the code in a specific order with an interval of 5000 milliseconds (5 seconds). Wired up the Netduino with the breadboard holding the LED's and deployed the code onto the Netduino. At first, only the green and amber LED's lit up, only to realize that the red LED was dead. Changed the LED and voila, a traffic light.
You can see a video here:
That was the end of day 1, it was very exciting and interesting to learn all these things. I felt very welcomed and that I could ask questions without feeling embarrassed.
Day 2 at Endjin and luckily I did not get lost on my way and made it a little earlier than the day before. I quickly got started on reading the "Getting Started with Netduino" book that Howard had given me and I saw this section on sounds using the speaker provided in the starter kit. I wrote the code for the music player and assembled the mini breadboard with the speaker and the 4 cables to connect to the Netduino, but with no luck; there were a few errors and warnings here and there. Later on, Howard worked out that the APIs in the book were older than the ones we were using, so we had to figure out what changes were required to make it work.
Howard purchased a proper sized breadboard off of Amazon and that came before 12. With an hour before lunch, I finished reading the book about connecting the Netduino to the internet and wrote some code to turn on and off the on board LED, by connecting the Netduino to the Endjin network, and assigning it an IP address, and creating a little socket based web server, which allowed me to turn the LED on and off via a web browser.
The commands were http://<The Netduino's IP Address>/ON and http://<The Netduino's IP Address>/OFF
I managed to get that working before heading out for some chicken noodles.
When we got back, Howard and I decided to create a little phone app via web browser to control the LED.
At first, we had no luck as the code was a little buggy and some of the code was not supplied so Howard downloaded it off of the internet.
We had to give the Netduino an interval, so that it could process the information and then return a result. We also need to find a special command, a regular expression, that would match the /ON and /OFF command we typed into the browser, which would tell the LED to turn on and off. When we found the code, we placed it in between the commands. With a bit of trial and error, we managed to get the light working.
You can see a video here:
We used HTML and a tool call Bootstrap to create the mobile app and create the buttons. Below is a screenshot of the mobile app we wrote to control the LED:
Day 3 at Endjin was the first day I actually brought my own laptop from home to the office so I could continue coding from home after I finished my work experience.
Howard and Mike helped me to download all the software needed. They downloaded Visual Studio 2012 Express (which is free), SmartGit and all the SDK's I needed to talk to the Netduino, as previously I was using Mike's laptop.
Mike introduced me to GitHub and SmartGit. I create my own GitHub account so whenever I code I can easily just store it. As I completed reading the first book on the Netduino yesterday, I moved onto the second book that Howard bought, called "Getting Started with The Internet of Things" and started coding.
The first project was to make the Netduino on board LED flicker, which I had already done on day 1 and the second project was just to use the button as a little switch for the LED which was also in the previous book. I had completed all of that before 12, as I was meeting my friend Jonathan for lunch and returned to the office about 30 minutes later to resume work.
I wanted to see if I could fix the problem that I was having with the music player by downloading the 2010 version of Visual Studio, but as Mike told me, no mater what version of Visual Studios is you're using, it will not change the API's on the Netduino. I scrapped that idea and continued reading the book and signed up for the Pachube project, which has now been renamed to Xively
Day 4 at Endjin, today was the earliest I've ever gotten to the office, 10. I'm getting more familiar with the journey as the days go by.
The morning was quite exciting as when I entered the office, Howard was already playing with the Netduino. When I got myself sorted and sat down, he said he managed to fix the API, by using some alternative libraries. That was to create a bit of music using the breadboard and the speaker. It was really cool how it worked as you type in letters, the different type of octaves for upper and lower case letters, the interval before and after the note and how long the note should be and it can read all the information and perform the task... PLAYING MUSIC.
The most exciting part of the day was to come when I signed up for Xively. I think Xively is a database in the internet to store different types of information, but the awesome thing about it is that you can receive the data or send it back using the Netduino.
They had me go through a Xively tutorial using my smartphone. I assigned the device, gave them my location (the Endjin HQ postcode) and they managed to track the location of my phone to my latitude and my coordinates. I could even shake my device and it would come up saying how many times you have shaken it and if the package had or had not arrived at my location.
After that, I wrote some code for the Netduino and assembled it with a few wires and a dimmer. When we deployed the project, it had an unknown exception and we had no solid answer to why. At first we thought it might be trying to pick up the dimmer and failing so I mentioned that in the previous book there was a project to dim the LED. I saved the project and opened a new one to write the new lines of code. Assembled the devices and it worked!
Here's a video of the dimmer switch in action:
The LED was being dimmed by the dimmer switch. After that worked, we knew that the dimmer was not the cause of the unknown exception. I reopened the "HelloPachube" project, which we created to measure the voltage of the dimmer switch, capture time and date and send that data to Xively to record it. I reassembled the device while Howard modified the code and finally, it was a go!
Xively could read the voltage, date and time and create a chart, which changed whenever you turned the dimmer; it was the change of voltage. It was really interesting and exciting because you were sending the information to the website using such a small device.
Howard taught me earlier that when you request for a page to open, you request for the information the page has to offer which goes all the way to your router, across the internet and across the globe to get to where the website actually is. The information is sent back to you with all the different connections and links. That is why sometimes your internet can appear slow and sometimes the internet may have to take another "journey" across other countries it wouldn't normally have to cross.
My first week at Endjin has be very enjoyable, everyone has been very helpful, informative and interesting. Watching everyone do what they do was also very interesting and how they do things in this industry. I have enjoyed everyday being here as Howard and the others have many different activities and information to offer and share.
To know different people and to be placed in another environment that I'm not used to. I can't wait for next week to begin to learn more about becoming a developer and to complete more projects with the Netduino and Raspberry Pi. To understand more about writing code and to understand how to fix the errors and warnings. Productivity levels are at an all time high.
By the way, if you need data copied onto multiple flash drives in less than 20 minutes, I'm your guy.
See how Joshua got on in week 2.