A short overview of approaches for mobile messaging.
Streaming takes two forms: stream processing for data pipelines (e.g. Kafka Streams) and reactive streams for local processing within an application (e.g. RxJava). As the concept of streaming matures, the abstractions may converge. In any case, streaming is a very powerfull abstraction!
The software architecture metaphor puts the emphasis on the structural properties of software systems. Other metaphors - city, garden, or biology - can help explain other properties of software systems better.
If artificial intelligence is a computation, does it learn by accumulating more input data, by changing its own computation, or both?
Software rewrites are risky undertakings, but sometimes necessary. Advising strictly against rewrites is too extreme, but it's also worth beeing aware of the risks.
Different people priorizing goals differently inevitably leads to frictions. Incentives must be aligned for the friction to disappear.
OOP went in the last 40 through three eras, each characterized by various expectations about the technology, and influenced by the learnings of the previous era. Let’s explore them.
Frameworks and platforms promise to raise productivity by removing technical complexity. But it’s the technical aspects that interest developers, much more than domain aspects. This leads to a dynamics where peak productivity with a given technology is never reached, because developers already look for the next framework or platform.
The slides from our talk at BATBern, focused on « event-driven architectures ».
A collection of articles about software engineering that influenced me.