Posts

Showing posts from 2022

Discover Natural Language Processing with the help of ChatGPT

The latest generation of machine learning is of magical education value: They can "show you that something is possible". They are quick: New concepts can be explored in seconds. They are very powerful. Best to show by example. This post-Xmas 2022 week I am refreshening my natural language processing skills. Therefore I start my learning sessions with the following request: Can you tell me the little red riding hood story while including the phrase structure name and the most important phrase structure properties of each phrase structure of the story. https://chat.openai.com/chat responds with:  Sure! Here is the story of Little Red Riding Hood, with the phrase structure name and the most important phrase structure properties included for each phrase structure: Once upon a time, there was a little girl (noun phrase) who lived in a village (noun phrase) near the forest (noun phrase). She had a red hooded cloak (noun phrase), which she always wore (verb phrase, finite, past ten...

Managing agile from technology to business

Image
 This how I tend to look at management ownership in agile development ( see previous blog entry for more on the alternate views of agile ): Where: The CTO owns technology and most often engineering teams. The Engineering Manager may be an inwards looking CTO and also own technology and engineering teams, but is often less owning technology and more owning agile processes and engineering teams. The Product Owner owns the team's product vision and possibly the customer strategy. She/he is a member of the development team or has a representative that is part of the development team. The Technical Product Owner owns the customer view of technology, may be a full fledged product owner, or may be a support member of a larger product owner team. Individuals become more and more key enablers as your product and technology base become more advanced. A Servant Leader is then a manager (e.g. engineering manager) that helps individuals contribute in independence yet within orchestrated flows. ...

Agile from business to technology

Image
This is how I scale agile towards business and towards technology.: Where: In the center we have an agile process that blends team process and product process. To the right we have a business process that ties into the product process. To the left we have a technology process (expertise process to be general) that ties into the team process. To be honest, this is my minimal theoretical business to technology agile process. In practice, a specific agile process is chosen, with process steps and process artefacts. People like to say that agile is about people, not process. Yet people need to communicate, and the common vocabulary for that is given by a process. Deepening in to the product business view (right side above): Where: The core agile process (blue) delivers features and deliverables that are part of a product and business goals. These deliverables are picked-up by customers The features and deliverable sustain (or not) the customers competitivity within its market segment The p...

The future of software development (end 2022)

  My end of 2022 predictions for software development: Structure of code becomes more important than code Partial code becomes more valuable than finalized code Proprietary code gains in value Contextual programming gains in traction IDEs become ever more ML driven And therefore: Dynamic typing gains over static typing Duck-typing grows in value IDE security and spyware become an ever more important topic Functional programming is still the more powerful programming paradigm Proprietary IDE with in-house ML engines will grow in importance All original content copyright James Litsios, 2022. 

Wild in the forest: the tricky limits of ML

As a proof of concept, I had our favorite ML based chat write the following song for me: Once upon a time in a forest so green There was a girl with hair so red, you know what I mean She was looking for some fun, and she found it with the woodmen They were drunk and wild, but she wasn't afraid They ran and wrestled, and had a blast  (the song goes on...) (and song ends with) Red riding hood, she never looked so good Hanging with the woodmen, in the forest she stood They were rough and rowdy, but she loved them just the same Red riding hood, she was never one to play it safe.  Note I did not suggest "fun", "wild", "rough and rowdy", "ran and wrestled", "had a blast", "play safe", ... I just asked to replace the wolf/wolves with 'drunk woodmen'. Asked to summarize, the chat is happy to tell me: This song tells the story of Little Red Riding Hood, but with a twist. Instead of encountering a wolf in the forest, the you...

How to Get the Best Out of an ML Chat System

Image
Some recommendations to improve your interactions with an ML based system, such as a ML chat like ChatGPT https://chat.openai.com/chat : Structure your requests Structure your requests in a way that is explicit and large in structure. This will help the ML algorithm "unroll" your request and provide a more structured and in-depth response. Avoid using too much implicit structure, as this may confuse the ML.  Rephrase your request with previous reply content  Rephrase your request using words and themes from the previous replies, as the ML may provide additional content to explain its inability to respond. By using these words and themes, you can bring your request into a form that the ML can provide response content for. Change the content order within your request Try changing the order of the structure of your requests, as the ML's approach to the response may be overly constrained by the input order.  Use analogies to structure your request Use analogies to struct...

