Welcome

I'm James Hansen, a software developer near Vancouver with over fifteen years of professional experience in data analytics, video processing, cloud platforms and database systems, most of it in security software. In my current role I work across a networked-security product line, from a C#/WPF desktop client and C recorder firmware to a Docker-based, multi-region cloud platform with a Python/Flask backend and an Angular/TypeScript frontend.

Projects

All projects →
“A dedicated, experienced software professional… friendly and kind to anyone in the group, which makes him a great team leader. I learned a lot from James. Definitely would want to work with him again.”
Sean L. Senior Software Developer, former colleague More on Work History →
Work History My employment history Skills Programming languages, frameworks and more. Community Volunteer work and civic tech in Langley About My background & story
Contact

Current Technical Skills

TypeScript

Typed JavaScript across large front-end and full-stack applications, keeping components, state, and API integration maintainable as a codebase grows.

Strong typing with interfaces and generics to catch errors at compile time and keep refactors safe.

Python

Data analysis, automation, and backend services using Pandas, NumPy, and Flask.

Strong data-structures and algorithms foundation: hash maps, sets, heaps (heapq), stacks, linked lists and 2D grids; two-pointer, sliding-window, greedy and hashing techniques.

Comfortable designing custom data structures from scratch (O(1) min-stack, randomized set, hash set with collision buckets) with attention to time/space complexity and edge cases.

Backend Systems, Docker & Cloud

Design and development of containerized microservice architectures with Docker and docker-compose, fronted by a reverse proxy, using Python web frameworks (Flask and Django) served under gunicorn.

Integration across service boundaries and async workflows: Redis caching, Celery background workers and scheduled jobs, and OpenSearch for search and log analytics, including hardening service-to-service permission checks and building REST APIs that span multiple services.

Real-time media infrastructure, including WebRTC video streaming with a RabbitMQ/STOMP signaling layer and TURN relays for NAT traversal.

Visual C# .NET

Commercial .NET applications and DLLs, spanning standalone WinForms and WPF desktop apps to .NET MVC web platforms.

Object-oriented design with classes, interfaces and inheritance; data querying and transformation with LINQ.

Database modelling and data access with Entity Framework; dependency injection with Microsoft Unity.

C & C++

Native C and C++ development, including camera-side firmware and daemons.

Video capture and computer-vision modules built with OpenCV.

PHP & Javascript

Commercial websites and web applications with PHP and Laravel: server-side application logic, routing, and database-backed features.

Front-end interactivity with JavaScript, jQuery, and Node.js.

Angular

Single-page applications in Angular and TypeScript, including data-heavy dashboards and charting and visualization UIs.

Component-based architecture with reactive data flows, API integration, and attention to performance in large views.

Relational Databases (MySQL & SQL Server)

Data modelling and schema design across MySQL and Microsoft SQL Server, hand-written SQL and T-SQL scripts, and ORM-based access with Entity Framework (.NET) and SQLAlchemy (Python).

Managed schema evolution in production through versioned Alembic migrations, and designed a database, caching layer, and API for an access-control system.

Built analytics queries over large metadata datasets, with attention to indexing and query performance.

AI & Automation

AI-Assisted Development

Daily use of Claude Code (on non-sensitive code) and other coding agents with Local/Cloud LLMs to speed delivery, with review and oversight, so I spend more time on architecture and less on boilerplate.

Local & Cloud LLMs

Self-hosted and cloud-hosted language models set up for private AI workflows, including the small model behind the "Ask AI" feature on this site.

AI Workflows & Agents

Automated document and transcript summaries with the Google Gemini API, including the Langley council meeting summaries, and voice agents wired to real systems.

Computer Vision (OpenCV)

Object and face detection video-processing modules built with OpenCV and detection models, including a privacy filter that blurs and erases detected people.

Analytical Skills

Data Analysis

Statistical methods, regression, survey design, and descriptive analytics.

Data Engineering & Visualization

Reproducible analysis pipelines, dashboard development, and geospatial analysis.

Program Evaluation

Theory of change, logic models, indicator development, and formative and summative evaluation.

Qualitative Research

Interview design, thematic analysis, and mixed-methods integration.

Public Finance & Microeconomics

