James Tattersall

Aspiring Software Engineer



About Me

I am a University of Warwick Computer Science alumni, with a keen interest in developing a variety of different applications, particularly web applications. I enjoy using technology in general, and I pursue this in my spare time through personal projects and hobbies.

I have experience in a variety of languages and technologies. I enjoy learning new technologies and I am usually able to become proficient in almost any language or framework quickly. I particularly enjoy working with modern web frameworks such as ASP.NET Core and React in Linux environments using containers.


Skills & Experience

I am always keen to learn new technologies and skills, see the lists below for some of my existing skills and how confident I am with them. Click a skill to read more about my experience.

Languages

  • C#

    C# is my current general-purpose language of choice. I enjoy building both web and native applications using it due to the huge feature set and uncompromising design. As a Linux user, I particularly like using C# with .NET Core thanks to the cross-platform support.

    I used C# for AutoTag, JobHunt and OpenLD.

  • HTML & CSS

    I am fluent in HTML and CSS, and feel very confident working with them. I pride myself in building pages accurately to concepts and implementing best practices to ensure good UX and accessibility.

    I used HTML & CSS for Bill Ninja and jtattersall.net.

  • JavaScript & TypeScript

    I enjoy writing modern JavaScript (or preferably TypeScript) for modern frameworks such as React. I prefer to use TypeScript as types allow the code to be more self-documenting, and the compile-time type checking helps to reduce bugs.

    I used JavaScript & TypeScript for Bill Ninja and OpenLD.

  • SQL

    I am able to write and understand complex SQL queries, and I have worked with all the major databases, including PostgreSQL, MySQL, SQL Server and SQLite. I particularly enjoy writing SQL queries to optimise for speed and efficiency

    I used SQL for Bill Ninja, JobHunt and OpenLD.

  • Java

    I have experience using Java in a variety of applications, including simple web and Android apps.

    I used Java for NightLightDarkroom and Robot Maze.

  • PHP

    I have experience writing web applications using PHP, both with and without frameworks. Although the language is not my favourite by design I appreciate how fast it is to create web applications, and newer language versions are improving it.

    I used PHP for Bill Ninja.

  • Python

    I have experience using Python to write simple applications, including web apps using Django. I mainly use Python for writing simple scripts/utilities for tasks such as web scraping and automation.

  • C

    I have used C to create non-trivial programs as part of university modules. I have experience implementing techniques such as multithreading using POSIX threads, and vectorisation using AVX.

    I used C for Intrusion Detection System and Scientific Code Optimisation.

  • C++

    I have some experience writing in C++ from university coursework. I enjoy the potential speed and extra features over C, but I found it quite difficult to learn due to the many nuances and rabbit hole of features and best practices.

    I used C++ for Mini-C Compiler.

Technologies

  • ASP.NET Core

    ASP.NET Core is my current back-end web framework of choice. I have built several applications using it, including my final year project. I particularly like the modern design using Dependency Injection, plethora of features and cross-platform support.

    I used ASP.NET Core for JobHunt and OpenLD.

  • Entity Framework

    Entity Framework is my preferred method for interacting with databases from C#. I have used Entity Framework Core in several applications, and the older Entity Framework 6 in my day job. I like how queries can be written entirely in C#, and the powerful features available, though at the expense of some performance.

    I used Entity Framework for JobHunt and OpenLD.

  • React

    React is my current front-end framework of choice. I have used it to build several applications, most notably the front-end for my final year project. I like how it reduces the amount of boilerplate code significantly, and avoids tedious and error-prone manual DOM manipulation.

    I used React for JobHunt, ODataGrid and OpenLD.

  • Vue

    I have some experience using Vue in my day job, where I have used to implement complex interactive features in web apps. I like it for the same reasons as React - reduced boilerplate and avoiding DOM manipulation. I particularly like the input binding features, which are very useful for further eliminating boilerplate in simple forms.

Other

  • Git

    Git is my version control system of choice. I have used Git for almost every project since first learning about it in my first year at university. I like the speed, reliability and complete flexibility, especially compared to competing solutions such as Microsoft TFVC, which I find to be very slow and unreliable.

  • Linux

    Linux is my daily operating system for my personal devices, so I also prefer to work with it on projects. I like the speed, customisability, stability, and far superior command line environment compared to Windows.

    Since I use it every day on my personal machine and file server I am experienced in administering Linux servers.

  • Agile Development

    I worked with a team that wholly embraced Agile and Lean principles during my internship in summer 2019. This showed me how well it can work, and how it supports developers in their work by creating a more stable work environment.

  • Docker

    I have used Docker on a few projects involving web apps. I find it to be extremely useful for both deployment and development as the containers allow dependencies to be built-in and preconfigured, avoiding the need for manually configuring dependencies wherever a project needs to be run. I would like to gain more experience using Docker for larger projects, and utilising it in Continuous Integration.

    I used Docker for JobHunt and OpenLD.

  • Azure

    I have used Azure in my day job, where it is used for hosting. I have experience with basic networking and virtual machine management in Azure, and experience with other areas such as Azure Maps, Logic Apps and Active Directory.


Projects

This is a selection of my biggest and most recent projects. Click a project to read more.

You can find more of my older and smaller projects in the archive.