About the MB0 Project

When I started learning computer languages in 1980 (I started with Commodore C64 Basic, later it was Turbo Pascal, C/C++, Java, Prolog, Haskell, …), I asked myself, why do we need different languages?

Since then, I’ve got used to much more programming paradigms and methods (like imperative, functional, declarative, object oriented, test driven, or agile techniques, …), and I still ask myself, why isn’t there a simple language combining the best out of all of them?

A couple of months ago I started the revival of my never-ending dream to invent a multi paradigm, one-fits-all programming language, and I called it MB0.

In this Blog I’ll keep you informed about the progress and obstacles.

Advertisements
About the MB0 Project

Little Man Computer

From WikipediaThe Little Man Computer (LMC) is an instructional model of a computer, created by Dr. Stuart Madnick in 1965.

It’s nice to teach kids computer architecture, however for my 9 years old son, was quite hard to do.

I’ve tried out the following implementations:

Little Man Computer

Code Kata – Compare Haskell and C++

English: The Haskell Logo, a stylized >λ= . Th...
(Photo credit: Wikipedia)

After many years of experience in object oriented programming and just talking about functional programming, I decided to get a hands-on experience by inventing the following code kata:

It’s about simple classes for agents communicating via FIFO stacks (let’s call them pipes).

The topology of the agent communication should be defined separate from the agent implementation.

The outputs are the following examples

My experience was

  • the functional code is more compact
  • it took me much longer to determine the right functional structure (but this might be due to less experience)
  • side effects can be handles much easier in C++: in the example it’s necessary to have all agents in one list. The list can be easily build in the C++ constructors, in Haskell one need to add them separately (agents = [producer, modifier, consumer])
  • C++ is stronger in class polymorphism: defining the parent object (data Agent), all child objects (ProducerModifierConsumer) need already be known at parent definition
  • Code hiding/protection is not possible in Haskell

I do welcome your feedback on both examples! Maybe you have some additional ideas of how to facilitate better some language specialties.

Especially, I am interested in some feedback from an experienced Haskell programmer who might suggest a different approach.

Code Kata – Compare Haskell and C++

Work in distributed environments – part 0

I am struggling about doing it right: how to facilitate communication in distributed teams.

We’ve already tried WebEx, Tandberg, Skype, standard phone conferences, email, chat, …

But all has it’s pros and cons.

I’ll write some future blog, but for now, I’d like just to point to some interesting discussion

http://www.valueflowquality.com/pairing-revisited/

See you later,

Mirko

Work in distributed environments – part 0

Fight against Emails

I’ve started to think about how to reduce the email overload – the goal is a drastic reduction.

My first email resourch shows the following hints:

Fight against Emails

Usage of MS Project in an Scrum/Kanban setup

We use MS Project Server for general resource and sprint planning:

It contains the sprint milestones, delivery/go live dates, and the resources
allocated to the teams including vacation information.

By doing so, we can also calculate sprint capacities, plan resources that are
not team memebers, show dependencies to other (non-agile) projects.

Regards,

Mirko

Usage of MS Project in an Scrum/Kanban setup