I am publishing this agenda halfway through its completion, which makes it easier than usual :)
The previous three years had been dedicated to the Knomee mobile app, it was time to move on with an agenda which is mostly a transition to future new projects. Knomee is still a live application on Apple Appstore, but I decide to pause development - due to lack of traction - and to wait and learn from the tiny user base. It is hard to quit such an exciting project, hence I decided in 2019 to write a book, an excellent way to keep myself away from Xcode.
The bulk of this research agenda is the migration of CLAIRE from C++ to Go. I have used CLAIRE during the past 20 years (for GTES projects, for developing Knomee machine learning algorithms, ...) and I needed to give it a new life for the next 20 years. My past experience with other languages (Swift, Python, Java) has convinced me that giving CLAIRE a new life was worth the effort.
The fist project that I plan to perform once the CLAIRE platform is running is a web-based serious game about global warming. So the last part of my 3 year plan is to return to GTES (Game-Theoretical Evolutionary Simulation) applied to global warming. This is not a new idea, I started a project called GWDG (Global Warming Dynamic Games) a long time ago, but I have not touched it for 10 years. The plan is to get back to the modeling and the CLAIRE code, before moving to a new development project (no code name yet) in 2022. In the same way that Knomee has been a great tool to learn about mobile app development, I intented to used GWDG as a way to learn about web-based game development.
So here is a short overview of this three year work plan.
I have been a huge fan of Eric Ries' Lean Startup and a corporate practitioner for the past 10 years, at Bouygues Telecom then at AXA. My two blogs are here to support that claim. While practicing Lean Startup on service and product development, I have noticed how much sofware performance is critical to the success because of the iterative nature of the lean startup process. To make the lean startup approach deliver, one needs software development excellence, mostly to iterate fast - speed of iteration dictates learning - but also to guarantee the level of quality that is implicit in the "V" of MVP (minimum Viable product).
At the same time (starting in 2010), I have become more and more involved with the idea of lean software factories. There are two ideas here: adding lean roots (following lean software development principles from Mary Poppendieck) to agile practices, and automating the software delivery process as much as possible, following the DevOps approach that also started around 2010.
The idea of the book is that these two approaches, Lean Startup and Lean Software factories, are synergistic : each strengthen the other, but also each is necessary for the other in a VUCA world. This dependency is illustrated by the book subtitle : "From customer to code and from code to customer".
I wrote the book in 2019 and, with the help of my great group of reviewers, the book is now published.
Here are the main contributions that I wanted to include into this book. Most of them had been topics of investigation in the past decade and covered as such in my two blogs, but writing a book is always an opportunity to go deeper (hence it is part of my research agenda) and to read abundantly to research the bibliography state-of-the-art.
Lean Startup: my main contribution is the practical testimony "from the trenches" (here, mostly, what I learned at AXA) about the implementation of Lean Startup in a large company. Lean Startup has become so popular that there are many flavors and many "schools of thoughts". My goal is to reconcile the original Eric Ries approach with Design Thinking, Lean UX design and Growth Hacking.
Exponential Information Systems: this is one of my translation/creation , which is borrowing from the "Exponential Organizations" book to apply the same transformation principles to information systems.
AI and Machine Learning: I have spent the last decade as the president of the ICT commission of the NATF, leading investingations on Big Data, Artificial Intelligence and Machine Learning. The book has a chapter about what I learned.
Software Factories: Writing this book has been the opportunity to formalize what I developed at Bouygues Telecom and then further improved at AXA Digital factory.
Service Platforms: The platform concept is a critical one in the digital world, both from a business perspective and as a pattern for designing future-proof open systems.
The last contribution is the link between digital transformation and enterprise mindset, culture, and organization. This is a topic heavily detailed in my blog and a follow-up to my 2010 book on "Enterprise 2.0 & Business Processes".
I am not done with this last topic. It will probably yield another book once the mathematical analysis of the multiple paradoxes that I witness as a manager is better developed. However, I do not plan to write this book until I retire, to increase my freedom of speech.
CLAIRE is an object-oriented functional programming language, designed in the 90s with a group of friends with the hope to create an "executable pseudo-code language" for advanced problem-solving algorithms. CLAIRE has its Wikipedia page.
CLAIRE is both interpreted with a reflective - CLAIRE in CLAIRE - interpreter and compiled to C++). 20 years later, the burden of maintaining the C++ kernel has become too important for the future (the move to 64bits compilers, the constant evolution of C++ and operating systems makes memory management an arduous task without significant resources). Hence I decided to make one of the following choices:
Pick a new language for my software development adventures (for instance, 90% of Knomee is written in Swift). I would be looking for a language with equivalent features, supporting object-oriented and functional programming style, automatic memory management, easy list and set handling, etc.
Create a library to extend a modern programming language (for instance Go) to add the benefits of CLAIRE-style programming to a portable, modern safe programming environment.
Replace C++ with a higher level language (with memory management like Java or Go) as the target for the CLAIRE compiler.
I have spent the first part of 2020 looking at many contenders : Swift, Python, Java, Rust, Go, Node.js, Scala. The first big conclusion is that CLAIRE is still a uniquely attractive programming language after more than 20 years (for the type of software project that I do). So I decided to look seriously at the target language compiler option.
If your are interested with this adventure, you should follow it on the Facebook CLAIRE page.
At the time of this writing, I have selected Go as my target language for the CLAIRE 4 compiler. CLAIRE version number will be upgraded from 3 to 4 (after 20 years) because I intend to leverage the study of all these competing languages. Rewriting the C++ Kernel into Go is now complete and has allowed me to drop everything related to memory allocation, for which Go does a good job (Not true for all modern languages, Swift comes to mind as a counter-example).
Although I have no certainty to succeed when I write this, here are my goals with CLAIRE 4:
Improve the speed of the interpreter to be as good, if not better, than Python.
Limit the performance gap with Go under a factor of two. This should make CLAIRE 4 significantly faster than CLAIRE 3, and also faster than Java (on my set of sample programs that reflect the tasks for which CLAIRE is used)
Keep everything that makes CLAIRE a uniquely friendly language for writing algorithms
Improve the syntax through borrowing some of the best ideas from younger languages that have appeared in the past 20 years
An interesting challenge for 2021 will be to write an updated documentation for CLAIRE as well as a new language pitch since the last thing the world need is a new programming language.
I started working on GWDG in 2007, for two years with the help of my father and Bruno Martin. At the time it was less fashionable, today Global Warming Games have their Wikipedia entry. I have uploaded an old presentation about GWDG on Slideshare.
GWDG is a very crude model of a complex system made of :
the energy that is available, based on what is known and what can be expected for the decades to come.
the planet as an ecosystem, including the global warming as as effect of economic development.
the economy, which uses energy to deliver value to people
the people, divided into a number of "political blocks" with conflicting aspirations.
The intuition behind GWDG is two-fold:
we have plenty of models for each of the first three boxes, so what is needed now to to look at the big picture. Other said, the question of global warming is no longer an issue because climate models are solid, the issue is the man-to-climate coupling
There are many different players, which require a strong and complex game theory approach.
I must say that I have been quite impressed when William Nordhaus and Paul Romer received their Nobel Prize for their model of the interaction between the climate and the economy. This has definitely proven that the approach proposed in 2009 for GWDG made sense.
So the first step will be to resume my work with GTES. GTES is an evolutionary game theory approach for simulating complex systems with multiple actors. I have not touched GTES since I started Knomee in 2015, so I need to upgrade the model and the code to my new tools, such as CLAIRE 4. 10 years is a long time as fast as global warming modelling is concerned. Many of the crude intuitions that we had in 2009 have since then been seriously developed by teams of professional scientist. Therefore, I expect to spend most of 2021 to update my bibliography and to read about other people's models related to my previously mentioned four boxes.
The big project for the next 3 years period (2022-2024) will be the creation of a game to share this improved GTES model with a large number of people, with a serious game vehicle. I will also leverage this project as an opportunity to learn new development skills, on the server side (using CLAIRE + Go) and on the browser side (to develop the game user interface).