5 things I have gained from SICP: Section 1.2


What I learnt from Chapter 1.2 of the SICP book. A needed pause to reflect on knowledge gained before diving into 1.3.

How to add in programming languages


This is a tongue-in-cheek attempt to expose programming language expressiveness.

Understanding reduce with JavaScript Arrays


Programming involves manipulating collections of various things. Operations on collections include aggregating values, conversion into other formats and data replacement.

C# Const vs Readonly


This post explains the difference between the readonly and const keywords in C#, when and how to use them.

Reading the SICP BOOK


I have been longing to read the Structure and Interpretation of Computer Programs (SICP) for a long time - a lot of great programmers tout it as one of the 'books' to read. In May I completed JS Allonge (a somewhat challenging read but got to understand the Y-combinator Alhamdulillaah) and I felt it was a good time … Continue reading Reading the SICP BOOK

Reading: September 2014


Brief reviews of 2 books read in September 2014

Understanding Partial Application and Currying


In pure functional languages, functions are not 'invoked', rather a set of arguments is 'applied' to them. Now, if all the arguments are not passed in, then the function is being  'partially' applied. Partial application converts variadic functions (i.e. functions with multiple parameters) into functions of lesser arity by pre-specifying certain argument values.

Understanding Tail Recursion


The biggest advantage of using tail calls is that they allow you to do extensive operations without exceeding the call stack. This makes it possible to do a lot of work in constant space without running into out of memory exceptions; this happens because the frame for the currently executing function is re-used by the newly-executed function call.

Mastering JavaScript’s Function.prototype.bind and its applications


The bind function allows you to set the context with which a function will execute. It takes in a 'context' object and returns a new function which has its context set to the passed in object. T

I Git! Stashing Explained


An explanation of scenarios where git stash comes in handy and how to apply stashing

Quirky Quirky JavaScript: Episode One


JavaScript is an awesome language however it exhibits some quirks; this posts examines some of these fine odd aspects of JS; dive in, you'll love it!

Programming Paradigms: An Introduction


A programming paradigm is a way of programming, a style of solving problems and thinking about the domain. Languages directly or indirectly influence programming style; for example, Haskell is purely functional while Python allows a blend of OOP, functional and imperative programming.

The Immediately Invoked Function Expression


The Immediately Invoked Function Expression (IIFE, pronounced iffy) is a named/anonymous function expression executed immediately after its declaration.

Defining JavaScript Functions


There are many ways to create functions in JavaScript; some styles are quite popular e.g. the function declaration and function expression while others are not.

Important JavaScript Concepts


Three Important JavaScript Concepts developers should know

Understanding JavaScript Functions


JavaScript is a functional programming language and it is essential to truly understand functions to achieve mastery of the language. In JavaScript, functions are pretty much at the same level as objects: you can assign functions to variables, access function properties, pass them in as parameters to other functions or invoke them using the function operator.

Programming Language Type Systems II


Strong/weak typing describes the ease of mixing variables of different types in expressions. Strong typing does not imply static typing just as weak typing does not mean dynamic typing. To put it simply, if a programming language tries to interpret an expression containing variables of varying types at runtime (e.g. adding an int to a … Continue reading Programming Language Type Systems II

Programming Language Type Systems I


Static, dynamic, strongly-typed and/or weakly-typed; the terms we routinely use to describe typing in programming languages. However, these terms (especially the last two) have more to them than is generally assumed.

Maximizing Value: Learning to do less


I have always been concerned with maximizing efficiency for a long time; before, it meant learning everything I could in the shortest time possible. To me then, 'done' meant completing a book or series of videos and this blinded me from verifying acquired knowledge. So I mostly went from one book to another without challenging … Continue reading Maximizing Value: Learning to do less

A peek into JavaScript’s Array.prototype.map and jQuery.map


This post describes the difference between Array.prototype.map and jQuery's map implementations.

Becoming a Professional Programmer


1. Deliver when you commit It is extremely bad for your reputation to fail to meet up to your words; if you can't deliver, please say no or find an alternative way out. How would you feel if an artisan disappoints you for no good reason? I bet you'll probably never do business with them again. … Continue reading Becoming a Professional Programmer

5 things I learnt from Code Complete 2


Five lessons learned from reading Code Complete 2

Memories of Masdar: 2011 – 2013


I wrote a memories of Ife piece after completing my bachelors and it would be just as well to write another post about my time at Masdar. Masdar is a great school, has an international student community, extremely nice people, an awesome nearly unbeatable welfare package and a great beautiful environment. I arrived at MASDAR in … Continue reading Memories of Masdar: 2011 – 2013

Staying Up-to-date : Newsletters and Resources


A collection of resources for staying up-to-date in the industry

The Art of Debugging


Programmers usually spend a lot of time debugging and it can be a painful experience; some feel like tearing out their hair in exasperation, smashing their poor computers or even believing that their computers really 'hate' them! :) Actually computers do not hate people and the operating system is not conjuring bugs - the most likely reason is buggy code. Here are a couple of tips on debugging; hopefully these will help to reduce time spent, frustration and annoyance levels.