# Dawid Ciężarkiewicz aka dpc

contrarian notes on software engineering, Open Source hacking, cryptocurrencies etc.

## My view on macroeconomy

Or: Why there's no inflation and things are weird.

TL;DR: Global economy is much closer to a game of Monopoly than most people realize. We're at this phase when it's clear who owns all the hotels, and the only thing that allows other players to keep playing is taking on more and more debt. This big Monopoly game always ends up like this, and is being restarted. That's the economic “supercycle”.

All models are wrong, but some are useful

I really enjoy simplifying complex system into useful mental models. This is a short compilation of what and how I think about the macroeconomy. I'm not saying it's right, but it's mine and I wanted to share it. I'll be happy to hear where it is inaccurate or simply wrong. Also, I'm aware that what I say here is probably not very novel.

## Pragrammatic critique of Urbit

I really like the Urbit project. I don't know how long I've been following it now. It was definitely earlier than 2016 when I discovered it, probably even 2014.

I think #Urbit is fundamentally trying to address the right set of problems in a comprehensive, holistic way. The fact that the Internet is broken for anything but centralized silos. I am deeply enthusiastic and cheering for Urbit. I do want it to succeed!

But in this post, I'm going to focus on an honest critique. I've actually read a lot of interesting critique of Urbit over the years – all that I could get my hands on. Mine is going to be less ambitious, and mostly down to earth and pragmatic. I hope it won't come out to harsh.

## List of must-use libraries and tools for Rust

I'll be updating this post in the future. It is mostly for my record keeping.

## Towards better test runners/frameworks

Test runners/frameworks caused me a lot of grief over the years. It's part of the reason why really appreciate how standard #Rust test runner works. As usual with Rust, core developers, and the community at very least avoided the most common misfeatures and made the right thing to be the easiest and most natural thing to do.

I've taken some time and collected a list of feature request, misfeature rants, that I just want to share.

## Kill Instant Messaging

This is a part of #altswe series, where I describe ideas for an alternative approach to software engineering.

I've been a part of teams between 3 and around 20 software engineers; in companies between 3 and thousands of employees. I have used corporate messengers, IRC, Hangouts, Slack and many other IM tools. After all of that, I think they are generally counterproductive.

## #altswe Introduction: alternative approach to SWE

This is an introduction page for the #altswe series, where I describe ideas for an alternative approach to software engineering.

I've been fortunate to work on software with a lot of smart and hard-working people, in a lot of cool places. And while the companies I worked for were often very different: their business, products, size, growth, etc., the way software engineering was organized, was actually very similar.

I feel like generally, we just keep doing things “as we did them at my previous company”, and very rarely anything truly different is being considered.

I'm a natural contrarian, and I'm always on the lookout for alternative approaches. I just couldn't help myself but to develop a list of things that I really wish I could have an opportunity to try one day.

If I am ever in charge of a team or a company, I'd like to try some or even all of them, and see how well (or bad) they work.

For now, I am just gathering them here, under the #altswe tag. The ones without a link, are yet to be written.

• Kill Instant Messaging – less is more.
• Less is more – cut unnecessary tools, projects, features.
• Work in pairs
• 4x7 – 4 days a week, 7 hours – again: less is more.
• No Scrum, No Standups, No “Wish Points”
• Ownership – Root of safety in Rust, prosperity in the markets, and quality in SWE.
• Avoid success at all cost

## rust-bitcoin-indexer: How to interact with a blockchain

or: Notes on indexing blockchains

A copy of this post can be found on rust-bitcoin-indexer wiki.

Abstract: I have ventured on the quest of discovering the best way to index a blockchain. Surprisingly little has been written about it, considering that it is a common task for any organization handling blockchain-based interactions. It seems that, it is an area dominated by in-house solutions, with very little knowledge sharing. In this post, I go over the problem, ideas, discoveries, and experiences. I also describe a Bitcoin Indexer implementation that I have worked on while researching the subject: rust-bitcoin-indexer.

I expect the reader to be familiar with at least the basics of Bitcoin.

Please note that this is not scientific research and only a spare-time project. Feel free to contact me with comments: pointing out any mistakes and ideas for improvements.

## Smart contracts and token economy without Blockchains

or: A token (even smart one) needs a blockchain, like a fish needs a bicycle.

Image above: Tokenizing assets on a Blockchain

## Abstract

In this post, I explain why I believe Blockchains are just coincidentally associated with “token economy” and smart contracts, and how in essence they are not their enablers, but actually a hindrance. Then I propose an alternative: a concept of an open, federated smart contract system, that maintains all the benefits traditionally associated with blockchain platforms like Ethereum and can practically support a global scale token-economy, without all the problems inherent to blockchain-based systems.

## Be warned: Tests are great calcifiers

Today, I'm going to give a contrarian view on tests and testing in software.

From my experience, the most common view on software testing is: “Tests! Tests! Always have tests! Start with a test! End with a test! More tests – good! Less tests – bad! 100% coverage! Test everything! How can you not have tests everywhere?!” ...

... or its opposite-side tween: “Tests? Why bother? Maybe later.”

Before I go any further, a note for the typical distracted reader, that is going to skim over the text, misunderstand it, and go rage over social media how stupid the author of this post is: I'm not saying that tests are bad. I'm going to focus on the bad side, but that is not the only side. Go read somewhere else about the good sides.

## The strange case of monetary policy in Grin

I am a crypto-finance enthusiast and though I am strongly skewed toward Bitcoin maximalism, I still try to follow the space looking for promising technologies and ecosystems.

One of the coins that really caught my interest was Grin

• It has no fishy business (pre-mine, dev-taxes),
• is written in #Rust (which, I think, is a perfect language for #cryptofin),
• it is based on MimbleWimble which is a very promising tech improving blockchain scalability.

It ticks all the boxes to be a reasonable altcoin.

The only problem with it is it's controversial monetary policy. Basically: one coin, every second, forever. While I don't mind the “forever” part, the problem with Grin's monetary policy is the steady and long initial inflation rate.