software engineering @ qub
intern @ libertyit
events team @ queens' computing society
f1 fan
jamesmcfarland
README.md
James McFarland
I've loved building since I was young, starting off with the Lego Duplo sets, moving up through the fancier Technic ones, to today, where I build whatever I want.
I've been coding since I was 13 (it's not the flex I think it is, I know...), starting out attempting to make the greatest, fastest, highest performance browser the world had seen. It was called CodingTurtle Browser, was based on Internet Explorer 11 and used Windows Forms.
It sucked. badly.
I've came a long way, from building browsers to building experiences that run in them. I've built a lot of projects with NextJS & React (you'll find links to a few of them below, check them out!). My focus in engineering is solving the issue, and solving it well.
Ethos
I build with the Nike-like ethos of just build it. This means a few things which stay common amongst my work:
-
Rapid Iteration, and I mean rapid. Write it, test it, send it. Move fast. I'd take 30 small deploys over 3 large ones.
-
Outsource, re-use and rarely re-write. When building, I ask myself, "has this been built already?" Yes? Use it. No? Find the closet thing, re-use it. Yes but it's too slow/big/ugly? Re-write.
-
Make it ✨pretty✨ This one might seem a bit contray to the first point of Rapid Iteration, but no matter what I am working on I want it to look good to it's end users. User Experience matters, regardless.
These points are what I work off right now, but I always find myself changing and moving as I get exposure to new technologies, methodologies and other -ologies. I feel they are a strong platform to build on.
Experience
The fun professional bit
Tech
-
Modern web development Most of my personal work/projects are built on some combination of NextJS, TailwindCSS, Prisma ORM and, more recently, TRPC. I've had a few years of NextJS behind me, however only began using the other tech in early 2023. I find this stack incredibly productive. This very site is built on NextJS 14 and Tailwind
-
Serverless Architecture The majority of my work on placement is focused around building a highly scalable backend API for Liberty Mutual's Car Insurance lines. This API supports thousands of hits per day, and orchestrates a number of downstream services in order to provide a fast, robust and cost-effective experience for consumers. To do this, I've worked with numerous AWS offerings, namely Lambdas, Step Functions and CloudFormation Templates, alongside tools like GraphQL, Redis, and Splunk
-
Desktop Development In University, and in secondary school, most of my time was spent developing desktop applications. I've built with both Java and C# extensively, utilisng JavaFX and XAML/WinUI respectively to build out the supporting GUIs for these apps.
Soft Experience
-
Queen's Computing Society (QCS) I joined QCS' committee in November 2021, since then I have immersed myself in the society and the team, leading on projects such as our Minecraft Server, which helped bring student together during our University lockdown, and our hugely successful annual EEECS Formal, from which we raised £5400 in 2022 for Pure Mental NI, and a massive £7215 for Air Ambualnce NI. I also sat on the Executive Committee for the 2022/23 academic year as secretary, having a key role in day-to-day operations of the 400-member strong society, and helping bring our amazing team together to deliver for students! A large part of my work in the past 2 years has revolved around our technical systems, working on member management tooling, game authorisation systems and our internal security standing.
-
Volunteering I have also helped at a number of events, both in planning stages and on the day, such as ElevateNI 2023, a student-led conference, supported by QCS, and NIDC 2023, the "Event of the Year" for Northern Ireland's tech community
That's enough for the README. Let's see some code.
James.
Projects
QCS Bot & Integration
A bot which our members can interact allowing them to verify their membership. For the Minecraft server, we needed a way to whitelist members based on data they provided at signup.
Built with Discord.js and bash scripts, deployed to a QUB-controlled hypervisor alongside our Minecraft instance.