Recently, I've been working on a web application to manage recipes that my partner and I have collected. The application provides forms to enter the recipe metadata as well as the ingredients that comprise the recipe.

To ease the process of copying recipes into system, I started to investigate whether it would be possible to extract the details of a recipe from the website where it is listed. This post will detail the process involved in building the functionality to import recipes, including extracting the raw data and parsing into a useable format.

Extracting recipe content

In starting the process, I wished to discover if there was a common format that recipe sites adhere to. I quickly found that to help improve the ranking of a site... Continue Reading...

Post Info

Author Jed Simson
Date June 04, 2020
Filename 2020-06-04-Parsing ingredients from online recipe
Filesize 6694
Last Modified Thu, 04 Jun 2020
Post ID blog_post_1
Summary Details the project I've been working on to extract recipe ingredients from online articles
Tags parsing, parser combinators, recipes, ingredients, project, c#, .net
Title Parsing ingredients from online recipe articles
Words 906


During my undergraduate studies at the University of Waikato, I built a system for performing Linear Genetic Programming (LGP). The system was developed to offer an open-source implementation of LGP and was submitted as my Honours project.

LGP is a paradigm of genetic programming that employs a representation of linearly sequenced instructions in automatically generated programs. A population of imperative style programs are trained on a particular dataset and the best resulting program can be used as a predictor for the problem at hand.

The system performs well overall, but one issue that had always bugged me was that training was performed synchronously and would block until completion,... Continue Reading...

Post Info

Author Jed Simson
Date October 14, 2018
Filename 2018-10-14-LGP - Asynchronous
Filesize 10694
Last Modified Thu, 04 Jun 2020
Post ID blog_post_5
Summary Details about the implementation of asynchronous training in the LGP system using Kotlin coroutines
Tags lgp, kotlin, coroutines, asynchronous, training, async
Title LGP - Asynchronous Training using Kotlin Coroutines
Words 1424
October 15, 2016

In my second semester of 2016 I took a paper titled Operating Systems, which is a 300 level paper that deals with Operating Systems concepts and design. The majority of this paper focuses on the MINIX OS to provide examples of design decisions (e.g. microkernel vs. monolithic kernel) and as the system is reasonably small and manageable (relative to something like Linux) it allows for the code to be analysed and modified to learn more about it.

A core component of this paper is what is called the MINIX Project, where one must decide on some extension to add to the MINIX system and implement it as a way of demonstrate understanding of the system and to gain experience working on a large system like that of an OS. The project is worth 50% and spans across about 2 months or so.

For my project I chose to extend the existing MINIX File System to include journaling, ultimately turning it into a reliable, journaling file system. I learnt a lot while working on this project and consider it one of the most complex projects I have worked on while studying at university.

The source for my project can be found in a GitLab repository here, and contains:

  • Changes and additions to allow journaling within the existing file system
  • Some tools for verification that the extension is working correctly
  • A report detailing the implementation and some other components of the project.

The version of MINIX used is 3.1.0.

Post Info

Author Jed Simson
Date October 15, 2016
Filename 2016-12-06-MINIX Journaled File
Filesize 1808
Last Modified Thu, 04 Jun 2020
Post ID blog_post_3
Summary Thoughts about implementing Journaling for the MINIX File System
Tags file systems, journaling, minix, journal, jfs, project, university
Title MINIX Journaled File System
Words 270
July 27, 2016

Recently I decided to look further into the BitTorrent Protocol, as I have been fascinated by distributed systems (like peer-to-peer) and the communication protocols involved.

As I learnt more about how the protocol works, I thought it would be a good exercise to create a parser for the Bencode format — the format used to store and transfer metadata about a torrent file. My main goal was to create a simple program that is capable of constructing an internal representation of the Bencoded string and can output it in a nicer format (e.g. JSON).


Bencode is a relatively straight-forward encoding which has four different types:

Byte Strings

Encoded as... Continue Reading...

Post Info

Author Jed Simson
Date July 27, 2016
Filename 2016-07-27-Bencode Parsing in
Filesize 9271
Last Modified Thu, 04 Jun 2020
Post ID blog_post_2
Summary Thoughts about using Swift to create a Bencode parser.
Tags bencode, swift, parsing, personal, code
Title Bencode Parsing in Swift
Words 1099


5 of 5 ▾
July 14, 2016

This is my personal portfolio and blog site - my own little section of the Internet!

I probably won't post a whole lot, but I may occasionally post my thoughts on my studies, personal projects, or some music reviews.

For now, I will simply leave a few links to some songs I've been enjoying lately - enjoy!

Post Info

Author Jed Simson
Date July 14, 2016
Filesize 658
Last Modified Thu, 04 Jun 2020
Post ID blog_post_4
Summary The very first post for my blog!
Tags first post, personal
Title Welcome
Words 57