Merge vs rebase: you really should use both

Considering how widespread usage of git has become, it is quite interesting that there is still huge variety in how it is actually used for development flows of different projects. There are various debates on topic but here I am going to focus specifically on "merge vs rebase vs squash" and general topic of integrating changes.

Despite lot of controversy, I am convinced this is actually a reasonably solved problem and there is a uniform approach that addresses majority of use cases - and that it is somewhat different from what services like Bitbucket or GitHub encourage.

This article assumes some pre-existing knowledge of how merge and rebase works, as well as general git proficiency. If this is not the case, already linked Atlassian article explains it with plenty of easy to follow visuals.

(read more)

Most desired from Rust in 2018

Recently there was a call for community blog posts themed about ideas and expectation for Rust in the coming year. I definitely can't count myself as part of community yet as my experience with Rust so far has been purely about experimenting and research but it feels like a great opportunity to share my thoughts so far.

Short summary: more love for [no_std] + shifting ergonomics initiative towards libraries and idioms.

(read more)

Brief comparison of Rust iterators and D ranges

As I have mentioned before, Rust programming language is the one which interests me most currently. And lately I have been experimenting with how one may approach higher level library and application design there.

In D programming language, which I am quite experienced with, the main story of success for API design comes from the concept of ranges - abstractions over sequences of values generating them in lazy manner. It ended up being cornerstone of zero-cost and yet incredibly convenient to use library designs and I was naturally curious about extending this success story to Rust. And iterators indeed look much more similar to D ranges than to C++ iterators!

The following notes come from experimenting with similar design approach in Rust and doing some research on encountered issues.

(read more)

My concerns about D programming language

I have announced my stepping away from most D upstream participation a while ago. At that time I have not provided any specifics about my reasons to do so and that was quite intentional - that wouldn't do anything but create another hot debate that helps no one.

Still, I know that more than few developers have been wondering about that and, most importantly, I feel like I owe some explanations to everyone who has been hearing D evangelism from me before.

Please note that this is purely my perception of the matter lacking any proofs or objectivity and as such it should be taken with appropriate skepticism. My goal is to explain, not to convince.

(read more)

OOP composition with mixins in D

I have recently given a very small talk for a Berlin D meetup about approaches to make OOP style designs more robust with tools available in D. Normally I am quite quite skeptical about OOP in general and prefer to write code in a mix of functional and generic style but often there is that big chunk of old code that works just fine and you are not going to rewrite it just to switch the paradigm. Tweaking slightly for improved maintainability totally makes sense though.

(read more)