I am currently a third year Computer Science undergrad at Concordia University in Montreal. Ever since the moment I started reading my first textbook about programming, I have not been able to quench my thirst for more.
During my first year in university, I studied mostly Java and Android, introduced myself to Linux, and had an internship with Radialpoint. In the second year, I did a lot of web programming (mostly HTML/CSS/JavaScript with a PHP backend) which got me my second internship at GSoft. In January 2016, I landed an internship at Microsoft, where I worked on a project involving Muzik’s new smart heaphones. These headphones have an integrated accelerometer, four programmable buttons and swipe gestures. They can communicate with a device using Bluetooth. The task given to my team was to design and implement a software development kit for Android and iOS that would abstract away the nitty-gritty details of the Bluetooth protocol and provide a clean API. I was tasked with designing and implementing the Android library.
I’ve also read tons of textbooks that taught me some core computer science knowledge. One of them was the famous Structure and Interpretations of Computer Programs. This book uses the Scheme programming language to teach fundamental concepts about data and procedures which apply to all programming languages. In the second part of the book, we write an interpreter and a compiler for Scheme in Scheme. It is a startling experience. Another one was The Linux Programming Interface, in which I learned Linux and its system call interface in-depth. A last notable one was Computer Organization and Design by Patterson and Hennessy, which made me understand how hardware works, and tradeoffs between different computer architectures.
As for open-source projects, I contributed to libuv, the library used by Node.js for its event loop and asynchronous I/O. My contribution was a simple one: I exposed a private Windows-only function that translated system error codes into libuv error codes, implemented the UNIX version of it, updated the documentation and added a test. However, as I was working my way to this contribution, I read the complete source code and understood at a deep level how libuv does things. I also contributed to the Node.js project, where I fixed a bug in the stream module. Even though the pull request was code reviewed, it never actually got merged in the project. Regardless, I learned a lot about how open-source projects work and thoroughly enjoyed the experience.
My latest projects were to implement my own operating system (thank you MIT for putting this awesome course out for everyone!) and to implement my own Scheme interpreter in C.
Finally, I am now exploring the awesome world of robotics!
You can either e-mail me at laferriere.phil@gmail.com or message me on LinkedIn.