Chidi Muorah

I have an interest in computational intelligence, functional programming and financial derivatives.

Read this first

Favourite Blogs

A couple of blogs I frequently visit that I’ll recommend can be found below

Scalable System Design

  • 1024 Cores
  • Psy Lob Saw
  • Vanilla Java
  • Gil Tene’s Blog

View →


Podcast Recommendations

I’m always on the lookout for podcasts that I can add to my little library of good podcasts. With some very aggressive curation of what I subscribe to, the following podcasts never disappoints

A16Z

The a16z Podcast discusses trends, news, and the future of a world being shaped by technology, especially as ‘software eats the world’. It features industry experts, business leaders, and other interesting thinkers and voices from around the world. This podcast is produced by Andreessen Horowitz (aka “a16z”), a Silicon Valley-based venture capital firm that invests in entrepreneurs building the next great consumer and enterprise companies. Multiple podcasts are released every week and sometimes on weekends; visit a16z.com for more details.

Freakonomics Radio

Host Stephen Dubner has surprising conversations that explore the riddles of everyday life and the weird wrinkles of human...

Continue reading →


Tabu Search

Steepest descent search will arrive at a local optimum. To escape, we need to allow some “bad” (not improving) moves. Tabu search seeks to control which “bad” moves are allowable and which are not. To escape from a local optimum, we need to move out of its “basin of attraction”.

Associated with any local optimum is a set of points which if we run steepest descent starting from any of these points, it’ll end up in that local optimum. This set is called the basin of attraction. The search space is partitioned by basins of attraction. We need to allow sufficient “bad moves” to go from a local optimum to a neighbouring basin.

To try to get this to happen, Tabu Search allows reversing moves (at least for a while) in the hope that this will move the search further away. For a search space of binary strings with Hamming-1 neighbourhood, this means keeping a list of bits that have been flipped...

Continue reading →


Genetic Algorithms

Genetic algorithms use a population of points to search for good solutions. It is hoped that using a population will help solve the problem of local optima. It is based on an analogy with the evolution in the natural world

Darwin’s Principles

Darwin proposed that natural evolution was driven by the following principles

  • Children tend to inherit characteristics from parents
  • There is some variation in those characteristics
  • Some characteristics are “better” (at creating more children)

It is now known that such characteristics are encoded genetically (in DNA molecules) which are subject to variation which are introduced by

  • Mutation - small errors in copying
  • Crossover - genes transferred between chromosomes

Biologists call the propensity to have children the “fitness” of an individual.

To create a genetic algorithm, we have a population of points in the search space. We encourage...

Continue reading →


Differential Evolution

Differential Evolution(DE) is a population based algorithm whereby new points are created by taking a random member of the population, performing a “crossover” on it with a “partner”, and replacing it in the population if the result is better than the original.

The Mutation Partner

The partner for crossover is generated as follows. Suppose we have chosen x for crossover.

  1. Pick a, b, c randomly from the population distinct from each other and distinct from x
  2. Let v = a + F(b - c) where 0<F<1, note that F is not a function v is the partner for x That is, for each i = 1..n, vi = ai +F(bi - ci)

Crossover

To cross x with v

for i = 1 to n
      if(random < CR)
             yi = vi
      else
             yi = xi

CR is a crossover bias typically 0.5

Algorithm

  1. Pick a random population
  2. Pick a random number x from the population
  3. Pick a,b,c from population distinct from each other and...

Continue reading →


Useful Online Haskell Resources

This is mostly a collection of reference materials that I have read or regularly read on Haskell

Stephen Diel’s Blog
Oliver Charles’s Blog
Dan Pipponi’s Blog
Edward Kmett’s Blog

View →


Book Recommendations

Over the years, I have read a fair amount of books and some of them have left a lasting impression on me for whatever reason. I’d rather not go into details about why I loved those books but instead just list them here in case anyone finds them interesting too

Business

  • Zero To One by Peter Thiel
  • The Hard Thing About Hard Things by Ben Horowitz
  • Winning Credibility by Zbigniew Michalewicz

Hacking

  • Structure And Interpretation Of Computer Programs
  • Parallel and Concurrent Programming in Haskell by Simon Marlow
  • Java Concurrency In Practice by Brian Goetz
  • The Little Book of Semaphores by Allen B. Downey
  • Designing Data Intensive Applications

Algorithms And Data Structures

  • Purely Functional Data Structures by Chris Okasaki
  • The Algorithm Design Manual by Steven Skiena

Computational Intelligence

  • How To Solve It by Zbigniew Michalewicz
  • Machine Learning by Tom Mitchell
  • Neural Networks...

Continue reading →