RSSAmplifier

Blog

Daniel's Blog

More Is Different

himmele.blogspot.comRSS feed ↗25 posts

Latest posts

The Explore/Exploit Strategy in Engineering

The explore/exploit strategy is an iterative approach to systems engineering and team formation. It starts out with an exploration phase and scales both system and team size during the exploitation phase. Later on, the strategy is repeated for either product improvements, disruptive changes, or new projects and teams. A general introduction to the explore/exploit strategy is described in Brian…

The four paradigm shifts for the connected car of the future

The automotive industry is undergoing substantial changes as new technologies for connected cars, autonomous vehicles and electric vehicles are creating new customer expectations. In this webinar, Dominik Obermaier (CTO of HiveMQ) and me discuss four key paradigm changes that need to happen for the automotive industry to remain competitive and deliver on the customer experience of the future.…

The Soul of Erlang and Elixir

Saša Jurić talks about the Erlang runtime, the BEAM virtual machine. Since years I planned to write a post about "Why can Erlang have this 'let it crash' methodology and all others can't?". Now, Saša Jurić shows exactly that along with other runtime features of the BEAM VM is his talk about the Soul of Erlang and Elixir. His talk perfectly extends my last post about What's Next for Our Programming…

What's Next for Our Programming Languages and Operating Systems?

Joe Duffy (previous Microsoft Director of Engineering for Languages and Compilers), Richard Feldman (Elm Software Engineer), Brian Goetz (Java Language Architect at Oracle) and Sylvan Clebsch (Designer of the Pony Programming Language) discuss the future of programming languages. 02:49 Brian Goetz: When I am working on a programming problem and not making progress the root cause usually is that I…

Schnelles Denken, langsames Denken von Daniel Kahneman

Schnelles Denken, langsames Denken (englischer Originaltitel: Thinking, Fast and Slow) ist ein Buch von Daniel Kahneman, das seine oft gemeinsam mit Amos Tversky durchgeführten Forschungen aus mehreren Jahrzehnten zusammenfasst. Die zentrale These ist die Unterscheidung zwischen zwei Arten des Denkens: Das schnelle, instinktive und emotionale System 1 und das langsamere, Dinge durchdenkende und…

Frederick Brooks on Software Design

Software design and architecture always has been my foremost interest and fun part in computer science. Frederick Brooks' book "The Design of Design" summarizes a lot of useful facts and topics all system designers will learn about sooner or later. This post contains some few excerpts from his excellent book. The Design Question Design is to plan in mind for later execution. For most human makers…

Alan Kay on Computer Science

Alan Kay is a computer scientist and pioneer who was part of the Xerox PARC team of about 30 researchers that developed many of the key concepts of today's hardware and software technologies. This post contains some famous keynotes and other talks by Alan Kay including quotes and comments. See also: Alan Kay on Object-Oriented Programming Normal Considered Harmful 05:00 We must know about the past…

Operating System 101

From Andrew S. Tanenbaum's "Tanenbaum-Torvalds Debate - Part II" . No flame wars, just operating system and distributed system architecture. My view is that you want to avoid shared data structures as much as possible. Systems should be composed of smallish modules that completely hide their internal data structures from everyone else. They should have well-defined ‘thin’ interfaces that other…

On Building Reliable Automotive Software Systems

During the last years me and my team built various automotive software systems in the connected car domain as well as in the body domain. Before that, we built Android-based infotainment systems, mobile internet routers and some kind of wireless display like Miracast . Over time, our work became highly inspired by two software platforms and their characteristics: Erlang and Android . Erlang's…

Characteristics of an efficient engineering team

An efficient engineering team offers a fun and challenging place to work at. From my personal experience the following mindset forms the basis of such a team. We truly care about things Caring means acting Caring means pushing things forward Caring means questioning ideas, concepts and decisions Caring means listening to customer feedback Caring means answering questions and providing feedback in…

Psychology and Behavioral Science (not just) for Computer Scientists

This post contains some few excerpts from the book Drive: The Surprising Truth About What Motivates Us from Daniel H. Pink . The field of psychology and behavioral science currently preoccupies me a lot mostly due to personal struggles in seeking purpose. Societal Operating Systems Societies have operating systems: the laws, social customs and economic arrangements sit atop a layer of…

Danny Hillis: The Pattern on the Stone

"The greatest achievement of our technology may well be the creation of tools that allow us to go beyond engineering - that allow us to create more than we can understand."

Unsere Art zu leben - Eine ehrliche Gesellschaftskritik

