Sunday, November 10, 2019

The Soul of an New Old Machine: my Lenovo x220

Let it be known that when I significantly change jobs I buy a new laptop.
Which is why I find myself typing this on the Lenovo x220 I purchased for 120CHF at the local used hardware shop here in Oerlikon. Once I have finished to set it up (it already has new SSD, RAM and battery pack for an extra 200CHF), my 13" MacBook will be mostly my work computer (for my technical advisor job).

Here is a picture of it. If you care why I chose an x220 and the switch back to linux, then do read on.

The thinking goes as follows:

  • Leaving Apple: In 2015 I chose MacBooks as standard laptop for engineers at Elevence, really because when you get acquired, you need to be already halfway enterprise. Yet the choice became a pain because of the extra effort needed to get development tools running on Mac OS. Then in 2016, Apple stopped being developer friendly by killing touch typing with the Touch Bar, and worse by removing the Escape key. (And yes, of course you can reassign it, but that is not the same as a native, well placed key).
  • Not a new laptop: I use to buy new generation laptops for speed, features, and security. Speed is no longer needed. Features are always lacking as product managers have learned their lesson and avoid perfect products that no one replaces. And true security seems to be gone for good now, as network security, and installed OS and application choice is now more important than hardware choice for security. 
  • Linux: "What else?" as Mr. Clooney would say. Not only for the developer tools and window manager friendliness, but also because it is cool to type fdisk and to be brought back to my early 90's Sun Microsystems experience (I was a SunOS sysadmin for ~3years).
  • Lenovo x220: The x220 is the last laptop with a deeper key action, and I love to touch type. As I also love well placed control keys (ctrl, alt, super, ...) to "drive" window managers like i3 or XMonad and editors like vi and emacs (10+ years under DOS (Desmet C, Zortech C++) and then Emacs and vi on SunOS and Linux for another 10+ years will do that to you!).

For your info I am programming in Haskell on this machine.
Actually, it is worse than that, I am programming in Haskell and much with profunctors.
Those that know why are few. Some might guess why. Hopefully this will all be open sourced decently quickly down the road.

PS.1: "The Soul of a New Machine" is a book published in 1981. My title is a homage to the book as there are only so many good narratives on hardware and software developments. The book has aged a bit: who cares about 32bit computers in 2020? Yet it captures that "soul" aspect, where we engineers look at the world inside out, from technology outwards.  Of course, over the years I have learned to see the world in many other ways, for example, from a the product manager's client using the product view, or from head of HR orchestrated people perspective, yet the engineer, in his/her deeply mechanized and often deeply theoretical ether, is a special place I still do like to revisit.

PS.2: My cranky side I am not happy to program in Haskell. I am not happy that most of the Haskell libraries are "old" because only written with a "single dimensional view', and I am not happy that most developers cannot deal with Haskell, and that Haskell cannot easily "thread" multiple dimensions of type polarities without tons of type level programming. But I know Haskell, and Haskell tools are better than any other higher order FP language, so Haskell it is!

Saturday, November 02, 2019

QT Software, the Troika, to insights on co-founding Elevence

Mattias Jansson, Lukas Lüthy, James Litsios

In summer 1996, I met Mattias Jansson and Lukas Lüthy (left and Luki middle above, I am at the right), as well as Adrian Lucas (left below) and in what seemed to be less than 15m, they were inviting me to join them set up a software company to develop a non-proprietary derivative market making system. Another key partner in this story is Stig Hubertsson (not shown). Therefore, we found ourselves co-founding QT Software, which later was renamed Actant.


I bring up this past in this blog to cheer excellent individuals and a great team, and give you insights into how QT and Actant led me to co-found Elevence and develop a unique smart contract language (then acquired by Digital Asset).

First the cheering: Still now Actant software is known to be the fastest non-proprietary derivative trading software. And while I don't have the numbers, I could well believe that they compete well with proprietary derivative trading software on classical hardware (meaning CPUs and not FPGAs).
And we might mention golden years of early 2000's when two of the top three European derivative market making firms were relying on Actant's product to do their business.

Mattias, Luki, and I were the core the company's engineering. Like minded, we worked much as one,  relying on voting to resolve the sometimes disagreement. Did we always make the best choice? I think not, yet we did shape a unique company with its specific market niche and customers.

That first picture above was taken in early 2018. Two hours later we were out of the house watching the fireman putting out the fire of the gas barbecue grill. Luckily no one was hurt, the gas tank did not explode, and house suffered only minimal damage. We then cooked our steaks in the oven and enjoyed an evening of great friendship.

The second picture is LIFFE Connect advertisement in the Financial Times!

In 1998, QT software was running on LIFFE Connect and Eurex. For the LIFFE Connect opening, which was first electronic access to the LIFFE exchange, we were asked to help publicise the new exchange offering. Adrian is to the left of that picture, and I on the right. Funny story, we showed up for the photoshoot at the exchange. They offered to walk down to the trading floor, but then proceeding to disallow Adrian's brown shoes, as only black shoes were allowed there!

One insight I gained in market making was how to model distributed systems with "adjoint" relations. The date was October 2008, a difficult period because of the impact of the 2007 crisis on our customers. I was lying in bed at our company's yearly executive get-together at the Palace Hotel Lucerne, and it occurred to me that one could model the market maker as some form of adjoint dual to the market of buyers and sellers. Years later I used that insight to co-found Elevence Digital Finance where we developed a language of rights and obligations sustained by a dual adjunction like relation to a blockchain ledger (see BearingPoint's announcement when Elevence was acquired by Digital Asset).

Wednesday, September 25, 2019

Agile process vs Data Management (Essence of Architecture Series 1)

Interestingly I have been mostly out of designing software and architecture for almost three years (2016-2019). For a change, I share here part of what I explained recently to a friend, that is, how modern architecture, for example for large cloud systems, have much in common with agile processes. You may know from past posts that I love agile processes. One reason is that agile processes have mathematical roots. The other is that when you know how to yield them, they deliver. I could talk for two hours on the subject! Here, for your comfort, the focus is just on the basic tie between an agile process and the architecture of modern data management.

(Note: The title says: Essence of Architecture Series 1. The goal is that I will share a few more of these snippets in the near future, so as to make a series of posts on the theme of how we design software in 2020).

Here is the video (9m):


Pictures from the video

Hereunder, the main pictures of the video, in case you want to refer to them in your comments:

1) Concrete vs Abstract (horizontally) and Static vs Dynamic (vertically):

(Note how I say concrete, but write "contract" in the video. That is a mistake, and what happens when you invent smart contracts and focus much on them!).

2) Agile process "functional schema" and data management "functional schema" side by side:


3) Waterfall process (red):

4) Agile iterative process (blue):

5) Traditional database architecture (red):

6) Modern data management architecture (blue):


Yes, in case you are wondering: my left hand is holding my iphone as I record. 
As always, comments are welcome, especially from old friends!