About

My name is Phillip Smith. I am a student at the University of Newcastle, undertaking the double degree bachelor’s program in mathematics and computer science. I have extensive experience in C# .NET Framework and .NET Core, having spent a large amount of time working in WPF. I also have experience in Python, having done work for the University of Newcastle as an assistant researcher for Dr Judy-Anne Osborn.

Outside of software engineering, I have mathematics skills, which will only continue to grow alongside my ongoing interest and enthusiasm and completing degree.

\[\begin{align*} &\forall L \subseteq \Sigma^\ast, \;\text{$L$ is context free} \implies \\ &\exists p \geq 1,\; \forall s \in L,\; \left\lvert s\right\rvert \geq p \implies \\ &\exists u, v, w, x, y \in \Sigma^\ast,\; s = uvwxy \land \left\lvert vx\right\rvert \geq 1 \land \left\lvert vwx\right\rvert \leq p \land \left( \forall n\geq 0, uv^n wx^n y\in L \right) \end{align*}\]

Software Engineering

I have been working in Python and C# since 2014, developing my skills to understand various design patterns, principles, and frameworks. Using C#, I have mostly worked within WPF, using MVVM to implement modular and extendible applications in design. In the Python environment, I have worked on applications for:
  • Mathematics visualisations involving relationship mapping of higher degree matrices,
  • Problems involving coprimality between integer pairs in n-dimensional spaces, and
  • Built a few tools for online communities as a proof-of-concept optimisation tools that assists in optimising movement speed within a particular video-game context, given some specific constraints.
GZIP visualisation of "Alice in Wonderland". The first image is the raw data, and the second the compressed. Red sections are sections of denser 1-values in the binary data, with black being denser sections of 0-values.

Mathematics

Since graduating high school in 2014, mathematics has long since been a hobby of mine. Now, I study doing a mathematics combined degree and continue to build my skill set within mathematics. After completing my first year of university, I was offered a position as a research assistant (RA) for Dr Judy-Anne Osborn, studying and creating visualisations of a particular mathematical configuration of matrix relations in 3-dimensions.

Looking ahead, I have much interest in machine learning, having begun self-study of the theory and mathematics involved.

$\LaTeX$

I love $\LaTeX$. It’s a lot of fun building up a document in a way that feels a lot like coding. Although it is stressful, using PGF/Tikz is always an… experience. After using it throughout university (including on assignments I could have used anything else), I default to $\LaTeX$.

A fun coding example

Have you ever need to validate a console-command dice role? Need to roll two 20-sided dice with a -3 modifier? That will be a simple “2d20-3” command! I have worked on this subject in an app, and this is a lovely section of validation code:
/// <summary>
///   Class which validates dice syntax
/// </summary>
public static class DiceRollValidator
{
  private static readonly Lazy<Regex> DiceFormatRegex = new Lazy<Regex>(() =>
    new Regex(@"^(?<DiceCount>\d+)d(?<SideCount>\d+)(?<ModGroup>(?<ModSign>[+-])(?<ModValue>\d+))?$",
      RegexOptions.IgnoreCase));

  public static bool ValidateDiceRule(this string diceFormat)
  {
    if (diceFormat is null)
    {
      throw new ArgumentNullException(nameof(diceFormat));
    }

    return DiceFormatRegex.Value.IsMatch(diceFormat.RemoveWhitespace());
  }

  public static IDictionary<string, string> ProcessDice(this string diceFormat)
  {
    if (diceFormat is null)
    {
      throw new ArgumentNullException(nameof(diceFormat));
    }

    var match = DiceFormatRegex.Value.Match(diceFormat.RemoveWhitespace());
 
    return match.Groups
      .Cast<Group>()
      .Where(x => x.Value.Any())
      .ToDictionary(m => m.Name, m => m.Value);
  }
}