Ported the Microprints library to #elixir. In a Phoenix Liveview development environment , the compiler, and parser are running, and file reloading is a channel you can subscribe to :-). This is great for #moldabledevelopment

The default phoenix liveview directory structure makes it sometimes hard to keep track of what goes where. I now have a view with the 10 most recent files that I can expand to see details.

Blog post: https://www.qwan.eu/2026/02/02/liveview_microprints.html

Who knows this source code? When I get into a project with existing software, I need to know whom to ask for help if I don't understand something. The source code repository can tell me who made changes to which parts, when they were done, and in what way they were made. Let's take a look at how we can see that. https://domeinmodel.nl/who-knows-this-source-code/
#moldableDevelopment using #GToolkit
Moldable development can be applied to any development task. I author a “slideshow” using a moldable object inspector on the live slides, augmented with tiny custom tools. I'll be presenting this one on “Moldable Development in Practice” at Yow! Australia in Melbourne, Brisbane and Sydney this December.
#glamorousToolkit #moldableDevelopment

Pattern: Example Object
Context. You want to explore questions about domain objects that are in particular execution states.
Problem. How do you create an object in a particular state to start a moldable development task?
Solution. Wrap examples as (instance) methods that optionally evaluate some tests (assertions), and return the example instance.

More details in: #MoldableDevelopment Patterns
https://arxiv.org/abs/2409.18811

Moldable Development Patterns

Moldable development supports decision-making by making software systems explainable. This is done by making it cheap to add numerous custom tools to your software, turning it into a live, explorable domain model. Based on several years of experience of applying moldable development to both open-source and industrial systems, we have identified several mutually supporting patterns to explain how moldable development works in practice. This paper targets (i) readers curious to learn about moldable development, (ii) current users of the Glamorous Toolkit moldable IDE wanting to learn best practices, and (iii) developers interested in applying moldable development using other platforms and technology.

arXiv.org

Moldable Exceptions extend your debugger with domain-specific views and actions.
I'll be presenting “Moldable Exceptions” in the Onward! track at SPLASH 2024 next week.

PDF preprint available: https://arxiv.org/abs/2409.00465

#moldableDevelopment

Moldable Exceptions

Debugging is hard. Interactive debuggers are mostly the same. They show you a stack, a way to sample the state of the stack, and, if the debugger is live, a way to step through execution. The standard interactive debugger for a general-purpose programming language provided by a mainstream IDE mostly offers a low-level interface in terms of generic language constructs to track down and fix bugs. A custom debugger, such as those developed for specific application domains, offers alternative interfaces more suitable to the specific execution context of the program being debugged. Custom debuggers offering contextual debugging views and actions can greatly improve our ability to reason about the current problem. Implementing such custom debuggers, however, is non-trivial, and poses a barrier to improving the debugging experience. In this paper we introduce "moldable exceptions", a lightweight mechanism to adapt a debugger's interface based on contextual information provided by a raised exception. We present, through a series of examples, how moldable exceptions can enhance a live programming environment.

arXiv.org

Example-driven development turns tests into factories for examples. This allows examples to drive the development process, and enables them to be embedded within live documentation.

I'll be presenting “Example-driven development: bridging tests and documentation” next week at the Live workshop co-located with SPLASH 2024.

PDF available: https://arxiv.org/abs/2409.00514

#moldableDevelopment

Example-driven development: bridging tests and documentation

Software systems should be explainable, that is, they should help us to answer questions while exploring, developing or using them. Textual documentation is a very weak form of explanation, since it is not causally connected to the code, so easily gets out of date. Tests, on the other hand, are causally connected to code, but they are also a weak form of explanation. Although some tests encode interesting scenarios that answer certain questions about how the system works, most tests don't make interesting reading. Examples are tests that are also factories for interesting system entities. Instead of simply succeeding or failing, an example returns the object under test so that it can be inspected, or reused to compose further tests. An example is causally connected to the system, is always live and tested, and can be embedded into live documentation. Although technically examples constitute just a small change to the way that to test methods work, their impact is potentially ground-breaking. We show (i) how Example-Driven Development (EDD) enriches TDD with live programming, (ii) how examples can be molded with tiny tools to answer analysis questions, and (iii) how examples can be embedded within live documentation to make a system explainable.

arXiv.org
A moldable inspector for Common Lisp

PeerTube
Can the principles of moldable development be applied to Erlang? What would that look like? What is already there (good tooling for system insight, for instance)?
#MoldableDevelopment #Erlang
Learning: Moldable Development

If #Smalltalk is the language-system for #MoldableDevelopment, then #Lisp is the language-system for Slime Moldable Development