During this week, I aimed to complete and refine the code for the dynamically retrieved data, complete code for static data (data supplied in CSV files from Delta), and begin interface integration with HighchartsPHP (today). I ended up completing the code for the dynamic and static datasets – and also encountered some bugs on the way (namely, errors resulting from too many concurrent MySQL connections). I managed to solve this today (Friday 7th March) by shifting the whole project site from the Windows server to the Debian database server, with the technician/systems administrator handling reverse proxy/domain forwarding changes. After the server change, I noticed the errors had gone away -I also increased the AJAX call (to check for fresh data – dynamic data) every 5 seconds instead of every 1 second – as I seen that was putting a significant load on the database. You are able to see a ‘testing’ page demonstrating both static/dynamic data at http://energymeter.ict.op.ac.nz/.
I also changed code which logs PHP and MySQL errors as a result of the server change. I can now keep the logs out of the web root, as having them in the web root is bad security practise (in my humble opinion).My new error handling code ended up being a lot better than what I originally had – errors are not displayed on the browser like before, they are all logged to their appropriate logs as they should be.
The meeting with the Dunedin City Council on Monday did not go as planned. This was due to one of the representatives being sick, and myself being 5 minutes late due to a family commitment. I was frustrated at myself for being late – I am rarely late for meetings, and I considered this one very important. The meeting is very significant because it will determine whether the ‘competition in schools’ idea will go ahead – this will be something really fantastic to help meet the initial value proposition set in Iteration 2 of the project. As a reminder, the last revision of the initial value proposition statement is:
“The City-Wide Energy Meter project has increased peoples’ knowledge of energy consumption and conservation, through open discussion and visual display of real-time energy use.This project has been in development since August 2013, with the Robust Delivery deployed in May 2014. Since the date of this deployment, energy literacy of survey participants has increased by 10%, compared to the initial energy awareness survey in March 2014.”
Paul (Admiraal) also suggested holding some kind of workshop for community groups if the ‘competition in schools’ idea doesn’t work. I like the sound of this idea, as it sounds quite similar to the competition idea – the emphasis for both the ideas being an increase in energy awareness via an interactive ‘event’, which uses my project as a tool.
Besides work on the project, I’ve also been getting reacquainted with C# with my OOSD paper. After 6 months of not actively coding in C#, most of it has come back to me – sometimes I still code with PHP and Ruby syntax (which is what I have been coding more actively), but I quickly remember what I should be doing. This week we focussed on unit testing with C# – this is quite familiar with me as I done a lot of unit testing with Java last year. The challenge is thinking of numerous cases which the code can fail, and also coding from a Test Driven Development methodology (something which I have not done before).
As there is a Dragons Den meeting on Monday, I had to spend some time preparing some PowerPoint slides. As I have been actively involved in my project on a daily basis (apart from my ‘break’ of a month in the summer), I feel it might be easier this time around.
To do: Day 178 to 184 (March 8th to 14th)
- Dragons Den (Monday 10th March)
- Code graphs/charts for static data, and for high impact display for main page (‘real-time’ energy use every 30 mins)
- Attend rescheduled meeting with Dunedin City Council representatives (hoping the competition in schools ends up being viable). If not, discuss community workshop idea.
- Code graphs for dynamic data (e.g. show graphs for dynamically updating time intervals).
- Make revisions to functional requirements if need be (as a result of the upcoming meeting)