In this week, I was given time to learn Git to prepare myself for the later participation into the grand project without messing it up. In short, Git is a decentralized version control system that conserve different version of our work in series of so called “commit”, a record of what we have done, in “branch” that we are working on. “Branch” is essentially an independent line of development that we can manipulate through branching off or merging depend on the strategies of the corporation to achive high efficient cooperation between colleagues. This allows very high reliability and flexibility of the project structure while saving us time with the cost of little memory space.
Before this I were always saving multiple version of my code locally which I found is difficult for my teammates to catch up and occationally even confused my own self. After practicing the usage of Git on an online sandbox in Github for a while, I started to really appreciate its power especially when the project is huge as it allows us to collaborate on a single code base without updates interfering with each other in an unpredicable way.
The branching strategy and release management that Aeste follow which seperate the branches into master, release, develop and feature is effective and clear. The master branch is the final release that reflect a production-ready state, the develop branch hold the latest delivered development changes and the feature branch is our “personal” branch where the development of new feature is happening and will eventually be merged back into develop branch. The similarity between git and functional data structure also helped me to develop a deeper understanding of Git.
Afterward, I spent my time to get familiar with MPLAB Harmony. It is a fully integrated firmware development platform for PIC32 microcontrollers which takes key elements of modular and object oriented design, it provides a framework of software modules that is configurable through MHC (MPLAB Harmony Configurator), a plugin in MPLAB with graphical user interface. This allows a very quick and steady building of the basic structure of the code especially for complex project that involve multiple peripheral and protocol, granting us direct reach to the design of project without hassle.
I was given PIC32 Ethernet Starter Kit to try out the feature of Harmony. Then I go through some documentation of harmony, build some application on it to control the LEDs on board, listen to the button, blink the LED with timer driver from harmony and set up a web server on the board with TCP/IP stack. Harmony structured the project into modules and application which keep the data and function well organized with object oriented design. At the mean time I am also revising object oriented programming which I have learned before but never actually really implement it on a complex and colossal real world project where it show its real power.