My mission is to develop and operate effective software systems with a focus on continuous improvement.
My clear communication, tool-building, and automation skills all bring an advantage in helping teams succeed. Known for having a love of learning, teaching, and applying new skills. All this comes from having a passion for computers and people for over twenty years.
Quick stats
Updated 20 November 2024
Ways of working
- Full software development life cycle in small teams
- Full stack development and customer engagement on multiple concurrent projects, as well as delivery (DevOps)
- Design and build both one-off projects and long-lived systems
- High trust / high autonomy roles e.g., agile, continuous delivery
- Balancing features and timelines vs testing and technical debt
- Leading role in mentoring, hiring, security initiatives, incident management
- Advisory role in company-wide strategic initiatives such as technology stack and culture
2024 review
We got a lot of projects into production. AI is still a major theme of my work. Most themes are around "AI isn't magic": I am painstakingly learning the mathematics behind modern techniques.
2023 review
Still working full time across a number of projects both professional and personal. Spent most of 2023 buried deep in cutting-edge AI work. Used Q4 to get back to basics—lots of systems-from-scratch and architecting well. Mood: take domain-driven design right to the edge of academic, then take one step back.
Credentials and Technologies
- BSc. Computer Science, University of Otago
- Web apps built with Angular / TypeScript / ESLint
- APIs built with C# / .NET
- Databases built with T-SQL / SQL Server / Cosmos DB
- Systems built with CI/CD, safety to experiment
- Delivery with both the customer and dev team in mind
- Prototyping using Python
- Lots of AI tooling, but carefully
Read my blog
Read my various blog posts on WordPress.
I discuss better ways to work, summarise community events, and share books you should read.
My journey to software development
About 18 years ago I compiled my first program and found joy. Since then, I have worked with countless programming languages and technologies to build and deliver solutions in various domains. I enjoy building software. I particularly enjoy creating software that makes use of Artificial Intelligence.
How I work
I have an interest in the "future-proofing" of software, which generally means "preventative maintenance", or building adaptable solutions. I've also found that small effective teams of 3-5 people will always deliver more working software than individuals. It's worth noting that working software is the best measure of a software developer's productivity.
I am constantly learning and improving.
More about Blake
I've been using computers and technology for over two decades. I enjoy taking ideas and making them reality—computers help us do this and achieve more in less time. This includes a strong interest in applied Artificial Intelligence. E.g., "smart" behaviour of agents in systems.
I have a background in Windows, Linux, and Mac technologies, and many programming languages and paradigms.
Currently, I am a full stack .NET / C# developer with a focus on Azure. I work in web, mobile, and back-end / integration spaces. On personal projects I tend to mix computer vision and automation. I also explore and implement AI techniques such as GOAP (goal-oriented action planning) "from the literature", which is technically challenging and rewarding.
As far as tools go, I'll use anything from Vim to Visual Studio (specifically: Visual Studio Code with Vim extension...). I find Python a good fit for exploring small data sets and solving simple textual problems. Modern software development is broad: limiting yourself to a favourite tool is a bad idea.
I've gained a lot of knowledge over the years, and countless people have helped me solve problems. Without certain question-forums and blog-posts, I'd have had a much harder time.
I'd like to help accelerate more people in the same way, by posting about local events, technical quirks and foibles, and bug-hunting stories.
In any typical day I'll work in some or all of the following areas:
- Planning and design: Manage the execution and delivery of a project at all levels e.g., crafting the vision and architecture, to leading meetings and driving measurable progress through a backlog
- Build: Extend / fix / improve existing systems: APIs and databases, websites and mobile apps. Success is driven by best-practice techniques honed through learning from the collective wisdom of the industry.
- Test: Lead and implement test case automation frameworks, validating user acceptance criteria.
- Deploy: Risk-managed updates to systems used by 10-10,000 people. Design, build, and execute automated release/rollback processes.
- Monitor: Proactive maintenance of production systems including custom tooling for log analysis and threat/anomaly detection.
I'll also make time to work with team members to help with generic analysis. Might have a few customer conversations e.g., regarding generic business requirements. Could have some proactive or reactive issue management to work through, including root cause analysis. Scattered throughout would be short breaks for coffee: the kitchen is a great place to find the "Aha!" moments.
End of page: keep going?
It's hard to write about yourself: thank you for reading. If you want to keep going, contact me or visit my blog. I'm tentatively open to speaking opportunities and generally try to be helpful where I can.