Posts

Bug 0.2 Release Fix

Image
Hello once again! This is the last assignment for my Open Source. This was an incredible class that got me started in the open source world, and I will continue this journey after this class is over. This was my 0.2 bug release. I found a few bugs to work on last blog, and now I am documenting my progress, and how I've completed it. For this release, I had 4 bugs to work on in total. The first bug was still ongoing bug from my first release that I haven't completed, it was for Thimble, a web-based code editor. Thimble is a unique code-editor, in the sense that it has a screen that is being updated in real time as the code is being written. It's a great learning tool for new programmers. The bug is relatively simple, the user is able to move the divider so far as to make each line on the editor a character. I simply need to add a min-width to both of the panes. However the editor is made programmability, and I've been having troubles finding out whe...

Bug 0.2 Planning

This past week or two, I've been searching for good bugs to work on for my next release for my DPS909 Open Source class at Seneca College. I still have a bug that I haven't figured out during my first release, this was my from thimble , I will give this another shot. During my search for bugs, I came across a project called Cuberite , which is a lightweight game server for MineCraft. I occasionally play MineCraft with my youngest brother, and so I thought I'd love to work on a bug for MineCraft. Before committing to a bug, I thought I'd try running the server and possibly reproducing one of the many bugs, unfortunately I couldn't even start the server! After some frustration, I decided I'll leave this until another time, I don't want to give up on it just yet, but my time is running out for release 0.2, and I can't be wasting time if I cant even get the server to start up properly. For my next release, I wanted to write more code. For the 0....

Async image load test with gh-pages

Image
I finally got the opportunity to try out GitHub Pages. GitHub Pages is a simple static HTML page that we can create from our GitHub repositories. It is perfect for documentation or anything related to the project. To get started, a gh-pages branch must first be created, and then it can be further setup in the settings section. For this project, I wrote a test case for async image loading. I built a simple page that would allow me to test this in multiple browsers. The page is very simple with an image, a counter, and a button to reload the image. As the user clicks the button, the image is reloaded. If the image is reloaded, the background changes colours and the counter is updated. The async testing has passed on all the browsers except for Safari. I decided to dig deeper into this and Safari is like this. I had to dig pretty deep into the webkit source files to see where the load event is fired. After digging around for a little bit, I found the ImageLoader.cpp file. The na...

Learning Proper Documentation

Image
Earlier this week I finally finished my JavaScript Node.js package . I finished all the coding and testing, and thought to myself "Okay great job, on to the next project." However there was one thing left to do: documentation. I know the value of good documentation because I've worked with a few large projects in the past. After coming back to a project after a month or two without any documentation, the code can seem very alien to you, as if it wasn't even you that wrote it. I typically try commenting most of my code, however my set-up instructions, project descriptions, and generally my ReadMe file has never been up to par. This project has taught me how to write a cleaner, better looking read me. GitHub has detailed instructions for creating good documentation that I've been following. It specifies the order and content that a ReadMe generally follows: project name, description, table of contents, installation, usage, contributing, credits, and license. The...

Setting up a complete CI Solution for a project

Image
With this lab, I continued working on my library that I created. Although originally my library was pure JavaScript/HTML, I changed it over to Node for some new experience. This required me to modify some of my functions. This lab has taught me how to set a continuous integrated environment. In simpler words, continuous integration is a process of automating the build and testing of code for every new commit. My first experience with automated code testing came as I pushed first bug fix, I received a message saying my code didn't get accepted because Travis CI build failed. This time, I got to set up my entire build and test process. There are a few files that are needed for a continuous integration process. The first thing needed was a way to tell TravisCI how to configure, build, and test my project. To do this, I created a .travis.yml file in my root folder, which holds the language used, as well as the appropriate versions. Next, I used the package.json file to auto...

First bugs completed

Image
After working on my bugs for the past few weeks, I've finally completed two of my bugs! The bugs themselves were very simple to solve, but in this process, I've learned how to use a variety of different Git command, including clone, pull, add, fork, and pull request. I use to feel lost while using Git, now I'm much more confident with my new skills. Neither of my bugs were software-breaking bugs, and most users wouldn't even notice them. I finished my first bug in my previous blog, you can go and view it here . Deep inside of Firefox's Dev-tools, one button's boundaries extended to the end of the screen, instead of around the image only. The fix was relatively easy, a CSS class was already created and I only had to place the class name in the correct spot on the HTML page. I left the last blog after I completed the bug, without creating a Pull Request. During my previous lab, I practiced creating a Pull Request, so I had an idea on how to do it this time. I cr...

My first Pull Request

Image
For the next lab for my Open Source class, the goal is to create a repository with a simple open source library, let other students contribute to my library, while I got the chance to contribute to their repositories. The library is meant to get simple file information, such as file name, file size, and sha1/MD5 digest. I decided to write my library in JavaScript. I created four empty functions, raises 4 issues , and then waited for someone else to create a pull request against my code. Lately I was the one that would go into different Git project, look through all the issues to find the good first issue label. It was a nice change to create these issues myself, and then place labels on them. Eventually another student changed some of my code sent a pull request. I accepted it and merged his code together with him. I closed one of my issues, maybe someone else will come and help me out with the others. Now I had to contribute to another student's project. I knew the b...