Author image

Ray Gervais

Topics of Programming, Techno-babble, Music, and Life through the eyes of a Canadian Software Developer.

Why Mobile Devices Are Built Using AArch64 Chipsets

A common theme in the SPO600 course, is the need for software which originally was written for x86_64 to be ported over to AArch64 chipsets. This includes providing better capability,  optimizations, and developer support for the alternative processing architecture. Doing so is not as easy as one might imagine, for the GCC compiler (in the case of C code) already covers quite a bit of optimizations during compilation on a AArch64 system.

Tags

Link

Unit Testing a NodeJS Driven Project

This lab extends the previous OSD600 Lab, which had us creating a NodeJS project with which utilized ESLint, choosing a JavaScript coding guideline, and finally testing our efforts with the powerful Travis CI. This time, we were introduced to the process of unit testing; another important developer tool which is often overlooked in smaller projects. Unit testing involves the process of programmatically asserting the expected results of your functions, providing both valid or invalid arguments or any item which may considered edge cases. For those searching for a better definition, I’d recommend looking into [Wikipedia’s definition](https://en.wikipedia.org/wiki/Unit_testing). One thing that Wikipedia doesn’t have, is the process of which this lab had us going through, which I’ve included below. Let’s jump in!

Tags

Link

When Segfaulting Won’t Do

Sometimes, you have a great idea which may improve one of the worst processes a developer routinely experiences over and over, and sometimes your idea is so grand that reality escapes your grasp quicker and quicker with each passing second. This is what I had come to realize after discussing with Chris how I could benchmark my updated segfault function, to which his response was simply, “why?”

Tags

Link

Creating a NodeJS Driven Project

For this week, we were introduced to a few technologies that though interacted with during our contributions and coding, were never described or explained the ‘why’, ‘how’, or even the ‘where to start’ aspects. The platforms on trial? Node, Travis CL and even ESLint -curse you linter, for making my code uniform.

Tags

Link

Bramble Console = self.Console()

This small post is an update to the [Thimble Console implementation](http://raygervais.ca/javascript-console-in-thimble/) that I’ve been working on with the help of [David Humphrey](https://github.com/humphd).

Tags

Link

Optimizing Glibc’s SegFault

Segmentation Fault (Core Dumped) is a phrase that many know all too well, so much so that some developers such as yours truly was even granted the pleasurable nickname of ‘segfault’ during their first year at Seneca College. So, when tasked with the intention of optimizing a function or few from the GNU C Library (GLibc for short), I thought I may as well play a hand in ruining other programmer’s days as well. Seeing that segfault() existed in this library lit up my eyes to mischievous intents and melancholy memories, but I knew I wanted to take a crack at improving it.

Tags

Link

Writing Inline Assembly in C

For this exercise, the task was described in the following way, “Write a version of the Volume Scaling solution from the Algorithm Selection Lab for AArch64 that uses the SQDMULH or SQRDMULH instructions via inline assembler”.

Tags

Link

Writing Good Contribution Messages

On Tuesday, the class was told a key fact that I imagine not a single in the room had ever thought before; commit messages, pull requests, and even issue descriptions, are the sole most challenging item for any developer to get right. This was in the context of working in an open source community. I was curious, so I looked into my pull request titles, commit messages and pull request descriptions.

Tags

Link

Compiler Vectorization in Assembly

For this exercise, we were tasked with the following instructions, cautioned that only ones with patience would achieve completion of this lab with their sanity intact.

Tags

Link

JavaScript Console in Thimble

Originally, my aspirations had drawn my contribution choice to a recently suggested UI enhancement, which can be found in my previous [blog post here](http://raygervais.ca/brackets-enhancement-proposal/). Though it led to some valuable discussions for said implementation, it was decided that until such topic is further conceptualized, my contributions should be spent otherwise in a more concrete topic.

Tags

Link

Going Evil

I have been a vim user for about two years, most of that time dedicated to simply learning how to exit the application. But all jokes aside, I’ve been using this editor for 90% of my projects and can say with confidence that despite its perverse editing modes, my continuous failures to execute the correct command -by hitting the key right beside the desired target mind you, I am proficient enough to navigate a document and develop. This week, I decided I wanted to see what it was like on the other side of the editor war. This week, I went evil.

Tags

Link

The Perfect Platform Agnostic Digital Notebook - 2

Using Google Keep as my exclusive note keeping and organizational platform has been a mixed bag, one of which I had learned quite a bit of my own preference and annoyances when it comes to software. For one, Keep does not have a dark theme (this is easily remedied by changing css, or using a web wrapper with custom themes) nor does it encourage any developers to utilize it compared to Drive for example.

Tags

Link

Brackets Enhancement Proposal

When we were given the instructions to search, locate and eventually implement fixes or upgrades to Mozilla’s Thimble or Brackets, I found what perhaps was the most challenging enhancement I could possible implement.

Tags

Link

Algorithm Selection in C

During this lab, we were instructed to program two different implementations which attempted the same process; adjusting the volume of a sequence of samples. This program would be implemented in C, and benchmarked using the conventional time.h library available through the system.

Tags

Link

The Perfect Platform Agnostic Digital Notebook

EverNote, a product regarded as the one of the most controversial productivity services of 2016 due to [pricing scheme](http://lifehacker.com/evernote-limits-device-sharing-for-free-users-bumps-up-1782744350) upgrade, feature restrictions on lower offerings, and a [privacy policy update](https://blog.evernote.com/blog/2016/12/15/evernote-revisits-privacy-policy/) -which allowed developers decrypted access to the average user’s notes, have made many turn away in uproar, and even fewer advocate the upgrades.

Tags

Link

Contributing a Bug Fix to Thimble

In the last week of January I posted about setting up a local instance of Thimble, an online editor which supported the learning of HTML, CSS and JavaScript.

Tags

Link

Creating Static Web Content hosted by Github

When we were given the instructions to search, locate and eventually implement fixes or upgrades to Mozilla’s Thimble or Brackets, I found what perhaps was the most challenging enhancement I could possible implement.

Tags

Link

Compiler Optimizations and Features

When we were given the instructions to search, locate and eventually implement fixes or upgrades to Mozilla’s Thimble or Brackets, I found what perhaps was the most challenging enhancement I could possible implement.

Tags

Link
Cover image

Contributing to Mozilla's Thimble

An OSD600 contributions to Thimble, a web learning tool/editor based off of Adobe's Brackets.

Tags

Link

Assembly Language on x86_64 and aarch64 processors

Assembly language, a low level programming language which enables deeper integration with the supported machine’s architecture.

Tags

Link