Monday 4 August 2014

Does anybody remember unit tests? But also a wicked kickin' readme!

The week that ended July (and from the weather patterns, ended summer as we know it also) was a little off-balance in terms of rhythm, with project lead David Humphrey away on vacation, his presence is clearly missed and noticed when it comes to uniform progress as a whole with the Mozilla Webmaker team.

Nevertheless, my fellow researchers and I met the issues to be faced this week with fierce tenacity and ambition to further lessen the remaining bugs in MakeDrive at its current state. The first half of the week preoccupied me with more unit test patches to land, with most of my time spend on a patch dealing with having to redesign some of the callback function signatures in the tests' infrastructure to cater to Node.js callback parameter conventions. Debugging galore ensued in order to correctly trace and follow the data passing inside of the callback hierarchy, but it ended up being invaluable learning experience.

Finishing the week, I took on the task of implementing the first comprehensive readme document for upcoming first users of MakeDrive. While initially daunting, this was accomplished with the help and insight of every member of the team pitching in on their section with their expertise and I believe that the final result speaks for itself.

This week will primarily concentrate on catching up with stress-testing Nimble with MakeDrive on the deployed page fellow team member Ali Al Dallal has up on the web. This will also be a wonderful opportunity to familiarize myself with emerging JavaScript and HTML5 technologies that Mozilla is already beginning to implement in its products and services such as Angular.js. 

Monday 28 July 2014

Query Strings and more Unit Tests

While front-end work is always fun and demonstration-friendly more frequently than functional coding, all those pretty icons, animations, and colour schemes wouldn't be very useful without any backend code to provide purpose for their presence.

My work was focused on implementing pre-production logic in the session/authentication data handler functions to accept query string data (that comes in on the address bar) as well as standard cookie data. This was added to increase the flexibility of MakeDrive to be able to cater to such things as firefox extensions sending incoming verification data.

The rest of last week revolved around adding more unit tests to increase the comprehensiveness of the existing test suite in conformity to the complete overhaul of the client and server communications that are now completely reliant on Websockets. I was particularly concentrated on adding more test cases for the sync messages being passed back and forth.

In the usual cadence of things, overall the week was very tasking but ultimately very productive. MakeDrive is just about ready to be deployed out to the public, and after a design overhaul by the Mozilla UI/UX team, Nimble will follow soon thereafter.

Monday 21 July 2014

Bug Squashing, Issue Triaging, and Nimble UI Enhancements

Communal elation in the group is still very apparent after the functional demo of Nimble and Makedrive working together, and we are all focusing that positive energy to keep a rigorous pace in order to arrive at the upcoming milestone this Friday revolving around getting MakeDrive to be stable enough to deploy to the public and be used in non-controlled environments such as the other Webmaker tools.

Last week, I created some fun and practical extensions to the front-end UI in order to test the Brackets appshell's potential in its current form in the context of being able to manipulate or change the end-user interface without having to change any of the code already implemented. I went ahead and recorded a video demo of my results on YouTube:


I can't help but feel proud of what little front-end programming prowess I've managed to cobble up, haha.

My focus this week veers back to backend functionality with more bug squashing on the MakeDrive end of things, particularly in the scope of webmaker authentication. I will be tackling some code removal/refactoring to eliminate unnecessary or arbitrary module imports and process executions as well as attempt to plug in support for query string session data as an alternative to cookies in order to extend webmaker-auth's login methods to be able to use firefox extensions and the like. Much learning will likely be had.

As always, stay tuned for more updates!

Monday 14 July 2014

Realizing the Vision and Beyond

I couldn't find a better way to present this besides show and recommend anyone reading this to check out this YouTube Link. Everything this team has been working on for the past 2+ months now functionally amalgamated and in a state where the world can start seeing it. Nimble (Brackets) in the browser using the MakeDrive filesystem to sync files between active sessions of the same client. Extremely exciting!

The rest of the summer is about polishing and perfecting the operation of the project and adding features in order to really turn it into a bonafide Mozilla product that becomes a welcome addition to the rest of the Webmaker toolkit.

Tuesday 1 July 2014

Nimble and MakeDrive's Future

As expected, with the help of the Webmaker team, I managed to finish a functional proof of concept implementation of the Websocket authentication module that Alan Glickman, Kieran Sedgwick and I planned out the week prior just in time to quickly demonstrate it on Tuesday.

On Thursday, our team also presented the current state of MakeDrive thus far and what has been accomplished up until now with the project. While the lack of practice in the areas of structuring roles and memorizing who begins what part of which area of focus left a bit to be desired, it was received with healthy amount of praise nonetheless.

After planning for the rest of the week and next week's tasks, Gideon Thomas and I began to pair program converting the client-to-server communications of MakeDrive from SSE's to Websockets. A very productive week on the whole for everyone on the team, and we're all hoping to end next week with a functioning instance of MakeDrive running inside Brackets on the browser for project lead David Humphrey's last week of working at CDOT for the summer. Fingers crossed.  

Monday 23 June 2014

The Wonders of Mozilla Proper

Last week, the team managed to finish the functionality for bi-directional syncing with MakeDrive on the browser, that being a huge milestone in the Nimble project. Helping in the design of the front UI, work on unit tests, and pair program through bugs was as rewarding and productive as it could've ideally been.

The cherry on top of the icing was being able to visit the Mozilla office downtown to present the demo on Friday. The working space in and of itself is worthy of song and film, with ping pong, a music corner, couches abound, snack and fruit bar, and an espresso machine that cannot get enough praise for its impeccable quality. More importantly, to be able to gain insight from and work with some of the most talents minds in the industry was invaluable to say the least.

With project lead David Humphrey expected to return from vacation this week, there's lots of catching up to do with Websockets authentication and changing the client codebase to function completely off of Websockets instead of server-sent events. Another daunting week ahead, with newfound energy and inspiration to tackle the tasks ahead. 

Monday 16 June 2014

To Websockets or not to Websockets

With project lead David Humphrey currently on vacation and senior team member Ali Al Dallal called away to Vancouver with tertiary work from Mozilla, there was no shortage of work to be done or tasks to be undertaken. Kieran Sedgwick went ahead and took over Makedrive unit testing for the time being in order to try and eventually successfully solve the nightmarish bugs that blocked the tests' infrastructure from being fully implemented and able to support comprehensive codebase testing.

Concurrently, I went ahead and switched gears and focused on the two tasks of trying to research and piece together a proof-of-concept of a Websocket-core API system that handles user and session authentication before automatically upgrading the connection protocol from HTTP to WS. This is still a work in progress, but much learning is being had thus far. Some decisions might need to be made on the issue of the potential limitations of the core library not being able to handle upgrade events as comprehensively as might be necessary in order to properly and securely create this connection switch validation.

Lastly, I was helping fellow team member Gideon Thomas with the planned upcoming demo of the bi-directional syncing functionality of Makedrive, mainly with designing the front-end UI and pair programming through the client-to-server communication and invocation of our libraries. That unfortunately wasn't able to be materialized due to the discovery of a bug with the server-side diff route validation that is still being solved to this day which not only affected bi-directional syncing but the unidirectional syncing that was demoed weeks earlier as well. Slightly heartbreaking, but on we fight with the knowledge that eventual victory will taste that much sweeter.