This week I started implementing the new pages that Ystallonne has been working on. I started with the authentication system/log in page because the code would largely stay the same. The main changes came from the way we now connect to the database. Instead of connecting directly from the authentication page, we use DB connection classes written by Bo that handle the opening and closing of connections. We had discussed in length the need for creating a robust connection pool that will allow many simultaneous connections so I’m hoping Bo’s classes are up to the task. I say this because I keep running into a problem where after a certain number of log in attempts, the database will stop responding to requests. I’m not sure if this error is in my code or if there’s an issue with the DB connection classes. I’ll talk to Bo next week.
Week of July 14th – BlackBerry Jam Camp
This week was half spent at work and the other half in Cambridge attending a BlackBerry Jam Camp. At CDOT, we’ve fallen into a pattern that I think will continue for the next few weeks – Ystallonne will be working on designing the layout of the individual pages and I’ll be hooking the pages up so they interact with the database. We’ve had a lot of discussions centering around accessibility and how accessible our website will be. Supposedly next year every website of a government sanctioned institution will need to be accessible. Because we’re making a website for Seneca College this means that we have to make it accessible as well. What we don’t know, and will likely have to look into in the coming weeks, is what exactly has to be accessible and how accessible it needs to be. For now we’re going to try to make all of our components tabbable and some navigable using the arrow keys. I’ve started working on getting the log in page working again, but due to some changes in how we connect to the database, it’s proven to be trickier than expected. There’s also some functionality I need from the database that’s not yet available so I’ll have to talk to Bo about that next week.
On Tuesday BlackBerry drove Ystallone, Andrei (another CDOT employee) and myself up to Cambridge for the BlackBerry Jam Camp, an event focused on teaching students how to develop applications for BlackBerry 10 devices. It was a phenomenal experience and one that I wish other companies would endorse. They covered everything from installing and setting up the SDK to actually writing a basic app using either HTML5 or native code. If we write an app and have it approved and submitted to BlackBerry World by September, we even get a free phone! The event drew people from all over North America – a military reserve student from New Hampshire, a student from Alberta, and other students from all over Ontario. There’s a larger overarching competition that promises to send the winner of the best app-sensation to Orlando for the massive BlackBerry Jam conference. I’ve made a team with Ystallonne and two other students I met during the camp and we’re really excited to start working on our idea. We want to create a system to link BlackBerry users with BlackBerry developers to create the apps that users want. Hopefully I’ll even be able to incorporate some gamification elements 😀
Week of July 7th – Making Elements Accessible
Third week we’ve been working on the UI and I think we’re finally almost done. There are a few minor bugs with the interface but I’ve left Ystallonne to fix those so I can start working on some back-end code. Chad spent some time with us on Thursday to help us make some of our custom elements more accessible. We created a custom drop-down list and checkbox so they would fit better with our theme. In order for a screen reader to know that an element is an interactive checkbox, the element needs to be assigned a “checkbox” role. Along with the checkbox role, the element also needs the “aria-checked” attribute to expose the checkbox’s state. That’s all there is to it! Additionally, we added a tab index to our checkboxes so they could be tabbed through with a keyboard. Here’s what the final HTML looks like:
<div class="component" style="z-index: 4;">
<div class="checkbox"> <span class="box" role="checkbox" aria-checked="true" tabindex="19" aria-labelledby="option1"></span>
<label class="checkmark"></label>
<label class="text" id="option1">Allow camera sharing.</label>
</div>
</div>
Week of June 30th
This week was also spent on designing the layout of our system. We got a lot of the core components finished so next week we’ll ideally just be adding finishing touches and polish to the website. I spent yesterday and today skinning this data table to fit with our theme. It’s a great jQuery plugin for displaying large amounts of data in a data grid with awesome built-in features like sorting of columns by clicking their headers and extensive skinning support. I had an issue at one point where applying a border of 1px to each column of the table would cause a 2px border between the inner columns and a 1px border on the outermost sides. I fixed this issue by using the CSS border-collapse attribute that sets the space and the borders between table cells to collapse so there is only one border and no space between cells.
Week of June 23rd
What an awesome week! I spent it working with Ystallonne on the layout and UI of our website. He knows a lot more about interface design than I do so it was a good learning experience. We tried to keep the look and feel similar to the main Seneca website so users feel familiar with our system. A mockup can be found here. Fardad approves of the design so we went ahead and started coding part of it. We also agreed that the system should be more API-friendly, so all of our methods will return true or false instead of actual values. Any values we need will be passed as parameters of the methods.
Week of June 16th
This week was spent working on the use cases and creating methods for each use case. I initially wanted to implement the MVC pattern but Fardad suggested against it since the system was essentially based on pulling data from the database and displaying it with little if any modification in between. The classes are, unfortunately, a complete mess right now. We’ve been having difficulties organizing the methods logically so hopefully Fardad can give us some insight soon. I’m taking Friday off to attend the RBC Next Great Innovator Coding Competition. Hopefully my team does well!
Week of June 9th
This week it was BigBlueButton’s turn to give a presentation during CDOT’s weekly presentation day. Bo and I presented on the prototype and database behind it. The biggest challenge for this presentation, and one that I dread to face for any presentation, was making the material interesting and compelling to the audience. The prototype in its current state is extremely rough around the edges. I didn’t focus on making it look appealing, instead focusing on showing the basic features of the system. For someone so obsessed with aesthetics (me) showing this beast of a website to anyone was a real pain. Poor Bo got stuck with talking about the database so he had it even worse. Luckily the presentation was seemingly well-received! I think Humph mentioned at one point that we should film the presentations to better analyze our strengths and weaknesses so I think I’ll ask if we could try doing that from now on. It’s going to be weird as hell watching myself present but I’ll gain insight that I wouldn’t otherwise have by observing my behavior.
The rest of the week was spent working on use cases. Fardad approved using the MVC pattern but suggested that before we code anything we finalize the use cases and scenarios of the system. I made a list of all the use cases I could think of and split them up among Ystallonne, Bo, and myself. Those should be finished by next Tuesday, after which we’ll start coding models and a few controllers.
Week of June 2nd
The first part of this week was spent continuing to implement some of the changes we discussed during last Thursday’s meeting. Most of the changes left have been UI fixes so they’ve been quick to do. After finishing the updates, I started working on the log-in system with Ystallonne. We coded an authentication system that uses randomly generated, cryptographically secure salts to encrypt passwords into hashes. It’s probably overkill but at least we know our data is safe. The team also had another meeting later in the week so I could show them the changes I made. We decided to set up a page for use cases on the wiki that I’ve started working on. Hopefully with this added structure, moving forward with the production prototype will be much easier.
Week of May 26th – Oculus Rift and 3D chocolate printers
On Monday and Tuesday half of CDOT was at OCE Discovery, Canada’s leading innovation-to-commercialization conference. Highlights included a 3D printer that printed using chocolate and the Oculus Rift. While there were many exhibits created by talented and hardworking individuals, the Oculus Rift, ironically an already existing product, stood out the most. I say ironically because the 3D chocolate printer was fully built and designed by two Waterloo students, while the guys demoing the Rift paid $300 to have a dev kit shipped to their house. So sure, the Rift isn’t exactly an example of Canada’s burgeoning innovation, but it is a glimpse into the future of immersion – and damn does it look good. For the unacquainted, the Oculus Rift is a high field of view, low-latency, consumer-priced virtual reality head-mounted display.

