Twitter ⟐ LinkedIn
Friday 25. march 2016: Dear backers, unfortunately, the FUN project was not successfully funded. I will now focus on FRP (Functional Reactive Programming) applied to real-time critical system specification and simulation.
CDSoft used to be my personal website where I stored and shared some free softwares and other funny pieces of softwares.
My main objective is now to propose a way to specify and write softwares that are:
- practical, convenient
- real time critical systems
- embedded softwares
- distributed systems
Old version of my project
I had initially planned to write a book about software specifications. But the project was not funded on Kickstarter.
You can find some ideas about writing documents and specifications
My initial goal was certainly too general and too wide.
I’m currently working on a simulation framework based on Haskell.
The idea is quite simple:
- simulated models are written in
- a pure functional language, using pure functions only (no bad side effects that make things unpredictable)
- a strongly and statically typed language (a type system is a prover)
- such models can be tested and verified very easily (unit tests, QuickCheck…)
- the framework also provides some glue to make models communicate
- with other models
- with the environment
- the framework is still written in Haskel but used side effects in the IO monad
- integrating models with this framework is also very easy.
One objective is also to provide a portable build and execution environment. e.g.:
make” just compiles everything
make test” just executes the tests and generates the test reports
make doc” just generates nice to read documents (free and open formats only!)
Enforcing the usage of some huge and insane environment is clearly not compatible with my philosophy and is bad for my mental health!
- (real time) simulation bench
- test bench
- monitoring system
and in fact:
- any distributed or not application that requires clean and unambiguous behaviours.
What’s currently working?
- pure functional models
- equations using infinite streams of values to represent time varying values
- simulation framework
- message bus between models
- multicast UDP communications between several models and hosts
- basic command line interface
- communicates directly with models through UDP datagrams
- can inject events directly into the message bus
- clock models to simulate real time behaviours
- a clock tick is an event on the message bus
- a music generator
- position sensors
- play/pause/calibration buttons
- output: sound characterized by its frequency and its volume
- the frequency depends on the position on the
- the volume depends on the position on the
- the ranges of frequencies and volumes are determined by a calibration mode
- the environment model simulates movements by generating events
Still missing components
- a real example (I’m open to any suggestion to experiment on models that may be used in some real world systems)
- connectors to some real systems (e.g.: a Raspberry Pi robot, a real device…)
…and a decent documentation…
- new environment to:
- use real sensors
- actually play the sound to a speaker
I have previously said that side effects are bad. But this project already has a nice side effect indeed.
My documents are written in Markdown and I use Pandoc to generate HTML or PDF documents. Pandoc is fabulous but it misses a good preprocessor. I wrote my own text preprocessor which is available here: http://cdsoft.fr/pp.
This preprocessor also prepares pages of this website.
I have a strong experience in critical domains in aeronautics (DO178B, specification, implementation, verification).
For further information, you can read my resume.