-#baseurl: https://martlubbers.net
+# Site settings
livereload: true
+
+ #version: '2021-01-01'
+
+default_language: 'en'
+fallback_page: home
+
+timezone: Europe/Amsterdam
+encoding: utf-8
+
+# Build settings
markdown: kramdown
+
+# Markdown Processors
kramdown:
- parse_block_html: true
+ parse_block_html: true
+ auto_ids: true
+ footnote_nr: 1
+ entity_output: as_char
+ toc_levels: 2..3
+
+# Defaults
defaults:
- -
- scope:
- path: ""
- values:
- layout: "default"
+-
+ scope:
+ path: '_posts/en'
+ type: 'posts'
+ values:
+ permalink: 'en/:title'
+ language: en
+-
+ scope:
+ path: '_posts/nl'
+ type: 'posts'
+ values:
+ permalink: 'nl/:title'
+ language: nl
+-
+ scope:
+ path: '_posts/nds'
+ type: 'posts'
+ values:
+ permalink: 'nds/:title'
+ language: nds
--- /dev/null
+title:
+ en: Mart Lubbers' Website
+ nl: Mart Lubbers' Webpagina
+ nds: Mart Lubbers zien Webstie
+languages:
+ en:
+ value: en
+ slug: en
+ nl:
+ value: nl
+ slug: nl
+ nds:
+ value: nds
+ slug: nds
+top:
+ en: top
+ nl: boven
+ nds: båm
+backto:
+ en: Back to
+ nl: Terug naar
+ nds: Teruw noar
+home:
+ en: home
+ nl: thuis
+ nds: thoos
+languagename:
+ en: Languages
+ nl: Talen
+ nds: Språken
+currentfunction:
+ en: Scientific programmer at TOP Software
+ nl: Wetenschappelijk programmeur bij TOP Software
+ nds: Wetenschoppelyk programmeur by TOP Software
+fingerprint:
+ en: Fingerprint
+ nl: Vingerafdruk
+ nds: Vingerofdruk
+toc:
+ en: Table of contents
+ nl: Inhoudsopgaaf
+ nds: Inhoaltsopgoaf
+posts:
+ en: Posts
+ nl: Postberichten
+ nds: Stu'kes
+footer:
+ en: '
+ Valid HTML 5 and optimized for screen readers.<br />
+ Best viewed with a screen resolution at least ≥640x480 or at
+ least ≥80x24 text mode in one of <a href="https://en.wikipedia.org/wiki/List_of_web_browsers">these web browsers.</a><br />
+ Powered by <a href="https://jekyllrb.com">Jekyll</a>'
+ nl: '
+ Geldige HTML 5 en geöptimaliseerd voor schermlezers..<br />
+ Het best te bekijken met een schermresolutie van tenminste ≥640x480 of
+ tenminste ≥80x24 tekstmodus in een van <a href="https://nl.wikipedia.org/wiki/Lijst_van_webbrowsers">deze webbrowsers.</a><br />
+ Gedreven door <a href="https://jekyllrb.com">Jekyll</a> (linkt naar een Engelse site)'
+ nds: '
+ Gooien HTML 5 en optimaliseerd veur schearmlèèzers..<br />
+ Doew kanst dit et beste bekieken met nen schermresolutie van mear as ≥640x480 of
+ mear as ≥80x24 in tekstmodus in een van <a href="https://nl.wikipedia.org/wiki/Lijst_van_webbrowsers">dissen webbrowsers.</a><br />
+ Maakt deur <a href="https://jekyllrb.com">Jekyll</a> (geet noar nen Engelse webstie)'
+
--- /dev/null
+ <footer>
+ <span style="font-size: 0.75em">
+ <a href="#">{{ site.data.snippets.backto[page.language] }} {{ site.data.snippets.top[page.language] }}</a><br />
+ {{ site.data.snippets.footer[page.language] }}<br />
+ </span>
+ </footer>
--- /dev/null
+{% include img.html alt='A photo of Mart Lubbers' img='p' %}<br />
+{{ site.data.snippets.currentfunction[page.language] }}<br />
+<tt>mart@martlubbers.net</tt> (GPG: <a href="http://martlubbers.net/mart@martlubbers.net.asc" title="Fingerprint: 74FF FBF1 4758 273B 2F56 A30C A937 B7A1 AD3F EBE7" style="font-family:monospace">AD3FEBE7</a>)<br />
+<tt>mart@cs.ru.nl</tt><br />
+<a rel="me" href="https://gitlab.com/mlubbers">gitlab</a>,
+<a rel="me" href="https://akademienl.social/@mart">Mastodon</a>,
+<a rel="me" href="https://dblp.uni-trier.de/pid/238/2964.html">dblp</a>,
+<a rel="me" href="https://orcid.org/0000-0002-4015-4878">ORCiD</a>
--- /dev/null
+ {{ site.data.snippets.languagename[page.language] }}:
+ {%- for language in site.data.snippets.languages %}
+ {%- if page.layout == 'index' %}
+ {%- assign navigation_pages = site.pages
+ | where: 'language_reference', page.language_reference
+ | where: 'language', language[1].slug %}
+ {%- if navigation_pages.size >= 1 %}
+ {%- for navigation_page in navigation_pages %}
+ {%- assign url = site.baseurl | append: navigation_page.url %}
+ {%- endfor %}
+ {%- else %}
+ {%- assign url = '' %}
+ {%- endif %}
+
+ {%- elsif page.layout == 'post' %}
+ {%- assign navigation_posts = site.posts
+ | where: 'language_reference', page.language_reference
+ | where: 'language', language[1].slug %}
+ {%- if navigation_posts.size == 1 %}
+ {%- for navigation_post in navigation_posts %}
+ {%- assign url = site.baseurl | append: navigation_post.url %}
+ {%- endfor %}
+ {%- else %}
+ {%- assign url = '' %}
+ {%- endif %}
+
+ {%- else %}
+ {%- assign url = '' %}
+
+ {%- endif %}
+ {%- if language[1].slug == page.language %}
+ <strong>
+ {%- endif %}
+ {%- if url != '' %}
+ <a href="{{ url }}">
+ {%- else %}
+ <s>
+ {%- endif %}
+ {{ language[1].value }}
+ {%- if url != '' %}
+ </a>
+ {%- else %}
+ </s>
+ {%- endif %}
+
+ {%- if language[1].slug == page.language %}
+ </strong>
+ {%- endif %}
+ {%- endfor %}
--- /dev/null
+{%- if page.layout == 'page' %}
+ {%- assign localized_pages = site.pages
+ | where: 'language_reference', page.language_reference
+ | sort: 'language' %}
+ {%- for localized_page in localized_pages %}
+ <link rel="alternate" hreflang="{{ localized_page.language }}" href="{{ site.baseurl }}{{ localized_page.url }}" />
+ {%- endfor %}
+
+{%- elsif page.layout == 'post' %}
+ {%- assign localized_posts = site.posts
+ | where: 'language_reference', page.language_reference
+ | sort: 'language' %}
+ {%- for localized_post in localized_posts %}
+ <link rel="alternate" hreflang="{{ localized_post.language }}" href="{{ site.baseurl }}{{ localized_post.url }}" />
+ {%- endfor %}
+
+{%- elsif page.layout == 'index' %}
+ {%- assign localized_pages = site.pages
+ | where: 'language_reference', site.fallback_page
+ | sort: 'language' %}
+ {%- for localized_page in localized_pages %}
+ <link rel="alternate" hreflang="{{ localized_page.language }}" href="{{ site.baseurl }}{{ localized_page.url }}" />
+ {%- endfor %}
+{%- endif %}
\ No newline at end of file
--- /dev/null
+<h4>{{ site.data.snippets.posts[page.language] }} </h4>
+<ul>
+ {%- assign posts = site.posts
+ | where: 'language', page.language
+ | where: 'published', true
+ %}
+ {%- for post in posts %}
+ <li>
+ <a href="{{ post.url | prepend: site.baseurl }}">{{ post.title }} ({{post.date | date_to_string}})</a>
+ </li>
+ {%- endfor %}
+</ul>
--- /dev/null
+#### {{ site.data.snippets.toc[page.language] }}
+
+* -
+{:toc}
+++ /dev/null
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <title>{{ page.title }}</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- </head>
- <body>
- <header>
- <h1>
- {% if page.collection == "posts" %}
- {{ page.date | date: '%Y-%m-%d' }}:
- {% endif %}
- {{ page.title }}
- </h1>
- <h2>
- {{ page.subtitle }}
- </h2>
-
- {% if page.collection == "posts" %}
- <a href="/foerageer.html">Terug naar het blog</a>
- {% endif %}
- {% if page.name != "index.md" and page.name != "walrus.md" %}
- <a href="/">Back to home/terug naar home</a>
- {% endif %}
- </header>
-
- <section>
- {{ content }}
- </section>
-
- <footer>
- <span style="font-size: 0.75em">
- Valid HTML 5 and optimized for screen readers.<br />
- Best viewed with a screen resolution at least ≥640x480 or at
- least ≥80x24 text mode in one of <a href="https://en.wikipedia.org/wiki/List_of_web_browsers">these browsers.</a><br />
- Powered by <a href="https://jekyllrb.com">Jekyll</a><br />
- {% unless page.collection == "posts" %}
- Last updated: {{ page.date | date: '%Y-%m-%d' }}<br />
- {% endunless %}
- </span>
- </footer>
- </body>
-</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <title>{{ page.title }}</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ {% include localizations.html %}
+ </head>
+ <body>
+ <header>
+ <h1>{{ page.title }}</h1>
+ {% include language-switch.html %}
+ {% if page.language_reference != "home" %}
+ <a href="/">({{ site.data.snippets.home[page.language] }})</a>
+ {% endif %}
+ </header>
+
+ <section>
+ {{ content }}
+ </section>
+
+ {% if page.language_reference == "home" %}
+ {% include posts.html %}
+ {% endif %}
+
+ {% include footer.html %}
+ </body>
+</html>
---
-layout: default
+layout: index
---
<p>{{ page.date }}</p>
+++ /dev/null
----
-title: Zomereikwijn
----
-
-<!--more-->
-
-## Zomereikwijn
-
---
+layout: post
title: Wifi without network manager
date: 2020-09-16
+language: en
+language_reference: nonm
+published: true
---
+
+{% include toc.html %}
+
With this setup, `wpa_supplicant` automatically changes network when needed.
Moreover, the network can be changed in userspace and new networks can be added.
All withouth the bloat of `NetworkManager` and `ModemManager`.
-## Table of contents
-
-- [Requirements](#requirements)
-- [`wpa_supplicant`](#wpa_supplicant)
-- [`wpa_supplicant.conf`](#wpa_supplicantconf)
-- [`wpa_gui`](#wpa_gui)
-- [Eduroam](#eduroam)
- - [update: cat broken](#update)
- - [openssl update](#openssl)
-- [interaction](#interaction)
-
## Requirements
- `wpa_supplicant`
---
+layout: post
title: Dvorak resources
date: 2021-06-16
+language: en
+language_reference: dvorak
+published: true
---
-Since about 2011 I've started using dvorak as my main keyboard layout and like the efficiency compared to QWERTY.
-## Table of contents
+Since about 2011 I've started using dvorak as my main keyboard layout and like the efficiency compared to QWERTY.
-- [Notes](#notes)
- - [Note to self (2015-10-30)](#note-to-self-2015-10-30)
-- [Dosbox](#dosbox)
- - [Update (2020-06-11)](#update-2020-06-11)
-- [Dos](#dvorak-in-dos)
-- [Russian (2014-10-07)](#russian-2014-10-07)
- - [Update (2015-04-16)](#update-2015-04-16)
+{% include toc.html %}
## Notes
### Note to self (2015-10-30)
--- /dev/null
+---
+layout: post
+title: Intro in t Nedersaksisch
+date: 2023-10-09
+language: nds
+language_reference: lowsaxon
+published: true
+---
+
+Hier probear ik wat te schrievm in en oawer de Nedersaksisch.
+Het meeste zal schreevm worn in et Oost-Tweants mear ik bin ok bezig mie de
+[Nysassiske Skryvwyse](https://skryvwyse.eu/) machtig te maakn.
---
+layout: post
title: Groene asperge daslook risotto zonder look-zonder-look
+published: true
+language: nl
+language_reference: groene-asperge-daslook-risotto
---
Onze eerste wildpluk experiment was daslook. Op de wildplukwijzer stonden
---
+layout: post
title: Aalbessen krentjesjam
+published: true
+language: nl
+language_reference: aalbessen-krentjesjam
---
April en mei mogen dan koud geweest zijn. Juni heeft dit al meer dan goed
---
+layout: post
title: ſ-homografen (Lange s homografen)
date: 2021-06-16
+language: nl
+language_reference: langes
+published: true
---
-<header>
Op deze internetpagina presenteer ik mijn verzameling ſ-homografen, ſ-homogrammen, ſ-bommelwoorden, plaatstaalwoorden of hoe men ze ook noemen wil.
-## Table of contents
+{% include toc.html %}
-- [Introduction](#introduction)
-- [Verzameling](#verzameling)
- - [Woorden die eindigen op -staal](#staal)
- - [Vrouwlijke vormen met -ster](#ster)
- - [Woorden die eindigen op -stop](#stop)
- - [Anders](#anders)
-- [Dankwoord](#dankwoord)
-</header>
-
-## Introduction
+## Introductie
ſ-homografen zijn homografen in de reguliere spelling maar bij het correct gebruik van de ſ niet meer.
In vroegere tijden schreef men de kleine letter s als ſ, behalve als het de laatste letter van het woord, of samengesteld woord, was.
De bekendste ſ-homograaf is plaatstaal, dat geïnterpreteerd kan worden als plaats-taal of plaat-staal, maar plaatstaal en plaatſtaal zijn prima te onderscheiden.
--- /dev/null
+../index.md
\ No newline at end of file
--- /dev/null
+---
+layout: index
+title: Orchestrating the Internet of Things with Task-Oriented Programming
+language: en
+language_reference: thesis
+---
+
+{% include img.html alt='Cover' img='thesiscover' %}{% include img.html alt='Bookmark' img='thesisbookmark' %}
+
+{% include toc.html %}
+
+## Details
+
+Publicly defended on Wednesday October 4th, 2023 at exactly 14:30.
+
+Promotor: prof. dr. ir. M.J. (Rinus) Plasmeijer
+Copromotores:
+
+- dr. J.M. (Jan Martin) Jansen (Netherlands Defence Academy)
+- dr. P.W.M. (Pieter) Koopman
+
+Manuscript committee:
+
+- prof. dr. S.-B. (Sven-Bodo) Scholz
+- prof. dr. G.K. (Gabriele) Keller (Utrecht University)
+- prof. dr. M. (Mary) Sheeran (Chalmers Tekniska Högskola, Sweden)
+
+## Summary
+
+The development of reliable software for the Internet of Things (IoT) is difficult because IoT systems are dynamic, interactive, distributed, collaborative, multi-tiered, and multitasking in nature.
+The complexity is increased further by semantic friction that arises through different hardware and software characteristics between tiers.
+Many computers that operate in IoT systems are _edge devices_ that interact with the environment using sensors and actuators.
+Edge devices are often powered by low-cost microcontrollers designed for embedded applications.
+They have little memory, unhurried processors, and are slow in communication but are also small and energy efficient.
+
+Task-oriented programming can cope with the challenges of IoT programming.
+In task-oriented programming, the main building blocks are tasks, an abstract representation of work.
+During execution, the current value of the task is observable, and other tasks can act upon it.
+Collaboration patterns can be modelled by combining and transforming tasks into compound tasks.
+Programming edge devices benefits from task-oriented programming as well, but running such a system within the limitations of resource-constrained microcontrollers is not straightforward.
+
+This dissertation demonstrates how to include edge devices in task-oriented programming systems using domain-specific languages (DSLs).
+With these techniques, all tiers and their interoperation of an IoT system are specified in a single high-level source, language, paradigm, high abstraction level, and type system.
+First, I present advanced DSL embedding techniques.
+Then mTask is shown, a task-oriented programming DSL for IoT edge devices, embedded in iTask.
+Tasks are constructed and compiled at run time in order to allow tasks to be tailored to the current work requirements.
+The task is then sent to the device for interpretation.
+A device is programmed once with a lightweight domain-specific operating system (OS) to be used in an mTask system.
+This OS executes tasks in an energy-efficient way and automates all communications and data sharing.
+All aspects of the mTask system are shown: example applications, language design, implementation details, integration with iTask, and green computing facilities such as automatic sleeping.
+
+Finally, tierless IoT programming is compared to traditional tiered programming.
+In tierless programming frameworks, the size of the code and the number of required programming languages is reduced significantly.
+By using a single paradigm and a system-wide type system, tierless programming reduces problems such as semantic friction; maintainability and robustness issues; and interoperation safety.
+
+Slides for the summary presentation can be found [here](/files/thesistalk.pdf).
--- /dev/null
+---
+layout: index
+title: Trieste Muziek
+language: en
+language_reference: triest
+---
+
+Home page of the record label Trieste Muziek.
+
+For inquiries please contact <code>mart@triestemuziek.nl</code>.
+++ /dev/null
----
-title: Foerageerheer
-date: 2021-06-14
-description: Dit blog dient als een plek om mijn wildplukervaringen te delen en als notitieblok voor mijzelf.
----
-Dit blog dient als een plek om mijn wildplukervaringen te delen en als
-notitieblok voor mijzelf.
-
-De meeste informatie haal ik uit de volgende bronnen:
-
-- Puur natuur op tafel --- Roger Phillips (ISBN: 902747737X)
-- Wildplukwiki van oogstenzonderzaaien --- <http://oogstenzonderzaaien.nl/wiki/Hoofdpagina>
-- Eetbare planten database van Permacultuur Nederland --- <https://www.permacultuurnederland.org/planten.php>
-- Nederlands-dis --- <https://nederlands-dis.nl/dis>
-
-<!--more-->
-
-[RSS feed](foerageer.xml)
-
-<ul>
- {% for post in site.posts %}
- <li>
- {{ post.date | date: '%Y-%m-%d' }}: <a href="{{ post.url }}">{{ post.title }}</a>
- {{ post.excerpt }}
- </li>
- {% endfor %}
-</ul>
+++ /dev/null
----
-layout: null
----
-<?xml version="1.0" encoding="UTF-8" ?>
-<rss version="2.0">
-<channel>
- {% assign blog = site.pages | where:'name','foerageer.md' %}
- {% for page in blog limit:1 %}
- <title>{{ page.title }}</title>
- <description>
- {{ page.title }}:
- {{ page.description }}
- </description>
- <link>{{ page.url }}</link>
- <lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
- {% endfor %}
-
- {% for post in site.posts %}
- <item>
- <title>{{ post.title }}</title>
- <link>
- {{ post.url | prepend: site.url }}
- </link>
- <description>
- {{ post.excerpt }}
- </description>
- <pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
- <guid>
- {{ post.url | prepend: site.url }}
- </guid>
- </item>
- {% endfor %}
-</channel>
-</rss>
---
+layout: index
title: Mart Lubbers' website
+language: en
+language_reference: home
---
-{% include img.html alt='A photo of Mart Lubbers' img='p' %}
-PhD candidate at the [Institute of Computing and Information Sciences](https://cs.ru.nl) ([Radboud University](https://ru.nl))<br />
-`mart@martlubbers.net` (GPG: <a href="http://martlubbers.net/mart@martlubbers.net.asc" title="Fingerprint: 74FF FBF1 4758 273B 2F56 A30C A937 B7A1 AD3F EBE7" style="font-family:monospace">AD3FEBE7</a>)<br />
-`mart@cs.ru.nl`<br />
-<a rel="me" href="https://gitlab.com/mlubbers">gitlab</a>,
-<a rel="me" href="https://akademienl.social/@mart">Mastodon</a>,
-<a rel="me" href="https://dblp.uni-trier.de/pid/238/2964.html">dblp</a>,
-<a rel="me" href="https://orcid.org/0000-0002-4015-4878">ORCiD</a>
-<br />
-
-<header>
-## Table of contents
-
-<nav>
-- [Work](#work)
-- [Publications](#publications)
- - [Peer reviewed](#peer-reviewed)
- - [Student supervision](#student-supervision)
- - [Theses](#theses)
- - [Posters](#posters)
-- [Teaching](#teaching)
-- [Talks](#talks)
-- [Other](#other)
- - [Software, libraries and projects](#software-libraries-and-projects)
- - [Tutorials and manuals](#tutorials-and-manuals)
- - [Interests](#interests)
- - [Archive](#archive)
-</nav>
-</header>
-
+{% include index_header.html %}
+
+{% include toc.html %}
+
## Work
- Scientific programmer at the TOP Software Technology --- from 2023-06
- [praatalign](https://github.com/dopefishh/praatalign) --- An interactive praat forced aligner, easily extensible for more languages.
- [pympi](https://github.com/dopefishh/pympi) --- A python toolkit to interact with Praat and Elan files.
-### Tutorials and manuals
-
-- [Wifi roaming without network manager (includes eduroam ru instructions)](nonm.html) (Updated 2022-10-18)
-- [Dvorak page](dvorak.html) (Updated 2020-06-11)
-
### Interests
Long distance running,
-[open water swimming](walrus.html),
+open water swimming,
wildplukken,
reading,
heavy metal music,
hacking,
-linux,
-[ſ-homografen](langes.html).
-
-### Archive
-
-#### Software
-
-- [m](https://github.com/dopefishh/m) --- `m' is for music, an extremely fast music indexer written in plain C.
+linux.
#### Pages
--- /dev/null
+---
+layout: index
+title: Mart Lubbers' webstie
+language: nds
+language_reference: home
+---
+
+{% include index_header.html %}
+
+{% include toc.html %}
+
--- /dev/null
+---
+layout: index
+title: Trieste Muziek
+language: nds
+language_reference: triest
+---
+
+Thoosstie van et plaatenlabel Trieste Muziek
+
+Veur vroagen, nem contact op met <code>mart@triestemuziek.nl</code>.
--- /dev/null
+---
+layout: index
+title: Walrusvereeniging Almere
+language: nds
+language_reference: walrus
+---
+
+Wolkom bie 'n webstie van de Walrusvereniging Almere.
+Nen heanig boetenzwemclubke dat, anners dan da'j van 'n noam maj't deanken, nog
+nich 'n heeln weeinter deur zwemt mear wie wolt het wa gearn.
+
+### Stie
+
+Noorderplassenstrand, wie komt bie mekaar op n diek ([N 52°23.681' E 005°13.202'](https://www.openstreetmap.org/?mlat=52.39467&mlon=5.22003#map=19/52.39467/5.22003))
+<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=5.218304693698884%2C52.39362700408787%2C5.221764743328095%2C52.39571056721453&layer=mapnik&marker=52.39466797958001%2C5.220034718513489" style="border: 1px solid black"></iframe>
+
+### Agenda
+
+Wie hebt genne vast daagn mear zwemt twee tut dree moal in de wek.
+
+### Contact
+
+Stuur nen e-mailtje noar [`walrus@martlubbers.net`](mailto:walrus@martlubbers.net).
--- /dev/null
+---
+layout: index
+title: Orchestrating the Internet of Things with Task-Oriented Programming
+language: nl
+language_reference: thesis
+---
+
+{% include img.html alt='Kaft' img='thesiscover' %}{% include img.html alt='Boekenlegger' img='thesisboekenlegger' %}
+
+{% include toc.html %}
+
+## Details
+
+In het openbaar verdedigd op woensdag 4 oktober om 14:30 precies.
+
+Promotor: prof. dr. ir. M.J. (Rinus) Plasmeijer
+Copromotores:
+
+- dr. J.M. (Jan Martin) Jansen (Nederlandse Defensie Academie)
+- dr. P.W.M. (Pieter) Koopman
+
+Manuscriptcommissie:
+
+- prof. dr. S.-B. (Sven-Bodo) Scholz
+- prof. dr. G.K. (Gabriele) Keller (Universiteit Utrecht)
+- prof. dr. M. (Mary) Sheeran (Chalmers Tekniska Högskola, Zweden)
+
+## Samenvatting
+
+Het ontwikkelen van betrouwbare software voor Internet of Things (IoT) systemen is moeilijk omdat ze dynamisch, interactief, gedistribueerd, samenwerkend, meerlaags en multitasking zijn.
+Ook draagt de semantische wrijving voorkomend uit de grote verscheidenheid aan hard- en software karakteristieken tussen de lagen bij aan dit probleem.
+Veel van deze computers zijn _randcomputers_ die onderdeel zijn van het IoT.
+Randcomputers bestaan vaak uit goedkope microcontrollers, ontworpen voor geïntegreerde systemen, en ze interacteren met de buitenwereld door sensoren en actuatoren.
+Enerzijds hebben ze weinig geheugen, langzame rekenkernen en trage communicatie.
+Anderzijds zijn ze klein en hoogst energie-efficiënt.
+
+Taakgeörienteerd programmeren (TOP) is geschikt om met de uitdagingen van IoT systemen om te gaan.
+In TOP zijn abstracte representaties van werk, de taken, de bouwstenen.
+Tijdens het uitvoeren van een taak kan de huidige waarde geobserveerd worden en hierop kunnen andere taken reageren.
+Door taken te combineren of te transformeren kunnen samenwerkingsvormen uitgedrukt worden.
+Van deze beschrijving wordt een computersysteem gegenereerd dat gebruikers begeleidt in het uitvoeren van het werk.
+Randcomputers hebben ook baat bij TOP, al is niet eenvoudig om TOP-systemen erop in te zetten.
+
+Deze dissertatie laat zien hoe gehele IoT-systemen georkestreerd kunnen worden met {TOP}.
+Gebruik makend van techniek kunnen alle lagen van een IoT-systeem en hun samenwerking uitgedrukt worden in één hoog abstractieniveau, programmeertaal, paradigma en typesysteem.
+Allereerst laat ik enkele technieken zien om ingebedde domein-specifieke talen te maken.
+Daarna beschrijf ik mTask, een TOP-systeem voor randcomputers ingebed in iTask.
+Taken worden tijdens het uitvoeren opgebouwd, waardoor ze afgestemd kunnen worden op de huidige werkeisen.
+Vervolgens worden ze naar het apparaat gestuurd ter interpretatie.
+Na eenmalig uitgerust te worden met het domeinspecifieke besturingssysteem is een randcomputer geschikt voor mTask.
+Dit stuurprogramma voert de ontvangen taken energiezuinig uit en automatiseert tevens alle communicatie en dataverwerking.
+Alle aspecten van het mTask-systeem worden beschreven: voorbeeldprogramma's, taalontwerp, implementatiedetails, integratie met iTask en de energiezuinige functionaliteit.
+
+Het laagloos programmeren van IoT systemen wordt ook vergeleken met traditioneel gelaagd programmeren.
+Laagloos programmeren leidt tot minder code en minder programmeertalen.
+Door het gebruik van één paradigma en een systeembreed typesysteem verlaagt laagloos programmeren de semantische wrijving, onderhouds- en robuustheidsproblematiek en moeizame onderlinge samenwerking.
+
+Slides voor de samenvattingspresentatie kunnen [hier](/files/thesispraatje.pdf) gevonden worden.
--- /dev/null
+---
+layout: index
+title: Mart Lubbers' webpagina
+language: nl
+language_reference: home
+---
+
+{% include index_header.html %}
+
+{% include toc.html %}
--- /dev/null
+---
+layout: index
+title: Trieste Muziek
+language: nl
+language_reference: triest
+---
+
+Thuispagina van het platenlabel Trieste Muziek.
+
+For vragen, contacteer <code>mart@triestemuziek.nl</code>.
---
+layout: index
title: Walrusvereniging Almere
-date: 2023-06-12
+language: nl
+language_reference: walrus
---
Welkom op de website van de Walrusvereniging Almere.
+++ /dev/null
-<html>
- <head>
- <meta name="keywords" content="Doom, Black, Metal, Depressing, Depressed, Band, Name, Generator, Funeral">
- <meta name="description" content="Doom metal band name generator">
- <meta name="author" content="mart@martlubbers.net">
- <title>Doom Metal Band Name Generator!</title>
- </head>
- <body bgcolor="#000000" ALINK="#FFFFFF" LINK="#FFFFFF" TEXT="#FFFFFF" VLINK="#FFFFFF">
-<?php
-$input = array(
- "Ability", "Abnormal", "Abominable", "Abuse", "Adolescents", "Affect", "Agency", "Aid", "Alarm", "Alienation", "All ages", "Alone", "Anger", "Anguish", "Antidepressant", "Anxiety", "Anxious", "Ashamed", "Attempt", "Attention", "Attitude", "Awareness",
- "Boiling", "Bitter", "Bad", "Bipolar", "Blase", "Blue", "Brain",
- "Caregiver", "Certify", "Child", "Clarity", "Clinical", "Communication", "Concern", "Conclude", "Condition", "Confide", "Confusion", "Cooperative", "Cope", "Counsel", "Courage", "Cruel", "Cure", "Cycle",
- "Data", "Death", "Debilitating", "Defeated", "Degree", "Depressed", "Depression", "Descent", "Despair", "Despicable", "Detestable", "Detriment", "Diagnosis", "Die", "Discrimination", "Discouraged", "Disease", "Disgusting", "Disinterest", "Dissatisfied", "Diminished", "Disorder", "Disorder", "Distracted", "Doctor", "Dog days", "Doom", "Down", "Drugs",
- "Education", "Effect", "Endure", "Esteem", "Evaluation",
- "Family", "Fatigued", "Fear", "Feelings", "Fight", "Finality", "Friends", "Funeral",
- "Gain", "Grief", "Grieving", "Guideline", "Guilty",
- "Hard work", "Heal", "Health", "Heaven", "Help", "Helpless", "Hereditary", "Hopelessness", "Hope", "Hot-line", "Hurt",
- "Immune", "Improvement", "Inability", "Inactivity", "Indicator", "Insecure", "Interested", "Interfere", "Involvement", "Irritable", "Isolation", "Issues",
- "Jeer", "Joking",
- "Kill", "Knowledge", "Knowledgeable",
- "Label", "Lack", "Level", "Level", "Listening", "Lousy", "Loss",
- "Mad", "Media", "Medication", "Medicine", "Melancholia", "Mental", "Mental health", "Miserable", "Misunderstanding", "Monitor", "Mourning",
- "Necessary", "Need", "Negative", "Normal", "Nothing",
- "Observation", "Oncoming", "Opinion", "Option", "Organize", "Overcome", "Overwhelmed",
- "Pain", "Panic", "Parents", "Patience", "Patient", "Pattern", "Pay attention", "Peers", "Personal", "Physician", "Pills", "Prescription", "Powerless", "Prevent", "Prevention", "Programs", "Progress", "Progressive", "Protect", "Psychiatrist",
- "Quality", "Quantity", "Query", "Quest",
- "Reality", "Refusal", "Reign", "Report", "Repugnant", "Requirement", "Resulting", "Review",
- "Sadness", "Scared", "Security", "Separation", "Septic", "Seriousness", "Sewage", "Shades", "Siblings", "Signs", "Skills", "Sleep", "Sleep pattern", "Solitary", "Sorrow", "Source", "Statistics", "Stigma", "Strength", "Struggle", "Studies", "Substance abuse", "Succor", "Suffer", "Suicide", "Sulky", "Sympathetic", "Symptoms",
- "Tack", "Talk", "Talking", "Tears", "Teenagers", "Tentative", "Terrible", "Terrified", "Therapy", "Thoughts", "Time", "Tired", "Tragedy", "Tragic", "Trajectory", "Treat", "Treatment", "Treatment", "Treatment", "Triumph", "Troubled",
- "Uncertain", "Uncomfortable", "Understanding", "Unfulfilled", "Unique", "Unsettling", "Unusual",
- "Validation", "Victim",
- "Warning", "Watch", "Weeping", "Withdrawal", "Woesome", "World Health Organization", "Worry", "Worthless",
- "Youth",
- "Zero");
-$rand_keys = array_rand($input, 2);
-echo "\t\t<h1>" . $input[$rand_keys[0]] . " ";
-echo $input[$rand_keys[1]] . "</h1><br />\n";
-?>
- <br />
- <img src="http://www.metalmusicarchives.com/images/artists/arckanum.jpg"/><br/>
- <font size="1">
- <a href="javascript:location.reload(true);">new</a><br/>
- <a href="mailto:mart@martlubbers.net">contact</a>
- </font>
- </body>
-<html>
+++ /dev/null
----
-title: Orchestrating the Internet of Things with Task-Oriented Programming
-subtitle: a purely functional rhapsody
-date: 2023-04-19
----
-
-Draft version: [pdf](files/phdthesis.pdf)
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
- <head>
- <title>Trieste Muziek</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- </head>
- <body>
- <p>Home page of the record label Trieste Muziek.</p>
- <p>For inquiries please contact <code>mart@triestemuziek.nl</code>.</p>
- </body>
-</html>