Analysis: the right angle

❝Differences in preference may be trivially explained if approached from the right angle.❞ TL;DR this post goes into how big the difference is for a transportation enjoyer and the car industry. The enjoyer needs only look at the benefits (and possible costs and trade-offs), while the car industry has to adapt a complete supply-chain to a shifted balance of qualities. It is fully understandable that this is easier on the enjoyer than the industry. However, it also shows how trivial it is for genuine benefits to persist once they are proved possible, and consequently hard to reject/resist, and almost impossible to deny.


Read more ...

The Venus Project - resource-based economy

❝Why Jacques Fresco's ideas on the resource-based economy in The Venus Project may be closer to reality than we might realize.❞ In “The Third Industrial Revolution (VICE)”, Jeremy Rifkin points out that – in general – things change for the better. Humans are (generally) better off than before these advancements. However, he also mentions that we are at an interesting point in time, because we have attained certain advancements that do not interoperate well with the framework of capitalism. He mentions two aspects: “zero-marginal cost” and “resource-sharing economy”. The former is about products or resources that have no practical cost to be (re)produced after its initial creation so that people do not want or expect artificially high costs.


Read more ...

The imploded (third?) industrial revolution

❝Did or did we not already transition through the third industrial revolution?❞ TL;DR In The third industrial revolution it is said that the third industrial revolution is still to come. I argue that it has already passed, a roughly 20 year period, and we just lived through it. Furthermore, I find that the triple energy-communications-infrastructure alone is not suitable to recognize all such disruptions, and I explain which events have contributed significantly to this, and the nature of the events in general. The main idea being: “secure communications enabled the internet to develop into an integral part of society and (uniquely) enhances it”.


Read more ...

Human Advancements: Introduction

❝Introduction to the series on human advancements❞ Introduction In 2018, fairly soon after it was published, I found a conference talk by Jeremy Rifkin on a resource-sharing economy. In the talk, he discusses the past industrial revolutions, a set of indicators that were present for the past industrial revolutions (and other similar events), consequencies for our economy, society and politics, and a triple that he used for classification: significant in past industrial revolutions, and possibly an indicator for what the next industrial revolution would be.


Read more ...

Engineering: The unified OOP paradigm

❝Resolving conflicting, divergent notions of OOP with a unified OOP paradigm❞ disclaimer I mention a few names of other people, but please understand that this is my interpretation of their work and the various concepts involved. Furthermore, I am taking quite a leap in this attempt to unify different notions. I might be wrong. I believe that we cannot master OOP programming languages until we comprehend the (design) capabilities of OOP. TL;DR Three distinct OOPs, The unified OOP paradigm, Foundation, Conclusions.


Read more ...

Engineering: The “minimal-objects” approach to OOP

❝Understanding the role of simplicity in object design (Object-Oriented Programming)❞ A few years ago, I looked into Object Oriented Programming and in particular object orientation – the paradigm – in a series of articles that look into Object Oriented Programming. These articles look primarily at the use of OOP in programming, identifying and discussing key points on how OOP works, should work, and deviations from how it is typically used. This focuses on the individual class, the way it is designed and implemented, the characteristics, and the benefits you get from doing it right vs.


Read more ...

Engineering: References

❝References on simplicity in software engineering❞ These are references that I have used over the years to build up a mental model. This is far far far from complete. These are just the ones that came to mind. In particular, there must be 10+ references missing regarding OOP programming, the do’s and don’ts, the good and bad. Topics Inter-process communication mechanisms, (enterprise) patterns, software, considerations ZeroMQ, In-memory message queues, Caches Concurrency/parallelism coroutines user-space scheduling, threading Python generators (many sources) concurrency vs parallelism, design vs execution blocking vs non-blocking channels in Go async/await, promises/futures Why OOP does/doesn’t suck Error handling: exceptions, monadic, assertions, abort/panic checked vs unchecked exceptions value of crashing/aborting/panicking sentinel return values for errors insight into errors, information the nature/place of error handling in control flow Architectural and design decisions of open source projects: prioritized features distinguishing features/aspects Function programming: monadic patterns Maybe / Option / Optional Trade-offs, mitigating trade-off-forced decisions: persistence or performance limited use of language features, memory sources, etc.


Read more ...

Engineering: Introducing simplicity to engineering

❝Introduction to the series on Simplicity in engineering❞ In this series of posts, we look at the prevalence of simplicity in engineering, in particular Computer Science and more generally in programming. This series in founded on the article that defines simplicity. In the post, I pose rather strong claims about the definition of simplicity (and its dual: complexity). I will assume the definition of simplicity is complete (i.e. the three dimensions cover all aspects of simplicity/complexity) and sound (i.


Read more ...

Object Oriented Programming: (implicit) acknowledgement of the missing access modifier

❝The missing access modifier is resolved using a static analysis and @ForOverride-annotation❞ In 2016, I noticed a curiosity about Java’s access modifiers: there is no mechanism to express that a method may only be overridden or called from within the child classes. This may be an important feature, as there are designs where you would want to allow overriding – or in particular – extending in child classes, without the risk of it being used from within the package in unexpected ways or at unexpected times.


Read more ...

Prematurely abandoning simplicity

❝Premature optimization, premature generalization, premature expansion, ... appreciating simplicity❞ This post further explores simplicity as we previously defined it. We will look at engineering concepts premature optimization and premature abstraction to see how they relate to simplicity. I was reminded, as so many times, by quotes and tweets about premature optimization and – now more and more – premature generalization. People who try to best understand how to approach programming, try to find some intuition or even some rules on dos and don’ts.


Read more ...