Website → dmt-system.com
Table of Contents
Inside this document:
- Background and motivation
- DMT PROCESS
💡 🚀 🎸
- Development plans for 2020
- We are glad to help you get started
Basic / practical:
- Getting started
- Device definitions
- User definitions
- DMT Replicate
- Push notifications
- User core extensibility framework ⚡
Example use cases (more are coming):
Advanced / theory:
Background and motivation
Computer is a tool. For what? It is a general multipurpose tool for anything you can imagine.
The only thing it cannot do is to imagine what it should be used for.
Computers are always clueless, they are machines without any sense of existence and they will stay this way for hundreds of years if not much longer. We are still years and years from any meaningful breakthrough in general AI.
John von Neumann more or less proved that human brain architecture and digital logic arhitecture are two different worlds entirely. If this is indeed correct, then computers cannot ever know what is their purpose at all. Since they are general purpose tools, they can have almost any purpose defined for them. By humans of course.
Historically centralized and well funded groups, committees and organizations had the most power over definition of the purpose of computing. There were always some hackers, freedom fighters and other individuals who believed there should exist an alternative side, just for some counter-balance. It is true that computing as it exists today would never have happened if not for these exact big structures and this is great. They did their job.
Things change and move on though.
It is worth mentioning that these alternative thinkers are sometimes overly combative or non-conformistic but a lot of times they / we are right in that there should be more options for less constrained and controlled computing. We will continue creating these options even if we are not paid a lot or at all. We do it because we think it is important, we do it for ourselves and we like what we do. This type of computing does not live in some alternate disconnected reality, it still uses big centralized services and products coming from these organizations. It uses them when absolutely neccessary at that particular moment in time and/or for specific needs because they are the correct (sometimes the only) choice. Also, some organizations are much better than others and integrating the least invasive solutions among all the options is also a proper art.
What is always used in any system are common internet and other protocols (HTML5, ECMAScript, hardware etc.), usually coming from big organizations in the past but more and more being developed by open-source fragmented communities all over the world (example: blockchain protocols).
Conclusion is that more and more each day, You, today, can help define the true purpose of computers and computing.
There are many projects springing up that think along these same lines — they genuinely want to provide an upgraded computing experience to anyone interested. This project is one of such projects. Keep in mind that no two endeavours are or can be the same or even remotely similar (when you start looking into the details). The easiest way to approach this, in our opinion, is not to just look how the program appears or behaves but what are its building blocks and how they are put together. After enough learning you can then rearrange the blocks to fit your exact idea of what personal computing means to you. Define your purpose through defining little computing helpers around you.
What should they do for you? In what way? How do they make your life easier?
Blah Blah Blah, just tell me what is this, now!
OK! It is about storage, transmission and manipulation of information.
We hope this explains everything
Let's continue with the details now (because details are important and everything is usually made of them).
We forgot to add something
When discussing the usual and "alternative (freedom-focused)" approaches to computing and some historical overview we didn't mention that the coming era of IoT might be a bit different. It may warrant a throughout reexamination of how we approach things and how we are always too lazy until it's too late. If we allowed ourselves to get used to "free free free" online services without too much thinking in the past decade or two, we are only just now discovering some downsides to all of that. This is a great book worth reading:
And this video (on YouTube, just because, don't ask, life is paradoxical! ;) is also interesting.
We are not taking any sides here, we are just observing and thinking. Like everybody else that likes to observe and think in interesting times. We do have some first-hand practical opinion about a particular segment of the coming technology explosion though — the Internet of Things revolution. Like a lot of very overloaded terms, IoT is also quite overloaded with potential meaning — it could mean many different things with different nuances and interpretations. Also, it has been immediately incoming for a few years now, too. But still, it is coming and coming very fast. Time to get prepared.
One thing is almost certain and very logical, also practically experienced many times already — and that is:
Thou shalt not trust connected devices in general. As a first reflex you should be very sceptical when buying some "cool internet connected gadget" by a random (or even well established) company. Just think about their (usually naive) business model: usually you are sold something (a device, gadget, sensor etc.) quite cheaply (because they are in fight with competition and want to gain a foothold eg. initial market share). They don't get their costs covered in this way, especially if they took a big VC investment and later sales turn out to be "a bit less than they expected".
What is the next step? Either start charging you a lot more for their backend services that are supporting their smart devices OR they start selling your data gathered in your home to "interested buyers" (and they just love such personal data, no fear about that!). For example: Roomba cleaning robots are now known to happily explore, analyze and sell your floor plans. Why not, money is money!
The DMT PROCESS (
dmt-proc) is the main coordinator process that runs on each machine in dynamic dmt-system network.
It is a piece of
node.js code that:
Rustbinaries dynamically as needed (for example when searching the file system)
- spawns or connects (if already running) to
mpv(multimedia player) process
HTML5 GUIwhich can be rendered in browser, GUI can seamlessly "warp" to any other device with
- can easily replicate itself (on demand) to any machine
As mentioned, two technologies are used to build up the core:
- node.js — high-level evented framework, built for speed
- rust — native compiled code for low level machine operations, built for speed
Rust is used in some strategic parts where node.js does fall short for our needs. The one important (and only) case for now is searching for files in the device's filesystem at native speeds (not possible to do it any faster). We achieve this by combining two fantastic Rust crates: walkdir and regex. We add some glue and this is called walksearch. Walksearch is 50% of the reason why dmt search architecture is so rapid.
Bash scripting is used for:
- syncing the core to other devices
- as a framework to enable more handy shortcuts and add your own
Bash is important but the main part of the project
dmt-proc has nothing to do with bash.
Core never calls bash functions except in a few specific cases:
- there is an option in the gui to restart the device (RaspberryPi) - when user clicks
rebootbutton, nodejs executes a bash script which executes the reboot process
- putting the device in
ap mode(access point so that RPi shares its own wifi)
Linux (Debian, Raspbian etc.) / macOS / Windows 10 Ubuntu shell:
Short, simple and effective install
git clone https://github.com/uniqpath/dmt.git ~/.dmt; cd ~/.dmt; ./install
See complete install instructions (you need a few dependencies like
What is required for dmt-system?
- one computer or even better: one normal computer and a few dozen single board computers like RaspberryPi 3B+,
the more the merrier.
- courage (nothing of lasting effect can be done without it)
You need courage here because this an unknown code and it could very well delete your computer. It is a possibility.
Should you take the risk?
The code is all-right, it won't:
- do anything unplanned with your file-system
- send any data anywhere.
All of this can be checked ← everything is in the repo. We only mention this because in general you should be very careful.
Currently we have no instant and/or simple solution for your dilemma though. Do as you want.
We are scaring you a bit because if there is no danger now, there will be plenty after
v1.2 when you start connecting electrical appliances. These things are no joke! Read and learn carefuly and hopefully you are already somewhat educated about the dangers of electricity and know your limits (and possibly how to expand them).
Full disclaimer: you can still only use audio/video/search part of the system after
v1.2 — everything is very modular and each module is completely disabled by removing just one line in a particular file.
Don't worry, be brave. Oh look, a plug for a browser! That's because we also have an extension which sets the homepage (for new tabs) to open dmt-system gui. Come back to this repo in the second half of january to get it!
This command will fetch changes from GitHub:
In one of the next versions there will be an option to turn on a notifier to know when the next version is available.
All you need is:
rm -rf ~/.dmt (this removes the entire
~/.dmt directory without asking)
Everything needed for the entire project lives inside this one directory.
Development plans for 2020
January 2020 ≡ v1.0
- LAN-decentralized multimedia player
- LAN device-to-device messaging and coordination system to support 1.
Beginning of 2020 ≡ v1.1
Various improvements and upgrades to dmt-player.
Spring/Summer 2020 ≡ v1.2
- Generalized Home IoT control panel ("free open source home controller")
- Level 2 IoT — small DIY sensors and devices that integrate with control panel
"complete freedom to imagine" for electronics and automation enthusiasts
- LAN device-to-device messaging and coordination system to support 1. and 2.
We are already using a lot of this but it is not yet developed or consolidated enough for release.
Write an email if you already want to know more and actually use it. We will see what can be done to help you.
End of 2020 ≡ flexible
We will see what things from the infinite bag of urgencies need to be done then.
"If you cannot explain it, you don't understand it very well" is a bad analogy for dynamic and/or complex systems.
We respond with: "If you understand it, you cannot explain it" (or something random like that).
Mr. Van Morrison is singing about this topic in this work ♪♫♬.
The point of dmt-system is not to be something "magical" but to do exact same things you have "always" done with computers but do them a bit better and on smaller computers than before. Because small and cheap computers exist now for the first time in human history. They are available but not yet widely spread. This trend is only just beginning. Be early this time. There is other great software for these new kinds of platforms too but there is dmt as well. Try everything.
This system (of code and data philosophy) is designed to save you time and effort in longterm instead of wasting it. It does require some initial setup and thought, of course. Systems with nearly zero initial effort tend to squeeze you "for something" in the longer term. This is quite obvious — if others keep doing all the effort and thinking for you, you owe them something for their work. If you do most of it yourself through open hardware and freely available software, then you don't owe anything to anyone and it should feel great.
We are glad to help you get started
There is enough material on our GitHub to get you started. In case you do need assistance, we are available for consulting and practical help at firstname.lastname@example.org. Write us and we will find a solution! We think that during 2020 we can mostly help for free and if there is enough community and practical knowledge built up afterwards, we will then only offer more involved consulting for bigger system planning. All code on GitHub will always remain free.
dmt-system v1.0 release
Jan 1st is just a slow, a bit uneventful start. Expect steady stream of useful updates during 2020.
What obvious thing is missing in v1.0? — Proper responsive layout for smaller screens. Sorry! Soon™ → v1.0.1
Some other small things also slipped into v1.0.1 but we did even more than planned for v1.0, thank you to all cca. dozen testers! Especially to a 2-year old daughter of the main (sole atm) commiter to this repo. She found some really interesting glitches and even solutions. Kids these days ^_^ ... And thanks to her mother and brother too! And also the whole extended family. We did this together. In the next 10 year period we will do even more. The more we do, the more we need to be organized and we write all the code to achieve that. Computers these days... they are cheap and small. Where they lead, nobody knows ... They seem to lead to the real world though.
An experiment as well — LICENSE — have fun reading and don't laugh, it's true! ☻