Types are the safety belt of your application(s)

Types are the safety belt of your application(s)

TL;DR In our everyday software development work we tend to under-valuate the meaning of type systems, their expressiveness & role they play in proper domain modeling. Due to poor reflection of true nature of data, we increase error-proneness & readiness of the codebase - all of that because we assume that int, double, string & class are the 4 words sufficient to describe the static aspects of reality. In fact, it doesn't take much (of effort & good will) to fix this up. I may be over-generalising here (for purpose ;>), but it's not that hard to find out…

Read More

Two flavours of Functional Programming

Two flavours of Functional Programming

_Disclaimer: this post is not intended to provoke or troll anyone. The idea isn't to present any language / paradigm as better or worse than any other. I have friends who prefer (& use on the daily basis) all the technologies mentioned below - I respect all of them as not only great guys but also top-notch professionals. TL;DR - modern Functional Programming is quite diverse, but all the available languages seem to fall into one of two "families", identified by the background of their makers: scientific ones & engineering ones. Interestingly, people who favor particular languages from…

Read More

Failed revolution? Renaissance of FP, 3 yrs later

Failed revolution? Renaissance of FP, 3 yrs later

Roughly 2-3 years ago, we've all experienced the popularity outburst of so-called New Wave of Functional Programming languages. As everyone was rediscovering the FP paradigm ("re-" is important here as actually there were no new concepts, just a re-visit of something well known from the past) hype was sky-rocketing, new languages were being created almost on the weekly basis and the overall enthusiasm regarding how FP will change the industry was astonishing. Today, the peak of the hype seems over - the initial excitement has passed, new products had some time to mature & prove the difference they…

Read More

Becoming a REPLicant

Becoming a REPLicant

You've heard about REPL, didn't you? REPL stands for Read Eval Print Loop & it's a common name for platform/language-specific shells that give you the ability to do live programming with line-by-line evaluation as you finish each line. In plain, soldier's words - REPL 'scriptizes' your programming language of choice to give you sort-of-debug experience without limiting you to execution of just the statements you have pre-compiled in your source code. Not-Useful-Here Frankly speaking, I've seen many people ultra-enthusiastic about this idea (mainly Clojure & Node.js peeps, some Scala as well), but I didn't share their ecstasy. Coming…

Read More

State pattern, tech debt fertilizer

State pattern, tech debt fertilizer

A short post about unreasonable usage of State pattern - something I keep seeing every so often in code (regardless of language / platform). What's a State pattern? State pattern is a way to encapsulate state (& behaviour that depends upon it) within an object the state belongs to. It's a natural way to express physical reality (and its variability over time) in a conceptual Object-Oriented way. If you follow state pattern: 1 physical world object is usually represented by 1 entity (DDD-wise) (+ tree of dependencies, etc.) with a life-cycle that corresponds to the life-cycle of physical object; for instance: Car…

Read More

Back to the roots, functional style - Lambda Days 2015

Back to the roots, functional style - Lambda Days 2015

February is over, so it was a high time to open the conference season in 2015 already ;P Due to practical reasons I carefully track such events that happen in Poland (not much to be tracked, but the number is increasing from year to year) - that's how I found myself in Cracow on 26th of February, the 1st day of Lambda Days, relatively less known conference dedicated to functional programming. You can find all the details about the idea of this conference on its website, but there's one thing worth mentioning -> during the second day of Lambda…

Read More

How (& why) I've got a 1st sticker on my laptop

How (& why) I've got a 1st sticker on my laptop

This isn't really a story about a sticker (surprise, surprise), but it really exists & its on the top cover - here's the proof: Whoooa, it's Erlang. Not GitHub/Akka/F#/AngularJS/OculusRift/Spark/Clojure/Heroku/Swift/Elixir or any other most fresh of the freshest Internet-era web-scale sexy thing. Bah, quite the contrary - it's a freakin' programming language straight from 80s. Did it have a massive overhaul recently? Did they adapt it for iOS? Or maybe someone has released an overhyped & ultraopinionated web framework based on that? Does it even run on YARN? No. No-no-no-no-no. Why this…

Read More