My code

A castle on top of a wooded hill with green fields around
Beeston Castle, which I passed on my commute

My employ­ment

Information Catalyst was my most recent employer — a small-ish software company in Cheshire. We did a range of activities, mainly towards European Commission R&D initiatives.

I collaborated on a system for managing factory processes, for which I used front-end web technologies, TypeScript, and some PostgreSql, Java, and MySql. The TypeScript I wrote is for four OpenAPI-compliant collections of web endpoints using Nest.js, and for a front-end (my first Angular project) that calls two of those APIs. It’s been an exciting challenge!

I also developed a Windows Forms program that uses C# and the MS Office Interop API to process Word documents. This helped keep my company’s reports looking professional, I found the work enjoyable, and I’ve learnt a lot through it!

In my first 21 months at Information Catalyst, I completed a Level 4 Software Developer apprenticeship.

Do you have a role I could fill? You can contact me on LinkedIn!

View of a coastline with rock stacks and cliffs
Duncansby Stacks in Scotland — DuncanRitchie​.co.uk’s tech stack is HTML, CSS, JavaScript.

Develop­ing this website

DuncanRitchie.co.uk is a handcoded static site written in vanilla HTML, CSS, and JavaScript.

To keep the site lightweight, I’m serving only one font, serving compressed images in newer formats such as WebP (with fallbacks for older browsers), and not using client-side–rendering libraries such as React.js.

To make the site more fun and distinctive, it has two different layouts that can be switched between, if your screen is wide enough and your browser supports intersection observers (and if you’re not on this current page). Both layouts have the picture for each section on the left-hand side, but on one layout the picture has a diagonal edge that the text stays aligned with by shifting to the left or right as you scroll.

I have kept it accessible to users of assistive technologies by using semantic HTML, by giving the text a decent font size and contrast, and by ensuring the site can be navigated by keyboard, among other practices.

There are still improvements I want to make to this site, but so far I think it’s looking pretty good. I’ve learnt a lot in developing it.

For all the code, and a readme file giving more detail, see GitHub.

Fulmar landing on a cliff
I designed the visuals of velut around the photo of a fulmar I use for my logo.

velut — a Latin rhyming diction­ary

If you know Latin and you’re interested in writing rhyming poetry or lyrics in that language (and who isn’t???), you might just be interested in a website I started in the summer of 2019.

Go to velut.co.uk, type in a Latin word, click “Search!”, and you’ll be returned rhymes (or other word lists), information about the lemmata that the word is a form of, and links to other online dictionaries. There are other features, too, such as an “Advanced” search that returns words that match a given sequence of letters or syllable lengths.

I started collecting the data during my time at uni, where I was studying Latin. It began as an Excel file to store Latin words and return detailed information on them, including definitions, cognates, anagrams, and rhymes. The formulae got very complex.

After I learnt to code with web languages, I made a website for it. It became my first project integrating with any sort of database (I chose MongoDB). The front-end uses React.js, now within the Next.js framework. Details can be found on velut’s about page and velut’s “readme” file, and the code for the velut website is on GitHub.

I continued to use Excel for managing velut and storing all the data, which I frequently imported to the database for the website. But I’m gradually weaning myself off my Excel file, by creating webpages and scripts that replicate its functionality. (And the data are now in Json files.) It’s a very ambitious undertaking, due to both the number of Latin words I’ve collected and the breadth of velut’s capabilities.

Screenshot of my Latin website

Ancillary projects for velut

These are scripts, webpages, and a pair of Windows keyboard layouts that I made to help me maintain my Latin dictionary. The GitHub logo links to the source code.

Since creating the Inflector, I’ve been checking all the forms that it produces, and I’ve been making them appear on the velut website. After I’ve finished doing this, I will write a script for feeding the forms into the Word Data Generator. That will enable the site to make full use of the words.

Screenshot of my Word Data Generator

Inflector

generates inflected forms from lemma objects
Screenshot of my Word Data Generator

Word data generator

from a list of words with their lemmata, generates other data used in velut
Screenshot of my mirror of Latinitas Recens, showing a search for “computer”

Mirror of a Neo-Latin lexicon

made with Next.js, TypeScript, and archived data
Vowels with macron, vowels with breve, and quotation marks

Keyboard layouts

not really code: made with Microsoft Keyboard Layout Creator
(no live demo, but you can download setup.exe files from GitHub)
Screenshot of my page linking to online dictionaries
dynamically creates an <a> element that opens a different page on each click
Screenshot of my Json generator

Json generator

for tab-delimited data
A room with desks and computers
The class-room I studied in at Code Nation

How I got into coding

I have always been interested in getting computers to do neat stuff.

I taught myself a lot of advanced MS Excel functionality, in the development of sophisticated personal projects, including a Latin rhyming dictionary which I mentioned above.

My formal education in the field began in January 2019, when I enrolled at Code Nation — a twelve-week bootcamp where I learnt HTML, CSS, and JavaScript, including React.js, Node.js, and Express.js. For instance, I designed and built this site, though it looked a lot different then. The group work we did was a nice taster of being part of a team.

Some of my projects are linked below. I am particularly pleased with my chess game, and my contributions to group projects.

After graduating from Code Nation, I developed my Latin Excel file into a proper website, and started with Information Catalyst on an apprenticeship. This entailed another twelve weeks at Code Nation, from August to October 2019, learning Java and MySql.

In my spare time, I do more coding. Occasionally I make my own little C# apps, but I keep embellishing this website and my Latin website.

C# projects

The GitHub logo links to the source code.

Screenshot of my app to format a WhatsApp conversation

App to format a WhatsApp conversation as a Word document

(no live demo because it’s a console-app, but you can download the .exe file from GitHub)
Screenshot of my app to transfer photos from a memory-card

App to transfer photos from a memory-card

(no live demo because it’s a console-app, but you can download the .exe file from GitHub)
Screenshot of my C# calculator

Calculator

made with Windows Forms
(no live demo, but you can download the .exe file from GitHub)

Java projects

The GitHub logo links to the source code.

Screenshot of my weather app

Weather app

made with Spring Boot and the Mapbox and Dark Sky APIs
(no live demo; it was on Heroku but they cancelled their free hosting)
Screenshot of my Java snake game

Snake

made with Swing
(no live demo, but you can download the .jar file from GitHub)
Screenshot of my Java cyber-pet

Cyber-pet

(no live demo because it’s command-line-only)

My first web projects

The GitHub logo links to the source code.

Screenshot of my JavaScript snake game

Snake

made with vanilla JS
Screenshot of my quiz

Quiz

made with vanilla JS
Screenshot of my countdown timer

Countdown timer

made with vanilla JS
Screenshot of my Theatre in the Quarter œuvre

Theatre in the Quarter œuvre

made with React.js and Json data generated by an Excel file that lists my voluntary work for this drama company
Screenshot of my chat-room front-end

Chat-room front-end mock-up

made with React.js with four other devs
Screenshot of my chess game

Chess

made with vanilla JS
Screenshot of my JavaScript cyber-pet

Cyber-pet

made with vanilla JS