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.
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...
| Author | Jed Simson |
| Date | June 04, 2020 |
| Filename | 2020-06-04-Parsing ingredients from online recipe articles.md |
| Filesize | 6694 |
| Last Modified | Thu, 04 Jun 2020 |
| Post ID | blog_post_2 |
| 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...
| Author | Jed Simson |
| Date | October 14, 2018 |
| Filename | 2018-10-14-LGP - Asynchronous Training.md |
| 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 |
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:
The version of MINIX used is 3.1.0.
| Author | Jed Simson |
| Date | October 15, 2016 |
| Filename | 2016-12-06-MINIX Journaled File System.md |
| Filesize | 1808 |
| Last Modified | Thu, 04 Jun 2020 |
| Post ID | blog_post_4 |
| 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 |
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:
Encoded as... Continue Reading...
| Author | Jed Simson |
| Date | July 27, 2016 |
| Filename | 2016-07-27-Bencode Parsing in Swift.md |
| Filesize | 9271 |
| Last Modified | Thu, 04 Jun 2020 |
| Post ID | blog_post_3 |
| Summary | Thoughts about using Swift to create a Bencode parser. |
| Tags | bencode, swift, parsing, personal, code |
| Title | Bencode Parsing in Swift |
| Words | 1099 |
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!
| Author | Jed Simson |
| Date | July 14, 2016 |
| Filename | 2016-07-14-Welcome.md |
| Filesize | 658 |
| Last Modified | Thu, 04 Jun 2020 |
| Post ID | blog_post_1 |
| Summary | The very first post for my blog! |
| Tags | first post, personal |
| Title | Welcome |
| Words | 57 |