Nouriel Roubini's 7 Cs of crypto. Some FTX thoughts.

Pondering if I should write something about FTX, I fell on this recently posted  Nouriel Roubini's 7 Cs of crypto , which he states as: Concealed Corrupt Crooks Criminals Con man Carnival barkers C...  with response  here Should we add: Credulous Careless Childlike ... Yet all of these have positive roots: Privacy Liberty Freedom Independence Society Economy Entrepreneurs Optimism Adventurous Youth ... We might call that first extended Roubini list the crypto-challenge list, and that second, the crypto-potential list. A challenge is that most of us learn to appreciate the crypto-potential list before we learn how to avoid the crypto-challenge list. Ranting about the crypto-challenge list does not help. And in many cases, much experience is needed to develop strategies to address the crypto-challenge list. A bigger challenge is that risk management is done by projecting past negative events into future possibilities. Part of the game of fraud is to reca...

Twin tower memories

Image
 My summer 2000 lunches were taken sitting under the twin towers in New York. I was there for the recently opened Actant's NY office , and would either have lunch at Battery Park or looking up at the towers. I have sometimes described my work as "if I were an architect, I would design skyscrapers", to then add "it is a pride thing, but also life is short, so let's push things forward". To eat my lunch below the towers, was in part to bask in the marvel of engineering tall buildings, but also to feel the ego that drives us to surpass ourself, and often others too.  These are some pictures of the towers I took: When the towers went down, I truly could not believe it. My old black and white TV had been switched on in the office (in Zug, Switzerland), my colleagues were huddled in front of it, I walked over, to hear someone say "one of the towers is down", to which I answered: "that is not possible, it must be hidden by the other". It was a s...

Learning as a personal experience: James Taylor vs George Polya

How best to learn? How best to build deep personal growth?  I noted this 1995 advice from James Taylor (in this YouTube ), on how to become a 'musician like him': Be as self-contained as possible, to keep the overheads to a minimum... spend as much time free and lonely as you can. ... I think lonely and free go together... somehow. And then you can’t help but evolve, if you keep your mind open, and you are not denying your experience, not shutting yourself down, not sort of clamping yourself down, or letting other wastes of time come in and claim all of your time. If you keep yourself open and free, then things will happen to you, and you will be educated by them and you will evolve, you will grow. Is this good advice? Does deep personal growth only happen alone? To contrast this with George Polya who states in 1966 : Teaching is giving opportunities to students to discover things by themselves. We might rephrase this as: To learn, students must be given the opportunity to disc...

Software with formal properties at a low cost through monads and co-execution

