671 karma · joined November 16, 2016
I haven’t followed closely, but I am sure there are som valuable lessons learned there that would answer your question.
My understanding, from the demos they were giving around 15 years ago, is that the Intentional company ended up focusing on a smaller feature set similar to MPS (I don’t have personal development experience with the Intentional product, only MPS).
It would be interesting to learn more about their work and lessons learned.
The key ideas are called Intentional Programming and Language Workbenches.
The best accessible implementation of that is JetBrains’ MPS (it is free). It allows you to define a language and “projectional” editors together.
It is really fascinating but it suffers from a learning curve where there is no small step from what people use in their everyday common languages and IDEs to building domain-specific solutions with MPS, so adoption is low.
Markus Voelter has some highly recommendable publications and elaborate applications of MPS for domains specific languages, see http://voelter.de/
I am sure there is something great in that area but it has not found the right form and shape yet, so keep exploring.
You might argue that this argument reduces to checking the grammar using static analysis similar to the order generator. But then handwriting the parser is still extra work and risk.
You can read about it in two sagas:
The Saga of Erik the Red (Eiríks saga rauða) has a description of Erik's son Leif leading an expedition to Vinland:
https://www.sagadb.org/eiriks_saga_rauda.en
The Greenland Saga (Grænlendinga saga) has more information on the journey if you can read Icelandic, but there is no English translation in this database at the moment.
The actual discovery was not by Erik but by an earlier voyage around 985 by Bjarni, who navigated the coast but decided not to enter the unknown land. The later voyage was inspired by his information.
The vikings considered the journey from Greenland to Vinland the most dangerous journey in their trading network, navigating storms and icebergs in their open boats. However, Vinland provided a source of valuable wood, a scarce resource around their homes in Greenland.
There is archeological evidence of their visits on Newfoundland. You can visit their site in L'Anse aux Meadows with distinct viking houses and metal artefacts:
https://www.newfoundlandlabrador.com/top-destinations/lanse-...
It is available as PDF on his publications page:
It was driven by the quest to create the best engines and fastest vehicles.
Soichiro Honda had a great love for building and tuning his engines, saying something like, “It will be a sad day if engineers could go to lunch without needing to wash their hands”.
"Lean" manufacturing, a term from Womack & Jones, is based on their research into this.
If you want to dive in, here is my reading list for essential books on how Toyota came to build high quality cars at scale, and how it transfers to other disciplines.
W. Edwards Deming - the grand old man of the field, building on a strict statistical discipline. His book "Out of the Crisis" is a wonderful treatise on his thinking including his famous "14 Points for Management". This is definitely a must read that will change the way you think about management and quality. Deming provided the inspiration for the quality movement that powered post-war Japanese manufacturing.
Taiichi Ohno - one of the greatest industrial innovators of the 20th century, the father of the Toyota Production System. After spending his career relentlessly optimizing manufacturing at Toyota he wrote the book "Toyota Production System: Beyond Large-scale Production" that describes his work.
Womack & Jones - Their books are great and it is well worth to read them all to see a lot of the principles and case studies for lean thinking. Also, it is quite interesting to see that software development is now rediscovering some of the things that manufacturing learned much earlier - in the case of Toyota as early as in the 1950s and 1960s. Begin your studies with "The Machine That Changed the World", a five-year study of the global auto industry from MIT and go on with the "Lean Thinking" and "Lean Solutions". They give a fascinating perspective on manufacturing and plenty of examples of the lean principles and they applications. These are the books that brought lean to the mainstream.
Mary and Tom Poppendieck - with a background in manufacturing and software they were leading the effort to translate the concepts of lean to software development. They have written two great books, "Implementing Lean Software Development" and "Lean Software Development - an Agile Toolkit". Both books are well worth reading a present a both the principles and lot of cases in a friendly, colloquial manner. Highly recommended!
Matthew May - I really like his approach to elegance and simplicity. May has worked with Toyota and their corporate university and his book "The Elegant Solution" offers insight into their innovation process - the principles it is built on and the practices that make it work.
Jeffrey Liker - his "The Toyota Way" is a very good introduction to the application of lean methods at Toyota. This is one of the best lean books I have read. Definitely a favourite!
This list covers up to around 10 years ago. Please comment with recommendations for more recent books on the topic.
There is a video of the team presenting how they built the DSL for tax rules in the JetBrains MPS language workbench from the MPS conference.
Case study:
https://resources.jetbrains.com/storage/products/mps/docs/MP...
Video:
While Leibniz is widely known for his mathematics and philosophy, one of his lesser known ideas was the relation between law and computation.
There is a small research community around it today. Look up Computational Law and Computational Contracts if you are interested.
They are still around if you want to get in touch.
Does it rhyme with gone or cone?
Linguists at Cambridge University have published a map of the regional variations:
https://www.cam.ac.uk/research/news/cambridge-app-maps-decli...
Here is a short portrait in English:
https://thebestchefawards.com/2021/06/06/angel-leon/
His restaurant, Aponiente:
Patterns are context specific advice about a solution and its trade-offs, not hard rules for every situation.
Notice how pattern books will often state the relevant Context, the Problem itself, the Forces influencing it, and a Solution.
(This formulaic approach is also why pattern books tend to be a dry read).
You have to write many more tests and add a lot of predicates as pre/post conditions (invariants) to functions to check at runtime what a more modern compiler could have told you at compile time.
It adds a lot of friction and slows down the development process.
Combined with Clojure having lazy evaluation and nil punning it becomes frustrating in larger, domain heavy code bases.
Simple common “CRUD” line of business applications with shallow code paths and a database schema to serve as a secondary type system would probably suffer less from this, explaining why some devs say they don’t experience this.
For comparison, Typescript became so popular precisely because it mitigates similar problems for JavaScript once code based grew to non-trivial sizes.
However, from using the other JetBrains tools the performance killer for builds and indexing libraries and documentation has typically been slow file system access.
These IDE even warn you when they detect this. I don’t remember seeing this warning in the Fleet preview.
A common solution is to disable aggressive anti-virus scanning for you project folder and some key application folders so it does not slow down the build.
Another cause is slow remote mounted file systems that you might have if you are using VMs, WSL or Docker.
If I remember correctly the docs have detailed information about this.
It also has some components in Rust and a special GUI framework.
There is a great series of blog posts about its architecture and design here with a lot of details:
https://blog.jetbrains.com/fleet/2022/01/fleet-below-deck-pa...
However, you might ask, is it also the right primitives to express accounting IT systems or could we think of a better domain model, and then derive the double entry ledgers from that?
This is an important and profound question.
If you would like to dive in, I suggest looking at the REA (resources, events, agents) model, a set of abstractions and patterns for expressing accounting in business systems.
The Model-Driven Design Using Business Patterns book by Hruby et al. is a great starting point. [1][2]
Also, the POETS (Process-Oriented Event-driven Transaction System) research from DIKU (Copenhagen University) is super interesting, offering some ideas for next-generation ERP systems.[3]
[1] https://link.springer.com/book/10.1007/3-540-30327-2
[2] http://phruby.com/book/index.html
[3] Fritz Henglein, Ken Friis Larsen, Jakob Grue Simonsen, Christian Stefansen. POETS: Process-Oriented Event-driven Transaction System. Journal of Logic and Algebraic Programming (JLAP), Invited submission to special Issue on Contract-Oriented Software, 78(5):381-401, 2009.
Jesper Andersen, Ebbe Elsborg, Fritz Henglein, Jakob Grue Simonsen, Christian Stefansen. Compositional specification of commercial contracts. International Journal on Software Tools for Technology Transfer (STTT), 8(6):485-516, November 2006.
There are more papers from DIKU on this, see e.g. prof. Henglein’s publication list :
http://hjemmesider.diku.dk/~henglein/bib/author/Fritz.Hengle...
There are some very interesting startups in this field working on delivering these reactors on an industrial scale rather than the "artisanal" reactors that dominate today:
Copenhagen Atomics [1] is one. They offer a molten salt loop for rapid prototyping [2] if you want to try it yourself.
Seaborg Technologies is also building a compact molten salt reactor. [3] They have a subsidiary, Hyme, to use the same molten-salt technology to provide grid-scale energy storage to balance electricity grids with variable generation from e.g. wind and solar power. [4]
[1] https://www.copenhagenatomics.com/ [2] https://www.copenhagenatomics.com/products/molten-salt-loop/ [3] https://www.seaborg.com/ [4] https://www.seaborg.com/press-release-hyme
https://www.climbing.com/people/nirmal-nims-purja-the-man-wh...
For example ClojureScript has all the “wat” semantics from JavaScript primitive types.
You can build libraries that try to hide the differences but the leaky abstraction is inherently still there.
Example:
Sweden taxes your gains when you transact a cryptocurrency holding, also when you exchange from one cryptocurrency to another. [1]
Same for Denmark [2].
Check your relevant tax legislation for your local rules.
[1] https://skatteverket.se/privat/skatter/vardepapper/andratill...
https://www.babraham.ac.uk/news/2022/04/new-technique-rewind...
It is interesting to consider the trade-offs even if you go with C or LLVM:
For EU countries this would probably be governed by the PSD2 payment services directive and the GDPR data protection.
Specifically, payment transaction data may reveal personal data and using it for other purposes than the payment itself would require explicit consent.
IANAL. It would be interesting if lawyers with up to data knowledge on financial regulations in various jurisdictions could elaborate on this.