muhuk's blog

Nature, to Be Commanded, Must Be Obeyed

January 13, 2019

First Order Thinking and Pragmatism Are Not the Same Thing

Most non-technical people think software development is a standardized, repetable process. That is why they come up with enterprise agile frameworks. If it was standardized we would not need to write software but we would generate it from specifications[1]. Every new project, every new task has a component of discovery. It requires us to think outside of the box. Therefore assembly line approach to software development produces mediocre results at best.

Read more...


December 09, 2018

Presentation: Main-Loop in Clojure

I did another presentation for Singapore Clojure Meetup about building the main loop for a game (or just an interactive application) from ground up. You can find the slides here.


October 08, 2018

Getting a Little Further Than Hello World With Rust - Part 3: Concurrency & Parallelism

This is the third post of Getting a Little Further Than Hello World With Rust series. We will look into Rust’s concurrency support. I intend to provide a guide for the Rust language and try to keep things within the safe Rust realm. We will be looking at the concurrency primitives that are in the Rust standard library. Please keep in mind that there are popular libraries that provide other efficient and convenient concurrency primitives.

Read more...


April 03, 2018

Getting a Little Further Than Hello World With Rust - Part 2: Test Driven Development

This is the second post of Getting a Little Further Than Hello World With Rust series. We will write some Rust code with tests. In fact we will be practising Test Driven Design.

  1. We will start by writing a unit test and make sure it fails.
  2. We will write the code to make the test pass. Just enough code, nothing more.
  3. If there are any opportunities, We will refactor our code.

Rinse and repeat.

Read more...


November 28, 2017

Getting a Little Further Than Hello World With Rust - Part 1: Ownership & Mutability

Rust has excellent documentation and these posts are not meant to replace the official documentation. I strongly suggest going through the links below, if you have not already done so, before/after/while reading these posts:

Read more...