2018 Achievements

Posted on 13th January 2019 - Takes 7 minutes to read

Now that 2018 has come to a close, here's my post of the most important things I've achieved this past year.


First off, 2018 has been my first full year of being a dad.

It's been tough, but very rewarding. I've been describing parenting so far as a great way of differentiating between complexity and difficulty. At this age, the list of needs is still pretty low, thus not very complex. However, fulfilling those needs while getting on with life's other demands can be pretty difficult sometimes!

However, I really feel like I've gone from zero experience to really getting to grips with being a parent. No doubt there'll be many curve-balls to come!

It was also my daughter's 1st birthday this year. She loved it. Thankfully, she actually played with the toys we bought her and didn't just try to eat the boxes. She's a genius.


In the first quarter of 2018, I was unexpectedly made redundant.

Shortly after, I joined Langley Foxall as a Senior Software Developer. Langley Foxall makes enterprise software solutions using a combination of web, desktop, and mobile technologies.

This has been an interesting move for me personally. I've moved from an environment that primarily focused on public facing web applications, to a team that exclusively develops enterprise solutions, utilising a number of technologies. I'm enjoying working with a very passionate and skilled group of individuals.


I've broadened my technical skill set quite a bit in 2018.

Most of my new knowledge has been set firmly in the JavaScript realm. This has included learning the React frontend framework, which has been instrumental in a lot of my recent professional developments. I have also learnt React Native, a hybrid mobile app development framework, which allows you to create native mobile applications for Android and iOS using JavaScript.

I have also been improving my general skills in web and backend PHP development. This has been focused on bettering my knowledge of more recent PHP features, along with the newer features of various frameworks, primarily Laravel 5.6 and 5.7.

On a side note, my personal site (jordanhall.co.uk) has been completely recoded. In its previous iteration, it was a static site powered by Jekyll and hosted on GitHub pages. The new version is a fully bespoke Laravel application, hosted on a dedicated VPS. Various sections have been improved, including the posts/articles section and the listing of open source projects. The open source page now shows download totals for all supported packages and updated automatically several times a day.

Open Source

One of my passions is creating and contributing to open source software. Even though I'm having to be more clever with my free time, I've still managed to kick out a number of new open source packages.

  • array_undot - The opposite of the array_dot helper method provided by Laravel
  • artisan-menu - A text based GUI for using Laravel's Artisan commands
  • baby-tracker-data-parser - A PHP parser for data exported from the Android Baby Tracker app
  • dates-timezone-conversion-trait - Laravel Eloquent model trait that automatically converts
  • DO-File-Cache - A simply file caching library, with some unique features such as load-based serving of stale caches
  • DO-File-Cache-PSR-6 - An adapter for DO-File-Cache that makes it compliant with the PSR-6 standard
  • email-structure-parser - Parses multipart emails, including their HTML, plain text and attachments, into a simply array structure
  • is_offensive - Helper function to determine if a string contains offensive words or variations of them, with customisable word lists
  • js-github-repos - JavaScript library to read data about repositories from the GitHub APIs
  • json-key-value-store - Simple key-value store, that uses a compressed JSON file
  • laravel-offensive-validation-rule - Laravel validation rule that determines if a string contains offensive words or variations of them
  • laravel-password-exposed-validation-rule - Laravel validation rule that checks if a password has been exposed in a data breach
  • object_to_array - Simple helper function that deep converts an PHP object to an array
  • password_exposed - Helper function that checks if a password has been exposed in a data breach
  • php-bucket-testing - A library that allows to weighted random selection of a A/B testing bucket and optionally performs redirection
  • php-camel-caser - Package that alias all built-in PHP functions, and allows you to use them in camel case, rather than snake case
  • php-cli-progress-bar - Provides a CLI progress bar, with automatic estimated time to completion calculation
  • php-countries - Sources country data, makes it easily searchable, and formats it into simple PHP objects
  • php-distance - A library that provides many distance formula calculations, in many dimensions
  • php-dot-net-ticks - Helps convert .NET ticks, a form of precise time measurement used by the .NET DateTime object, into standard datetime formats
  • php-github-status-api - PHP library to parse data about GitHub's current operational status
  • php-hcl-parser - PHP parser for the Hashicorp Configuration Language, as used by Terraform and other Hashicorp software
  • php-languages - Small package to convert between languages names, and various language ISO formats
  • php-reading-time - A library which will determine the average reading time required for a string, with customisable words per minute
  • php-word-info - Library to look up details on a word, such as rhymes, half-rhymes, number of syllables, offensive status, portmanteaus and plural/singular version
  • uxdm - A highly customisalble package designed to help transfer and convert data from one source format/system to another, useful for imports and exports of data from/to various systems
  • web-article-formatter - A package that can retrieve an article from a web page and convert it into various text formats, such as plain text, markdown or PDF

At Langley Foxall, we have recently initiated an open source initiative. As part of this, I have been involved in the creation of several new re-usable packages. Here's a selection of the best.

  • eloquent-report-generator - Laravel libary that can generate reports from Eloquent models
  • laravel-nist-password-rules - Provides Laravel validation rules that compyl with password recommendations found in NIST Special Publication 800-63B section 5
  • math_eval - Library that provides a math_eval helper function that safely evaluates mathematical expressions
  • php-simple-google-maps - PHP client for the Google Maps API with a focus on an easy-to-use syntax
  • react-dynamic-data-table - A React component that provides a data table with support for sortable columns, pagination, field mapping, and more
  • react-dynamic-data-table-laravel-api - A PHP library that provides a Laravel API responder for the react-dynamic-data-table package
  • xero-laravel - A wrapper that provides access to the Xero accounting system via a Laravel Eloquent-like syntax

If you want to read more about any of my open source packages, take a look at the open source software page. This page also sums up my final 2018 achievement, a total of over 300,000 open source package downloads!

open source web 2018 achievements parenting career React React Native Expo family