Image
Not so long ago a good friend of mine mentioned his need for 'formal properties' in his code.   I asked him if he had already made the code purely monadic. He had. "Good", I said, "because the 'cheap route to formal properties' is first to ‘monadize' your code, and then 'reverse it' by bringing in 'co-execution'".  That last part needs some development.  Formal properties are not only about execution, actually mostly not about execution, but more about formal properties of state. So while you do need to show execution invariants, you often much more need to show that the ‘results’ happen within stateful invariants (e.g. of the ledger). The easiest way to do this is to  deconstruct / co-execute the state model backwards. This 'backwards' logic must 'match-up' with the 'forward execution' (monadic) model. My view has always been comonads are easiest for this, especially if your stateful model (e.g. a blockcha...

Why Use Arrows and PowerPoint to Express Software Designs?

Image
Dog Drives Car  Silly me shared the following picture with my sister-in-law yesterday, as she was stuck in a massive traffic jam with her dog (in photo) in her mini.  "How did you make the picture" was the question. "PowerPoint" was my reply. I used PowerPoint for that photo because it took me three minutes, and I had a slide deck open. Stop, you might say, this has nothing to do with programming, or software designs! It does if we want to design a software where a dog drives. Yet how would we approach that? Here I tell you how I have designed and communicated designs of 'big and bold' softwares quickly and with good properties. And will also sketch out how to approach exotic requirements, such as dogs driving cars. Arrows Away! Let me show you how I work. This how I use to draw design 28 years ago (from my PhD thesis): This is how I would have drawn that design 18 years ago (~2004): Here I use arrows to represent flows. Arrows are used to capture the Lagran...

What to study? Machine learning vs Computer Science vs Cyber Security vs Financial Engineering

Image
Today I helped a student review his study options (Bachelor level). We discussed and looked at the courses the university offered in four areas: machine learning, computer science, cyber security, financial engineering. Debating the 'deeper analytical learnings', I mentioned the following: Machine Learning ML is much about models of models in a very mathematical sense. No one knows how to teach it that way (yet). One tends to learn more about ML tools and technics than theory. Computer Science Few model in computer science because expensive, very hard to manage and hard 'get right'.  However, applied math and crypto/blockchain domains are easier to approach in a 'modelled CS approach'. Functional programming is a highly effective way to be successful in doing that.  The CSL language from Elevence , a functional language, was a rare 'purely modelled CS effort' ( inspired by complementary higher-order type properties , now named DAML). It was also a rare e...

Three step research process

Use your brains when developing abstract innovation. It is a game of 'balance': you think-up what is needed, you set goals that take advantage of your thinking, then you work towards your goals. If on the way something does not fit, review your goals or thinking. It is an iterative effort, you try, you repeat, until it works. Here are the three iterative steps in more details: State what you believe is true Express implementation goals that will leverage your beliefs Check consistency of goals with respect to your environment and to underlying beliefs Correct your beliefs if inconsistencies are found between goals and environment Develop towards your implementation goals Check consistency of development with respect to environment and underlying goals and beliefs Correct goals or beliefs if inconsistencies found between development and environment At first, one tends often to 'juggle' and develop just one idea at a time, when developing this way. Yet with experience it ...

A laptop, desk, beamer and flip chart is all you need!

Image
July 1 2015,  I moved into a single office room at the Zurich Technopark  as the sole founding employee of Elevence Digital Finance (11ce). I assembled my sit-stand-desk. I used my personal laptop to write the specs for an 'authenticated contract logic database'. Also, I setup my beamer and flip chart stand! I mention this because I found the following note today dated July 1, 2015, where I 'sold' those objects to 11ce: We used this beamer internally, yet more importantly, we used it to pitches the contract modelling language we developed that year. 11ce was crazy successful and acquired by Digital Asset in 2016 . All original content copyright James Litsios, 2022.

Some favorite early programs I wrote

Image
These are all pre-2000, and in chronological order: A 'Hunt the Wumpus' like maze adventure program on my Commodore P100 programable calculator. Given the max of 72 program steps and 10 memory cells of the P100, this was probably the first time I used a rudimentary hash noise function (in this case to generate the maze 'on the fly', and not need to store it). A primitive LISP like eval loop on my HP-41C, with symbolic derivatives and simplification. The integer part of the memory cells were the 'car' part, and the fractional part being the 'cdr' part (with an appropriate scaling). A Fortran 2d finite element solver, 'mesher' and plotter on my schools 'new' VAX/VMS. The only early program that I still have, as it is printed as an appendix to my 'hand typed' BS EE thesis. A bridge calculation: A two player 3d wireframe helicopter against tank simulator/shooter game (C and assembly, on my 4MHz Intel 8088 Cannon AS-100 The screen and ...

Thinking about parallel and distributed computation

Image
A classical way to look at parallel / distributed systems is in terms of: Work-Efficiency Parallelism Locality  This is one of those inconsistent triads  (or trilemma ), where only two among three properties can be chosen. For example, a system can have both work-efficiency and parallelism, or parallelism and locality but cannot be fully work-efficient, parallel and local. This is not the only inconsistent triads to think about when designing scalable systems. Here are more: Velocity Resources Work Momentum Quality Traffic And of course the CAP theorem's: Consistency Availability Partition tolerance And the important: Fast Good Cheap All of these are ultimately important, yet some of these are more practically useful. Especially when you realise that you can weaken the inconsistent of these triads by introducing additional complementary properties.  To illustrate this with examples: Two people must work together vs an engineer and a sales person must work together Two tim...