Applied to municipal and policy contexts.

Technical & Analytical Writing

Policy briefs, evaluation reports, and stakeholder communication.

Legacy Skills

Borland/Codegear Delphi

Developed own project and limited commercial programs in Delphi.

GrafX Visual Objects

Maintained and ported functions from legacy commercial applications written in GrafX Visual Objects, which uses similar syntax to Delphi.

Scripting

Familiar with various scripting languages including BASH scripting on Linux, and LUA and PAWN game scripting languages.

Community & Giving Back

Langley Urbanist Society

Leading the annual Langley Jane's Walk, 2026 (Photo Credit: Jonny Ray)
Leading the annual Langley Jane's Walk, 2026 (Photo Credit: Jonny Ray)

Giving back to my community matters to me. Outside of work I co-founded and direct the Langley Urbanist Society, a registered British Columbia non-profit, where I build civic-technology tools that make public information open and accessible, the same open-knowledge spirit I value in software. I lead the technical side alongside the other directors: the website, email newsletters, automation scripts, and analytical tools.

I also lead the annual Jane's Walk in Langley, a free community walking tour exploring how our neighbourhoods work and how they could work better.

This runs alongside my engineering career rather than apart from it. The projects are a chance to keep practising my craft on real-world problems, particularly data analysis and visualization, in service of my own community.

Langley Urbanist Society Projects

Value per Acre

Value per Acre

A fiscal analysis tool that examines municipal land productivity and tax revenue patterns, mapping how much value each parcel of land generates per acre. Built for the Langley Urbanist Society to support evidence-based conversations about land use and municipal finance. Programmed in Python, it outputs an interactive HTML page that uses Leaflet and JavaScript; clicking any property reveals detailed information about it.
The live demo is the Township of Langley map, generated from the project's _GenerateLangleyMap.bat on GitHub and based on 2024 property data.
Built withPythonJavaScript

Council Meeting Summaries

Automated, plain-language summaries of Township and City of Langley council meetings, generated from the official agendas and minutes with the Google Gemini API so residents can follow local decisions without reading hundreds of pages. Published on the Langley Urbanist Society website and refreshed as new meetings are posted.
A Community Data Project

The Telraam Traffic Counter

Our Telraam counter, the first installed in British Columbia
Our Telraam counter, the first installed in British Columbia

One project I am especially fond of is a Telraam traffic counter: a small device that mounts inside a window and automatically counts the pedestrians, cyclists, cars, and larger vehicles passing by, publishing the totals as open data anyone can view.

It began with a simple question, whether removing the gates on a local trail would change how many people walked and cycled there. Counting by hand was not practical, so we ran a fundraiser, the community covered the cost within a day, and after some door-knocking a resident with a clear view offered to host it. It now runs from a weatherproof box beside the trail, the first Telraam installed in British Columbia, with live counts anyone can follow over time.

Public Policy

Jindal School of Government and Public Policy · April 2025 – April 2026

Master of Arts in Public Policy

I completed an MA in Public Policy online between April 2025 and April 2026, studying alongside full-time work at Fortinet. I took it because I was genuinely curious about how effective policies, both governmental and within companies, can be formulated, bridging the gap between my political interests in the community and my career.

I completed twelve modules:

  • Theories of Public Policy
  • Program Design and Evaluation
  • Statistical Methods and Data Analysis
  • Qualitative Analysis and Survey Design
  • Microeconomics
  • Macroeconomics
  • Public Finance
  • Law, Governance and Public Policy
  • Democratic Governance and Policymaking
  • Complexity and Public Policy
  • International Organizations and Policy Regimes
  • Urbanization and Development

Auditing, visibility, observability, governance - these terms are used in Enterprise level Software Engineering, but directly parallel theories and frameworks in Public Policy.

Many developers have ran into concepts like Complexity Theory, which applies to policy and systems architecture, particularly with systems at scale. A good example I have ran into is a bug only appeared when hundreds of recorders were connected to the desktop app, and identifying the cause across hundreds of lines of logging and code was a huge challenge.

Developers can follow best practices for complex systems - a targeted approach, making small changes while making observations. Scholars like Jane Jacobs referenced this when it came to city planning and the same applies to development.

