Home
Muhammad Farag
Cancel

Vim Plugins

While you can manually install, remove and update Vim Plugins, it is a tedious process. There are two well known plugin managers for Vim, Github: Vundle and Github: Vim-Plug. After short reading on...

Vim Configuration

Configure Vim to have your own keyboard mapping, custom commands or change vim settings. We will look on how to do that and a couple of useful configurations that worked for me. Vim configurations ...

Vim Cheat Sheet

I used Vim every now and then when I needed to do a quick file editing in the terminal. I was reluctant to take the learning curve until very recently. My IDE of choice is struggling with a relativ...

My First Drawing Lesson: It's All About the Lines!

My dad has been trying to convince me to do something non-technical for a while, to find a hobby where I don’t write code. I didn’t think I have ever had it in me. I tried music before, and I sold ...

Github Pages, Markdown and Jekyll tips and tricks

This page will include some tricks I have learned with Jekyll, Markdown and Github Pages. Opening a link in a new Page A link is presented in markdown as [User Friendly Text](http://domain.com/so...

How to setup github pages with an https custom domain?

Github pages is one of the simplest ways to blog, or to have a simple static site. However, routing your own domain to Github pages can be tricky. It is mostly a matter of correct configurations an...

Type Classes

Type classes have been a blocker between me and getting a further understanding of the beauty of Functional Programming in Scala. Materials covering the matter tend to be mixed with a complex busin...

Unidirectional Channels

In the unbuffered channels post final example countUp(counts chan int) will always send values to the channel while printOutput(counts chan int) will always receive values from the channel. We can ...

Unbuffered Channels

Channels are Go’s mechanism for communication between goroutines(think lightweight parallel threads). One can send a message from one goroutine to the other. Channels can be buffered or unbuffered...

Goroutines

We can think of a goroutine, as a lightweight thread. When a new program starts by calling main it starts in a goroutine, conveniently called the main goroutine. We can invoke a function in a new g...