About

This siteπŸ”—

Begun as a thrown-together free WordPress blog in 2011 to have somewhere to post my experiences in travelling to Finland. It's now a catch-all personal site for me.

More generally speaking, the site is also my own reaction to the growing trend of massive, bloated websites, which is something I am not alone in being annoyed by. Architecturally, this website would be right at home in the 90s–it is little more than a collection of static HTML pages. You'll find no NPM packages, Webpack shenanigans, or user tracking silliness here. The only exception to that is the comment system, which is a stitched-together abomination of a single JavaScript file, a handful of serverless functions, and a cloud-hosted NoSQL database.

MeπŸ”—

I'm Neil McAlister, a software developer living in Helsinki, Finland. Born and raised in California, I moved to Finland in 2015, and have been here ever since. I program stuff for fun and, if the title of this blog didn't make it abundantly clear, enjoy travelling.

You can also find me on GitHub as PingZing or Twitter as @pingzingy.

Want to hire me?πŸ”—

Click or tap here to check out my resumΓ©!

About Me

(but professionally, this time)

I'm a skilled software developer with over 10 years of experience in both consulting and product development contexts. I strive to deliver quality work, and care about the craft of software development.

I excel with a variety of backend technologies, and have lots of experience with concurrent, highly scalable and available services. I'm experienced with agile methodologies, and DevOps workflows. I also have a great deal of experience with Windows GUI development, particularly with WPF and UWP/WinUI.

Outside work, I enjoy hacking on personal projects, reading, weird indie video games, and writing fiction. I'm comfortable with public speaking, and love travelling (at least when there's not a pandemic about).

Technologies I'm Familiar With


LanguagesπŸ”—

C#
TypeScript
Rust
Python
Java
Lua

GUI / FrontendπŸ”—

UWP/WinUI
WPF
Xamarin / .NET MAUI
Angular

RuntimesπŸ”—

.NET Framework/.NET Core
ASP.NET Core
NodeJS
ExpressJS
NestJS

Cloud & ContainersπŸ”—

Azure
AWS
Docker

DatabaseπŸ”—

MS SQL Server
Azure CosmosDB
MySQL
MongoDB
Entity Framework Core
AWS DynamoDB

DevOps / CI & CDπŸ”—

Azure DevOps
Jenkins
GitHub Actions
Azure ARM templates
AWS CloudFormation

Work Experience


F-Secure / WithSecure OyjπŸ”—

Helsinki, Finland
Senior Software Developer
May 2021 - July 2023

At F-Secure (now renamed to WithSecure), I was a Senior Software Developer. In this role I was part of a team responsible for the development of a cloud-native product that performed real-time scanning and protection of services such as Microsoft Exchange and OneDrive.

In this position I:

  • Worked extensively with C#, .NET Core/.NET 5+, TypeScript, NodeJS, AWS and MySQL
  • Drove from concept to completion a project where customers were moved from a single-tenant architecture to a multi-tenant architecture, saving approximately 50% in annual hosting costs
  • Performed a major overhaul of an internal subscription system, requiring significant code changes in all of the team's subprojects
  • Regularly on-boarded and mentored new team members
  • Assisted our manager with recruitment by reviewing technical 'homework', and participating in technical interviews

Next Games OyjπŸ”—

Helsinki, Finland
Senior Server Software Engineer
Jan 2020 - April 2021

In my role as a Senior Server Software Engineer at Next Games, I worked as a part of a team responsible for the development and maintenance of the platform that powered the games' online functionality. The platform served multiple games, and thousands of concurrent players.

In this position, I:

  • Worked extensively with C#, .NET Core, Service Fabric and Azure
  • Helped migrate the system from a multi-repo .NET Core 2 setup, to a monorepo and .NET Core 3
  • Extensively reworked the platform's CI system as part of the migration
  • Collaborated with various game teams to address their needs
  • Was part of the regular on-call rota for platform support

Futurice OyπŸ”—

Helsinki, Finland
Software Developer
Apr 2015 - Jan 2020

At Futurice, I was a consultant, and worked on a wide variety of teams and projects. The scope of those projects ranged from small, solo affairs to large teams with userbases in the tens-of-thousands.

Some of my accomplishments there include:

  • Development and maintenance of a large ASP.NET Core backend that served several hundred thousand requests per day
  • Development of Windows Phone applications for large telecoms
  • Development of multiple cross-platform applications using Xamarin Forms and Unity 3D
  • UWP development for apps with user bases in the 10,000 range
  • Frequent, close collaboration with clients and stakeholders
  • Technical blogging and public speaking

AvadineπŸ”—

Bakersfield, CA, USA
Software Engineer
Jun 2013 - Apr 2015

At Avadine, I worked in close collaboration with clients and stakeholders at various levels.

In this role, I:

  • Rewrote a WPF application with frequent stakeholder input
  • Introduced version control to semi-technical clients' workflow
  • Modernized an ASP.NET Web Forms application

Zindagi GamesπŸ”—

Camarillo, CA, USA
Quality Assurance
May 2012 - May 2013

At Zindagi, I was a games tester for console and mobile games.

Responsibilities included:

  • Manual testing of the games
  • Communicating issues to developers and producers
  • Managing the issues backlog

Education & CertificationsπŸ”—


B.Sc. Computer ScienceπŸ”—

California State University Channel Islands
2008-2013

Microsoft Certified Azure Developer AssociateπŸ”—

Obtained June 30, 2020
Valid through June 30, 2024

Projects


Trippit

Creator
https://github.com/pingzing/trippit/

Trippit is a journey planner for the greater Helsinki metro area. It hooks into city-provided APIs, and is written as a UWP app. I attempted to follow best practices in MVVM architecture and overall design.

It was originally meant to be a phone-first app with desktop capabilities, but then Windows 10 Mobile went the way of the dodo. It's probably my most complete application, though it never found much success due to the abrupt death of its target platform.

Solene

Creator
https://github.com/pingzing/solenecyoa

Solene is a text-based choose-your-own-adventure game. This was a project undertaken as a creative exercise, and an attempt to see if I could make a monorepo project using .NET from top to bottom. I'm happy to say that I was!

It's a full-stack .NET application. It uses Xamarin.Forms for the Android and UWP applications, Azure Functions as a serverless backend, and has a pure-UWP admin client. One big advantage of the shared stack was the ability to share data models, and even some business logic between all the components.

Scannit

Creator
https://github.com/pingzing/scannit-core

Scannit is a Rust-based library for reading NFC-based travel cards used by Helsinki Regional Transport in the greater Helsinki area.

It has a C-based FFI that any other language that can "speak C" is capable of interfacing with. It also has C# bindings in the form of ScannitSharp (https://github.com/pingzing/ScannitSharp), and an unfinished Android app implemented in Xamarin Forms in the form of Scannit (https://github.com/pingzing/Scannit).

Peep

Creator
https://github.com/pingzing/peep

A tiny WPF and Win32 application that registers a global hotkey which, when pressed, pops up a small chromeless window, which plays a cute animation of a bat pony squeaking at the user. Created entirely for fun, and because it was cute.