muhuk's blog

Nature, to Be Commanded, Must Be Obeyed

March 06, 2020

Getting a Little Further Than Hello World With Rust - Part 4: Anatomy of a Data Type

This is the fourth part of Getting a Little Further Than Hello World With Rust series. In this post we will take a closer look at Rust structs, some commonly used traits. If everything goes according to the plan variable, value, reference, pointer concepts, in Rust context, should become clearer by the time you finished reading.

Read more...


September 18, 2019

SOLID Principles and Functional Programming

In this post I would like to explore if SOLID principles (a.k.a Object Oriented Design Principles) are useful in a functional programming context. SOLID principles are not sacred commandments that need to be followed dutifully. They are guidelines for designing object oriented code.

All software development activity is design activity. When I say design in this post though, I mean the more abstract design activity that happens (in developer’s head, on paper, etc.) before coding begins.

Java got lambdas now, Kotlin is growing stronger with lots of functional features… Is there anything functional programmers can learn from OOP design?

Read more...


April 19, 2019

Cost of Laziness in Clojure

This is a technical post and laziness in this context means deferring execution of code. When the machine first meets the code, it may be executed there and then or it may be stored and executed later. Which of those happens depends on the instructions in the code, the computer just executes them without judgement.

Read more...


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.