<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Jan de Muijnck-Hughes</title><link>https://tyde.systems/</link><description>Recent content in Home on Jan de Muijnck-Hughes</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 24 Apr 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://tyde.systems/index.xml" rel="self" type="application/rss+xml"/><item><title>Trusted Timestamps &amp; Provenance of when Students Did their Work</title><link>https://tyde.systems/post/2025-04-24-tts/</link><pubDate>Thu, 24 Apr 2025 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2025-04-24-tts/</guid><description>Edited: because I failed to proof read.
In this article we will take a quick look at how we can use Trusted Timestamps to better establish the provenance of student (coding) assignments.
The Problem I often assess the attainment of learning outcomes using &amp;lsquo;coding projects&amp;rsquo;. The coding projects I design are styled as:
openbook: Students are free to use any resources to help them complete the project;
takehome: Students are free to do the project in places that suit them best (the lab or at home);</description></item><item><title>Moodle Musing Scales, Grades, Marks, and Advanced Grading.</title><link>https://tyde.systems/post/2025-04-03-moodle/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2025-04-03-moodle/</guid><description>Terminology When I was introduced to the grading/marking process, I was told about a difference between grades and marks:
Grades: Are the result of completing a module/course;
Marks: Are the result of completing a summative assessment within a module;
Within Moodle grades are marks and marks are grades, within this musing I will not be using them interchangeably.
Scales We give value to outcomes by mapping results to a &amp;lsquo;scale&amp;rsquo;. Although these scales are percentage points in the range $[0,100]$, we often use a more limited scale that maps to discrete percentage ponits.</description></item><item><title>Towards Type-Driven Assurance of Communicating Systems</title><link>https://tyde.systems/post/2025-02-07-jarss/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2025-02-07-jarss/</guid><description>I have been fortunate to be awarded funding for a UK-based PhD position as part of the [John Anderson Research Student Scheme]( JARSS PhD studentship).
Whilst awaiting for a proper advert on the University&amp;rsquo;s own systems.
A temporary one is here</description></item><item><title>PIM Update</title><link>https://tyde.systems/post/2024-05-04-pim/</link><pubDate>Sat, 04 May 2024 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2024-05-04-pim/</guid><description>It have been over a year since I last wrote about how I &amp;lsquo;PIM&amp;rsquo;.
Time for an update, especially as I have a proper job now&amp;hellip;
So long story short:
Emacs Lifer; still using OrgMode
So what is different? I have more tags and more files, and more techniques to address productivity.
Files, Files, and More Files&amp;hellip; I still keep a number of files in my git-controlled org folder for many things:</description></item><item><title>My (First) Research Programme</title><link>https://tyde.systems/post/2024-05-02-my-research-programme/</link><pubDate>Thu, 02 May 2024 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2024-05-02-my-research-programme/</guid><description>On May 1st, 2024 I attending the first SPLI Industry Engagement Event at the University of Edinburgh.
As part of that event I presented a poster detailing my own research interests and topics that I want to work on. Rather than keeping the poster secret I thought I would share it here.
Et voila:
Click here (or the image) for PDF.</description></item><item><title>Grading Utilities</title><link>https://tyde.systems/post/2024-01-01-teaching-utilities/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2024-01-01-teaching-utilities/</guid><description>At work we use Moodle (locally known as MyPlace) for handling course delivery, including the submission and grading of assignments.
Moodle is by far not a perfect system, but it is the one we use. A primary issue with Moodle is that it is a terribly online system, there are limited ways in which you can work offline and then upload your results. For instance, MCQs can be written offline and uploaded and so can the returning of marks and feedback.</description></item><item><title>Some BibLaTeX Tricks to remember</title><link>https://tyde.systems/post/2023-09-19-biblatex/</link><pubDate>Tue, 19 Sep 2023 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2023-09-19-biblatex/</guid><description>For creating beautiful PDFs and slides, I am a big believer of using LaTeX whenever possible. Sometimes one has to use Word, but for everything else LaTeX!
For writing documents, that is another matter.
When working with citations, LaTeX is bundled with a powerful tool called BibTeX that supports structured representation of bibliographic entries in a custom format that allows one to easily change citation style and reference style.
Now, BibTeX is rather outdated and the community has produced a tidy replacement called BibLaTeX that uses biber as a backend rather than BibTeX.</description></item><item><title>Declaring PIM Bankruptcy again...</title><link>https://tyde.systems/post/2023-02-23-pim/</link><pubDate>Thu, 23 Feb 2023 12:26:02 +0000</pubDate><guid>https://tyde.systems/post/2023-02-23-pim/</guid><description>After getting a camera-ready copy of a paper finished recently, I found myself in a slump. It was the usual slump I get when finishing big tasks. The trouble is: What to do in these slumps? A former colleague, former second supervisor, current man in a pub, mentioned once that you should have a list of TODOs on hand for the down times. I think this is great advice and can be summed up as:</description></item><item><title>Type Theory as a Workbench</title><link>https://tyde.systems/post/2023-02-01-evcs/</link><pubDate>Wed, 01 Feb 2023 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2023-02-01-evcs/</guid><description>A bittersweet announcement: I am pleased to announce that, together with my co-authors Edwin Brady (of St Andrews) &amp;amp; Guillaume Allais (soon to be of Strathclyde), we have a paper accepted to the Eelco Visser Commemorative Symposium 2023.
The work argues how we can link dependently-typed languages with language work benches, and highlights many of the techniques that Guillaume and I use when formally mechanising language&amp;rsquo;s in Idris2/Agda. The abstract is below:</description></item><item><title>Efficient and Effective Provisioning of Virtual Machines for Artefact Evaluation</title><link>https://tyde.systems/post/2023-01-05-artifacts-revisted/</link><pubDate>Thu, 05 Jan 2023 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2023-01-05-artifacts-revisted/</guid><description>I have written about artifact provisioning before. Even though I have yet to publish in recent years, I have been keeping my artifact provision game up.
This is because some conferences (ECOOP &amp;lsquo;23) are now requiring artefacts at time of (well a week later) of submission. This is not a bad approach per se as it contributes towards reproducible results, in some form. Moreover, when reviewing artefacts in the past, I have had to download GBs worth of VM for what is essentially a very small program, or download GBs of data on top of that (this was related to external propriety software).</description></item><item><title>Follow the Trail! Visualising Bi-Directional Type-Checking as Network Communication.</title><link>https://tyde.systems/post/2022-06-08-follow-the-trail/</link><pubDate>Wed, 08 Jun 2022 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2022-06-08-follow-the-trail/</guid><description>Note If the images do not appear change the file-extention to dot, and you can download the raw file and use xdot to recreate the images.
Language Instances as Graphs On Tuesday, 7th June 2022 I was fortunate enough to attend the Huawei Coffee House talk on port graphs by Maribel Fernández. An interesting comment made by Maribel, and some audience members, was that we should not think about derivations (i.</description></item><item><title>Being Positively Negative.</title><link>https://tyde.systems/post/2022-06-02-posneg/</link><pubDate>Thu, 02 Jun 2022 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2022-06-02-posneg/</guid><description>We will need some helpers&amp;hellip;
import Decidable.Equality import Data.List import Data.Nat import Data.Zippable Being Truthful namespace Intro Predicates and their decision procedures are a core technique in dependently-typed programming to represent truth (predicate) and a way to discern if something holds (the decision procedure). Take for example, existential quantification that an element is in a list. Standard functional programming techniques would represent this as a boolean test.
isElem : Eq type =&amp;gt; (x : type) -&amp;gt; (xs : List type) -&amp;gt; Bool isElem x [] = False isElem x (y :: ys) = x == y || isElem x ys Predicates hold the Truth namespace Predicates We can make this programme stronger using dependent types.</description></item><item><title>Wiring Circuits is as easy as 0-1-Omega, or is it...</title><link>https://tyde.systems/post/2022-05-31-linear-wirings/</link><pubDate>Tue, 31 May 2022 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2022-05-31-linear-wirings/</guid><description>In February 2022 I gave a PLInG talk about some work I have done investigating the application of quantitative type-systems to reasoning about wiring in netlists. I am rehashing this talk for an internal seminar.
Quantitative types allow us to reason more precisely about term usage in our programming languages. There are, however, other styles of language in which quantitative typing is beneficial: Hardware Description Languages (HDLs) for one. When wiring the components together it is important to ensure that there are no unused ports or dangling wires.</description></item><item><title>Types as Interpreters for HDLs to Graphs.</title><link>https://tyde.systems/post/2022-05-25-type-interpreter-hdls/</link><pubDate>Wed, 25 May 2022 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2022-05-25-type-interpreter-hdls/</guid><description>As part of my PhD I was interested in: Types as (Abstract) Interpreters. This approach embeds an interpretation of your model directly in the type of your terms. A previous post details it.
As port of my current work I have been investigating the construction of Hardware Description Languages (HDLs) and reasoning about their structure using denotational semantics. Currently my soundness checks are extrinsic to the intrinsically typed term language I have developed.</description></item><item><title>Thoughts on API Design for Dependently-Typed Languages</title><link>https://tyde.systems/post/2021-11-29-thoughts-api-design/</link><pubDate>Mon, 29 Nov 2021 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2021-11-29-thoughts-api-design/</guid><description>API design is an important aspect of Library Design. Having programmed, for what seems like an age, on personal-ish projects I often do not give this much thought: I don&amp;rsquo;t have users. Recently, however, I had a lightbulb type moment when constructing a module for checking that graphs have a certain structural properties. Now I do not think this moment is special, unique, or something new. It is an observation:</description></item><item><title>Formalising the (Sub-)Structural Aspects of SystemVerilog</title><link>https://tyde.systems/post/2021-03-08-plas/</link><pubDate>Mon, 08 Mar 2021 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2021-03-08-plas/</guid><description>Today, I am very pleased to be traveling all the way to the Programming Languages and Systems Group at the University of Kent in Canterbury.
This is not the first time that I have given a talk at Kent. Years a go I spoke at a CryptoForma workshop hosted there. The topic was on linking dependent types, session types, and protocol implementation validation. A topic that I should revisit once my restraints are released, and I am unshackled!</description></item><item><title>Faking Linear Variable Usage</title><link>https://tyde.systems/post/2021-01-25-faking-linear-variables/</link><pubDate>Mon, 25 Jan 2021 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2021-01-25-faking-linear-variables/</guid><description>I have been thinking, again, about way&amp;rsquo;s in which one can encode linear variable usage in EDSLs.
One cannot state usage on things that one cannot bind. We can encode EDSLs using intrinsically well-typed EDLS that, at the type-level, gives all terms a type type and carries around the local typing context. Bound variables are represented using De Bruijn indices encoded as existential quantification over a type-level context.
This traditional approach, however, does not play well with languages that have built in ways to ensure linear variable usage.</description></item><item><title>Synthesised or Checked?</title><link>https://tyde.systems/post/2021-01-22-synthesised-or-checked/</link><pubDate>Fri, 22 Jan 2021 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2021-01-22-synthesised-or-checked/</guid><description>A classic example in the world of dependently typed programming is that of presenting the STLC (and extensions) as well-typed EDSLs.
The STLC as an Idris EDSL. Below we give a simple example of the STLC with Booleans.
data Ty = TyBool | TyFunc Ty Ty data STLC : (ctxt : List Ty) -&amp;gt; (type : Ty) -&amp;gt; Type where Var : Elem type ctxt -&amp;gt; STLC ctxt type Func : (body : STLC (type_param :: ctxt) type_body) -&amp;gt; STLC ctxt (TyFunc type_param type_body) App : (func : STLC ctxt (TyFunc type_param type_body)) -&amp;gt; (param : STLC ctxt type_param) -&amp;gt; STLC ctxt type_body B : (b : Bool) -&amp;gt; STLC ctxt TyBool STLC is intrinsically well-typed in that, at the type-level, all terms are given a type type and has the local typing context.</description></item><item><title>A Framework for Resource Dependent EDSLs in a Dependently Typed Language</title><link>https://tyde.systems/post/2020-11-16-ecoop/</link><pubDate>Mon, 16 Nov 2020 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2020-11-16-ecoop/</guid><description>My ECOOP2020 video &amp;amp; paper detailing how one can create Resource-Dependent EDSLs in Idris are out!
They can be found online on the conference website. Apologies in advance for the quiet audio!
Idris&amp;rsquo; Effects library demonstrates how to embed resource dependent algebraic effect handlers into a dependently typed host language, providing run-time and compile-time based reasoning on type-level resources. Building upon this work, RESOURCES is a framework for realising Embedded Domain Specific Languages (EDSLs) with type systems that contain domain specific substructural properties.</description></item><item><title>Defining Intrinsically Typed Data Structures</title><link>https://tyde.systems/post/2020-08-04-well-typed-data/</link><pubDate>Tue, 04 Aug 2020 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2020-08-04-well-typed-data/</guid><description>When reading foundational texts such as PLFA, TAPL, and Software Foundations the learner is often presented with Simply-Typed Lambda Calculi that supports both products and sums. When translating these calculi to dependently typed languages in an intrinsically typed way as we do with Idris &amp;amp; Agda, how we might approach supporting other data structures such as tuples, records and variants is not precisely clear. In fact Software Foundations does give an idea on how to do so but let us explore how we may choose to represent such structures in Idris/Agda.</description></item><item><title>Programming with Holes</title><link>https://tyde.systems/post/2020-07-09-programming-with-holes/</link><pubDate>Thu, 09 Jul 2020 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2020-07-09-programming-with-holes/</guid><description>Traditionally, computer programs must be complete when presented to the compiler. Typed Holes (also known as meta variables) are an important tool when programming that supports computing with incomplete programs in which holes (the things we do not know) are a core aspect of the language (and tooling) design. Specifically, if you have used dependently typed languages such as Idris and Agda you will have encountered holes before. Typed Holes in Idris allow us to inspect the local typing context from where the hole was placed.</description></item><item><title>Building Resource-Dependent EDSLs in a Dependently-Typed Language</title><link>https://tyde.systems/post/2020-06-19-msp101/</link><pubDate>Fri, 19 Jun 2020 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2020-06-19-msp101/</guid><description>Today, I gave an extended talk about Resource Dependent EDSLs in a Dependently Typed Language at the MSP101 Seminar Series of the MSP Group at the University of Strathclyde. This was joint work with Wim Vanderbauwhede, and Edwin Brady.
While many people use dependent types for theorem proving some of us like to use dependent types for building, and running, safer programs.
Idris&amp;rsquo; Effects library demonstrates how to embed resource dependent algebraic effect handlers into a dependently typed host language, providing run-time and compile-time based reasoning on type-level resources.</description></item><item><title>A Framework for Resource Dependent EDSLs in a Dependently Typed Language</title><link>https://tyde.systems/post/2020-05-28-ecoop/</link><pubDate>Thu, 28 May 2020 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2020-05-28-ecoop/</guid><description>I am very pleased to announce that my paper describing a framework for constructing Resource Dependent EDSLs in a Dependently Typed Language was accepted to ECOOP 2020. Many of you may have seen this from the conference website itself, and I was waiting until the camera ready copy was produced to properly publicly announce. This was joint work with Wim Vanderbauwhede, and Edwin Brady.
Idris&amp;rsquo; Effects library demonstrates how to embed resource dependent algebraic effect handlers into a dependently typed host language, providing run-time and compile-time based reasoning on type-level resources.</description></item><item><title>The Last Step</title><link>https://tyde.systems/post/2020-05-26-the-last-step/</link><pubDate>Tue, 26 May 2020 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2020-05-26-the-last-step/</guid><description>Every so often I like to reread notable books on /Programming Language Theory/ (PLT). Namely, one should read:
Programming Language Foundations in Agda Software Foundations Types and Programming Languages Practical Foundations for Programming Languages With these books each presents a treatment of PLT either: mechanised using Agda or Coq; presented purely theoretically in LaTeX; or a mixture of theory and practice.
Of particular interest to myself is the presentation using Agda.</description></item><item><title>Decidably Uninformative</title><link>https://tyde.systems/post/2020-05-04-decidablyuninformative/</link><pubDate>Mon, 04 May 2020 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2020-05-04-decidablyuninformative/</guid><description>Dependently typed theorem proving is about using the power of dependent types to provide guarantees over various properties of software programs and mathematical constructs. In dependently typed programming we use dependent types to construct and better reason about the properties of our software programs.
While the former requires that we construct proofs, the latter requires that we construct a usable system. In this post I want to discuss how proving and construction can get in the way of each other and that when programming with dependent types we must recognise and tread carefully the fine line between theorem proving and programming.</description></item><item><title>Mutual Avoidance</title><link>https://tyde.systems/post/2020-05-04-mutual-avoidance/</link><pubDate>Mon, 04 May 2020 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2020-05-04-mutual-avoidance/</guid><description>Sometimes dependent types push you towards mutually defined data structures: I try to avoid them where I can. For me, this occurrs when you need a helper data type where a container is not suitable expressive at the type level to capture the inductive case. When this happens you can index your helper data structure with the signature of the top type. This helps remove the need for a mutual definition, that is turn the call graph edge from undirected to directed.</description></item><item><title>Well-Typed Expressions lead to Well-Typed Well-Scoped Programs</title><link>https://tyde.systems/post/2019-12-06-well-typed-programs/</link><pubDate>Fri, 06 Dec 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-12-06-well-typed-programs/</guid><description>Let us consider the /Well-Typed Interpreter/ (WTI), a well known application of dependent types to ensure that our program&amp;rsquo;s are not only well-typed but also well-scoped w.r.t. variables. To be specific the WTI details not how program&amp;rsquo;s are correct but /expressions/. When dealing with program&amp;rsquo;s we will have a top-level expression that may depend on globally declared expressions.
In this post I will describe a Razor, detailing how with a little thought we can use the concept of the WTI to described /Well-Typed Programs/.</description></item><item><title>Hutton's Razor(s)</title><link>https://tyde.systems/post/2019-12-04-razor/</link><pubDate>Wed, 04 Dec 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-12-04-razor/</guid><description>In this post we will consider Hutton&amp;rsquo;s Razor.
This post was derived from a literate Idris file so there will be some cruft related to Idris that will remain until I get round to 1 improving Idris&amp;rsquo; literate mode support.
module Main We will need some data structures, and helper functions, not defined in Idris&amp;rsquo; prelude.
import Data.List The following two imports are from my container&amp;rsquo;s library, we will need these in the final sections to keep our musing&amp;rsquo;s DRY.</description></item><item><title>On Interfaces and Dependent Types</title><link>https://tyde.systems/post/2019-11-20-interfaces-and-dependent-types/</link><pubDate>Wed, 20 Nov 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-11-20-interfaces-and-dependent-types/</guid><description>In this post we will consider the interplay between dependently typed data structures and interfaces.
This post is a literate Idris file so there will be some cruft related to Idris that will remain until I get round to 1 improving Idris&amp;rsquo; literate mode support.
module Main First we need to hide a few things from the default&amp;hellip;
%hide List %default total Consider the following interface that defines equality for a provided type:</description></item><item><title>LightClick---A Linear Typed Orchestration Language for System-On-A-Chip Designs</title><link>https://tyde.systems/post/2019-11-05-stacs/</link><pubDate>Tue, 05 Nov 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-11-05-stacs/</guid><description>On Tuesday 05 November 2019, I gave a talk at my alma matter on some recent results.
The abstract is:
Two important aspects in hardware design are the safe routing of signals between modules, and ensuring that ports are correctly connected. Well-known hardware description languages such as SystemVerilog, provide nominal checking over these aspects. Thus, leaving correctness checks over module orchestration to be performed post-design-time using static analyses, testing, and during synthesis.</description></item><item><title>A Typing Discipline for Hardware Interfaces.</title><link>https://tyde.systems/post/2019-07-10-ecoop/</link><pubDate>Wed, 10 Jul 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-07-10-ecoop/</guid><description>On Wednesday 17 July, 2019 I will be at ECOOP 2019 presenting my work on constructing a type-system for hardware interfaces. This was joint work with Wim Vanderbauwhede as part of the Border Patrol project.
To promote good academic practise (and inspired my Matthew Green&amp;rsquo;s blogging), I will describe the work here. Think of this post, and my talk on Wednesday, as an extended abstract. If you are interested then you should read the paper, it has all the gory details.</description></item><item><title>Provisioning My First Artifact.</title><link>https://tyde.systems/post/2019-04-12-my-first-artifact/</link><pubDate>Fri, 12 Apr 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-04-12-my-first-artifact/</guid><description>A up-and-coming trend in Programming Languages (PL) conferences is that of reproducible science. If you ran experiments, let other reproduce them; if you build a system, let other people play with it; if you (and you should) mechanised your proofs; let others rerun said proofs! Most research projects will have some artefact of one kind or another be it a system, a proof, or experiment. Many conferences are now starting to introduce artifact evaluations as a separate track to help ensure an accepted paper&amp;rsquo;s artefact is reproducible 1.</description></item><item><title>Writing a Rebuttal. Hints &amp; Tips</title><link>https://tyde.systems/post/2019-04-02-rebuttal/</link><pubDate>Tue, 02 Apr 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-04-02-rebuttal/</guid><description>Yesterday, I was pleased to learn that I was accepted to ECOOP 2019. The submission process was double blind, and included a rebuttal period.
Matt Might&amp;rsquo;s Advice Writing a rebuttal is a non-trivial process, and Matt Might has written excellent advice on the subject. He advises that you should be:
Polite. Conciliatory. Thorough. These are good points you should adhere to. I would advise reading his post for more intuition.</description></item><item><title>A Typing Discipline for Hardware Interfaces.</title><link>https://tyde.systems/post/2019-04-01-ecoop/</link><pubDate>Mon, 01 Apr 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-04-01-ecoop/</guid><description>I am very pleased to announce that my paper describing a type-system for hardware interfaces was accepted to ECOOP 2019. This was joint work with Wim Vanderbauwhede as part of the Border Patrol project.
Modern Systems-on-a-Chip (SoC) are constructed by composition of IP (Intellectual Property) cores. There are well described interaction protocols for communication between IP Cores. However, there is a disconnect between the machine readable specification of these protocols and the verification of their implementation in known hardware description languages.</description></item><item><title>Value-Dependent Session Design in a Dependently-Typed Language.</title><link>https://tyde.systems/post/2019-03-07-places/</link><pubDate>Thu, 07 Mar 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-03-07-places/</guid><description>I am very pleased to announce that my paper on designing a global session description language within Idris was accepted to PLACES 2019. This was based on ideas that myself and Edwin Brady had as part of the TDVCS project, that were then matured in the Border Patrol project with Wim Vanderbauwhede.
Session Types offer a typing discipline that allows protocol specifications to be used during type-checking, ensuring that implementations adhere to a given specification.</description></item><item><title>Computing Types with Idris &amp; Linking Specifications with Implementations.</title><link>https://tyde.systems/post/2019-02-12-typer/</link><pubDate>Tue, 12 Feb 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-02-12-typer/</guid><description>Within dependently typed languages such as Idris types:
are first-class can depend on values; and can be computed. With this last point we see that the Idris language doesn&amp;rsquo;t have special constructs to specify type synonyms: We write functions to compute the type. Similarly, we can compute type signatures from programs. A common example seen is the type-safe printf function in which an EDSL describes the format string and is then computed to construct a type signature.</description></item><item><title>Representing Interfaces when you have no Interfaces.</title><link>https://tyde.systems/post/2019-02-09-interfaces/</link><pubDate>Sat, 09 Feb 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-02-09-interfaces/</guid><description>I was chatting with someone about Interfaces/Type-classes and how in their language of choice you do not get default functions. It reminded me of a little implementation trick I used in my thesis to hot swap model implementations in an evaluator I wrote.
I will show this trick using the dependently typed language Idris but make not that I don&amp;rsquo;t see any real reason why this cannot be achieved in a language that supports polymorphism and indexed data types.</description></item><item><title>Handling Side-Effects using Resource Dependent Algebraic Effects</title><link>https://tyde.systems/post/2019-02-05-fata/</link><pubDate>Tue, 05 Feb 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-02-05-fata/</guid><description>I am giving a talk today about some work on reasoning about program side effects in Idris.
The abstract is:
Dependent types provide an expressive environment in which one can specify, and reason about, the properties of our software programs.
In this talk I will introduce dependent types and examine how we can reason about program behaviour using finite state machines and type-level modelling.
Slides are not available.</description></item><item><title>Revisiting Type-Driven Design of Communicating Systems</title><link>https://tyde.systems/post/2019-02-05-tddcs/</link><pubDate>Tue, 05 Feb 2019 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2019-02-05-tddcs/</guid><description>I am giving a talk today about implementing global session types as an EDSL within Idris.
The abstract is:
Communication protocols are a cornerstone of modern system design. However, there is a disconnect between the tooling used to design, implement and reason about these protocols and their implementations. Session Types offer a typing discipline that helps resolve this difference by allowing protocol specifications to be used during type-checking, ensuring that implementations adhere to a given specification.</description></item><item><title>Type-Driven Development of SoC Architectures.</title><link>https://tyde.systems/post/2018-12-11-systems/</link><pubDate>Tue, 11 Dec 2018 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2018-12-11-systems/</guid><description>I am giving a talk about my work on the Border Patrol Project at the local Systems Seminar.
This talk is a repeat of my SPLS talk from earlier this year.
The protocols that describe the interactions between IP Cores on System-on-a-Chip (SoC) architectures are well-documented, describing not only the structural properties of the physical interfaces but also the behaviour of the emanating signals. However, there is a disconnect between the design of SoC architectures, their formal description, and the verification of their implementation in known hardware description languages.</description></item><item><title>Type-Driven Development of SoC Architectures.</title><link>https://tyde.systems/post/2018-10-17-spls/</link><pubDate>Wed, 17 Oct 2018 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2018-10-17-spls/</guid><description>I am giving a talk about my work on the Border Patrol Project at SPLS Oct &amp;lsquo;18 at the University of Strathclyde. This event is being hosted by the MSP Group of the School of Computer and Information Sciences.
This talk extends upon early talks to the MSP Group, FP-StAnd Group, and PL Interest groups, with an even more complete picture of the language and how it is used. Sadly, this talk won&amp;rsquo;t be Chalk&amp;amp;Talk, and a more conventional slidedeck will be used.</description></item><item><title>A Short Note on Collecting Dependently Typed Values</title><link>https://tyde.systems/post/2018-08-07-dependent-lists-eprint/</link><pubDate>Tue, 07 Aug 2018 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2018-08-07-dependent-lists-eprint/</guid><description>I&amp;rsquo;ve finally found a round tuit down the back of the sofa and worked out how to a) use arXiv for publishing preprint eprints, and b) publishing a short note on collecting dependently typed values.
The URL is: https://arxiv.org/abs/1808.09234
The work stems from a short note I wrote in the appendix of my PhD thesis, which in turn originated as a blog post. It is not necessarily novel work, or worthy of publication at a workshop, but thought I would share nonetheless.</description></item><item><title>Type-Systems for Describing System-on-a-Chip Architectures.</title><link>https://tyde.systems/post/2018-07-12-pl-interest/</link><pubDate>Thu, 12 Jul 2018 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2018-07-12-pl-interest/</guid><description>I am giving a talk about my work on the Border Patrol Project at the University of Edinburgh, School of Informatics, PL-Interest Group.
This extends upon my talk from March to the FP-Group at St Andrews with a more complete picture of the language and how it is used. Sadly, this talk won&amp;rsquo;t be Chalk&amp;amp;Talk, and a more conventional slidedeck will be used. If tempted, I may do live programming.</description></item><item><title>TyDe Denied</title><link>https://tyde.systems/post/2018-07-02-tyde-rejected/</link><pubDate>Mon, 02 Jul 2018 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2018-07-02-tyde-rejected/</guid><description>I submitted a paper entitled Fake it until they make it: Implementing Substructural Type-Systems for EDSLs using Dependent Types to Type-Driven Development &amp;lsquo;18
I have decided to uploaded the abstract here so that my attempt is a least indexable by the great machine spirit in the web&amp;mdash;Hallowed be thy API. Given time I will also upload a copy of the paper to ArXiV.
The paper&amp;rsquo;s abstract was:
Many substructural type-systems are presented for general purpose languages, reasoning about structural rules referencing memory access, and variable usage.</description></item><item><title>A Type-System for describing System-on-a-Chip Architectures.</title><link>https://tyde.systems/post/2018-04-05-stacs-fp/</link><pubDate>Thu, 05 Apr 2018 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2018-04-05-stacs-fp/</guid><description>I am giving a talk about my work on the Border Patrol at the University of St Andrews, School of Computer Science, Functional Programming Group.
This extends upon my talk from February to the MSP Group at Strathclyde with a more complete picture of the language and how it is used. Sadly, this talk won&amp;rsquo;t be Chalk&amp;amp;Talk, and a more conventional slidedeck will be used. If tempted, I may do live programming.</description></item><item><title>A Type-System for describing the Structural Topology of System-on-a-Chip Architectures.</title><link>https://tyde.systems/post/2018-02-28-msp101/</link><pubDate>Wed, 28 Feb 2018 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2018-02-28-msp101/</guid><description>In February, I gave a talk about my work on the Border Patrol at the University of Strathclyde&amp;rsquo;s, School of Computing and Information Sciences MSP 101.
This was a fun talk to prepare and deliver as the MSP101 talks are traditionally Chalk&amp;amp;Talk. Hopefully, I was able to convince the group that I was working on something interesting.
The protocols that describe the interactions between IP Cores on System-on-a-Chip architectures are well-documented.</description></item><item><title>Designing Hardware using Session Types and Dependent Types---A First Look</title><link>https://tyde.systems/post/2017-10-11-spls/</link><pubDate>Wed, 11 Oct 2017 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2017-10-11-spls/</guid><description>This week, I gave a talk about my work on the Border Patrol at the Autumn 2017 session of SPLS.
The Border Patrol Project seeks to investigate how state-of-the-art advances in programming language theory can provide better guarantees towards System-On-Chip (SoC) design and execution. Specifically we are interested in extending existing work on structural type systems for SoC with that of Multi-Party Session Types and Dependent Types.
In this talk I will: briefly discuss the goals of the Border Patrol Project; outline some of the design challenges we have encountered so far when looking to adapt multi-party session types for describing hardware; and demonstrate how dependent types help reason about the structure of SoC architectures.</description></item><item><title>Type-Driven Development of Communicating Systems using Idris</title><link>https://tyde.systems/post/2017-07-25-imperial/</link><pubDate>Tue, 25 Jul 2017 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2017-07-25-imperial/</guid><description>This week, I gave a talk about my work with Edwin Brady at University of St Andrews, whilst visiting Imperial College London for the Border Patrol Project. The talk was an extended version of my FP-Dag Talk, which was a revamp of my SPLS talk.
There is a disconnect between the tooling used to design, implement and reason about communication protocols and their implementations. Session Types are a typing discipline that help resolve this difference by allowing protocol specifications to be used during type-checking to ensure that implementations adhere to a given specification.</description></item><item><title>ICFP Rejection</title><link>https://tyde.systems/post/2017-03-28-icfp-rejected/</link><pubDate>Tue, 28 Mar 2017 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2017-03-28-icfp-rejected/</guid><description>I submitted a paper entitled Type-Driven Development of Communicating Systems to ICFP &amp;lsquo;17.
I have decided to uploaded the abstract here so that my attempt is a least indexable by the great machine spirit in the web&amp;mdash;Hallowed be thy API. Given time I will also upload a copy of the paper to ArXiV.
The paper&amp;rsquo;s abstract was:
Communication protocols are a cornerstone of modern system design. However, there is a disconnect between the tooling used to design, implement and reason about these protocols and their implementations.</description></item><item><title>FP Dag 17-Type-Driven Design of Communicating Systems using Idris</title><link>https://tyde.systems/post/2017-01-09-fp-dag/</link><pubDate>Mon, 09 Jan 2017 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2017-01-09-fp-dag/</guid><description>Last week, I gave a talk about my work at FP Dag &amp;lsquo;17 https://msp-strath.github.io/spls-16/) at the annual meeting of functional programmers in the Netherlands. This year the meeting was in Nijmegen at the RU, where I did my Masters. Although I am not resident anymore in the Netherlands, I used the oppurtunity to talk about my work to an international audience, and to see old friends. The talk is a slight revamp of my SPLS talk.</description></item><item><title>Off The Beaten Track</title><link>https://tyde.systems/post/2016-11-11-off-the-beaten-track/</link><pubDate>Fri, 11 Nov 2016 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2016-11-11-off-the-beaten-track/</guid><description>I submitted a talk entitled Type-Driven Development of Security Protocols to Off-The-Beaten-Track &amp;lsquo;17.
I have decided to uploaded the abstract here so that my attempt is a least indexable by the great machine spirit in the web&amp;mdash;Hallowed be thy API. Given time I will also upload a copy of the paper to ArXiV.
The abstract is:
Implementing security protocols correctly is hard; verifying them is too. However, we also implement them in languages different to those we verify them in.</description></item><item><title>Colour Blind Aware Semantic Highlighting</title><link>https://tyde.systems/post/2016-11-10-colourblind/</link><pubDate>Thu, 10 Nov 2016 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2016-11-10-colourblind/</guid><description>Yesterday, I gave a talk about my work at SPLS Nov &amp;lsquo;16 at the University of Strathclyde.
In my work I have a data type:
data Session : (ty : Ty) -&amp;gt; (old : Context) -&amp;gt; (new : ty -&amp;gt; Context) -&amp;gt; Type where and a function that computes an instance of that type with information to popular the value old.
Session : List Role -&amp;gt; List (Role, Role) -&amp;gt; Type Session rs ps = Model.</description></item><item><title>SPLS-Type-Driven Design of Communicating Systems using Idris</title><link>https://tyde.systems/post/2016-11-09-spls/</link><pubDate>Wed, 09 Nov 2016 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2016-11-09-spls/</guid><description>Today I gave a talk about my work at SPLS Nov &amp;lsquo;16 at the University of Strathclyde.
The idea of communicating systems is a cornerstone of modern technology that allows heterogeneous collections of components to communicate through well-defined communication patterns. However, there is a disconnect between the tooling and languages used to design, implement and reason about communication protocols.
Idris is a general purpose programming language that supports full-dependent types, providing programmers with the ability to reason more precisely about programs.</description></item><item><title>Effectful Channel Management</title><link>https://tyde.systems/post/2016-10-05-effectful-channel-management/</link><pubDate>Fri, 28 Aug 2015 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2016-10-05-effectful-channel-management/</guid><description>Communicating systems require channels to communicate, in many of the programming languages that provide communication channels the management of these channels at the application layer is left to the programmer to get right. That is, the programmer is responsible for ensuring that the channel is established, connected to, and then destroyed.
In languages that support dependent types we can encoded, at the type level, extra properties about our software program. Further, the idea of algebraic effects supports the separation of a program&amp;rsquo;s description from its realisation in different contexts.</description></item><item><title>Dependent Types and Goal-Oriented DSMLs</title><link>https://tyde.systems/post/2015-07-28-redomaining-grl/</link><pubDate>Tue, 28 Jul 2015 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2015-07-28-redomaining-grl/</guid><description>I submitted a paper entitled Using Dependent Types to Build Domain Specific Goal-Oriented Modelling Languages to GPCE &amp;lsquo;15. Sadly it was rejected. I mentioning it here, so that my attempt is a least indexable by the great machine spirit in the web&amp;mdash;Hallowed be thy API.
The abstract is:
The Goal Requirements Language (GRL) has been used as a host language for the creation of Domain Specific Goal-Oriented Modelling Languages (DSMLs). The pictorial language constructs, however, do not allow for a more formal language-driven treatment to be given for DSMLs created in the GRL.</description></item><item><title>Tips for using Effects in Idris</title><link>https://tyde.systems/post/2015-08-14-practical-effect-usage/</link><pubDate>Tue, 28 Jul 2015 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2015-08-14-practical-effect-usage/</guid><description>Effects is an Idris package that implements resource-dependent algebraic effects. This allows a developer to control at a fine-a-grained level the side affects (state, logging, IO) for effectful programs. A tutorial and more background on their use is available on line.
When writting my Idris libraries I have used Effects to manage exceptions, state, logging, and IO. Here are some tips in my experiences in using Effects.
Global Effects List In an effectful function the effects used are declared in a List data structure of type List EFFECT.</description></item><item><title/><link>https://tyde.systems/post/2015-07-05-idris-compiling/</link><pubDate>Sun, 05 Jul 2015 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2015-07-05-idris-compiling/</guid><description>Edits As someone cannot proof-read, this post has been updated.
Idris is my day to day language for programming. This article and subsequent will detail some tricks that may be of benefit when creating Idris Programs.
The Idris compiler goes through many a stage during the compilation process. Idris code is:
elaborated checked for coverage checked for totality checked for unification defunctionalised turned into code These checks are not necessarily robust stages perform a series of checks on the code, or apply transformations, and when presented with code written in a poor style can lead to false negatives being reported, or the Idris compiler becoming confused as to what is happening.</description></item><item><title>Dependent Lists</title><link>https://tyde.systems/post/2015-07-05-dependent-lists/</link><pubDate>Sun, 05 Jul 2015 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2015-07-05-dependent-lists/</guid><description>Edits Spelling and Grammar
In dependently typed languages such as Idris, types can depend on values. This facilitates the construction of rich type-eco-system for reasoning on our software programmes. However, when working with dependently typed values it makes the collection of these values into containers much more interesting. As types depend on a value collecting a set of dependent type into a standard container type means that all items in the container must have the same type.</description></item><item><title>Embedded Domain Specific Type Systems for Declarative EDSls</title><link>https://tyde.systems/post/2015-07-04-foos/</link><pubDate>Sat, 04 Jul 2015 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2015-07-04-foos/</guid><description>Example of Embedded Domain Specific Type Systems for Declarative EDSLs. The full code can be found: https://gist.github.com/jfdm/2c37389f89203448f763
This example represents the FooExpr language, this is a declarative language for specifiying different kinds of elements, and their links. The real world semantics of FooExpr do nto matter here, but think of we are building graphs and constraining the values for nodes and edges.
The Meta Typing System Meet the meta-types in our typing system.</description></item><item><title>Types and Abstract Interpretation</title><link>https://tyde.systems/post/2015-07-04-nines/</link><pubDate>Sat, 04 Jul 2015 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2015-07-04-nines/</guid><description>This post demonstrates how Dependent Types can be used to implement &amp;lsquo;Types as (Abstract) Interpretations&amp;rsquo;. The full code can be found on GIST.
The concept of abstract interpretation is to model the runtime behaviour (semantics) of a program using an existing formalism whose execution costs are lightweight in comparison to the original program.
With dependent types we can encode such abstract interpretations at the type-level to both model and reason on software execution.</description></item><item><title>Alumni</title><link>https://tyde.systems/page/people-alumni/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/people-alumni/</guid><description>Please find here the people I have had the pleasure of working with.
University of Glasgow (2018 &amp;ndash; 2023) Masters Student Level Project Year Selim Hadjadj-Aoul MSci (S/Eng) A Unified Interactive Environment for UML Models 22/23 Jiayuan LI MSc An Ontological Approach to the Analysis of Human Factors in the Security of Air Traffic Control Systems. 21 Botao Chang MSc Investigating how to use Attribute-Based Encryption to secure Data in the Cloud.</description></item><item><title>An Effectful Logger: Part One</title><link>https://tyde.systems/post/2015-08-27-effectful-logging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/post/2015-08-27-effectful-logging/</guid><description>Effects is an Idris package that implements resource-dependent algebraic effects. This allows a developer to control at a fine-a-grained level the side affects (state, logging, IO) for effectful programs. A tutorial and more background on their use is available on line.
In the past I wrote some Logging effects as a means to understand how resource-dependent algebraic effects work. Recently, I had need to use it in anger in my application.</description></item><item><title>CS886 Advanced Security-by-Design</title><link>https://tyde.systems/page/teaching/cs886/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/teaching/cs886/</guid><description>At the University of Strathclyde the MSc in Cyber Security is divided into three themes that each explore a different area of cyber security: Human Factors, Security-by-Design, and Systems Security.
CS886 Advanced Security-by-Design forms the second part of the Security-by-Design theme, which explores more technical elements of cyber security together with a look at the formal modelling and analysis of these technical elements.
This page provides a public description of the course and its syllabus.</description></item><item><title>Current Team</title><link>https://tyde.systems/page/people-current/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/people-current/</guid><description>As I build my TyDe Team, I will list them here until I have a better team website&amp;hellip;</description></item><item><title>Papers</title><link>https://tyde.systems/page/papers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/papers/</guid><description>See my DBLP page</description></item><item><title>Service</title><link>https://tyde.systems/page/service/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/service/</guid><description>Programme Committees I have served as a committee member on the following committees:
20th Asian Symposium on Programming Languages and Systems APLAS 2022 33rd Symposium on Implementation and Application of Functional Languages IFL21 9th Workshop on Mathematically Structured Functional Programming, MSFP 2022 Artefact Reviewing For the following artefact evaluation committees:
I have co-chaired the:
20th Asian Symposium on Programming Languages and Systems APLAS AEC 2022. I have served as committee member on:</description></item><item><title>Studying with me</title><link>https://tyde.systems/page/studying/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/studying/</guid><description>I am always happy to consider motivated students who are interested in working with me in concert with my research interests: Application of programming language theory and technology to address issues affecting Cybersecurity.
Final Year &amp;amp; MSc Student Projects I am primarily interested in projects that generally align with my research interests, but I am also happy to consider projects relating to dependently-typed functional programming, and education in Cybersecurity &amp;amp; programming language theory.</description></item><item><title>Talks</title><link>https://tyde.systems/page/talks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/talks/</guid><description>Removed because hugo-cite is not more&amp;hellip;</description></item><item><title>Teaching</title><link>https://tyde.systems/page/teaching/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/teaching/</guid><description>Details of duties performed during my tenure as an academic. Module descriptions are available from the respective University&amp;rsquo;s course catalogues.
University of Strathclyde I teach on topics relating to functional programming, formal verification, and Cyber Security. Specifically, I teach on the following Masters level modules:
CS813: Advanced Information Security CS886: Advanced Security-by-Design I also supervise undergraduate and masters projects. Specifically, I supervise students taking:
CS408 Individual Project (BSc (Hons) Final Year Dissertation) CS958 Individual Project (MSc Dissertation Project) CS811 Dissertation (MSc GA Cyber Dissertation Project) University of Glasgow At Glasgow I am involved with a variety of teaching duties at Level 4, MSci, and Masters Level.</description></item><item><title>Theses</title><link>https://tyde.systems/page/theses/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/theses/</guid><description>See my DBLP page</description></item><item><title>Towards Type-Driven Assurance of Communicating Systems</title><link>https://tyde.systems/page/position/2025-jarss/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/position/2025-jarss/</guid><description>Deadline Thursday 20 March 2025 Duration 36 Months Start Date October 2025 Funding Home fee, Stipend Supervisors Jan de Muijnck-Hughes, Bob Atkey Groups StrathCyber, MSP This JARSS PhD studentship will develop new methods for asserting the resilience of existing communicating systems by developing new static analysis methods derived from advanced programming language research as pioneered by the supervising team, and the wider MSP and StrathCyber research groups.
Please go here to apply:</description></item><item><title>TyDe Systems are Trusthworthy Systems!</title><link>https://tyde.systems/page/research/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/research/</guid><description>Interests Generally speaking my research interests involve making Systems Engineering more TyDe: Type-Driven. I want to combine state-of-the-art programming language theory, namely from type-systems, dependent types &amp;amp; functional programming, and fundamentally change the way we engineer systems by interlinking our System&amp;rsquo;s specifications and implementations. I believe that if we are to ever build trustworthy systems, we must make machine checkable specifications an intrinsic aspect of the system through adoption of type-driven approaches.</description></item><item><title>Working with me</title><link>https://tyde.systems/page/working/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyde.systems/page/working/</guid><description>Currently, I have no funded positions available for research associates and assistants.
When I do have project related positions available, they will be advertised through the normal channels: social media; and on jobs.ac.uk
Another approach is to jointly apply for funding for a bespoke position. Example, funding sources are: Marie Curie Actions; Royal Academy of Engineering; and Royal Commission 1851. If you are interested then please do contact me so that we can chat about it before you submit your application.</description></item></channel></rss>