The logical framework used in Program Design is a matrix of goals, outcomes, outputs and activities, and for each one an indicator, a means of verification, and the assumptions and risks it depends on. No objective is allowed to exist without a stated way of knowing whether it was met.

The course also focused on theory of change and theory of action. Theory of change states what you believe will happen and why: if we do this, then that follows, leading to this outcome, because of these assumptions. A theory of action is the delivery model that carries it out. This toolkit in development process

The statistics and qualitative methods modules covered the evidence underneath all of that: sampling, significance, regression, coding interview data, and how to write a survey question that does not lead the respondent. Most of it applies directly to reading telemetry and running user research without manufacturing the result you expected.

The thread through all of it is that a system is not only its code. Good systems and good public policy are both centred around people, human nature, and what works effectively.

Music

I took piano lessons when I was younger, and in High School I became very devoted to musical composition, so much so that after completing school I went into Music Technology, learning about song writing, production, mixing, recording and more.

After completing a BTEC in Music Technology, I pursued and completed a BMus in Music Composition at Kingston University in London.

My style ranges from orchestral soundtrack writing to electronic music production. I produced the soundtrack for the web cartoon "Evil Josh and Billy" and continue to make music, though less frequently today.

Now playing
Pick a track
Choose one below to load the waveform.
0:00 / 0:00

These tracks are licensed under Creative Commons Attribution-NonCommercial 4.0. Use them in non-commercial projects with attribution, remix or adapt them however you like.

Education

Jindal School of Public Policy

Online
Master of Arts in Public Policy
April 2025 – April 2026

Kingston University

London, UK
BMus. Music Composition (with Honours)
September 2006 – August 2009

Gloucester College of Arts and Technology

Gloucester, UK
BTEC Music Technology Year 2
Level 2 Information and Communication Technology
September 2005 – August 2006

Weston College

Weston-super-Mare, UK
BTEC Music Technology Year 1
September 2003 – August 2004

Broadoak Community School

Weston-super-Mare, UK
Class of 2003
Fortinet

Fortinet

June 2017 – Present (Burnaby, BC · Hybrid)
Senior Software Developer
I joined as the fourth member of the FortiCentral developer team, the C#/WPF client for managing networked security cameras and recorders, brought on to work directly with the Product Manager on the overall user experience of the application.
FortiCentral & FortiRecorder
- Built and improved features across the client, including a 3D floorplan editor, a configurable dashboard widget engine, a theming engine with a visual theme editor, and a video privacy filter.
- Added SSL certificate-change detection to warn operators about potential man-in-the-middle attacks on managed devices.
- Worked with the OpenCV library on facial recognition and object detection algorithms.
- Worked on the FortiRecorder firmware in C, adding API endpoints consumed by FortiCentral.
FortiCamera Cloud
- Joined the Docker-based, multi-region cloud video platform in 2024 alongside the Ottawa development team, collaborating daily across the time-zone offset.
- Developed the analytics feature within the platform team, from a Python/Flask backend serving chart data to an Angular/TypeScript frontend presenting occupancy, footfall, demographics, heatmaps, path overlays, and data exports.
Privacy & Data Governance
- Worked across the stack on privacy-sensitive detection and video data, balancing technical capability with data governance and data-residency considerations.
Inchol Solutions

Inchol Solutions

February 2015 – June 2017 (Coquitlam, BC)
Tech Lead, .NET Software Developer
- Worked directly with the CEO on the flagship products DanceCompGenie and CheerCompGenie, C# ASP.NET applications for registering, scheduling, and scoring dance and cheer competitions.
- Selected Angular for the CheerCompGenie frontend and built a complete registration builder: multiple teams and athletes per registration with no page refreshes, a framework continued across the rest of the application including the admin panel, backed by MSSQL.
- Worked with DirectShow and Media Foundation for video capture software.
- Promoted to Tech Lead: delegated tasks, reviewed code and approaches, and was directly involved in hiring.
What coworkers say
Sean L.
“James is a dedicated, experienced, software professional with vast experience in all aspects of software engineering. He is friendly and kind to anyone in the group which makes him a great team leader. I learned a lot of things from James. Definitely would want to work with him again! Highly Recommended.”
Sean L.Senior Software Developer
Viji Alagappan
“James is very passionate and has great vision for his work. His focus keeps everything moving smoothly, he makes sure all the deadlines are met, and working with him in the same Project as a QA, am sure that whatever project he is working on meets the highest standards.”
Viji AlagappanSoftware QA Tester at Inchol Solutions
Ali Mardani
“I found James to be creative in terms of software development. He can see the whole picture, understand interrelation of system components and make decisions based on every detail. James is also an independent and customer focused strategist. He always comes up with long term solutions for small problems to avoid any repetitious reworking.”
Ali MardaniLead .Net Developer
Zoombucks