Yeah you look like a total nerd wearing these, but once you put them on you start to realize just how awesome it is to be a nerd these days. Your body almost instantly forgets where it is. The simulation that was demoed for me was that of a roller coaster, and if the exhibitor hadn’t offered me a seat I surely would have fallen over. From the moment I put the Rift on my body was tricked into thinking it was in the seat of a roller coaster and not in a chair surrounded by eager attendees waiting to try it on. The optics on the device caused the image I was seeing to almost completely wrap around my field of vision in stereoscopic 3D. As I moved my head to look around, the view inside the simulation shifted accordingly in a virtually 1:1 mapping. Looking down the tracks at the peak of the ride made my body instinctively brace for the drop that would never come. At each bank of the ride I felt my body trying to compensate for what would have been a sharp turn. Looking down to find that my legs were not recreated in the simulation created a spooky sense of disconnect from reality. By the end of the simulation my face was breaking out in sweat and my eyes were aching, but I was convinced that this is the future of virtual reality immersion. Dev kits are on sale now for $300 and will ship in August. Needless to say, I’m looking forward to August.
Week of May 19th
This week started off slowly but ended off in a flurry of activity. I haven’t had a chance to show off the prototype to Fardad yet so I asked Chad to help me set up the database in my virtual machine. The production website will be run in Linux so it’s important that any coding I do from now on will be in an environment similar to the production server. It took a bit of Googling but we finally got NetBeans running on Windows to communicate with the MySQL database running in the VM. I also finished writing documentation to help others wanting to work on the project get started. Thursday and Friday were spent configuring the networks and machines we’ll be using at OCE to work with BigBlueButton.
