Or “What I learned at my first job”. In this post I will reflect on what I learned from the 9 months I spent working my first software developer role for a US startup. As with all my posts I follow the philosophy to write as if no one is reading, this will be in part a way for me to pull my thoughts together but also a way to document my progress in becoming a software developer.
In 2015 I had the very fortunate opportunity to invest some time in my skill as a programmer. At this time I had an undergraduate degree (Bachelor of Science) double majoring in software and computer networks. I had also completed the first two thirds of a masters degree, also in computer science. I chose not to complete the thesis because I felt I did not have anything to add to the field, graduating with a diploma of Computer Science (pass with high distinction).
Part 2 of this series outlines a method for starting to learn the process of Linux kernel development. As stated in part 1, this is but one method. The aim of this post is to illuminate a pathway starting at the point when you have had your first patch merged into the mainline. If you have not had your first patch merged you may like to read part 1 of this series.
This is the first in a series of posts about getting started in Linux kernel development. Most of what is written in this post is already available on the web. It is provided here for completeness and as a pre-amble to the next post in the series.
Kselftest is an effort to enable a developer-focused unit test
framework in the kernel to ensure the quality of new kernel
- Shua Khan
Install and run Linux kernel selftests on Ubuntu 16.04
A Fenwick tree is a data structure that holds an ordered collection and supports
update, both in O(log n) time.
… understand just how astonishingly commonplace (and important) graph problems are
they should be part of every working programmer’s toolkit. - Stevey
The graph data structure is of high utility across the field of computer science. Graph problems come in many shapes and sizes but once modeled can typically be represented by a limited number of graph data type variants.
To appreciate programming as an intellectual activity in its own right … you must read and write computer programs - many of them.[ASS96]
For the past nine weeks I have been working on programming questions at HackerRank completing questions in the ‘practice area’ i.e I have not competed in any competitive programming competitions offered by the site. Today I reached the first milestone I had set, namely, to get a top 1000 ranking (96th percentile) in the algorithms sub domain.
A heap is a data structure that supports the operations insert and extract. Heaps typically come in two varieties, min heap (for extracting the minimum value) and max heap. A heap is built using a binary tree where each node is said to dominate the nodes below it. The meaning of dominate depends on the type of heap being implemented, for a min heap the key of each node is less than the keys of both of child nodes.