Zoombucks

August 2012 – February 2015 (Surrey, BC · Remote)
Web Developer
- Worked with the CEO and CTO of this online-rewards startup, developing the PHP site and optimizing it for thousands of daily visitors.
- Built custom PHP reports monitoring lead tracking, usage, performance, and profitability, with user profiles and report data managed in MySQL.
- Integrated with third-party APIs such as Facebook.
CompuMAX Systems Corporation

CompuMAX Systems Corporation

September 2009 – July 2012 (Richmond, BC)
Software Developer
- Hired to build the company website promoting its accounting software, then became lead developer of the flagship product, Multi Express Business & Accounting.
- Programmed A/R, A/P, General Ledger, Inventory, and Reporting components in the Visual Objects language, working directly with clients on bug fixes and feature improvements.
- Began migrating components to C#, integrated into the Visual Objects codebase as DLLs, and built a Consignment Manager end to end in C#.

Get In Touch

Send me a message and I will get back to you. You can also find me on GitHub and LinkedIn.

About Me

An Acorn Archimedes computer at a BBC BASIC prompt
Acorn Archimedes

I was born in the mid-1980s and grew up during the peak era of accessible programming on personal computers, when switching a machine on dropped you straight into a BASIC prompt. Being born in the UK, my first language was BBC BASIC, which I started writing at eight years old on the Acorn Archimedes.

When getting my first PC in 1998 with dialup internet access, I installed the Netscape Suite, which included Netscape Composer. This was my first introduction to making websites using HTML. I made a few websites for programs I had made on the Acorn, as well as about my favourite video game, Sonic the Hedgehog.

Sheet music and a composition workspace
The composition workspace

This interest in programming and web development continued, particularly as I became involved in online communities. Even while studying Music Composition at university in London, I still kept tinkering with PHP websites and making small utilities, often based around modding video games.

Shortly after graduating I moved to Canada, and I began my first job making websites at CompuMAX, using my knowledge of web development. Working there was a fantastic learning opportunity as I was able to sign the company up to the BizSpark program, and get Visual Studio for free, allowing me to learn C# to work on software.

After several years working in various roles, I landed at Fortinet. Building analytics dashboards, customizable charting tools, camera metadata and detection analytics, access control systems, and Docker-based cloud video infrastructure. You can see some of this in my software projects and work history.

Working at Fortinet has been a wonderful experience, with a great product manager and team. I've had the chance to learn the WPF framework while working in C#, to working on a cloud-based system, to more recently experimenting with AI technologies like Frigate.

Following the Covid pandemic I found myself more interested in policy and decision making, especially as I became more involved in community projects. Additionally, the work I was doing sat at the overlap of analytics, privacy, and regulation.

This led me to complete a Master of Arts in Public Policy online, studying alongside full-time work, with training in statistics, program evaluation, public finance, economics, governance. The economics module in particular changed how I view the world, while the Program Design module gave me useful tools for project planning.

Alongside work I have built a number of open-source projects, a webcam privacy filter, a Laravel booking platform, a CRT-emulating media player, and a voice agent for my kitchen. You can see the work on my projects page and on GitHub.

A Raspberry Pi 400 keyboard computer set up for the family
The family Raspberry Pi 400

My life has benefitted from the belief that computing should be open and within everyone's reach. I like to think I'm keeping that tradition alive with my love of Raspberry Pi machines, which are sort of a spiritual successor to those old BBC Micros. While my son likes it mainly for Minecraft right now, it's simple, friendly nature invites the whole family to tinker and experiment with computing.