Es gibt Menschen, die die freien Gesellschaften mit Gewalt bekämpfen. Und es gibt Menschen, denen diese freien Gesellschaften Gewalt antun - ohne dass dies hier groß auffallen würde. Von Detlef Esslinger (Süddeutsche Zeitung) Immer, wenn irgendwo auf der Welt Terroristen gemordet haben, müssen Regierungschefs vor Kameras treten und einige Sätze dazu erklären. Eine traurige Routine ist das…

Building a car (from the perspective of a pragmatic software engineer)

The ideas for building a car from the perspective of a pragmatic software engineer came up during the series development of an Internet of Things (IoT) platform and control unit for a German automaker. The automotive industry is currently undergoing a disruptive technology change mainly driven by software. The self-driving (electric) car will not only change the automotive industry but also…

RISC design principles for project management

When David A. Patterson and Carlo H. Sequin designed the first RISC processors in the beginning of the 80s they soon realized that designing instructions that could be issued (started) quickly was the key to good performance. While the initial emphasis was on simple instructions that could be executed quickly, they learned, that how long an instruction actually took mattered less than how many…

Mindroid - Android everywhere

Mindroid is an application framework that lets you create applications using a set of reusable components - just like Android. The name Mindroid has two different meanings. On one hand Mindroid is a minimal set of core Android classes and on the other hand these classes also form Android's mind (at least in my opinion). There are three versions of Mindroid focusing on different domains. The…

Concurrency: A single human body cell versus the internet

This week I asked Alan Kay (the inventor of OOP , Smalltalk , the Dynabook , and much more) if there are more concurrent activities going on inside a single human body cell than on the whole internet? Since he is a computer scientist as well as a molecular biologist he seemed to be the right person to answer this question. Here is a summary of the short conversation: Hi Daniel Good question -- and…

Concurrent Hello World in Go, Erlang and C++

This week I started taking a deeper look at the Go programming language since I am somewhat addicted to scalability, reliability, concurrency and message passing :-). The first thing I always do when playing around with a new software platform is to write a concurrent "Hello World" program. The program works as follows: One active entity (e.g. thread, Erlang process, Goroutine) has to print "Hello…

Android Transporter on the Raspberry Pi

The Android Transporter which we have developed at E.S.R.Labs now also runs on the Raspberry Pi . It allows you to easily share and display the contents of an Android gadget wirelessly with a television set or a beamer. The demo video shows how the Android Transporter turns your smartphone or tablet together with the Raspberry Pi into a powerful media hub to watch movies, play games, or do…

Android Transporter WiFi Display

The video above shows the Android Transporter , a realtime WiFi Display for Android which I and some other guys have implemented during the last few days. We have done this for our new software startup company called E.S.R.Labs , which is short for Embedded Software Research Labs. The WiFi Display mirror mode beams the display contents of your smartphone or tablet onto other gadgets, TVs, beamers,…

Android's C++ reference counting

#include <stdio.h> #include "android/os/Ref.h" using namespace android::os; class RefTest : public Ref { public: RefTest(int32_t id) : mID(id) { printf("RefTest ctor: %d\n", mID); } virtual ~RefTest() { printf("RefTest dtor: %d\n", mID); } int32_t id() const { return mID; } private: int32_t mID; }; int main() { sp<RefTest> ref1 = new RefTest(1); { sp<RefTest> ref2 = new RefTest(2); } wp<RefTest>…

The Erlang Design Pattern

Over the last couple of weeks I did an OO programming experiment. I call it the Erlang design pattern. It is based on the Actor model but goes some steps further. At its core just like the Actor model there are active entities (objects) that have a thread and a message queue with the thread waiting on the message queue to do some stuff. The Erlang design pattern extends the Actor model by first…

How do you read source code?

If software is eating the world as Marc Andreessen and I think, how do you [r]ea(d|t) source code? Well, let's first answer why you should be good at reading source code at all. First it's always great fun to figure out how things work. By reading source code one is exactly doing that to learn about interesting software systems and projects. Another reason for reading source code may be to get…

Apple&#39;s Siri and the Semantic Web

Maybe not Google will start to build the semantic web as I thought in one of my previous blog posts about "The Internet of Things" but Apple will do so with Siri . Some interesting links: Siri at semanticweb.com Siri points the way to next level of semantic web apps New research helps people to get engaged with the semantic web Will Siri and her offspring bring the semantic web to life? Siri - the…

Algorithms and Data Structures

Topics: Binary search Quicksort , Heapsort , Introsort , Mergesort Random number generators Array , Linked List , Stacks and queues , Hashtable Binary search tree , Red-black tree , AVL tree , B-tree , B+ tree See also Algorithms and Data Structures - Part 2 Approaches and strategies: The divide-and-conquer algorithm design paradigm divides the problem into a number of subproblems. Then it…