# Stephen Kennedy **Technology Leader** Melbourne, Australia / Remote [LinkedIn](https://www.linkedin.com/in/devenable/) · [Twitter](https://twitter.com/DevEnable) _Markdown version of [https://profile.devenable.com](https://profile.devenable.com/)._ Built [Talent Hustler](https://talenthustler.io) and recently founded [Frac Consulting](https://frac.consulting/). - I've worked as a Principal Consultant for one of the **top global Microsoft consultancies** - I've been the technology leader at **multiple start-ups with successful exits** - Given my management experience so I can guarantee that I'm autonomous and think about things far past _"it works on my machine"_. - **2 years of experience building AI platforms** using multiple agentic development approaches. I no longer hand-write code. - **Strong software engineering fundamentals**. I've always been hands on. Historically with .NET, but with agentic software engineering language skills aren't an issue. Happy to work in any stack. ## Prominent skills ### Modern Identity Management _Modern authentication supporting SSO authentication and role / permissions based security._ In my career I've had experience with a wide assortment of authentication / identity solutions. Some of these solutions were bespoke, but many used or extended open source or commercial products. Build versus buy is often a question that comes up in technology, when it comes to identity - buy. I've developed a federated identity gateway leveraging [Identity Server](https://duendesoftware.com/products/identityserver) used by logistics providers, multi-billion dollar shipping lines, and distributors to authenticate to the MatchBox Exchange platform. I also have experience with identity providers like Entra ID, [Kinde](https://www.kinde.com/), and [Auth0](https://auth0.com/). For one client I also developed a SCIM solution to allow for the automatic provisioning of users from their clients' upstream Entra ID providers. All of this has given me a deep understanding of the authentication pipeline and many of the OAuth 2.0 flows and the security considerations you need to have when designing authentication and access management in an application. ### Engineering Practices & Delivery _In the age of AI engineering practices and delivery are ever more important._ [The Phoenix Project](https://www.amazon.com.au/dp/0988262592) is one of the most influential books on modern delivery / DevOps. In the age of AI and lean startups before it, move fast and break things has always been the war cry. But at a certain point, teams spend more time fighting processes and brittle systems than they do adding value. Unless you are regularly tuning the engine. This is why in every startup I've been involved in I've either brought in, or guided the teams on _appropriate_ levels of process and automation for the stage of the business, so we can continue to move fast and deliver exceptional value to our customers. AI makes it easy to move quickly, but without proper guardrails in place it also breaks regularly and you can spend more time spinning your wheels fixing issues, than moving forward. When joining a business or client I've led or implemented agile delivery methodologies (Scrum, Kanban, etc) to remove blockers and empower teams to move more quickly and give internal / external stakeholders increased delivery assurance. I've also led or implemented automation around verification and deployment. CI / CD pipelines with infrastructure as code (Bicep, Pulumi, CDK, CloudFormation) and ensured we have adequate verification via automated tests (unit, integration, and end to end) via various different test frameworks (xUnit, Vitest, Playwright, Cypress, etc). ### AI User Experiences _More than just a chat box shoved to the side, with walls of text that most users skim past._ There's a lot of talk about software (and languages) not built for us lowly human beings, but exclusively for AI agents. But at least while people still matter (hopefully always), the UX intended for human beings needs to be first class in a way that it was before conversational UIs came onto the scene. Right now, an LLM can send walls of text back at you, and many user interfaces just show text and call it a day. It might be 4 paragraphs of text, when a single paragraph and a chart would have done a far better job. Hard to call that a delightful user experience. Software built only for agents doesn't need any of this. Software built for people does. When building Talent Hustler I heavily modified [TipTap](https://tiptap.dev/) to provide a rich AI chat experience which rendered dynamic user interfaces based on responses from the LLM and was context aware (knew what the user was looking at in the conversation). _(Interactive product mock — see [the website](https://profile.devenable.com/skills/ai-user-experiences).)_ I also integrated AI functionality into a text editor with my own custom implementation, allowing for auto-complete, suggestions based on the context of where the user was in the document, and attribution / provenance. _(Interactive product mock — see [the website](https://profile.devenable.com/skills/ai-user-experiences).)_ ### AI Platforms _Complex AI systems supporting fine-grained natural language search, tool calls, and knowledge graph enrichment._ Talent Hustler is built to manage and maintain complex relationships, dependencies, and the inter-relationship of various entities. For example how a skill might relate to another, or what fields it belongs to. It understands that the skill 'containers' is very different in the logistics field than it is in tech. To support this sort of search capability (and other features that draw on the same architecture & design patterns) we use vector based RAG for fast retrieval, but back this with a knowledge graph database that expands the search to look for related entities that may not have been picked up by the RAG search, and uses a Reciprocal Rank Fusion (RRF) ranking algorithm along with various weightings to tune the results based on importance. The graph database needs to be populated with this relational data, so when it encounters a skill, field (or other sort of entity) that it has never seen before, it verifies and enriches this data with AI. ## Experience ### Founder **[Talent Hustler](https://talenthustler.io)** · September 2024 - Current · Melbourne, Australia Built [Talent Hustler](https://talenthustler.io), a SaaS platform for professional services organisations to help them create compelling profiles and proposals leveraging AI. This is a cloud based platform using modern LLMs (RAG and function calling) to retrieve relevant profile data, prior commercial artefacts (proposals, case studies, etc) and content generation across chat conversations as well as supporting backend services. [AI Platforms](/skills/ai-platforms) and [AI User Experiences](/skills/ai-user-experiences) mostly cover the build. **Skills:** CosmosDB, PostgreSQL, Marten, Event Sourcing, Gremlin, Azure, Bicep, Microsoft Agent Framework, OpenAI, Google Gemini, Vue.js, Nuxt, OAuth 2.0 ### (Senior) Engineering Manager **[Criteo](https://www.criteo.com/)** · May 2023 - August 2024 · Melbourne, Australia Managing the Criteo In-store team across a variety of mission critical projects whilst also uplifting the technical side of the business's overall capability in order to meet a growing demand from enterprise customers, partners, and Criteo (acquirer). The role still required me to work somewhat as an individual contributor. However, I was also directly / indirectly managing a team of around 20 (engineers, QA, delivery management). Outside of project outcomes, a large part of my focus was on reducing the technical cost of ownership, improving the productivity and agility of my team, and improving delivery quality. There were several areas of improvement made to achieve those goals: - Simplifying the branching strategy to reduce the number of branches and amount of code drift from active development to production. - Finding pragmatic opportunities to automate busy-work or higher risk deployment activities. E.g. automated & versioned database migrations, moving more heavily towards container compute workloads, and the introduction of infrastructure as code through CDK. - Working with technical and business stakeholders to: - Identify opportunities to improve technical code quality at the same time as delivering project outcomes. - Identify larger strategic opportunities to dramatically improve the state of the platform and the codebase. - Working with the development team to upskill them and to raise the bar on expected performance. At the same time, also working with some very talented engineers to mentor them on coaching and change management to introduce the positive change they were seeking to implmement and drive. **Accomplishments** - In conjunction with the Delivery Manager, introduced agile methodologies (Scrum & Kanban) across the teams depending on function - Increased the capacity of the development team including the introduction of a Delivery Manager to assist with growing pains - Onboarded multiple enterprise customers, along with the development of custom integrations to support onboarding and business integration - Significantly reduced the average cycle time (time from first commit to code in production) from months to days **Skills:** Leadership, Tech Strategy, Delivery Management, Team Building, Engineering Practices, DevOps, Agile, People Management, Thought Leadership, Change Management, Accountability, Stakeholder Management, Technical Leadership, Vendor Management, MSSQL, C#, AWS, Business Continuity, Business Operations ### Principal Engineer **[Brandcrush](https://www.brandcrush.com/)** · January 2023 - April 2023 · Melbourne, Australia Initially when joining Brandcrush, I was brought in to assist with a security uplift. This involved reviewing the existing security posture, identifying areas of concern, and working with the team to address these. This included a review of the existing AWS infrastructure, the application codebase, and the development practices. On top of the SKU Ingestion project, I was responsible for starting to grow the team (as well as assessing the current team and exiting poor performers), hardening our security footprint, and moving into a CTO (eventually Engineering Manager) role as part of planned transition. **Projects** #### SKU Ingestion Built a distributed computing solution capable of processing millions of records quickly at a very low operating cost. This data was used by the Brandcrush website and needed to be returned within 100ms. The solution was built using [Akka.NET](https://getakka.net/) as the primary processing model. Whilst Akka.NET supports distributed computing over multiple nodes in a cluster, I opted to use the framework but execute everything within a single node in order to be ready for web scale, but removing some of the initial upfront investment that would have been required. DynamoDB was the chosen database as its performance, scale, and importantly cost drivers were the best fit for a very high write burst workload (as the data sets were processed overnight), which was also resilient enough to handle networking issues or upstream throttling issues shoudl AWS's infrastructure require time to scale up to meet the demand. **Skills:** Distributed Computing, Akka.NET, C#, DynamoDB, MSSQL, Docker ### Freelancer September 2022 - January 2023 · Melbourne, Australia While looking for a suitable permanent opportunity I have been acting as a freelancer providing consultancy services to digital SaaS clients. **Skills:** Modern Identity Management, C#, MSSQL **Projects** #### Upgrade Identity Server The client was looking to upgrade from the open-source version of Identity Server which was set to leave support in November 2022 to the new commercial Duende Identity Server offering. I assessed the client's current implementation of Identity Server to identify what code and database changes would be required for the upgrade and worked with their development team on the upgrade to ensure that their customers would not be affected. **Skills:** Identity Server, ASP.NET Core, AdminUI, Entity Framework #### User Synchronisation with AAD (SCIM) Some of the client's larger customers and prospects had expressed a preference to administer users and licenses through **AAD (Azure Active Directory)** instead of the client's admin portal. They wanted customer IT administrators to make changes in the AAD admin portal and have those changes reflect in the client's SAAS product. After researching potential solution's I identified the industry specification [SCIM](https://www.okta.com/blog/2017/01/what-is-scim/) which most of the popular identity providers (including Microsoft AAD) had support for the automatic provisioning and de-provisioning of users. SCIM for ASP.NET was identified as a commercial product which would provide a large part of the code infrastructure required to support SCIM. In delivery a new set of web services were created using SCIM for ASP.NET with custom development involving integrating with Identity Server as well as the client's proprietary subscription management systems. **Skills:** Identity Server, ASP.NET Core, SCIM for ASP.NET, Redis ### Chief Information Officer **[MatchBox Exchange](https://matchboxexchange.com/)** · July 2021 - August 2022 · Melbourne, Australia _The **success** of MatchBox Exchange saw the business **scale significantly** in terms of employee headcount as well as the number of markets that it was operating in. In addition, our partners had greater expectations around **cybersecurity, compliance, and privacy**. Given that the product required a full-time focus, and my time was being diverted to these other areas, I split my role into two and become the CIO with a CTO reporting to me, allowing me to still retain a **holistic vision of MatchBox Exchange's overall IT strategy**._ The role naturally involved a large amount of BAU (business as usual) activities such as the management of users and systems (e.g. Freshworks, [Microsoft 365](https://www.office.com/)), recruitment, people management, vendor management, alignment with changes to business processes, and technical support (internal & product). I continued to contribute to the product, particularly around security and partner integrations. **Accomplishments** - Consolidated business systems to reduce operating costs and improve cohesiveness - Created a Power BI solution to improve business insights - Worked with a cross-section of vendors to provide an integrated global VOIP telephony solution - Improved the utilisation of our cloud infrastructure from a cost, security, and deployment standpoint **Skills:** Leadership, Tech Strategy, Delivery Management, Team Building, Engineering Practices, DevOps, Agile, People Management, Thought Leadership, Change Management, Accountability, Stakeholder Management, Technical Leadership, Vendor Management, Microsoft 365 Admin, Modern Identity Management, MSSQL, Entity Framework, C#, Azure, Shape Up, Business Continuity, Business Operations **Projects** #### Cybersecurity Cybersecurity was a large part of the focus of the role, both with internal acknowledgement as well as increased scrutiny from our shipping line partners, especially given recent cybersecurity breaches in the logistics industry. There were multiple initiatives as a part of this work: * Improving our overall security hardening for the product, our infrastructure, and the systems we rely on (e.g. email, Microsoft 365) * Moving to vendors that could support AAD / OAuth 2.0 / OpenID Connect SSO for our internal business systems * External penetration testing * Continual improvements to our modern identity solution (Identity Server) as well as a push to get our partners to use SSO. * Starting the ISO 27001 journey **Skills:** Cybersecurity, OAuth 2.0, SSO, ISO 27001 #### Freshworks Migration Like any digital SaaS business, MatchBox Exchange not only had its product to maintain but a myriad of other software platforms required to run a successful business. The sales, customer support, and internal support functions were using different software platforms and processes which did not integrate seamlessly. MatchBox Exchange were using Freshdesk for customer support and I made the decision to migrate all of our systems to the Freshworks platform to reduce the number of vendors we were dealing with, provide an incentive to Freshworks for cost reduction, and provide better data integration across these systems. This project consisted of: * Modelling Freshsales Cloud to match Zoho CRM, and then in a separate phase working with the sales team to optimise how the data and sales process were represented in the CRM * Creating a custom data migration tool to migrate all of MatchBox Exchange's Zoho CRM data to Freshsales Cloud * Moving the internal support capability from Freshdesk to Freshservice * Configuration changes to support telephony changes **Skills:** Freshworks, Zoho CRM, .NET Core #### Telephony Telephony was considered an important aspect of MatchBox Exchange's customer communication for sales as well as customer support. The business needed to use VOIP solutions in order to integrate with Freshcaller (Freshwork's telephony platform) and to allow phone numbers to be transferred to other team members in other countries should that employee no longer be available. There were also two added challenges: * Mobile support for the sales team * Not having a legal entity in all countries that we operated out of. This sometimes meant we needed to use a different underlying telephony provider and integrate that back into Freshcaller as Twilio (which powers Freshcaller) would not provision a phone number without a legal entity in that country. This project required a lot of communication in understanding the compliance requirement of each phone number and how well positioned MatchBox Exchange was to comply, identify suitable vendors, and then identify a solution which would tie back into the Freshworks platform (either through SIP phone integration or existing Freshworks marketplace integration). **Skills:** Freshworks, cloudtalk, Global Call Forwarding, Twilio, SIP Phone #### Infrastructure as Code MatchBox Exchange utilised Azure DevOps to deploy changes to all of its environments. However, infrastructure changes were still largely manual (click ops). The tech team wanted to move closer to continuous delivery and this was identified as a key impediment from doing so, as any changes which needed infrastructure changes would need to be handled manually outside of the automatic deployment. Working with one of our senior engineers and the CTO we used Bicep to define our infrastructure and make any infrastructure changes part of the deployment process. **Skills:** Bicep, Azure, Azure DevOps #### Business Intelligence MatchBox Exchange operates in 11 markets, each with separate infrastructure (with some sharing). Some critical business information was also stored in different systems (e.g. CRM, Xero). Whilst the in-product reporting did provide some business insights it was limited in usability and mainly targeted customers and partners, not internal stakeholders. I developed a quick stop-gap solution which was able to aggregate the data across all markets, perform some basic data sanitisation and then allow internal users to view data across multiple dimensions using 10+ created reports. Using this reporting users could obtain better insights on customer, product and market trends. In what started as a '_How hard can Power BI be?_' personal project quickly morphed into something that the business saw immediate value in, with regular change requests. Later I would also create a proof-of-concept integration with other systems such as Xero and Freshsales Cloud, which would then allow Power BI to be able to provide a true consolidated picture of the business. **Skills:** Power BI, MSSQL, Freshworks ### Chief Technology Officer **[MatchBox Exchange](https://matchboxexchange.com/)** · April 2019 - June 2021 · Melbourne, Australia _I joined MatchBox Exchange at a time where they had proven to have a successful business model operating in Australia and New Zealand with software services being provided by an external vendor utilising offshore resources. The directors were looking to bring in a CTO to help them scale the business and pave the way for the future._ In the early stages of this role, I **stabilised the technology platform** by: * Migrating the code from .NET Framework to **.NET Core** * Moving the source control to repositories owned by MatchBox Exchange * **Recruiting a small but highly capable team** of software engineers and a Head of Product * Moving away from an infrastructure as a service (IaaS) solution to a platform as a service (PaaS) and serverless architecture to **reduce risk and operating costs** * Introducing **automated testing and deployments** Throughout my time as CTO, I was responsible for the recruitment, people management, technical strategy and had accountability for our delivery management. Given the size of the business, there were also product management responsibilities. A large part of my role was also **mentoring management team members**, many of which had limited prior experience in tech, to appropriately set expectations and ensure that _joint understanding_ was established. Being a start-up there was naturally a lot of time spent on operational activities such as the those typically expected of a **Principal Software Engineer** (e.g. software development, tech support), vendor management, as well as client / customer 'pre-sales' and integration planning activities. **Accomplishments** - Successfully transitioned from an offshore vendor model to an internal small high performance software engineering team - Supported the product from operating as an English-only service for AU and NZ to a multi-lingual service operating in 8 markets - Modernised the MatchBox Exchange product website, as well as backend processes (automated testing, translations, DevOps, etc) - Championed the business to join the Microsoft for Start-ups program as a qualified start-up resulting in Azure credits of approximately $120,000 USD - Introduced a federated identity platform (powered by Identity Server) which allowed customers and partners to sign in via OpenID Connect / OAuth 2.0 SSO **Skills:** Leadership, Tech Strategy, Delivery Management, Team Building, Engineering Practices, DevOps, Agile, People Management, Thought Leadership, Change Management, Accountability, Stakeholder Management, Technical Leadership, Vendor Management, Product Management, Modern Identity Management, Architecture / Design, MSSQL, Entity Framework, Azure, C#, HTML, CSS, JavaScript, jQuery, Bootstrap, Shape Up, Business Continuity **Projects** #### Supporting Expansion A large part of the work that we undertook was to add to MatchBox Exchange's market reach and to achieve first to market advantage. This was achieved by my team rolling the product out into additional markets (countries), providing additional shipping line integrations, and working with large customers / partners on capabilities that would increase their adoption of the products. Due to the large amount of this sort of work, the team was **improving integrations** to make them simpler and quicker to implement and addressing various technical debt issues to make new market rollouts simpler. As a part of this, we started to move towards more of an **event / message driven architecture** so that we could have a more decoupled, more scalable system that was more capable of responding to business events in a multitude of ways. In addition, MatchBox Exchange had a tenant per market with very little resource sharing, in order to **reduce cloud hosting costs** and the **technical cost of ownership** the team spent time working on resource sharing (SQL Elastic Pools, multiple web apps per app plan, etc.) and moving towards a single global platform for all markets. This required significant architecture and design changes. **Skills:** Architecture / Design, Distributed Computing, Azure, ASP.NET Core #### Identity Server MatchBox Exchange had a proprietary AuthN / AuthZ solution that was based on ASP.NET Identity. The previous vendor had developed it with some quirks which could have resulted in security issues and it did not support the increasingly growing OpenID Connect and OAuth 2.0 standards meaning that SSO (single sign on) was not possible. Identity platforms such as Okta and Auth0 were evaluated, but after talking to their sales teams they were far too cost prohibitive which led us to proceed with an Identity Server solution. For security reasons authentication was removed from the main MatchBox Exchange solution into a separate website with data and auth logic moved to Identity Server. We used [AdminUI](https://www.identityserver.com/products/adminui) In addition, we supported Microsoft work accounts with single sign-on (SSO). Identity Server then provided **SSO capability used by our customers, partners, and where possible our internal systems**. Over time we introduced additional capability in our solution, such as: * Being able to migrate username/password accounts to SSO * Support for private identity providers hosted by a partner (i.e. not using a publicly available global endpoint) * Support for Ping Identity (Ping Federate) **Skills:** ASP.NET Core, Identity Server, Microsoft Identity Platform, AdminUI, Docker #### Multilingual MatchBox Exchange had an English only product, but wanted to move into Asian markets. On top of making code changes to provide multi-lingual support within the product, I didn't want to have our small team of software engineers spending a lot of their team copy / pasting translations from our external translators. After some research I found the concept of a translation management system, ultimately landing on [Crowdin](https://crowdin.com/). After configuration, Crowdin integrated with our Azure DevOps repository and translators were able to apply their translations in Crowdin's website, with those changes automaticaly triggering pull requests in our source code repository. **Skills:** ASP.NET Core, Crowdin #### Vue.js Pilot MatchBox Exchange had an aging ASP.NET Core MVC user interface which was difficult to update, provided a poor dated developer experience, and wasn't as suitable to build a modern responsive modern mobile user experience as other options. The team looked at the major SPA frameworks and landed on [Vue.js](https://vuejs.org/). I managed the pilot of taking our registration screen and migrating it to Vue.js, including the creation of supporting APIs. **Skills:** ASP.NET Core, Vue.js ### Chief Technology Officer **Ploytech** · September 2018 - February 2019 · Melbourne, Australia _Ploytech’s directors approached me to provide additional technical leadership as their business was experiencing significant growth and they wanted to improve the technical maturity of their team to prepare them for upcoming challenges._ During my time at Ploytech, I: * Started them on the DevOps journey * Conducted a security audit including the creation of a remediation backlog * Created a proof of concept to modernise their identity solution I also acted as an individual contributor by conducting integration required to bring a not-for-profit organisation onto their platform. **Skills:** Leadership, Tech Strategy, Delivery Management, Team Building, Engineering Practices, DevOps, Agile, People Management, Thought Leadership, Change Management, Accountability, Stakeholder Management, Technical Leadership, Vendor Management, MSSQL, C# ### Principal Consultant **[Readify](https://purple.telstra.com/)** · July 2016 - August 2018 · Melbourne, Australia Readify hired the top 5% of (.NET) software engineers in the market and were considered one of the premium Microsoft consultancy in Australia. **Note:** Readify were acquired by Telstra in 2016 and have since become part of Telstra Purple. My role as a Principal Consultant was diverse. I: * Lead teams of consultants across multiple accounts and engagements, mentoring and providing delivery assurance. * Acted as a **virtual CTO**, working with client senior managers and executives in a billable capacity. * Worked in a technical pre-sales and account management capacity. * Shared state leadership of around **60 consultants** in Victoria. * Assisted in cross-practice delivery across development, data and analytics, as well as innovation and design. * Acted as the primary escalation point should any issues be raised by Readify consultants or client stakeholders on the engagements that I was responsible for. **Accomplishments** - Significant involvement in the generation of millions of dollars of revenue as a part of my contribution to the pre-sales process. - Championed Readify to some of our larger enterprise customers resulting in addition engagements for our consultants - Lead ThingSpace (Readify's internal equivilent of Thoughtworks' Tech Radar) **Skills:** Leadership, Tech Strategy, Delivery Management, Team Building, Engineering Practices, DevOps, Agile, People Management, Thought Leadership, Change Management, Accountability, Stakeholder Management, Technical Leadership, Scrum **Projects** #### Enterprise Customer Engagements I worked with a major multi-national client (approx 700 engineers) on various projects. * I led and contributed to a significant architecture review of a major new product for that organisation. The findings of this review were used as the basis for remediation actiivties based on identified issues. * I conducted a DevOps assessment, which was then presented to the global executive team. This lead to additional investment in DevOps practices. * What was initial leading 1 team on a product stream of work, led to an additional 2 teams based on the success and velocity of the original team. The development management could see the capability and ability to meet commitments of our teams above that of other teams (including those provided by our competitors) **Skills:** Architecture / Design, Cybersecurity, .NET Core, Delivery Management #### Virtual CTO I acted as a virtual CTO for a cloud-based SaaS business where their CTO needed to delegate some responsibilities. I was primarily responsible for mentoring their .NET and C++ engineers to give them direction and upskill them on architecture and design practices for a major new version of their product. I also assisted the business in investigating the suitability of newer technologies (e.g. graph databases, GraphQL) over existing approaches Eventually, the board decided to move to a primarily offshore model resulting in redundancies and I needed to assist the business and some of the affected employees with the transition. **Skills:** Architecture / Design, Tech Strategy #### Vendor Relationship Gone Bad I worked with a client who did not come from a tech background. They had invested a significant amount of money in a new product that they wanted to launch, and they were not happy with the resulting work of the vendor that had been tasked with delivery. I was brought in to assess if what had been done was reasonable given the time and money invested (_it wasn't_) and educate the customer on delivery and vendor management to see if the situation could be salvageable. The client then asked us to build a product backlog and determine a ballpark cost for what it would involve for us to take over and rescue the project. **Skills:** Delivery Management, Vendor Management ### Various (Lead Consultant, Senior Consultant, Senior Developer) **[Readify](https://purple.telstra.com/)** · March 2013 - June 2016 · Melbourne, Australia I held a variety of roles at Readify between 2013 and 2016, increasing in seniority. Below are some of the projects that I participated in. **Skills:** Scrum, Agile **Projects** #### Distributed Computing (Akka.NET) My client had a back office processing system which could only run outside of business hours and needed to execute daily. At the time, it could take around 12 hours for it process and the amount of data to process was only increasing. Billions of dollars of wealth and equity were being processed by this system. I designed and led the development of a high-scale distributed computing solution as a pilot to be used as a basis to eventually replace the aging system. It used an actor model architecture powered by [Akka.NET](https://getakka.net/). The pilot was then greenlit to be developed into a production ready solution. There was significant complexity in what we were trying to achieve as we needed to ensure that the data integrity of financial records remained intact whilst at the same time needing to manage large amounts of state across multiple servers whilst processing. **Skills:** C#, Distributed Computing, Akka.NET, Dapper, MSSQL #### Performance & Scale A large enterprise customer had a multitude of performance and scale issues which made the platform slower than expected, and at times inoperable without a restart. They established a task force (team) to investigate issues, identify root causes, and then remediate if possible. I was responsible for leading the .NET element of that team. My team would dig into the architecture & design of the product, use tools such as SQL Performance Profiler and looking at memory dumps using WinDbg. Some of the initiatives we undertook were: * Introducing Redis to reduce the load on the database, including for session state management. * Identifying areas where IDisposable was not being called and introducing patterns (including a [Roslyn analyzer](https://devblogs.microsoft.com/dotnet/how-to-write-a-roslyn-analyzer/) to identify possible breakages) to ensure that unmanaged memory resources were cleaned up to remove memory leaks. * Running brownbags on performance and scale topics (as well as other .NET topics). * Making (or attempting to make) changes to the client's core libraries to optimise their memory and database utilisation, or by creating reference design patterns that could be rolled out across the large implementation by other teams. **Skills:** C#, MSSQL, Entity Framework, Redis, ASP.NET MVC #### Accounting - Performance & Scale A client that has a cloud-based account software product was experience performance and scale issues, as one of their products had not originally architected and designed for the cloud. One of the issues related to the performance of executing SQL queries through LINQ to SQL. I was part of a team that was responsible for replacing those queries with LLBLGen Pro. As this was also an opportunity to reduce technical debt, we also refactored associated code to make it testable and created BDD (behaviour driven development) tests using SpecFlow. In addition, the client wanted to improve their import data capability. I was able to convince them to try doing this with F# as it provided far better mapping capability and could produce the outcome with much less code than C#. **Skills:** C#, F#, MSSQL, LLBL Gen Pro, SpecFlow #### Travel Client A travel industry client had recently acquired another business and was looking to use their existing website code as a replacement for the system their acquisition currently had, but with the acquisitions branding. I was brought in to assist with this migration. Throughout this engagement, I also identified a significant bug (which was the result of a design issue) with a particular edge case of the flight search engine that they had, requiring me to rewrite a major portion of that algorithm. **Skills:** C#, ASP.NET MVC, MSSQL, HTML, CSS, JavaScript ### Earlier roles | Period | Role | Organisation | | --- | --- | --- | | 8/2012 - 2/2013 | Contractor (Senior Developer) | SportsBet, Australian Unity, Australia | | 4/2010 - 7/2012 | Founder | DevEnable, New Zealand | | 4/2010 - 7/2012 | Contractor (Senior Developer / Solutions Architect) | merlot.aero, New Zealand | | 11/2009 - 4/2010 | Development Manager | Indigo, New Zealand | | 7/2009 - 11/2009 | Contractor (Consultant) | ClearPoint, New Zealand | | 11/2007 - 3/2009 | Senior Developer / Solutions Architect | Practiv, New Zealand | | 9/2006 - 7/2007 | Consultant | Netstore, United Kingdom | | 5/2006 - 7/2006 | Contractor (Senior Developer) | Practiv, New Zealand | | 8/2003 - 3/2006 | Architect / Developer | Lending Decision Solutions, Australia | ## Other skills .NET Core, Accountability, AdminUI, Agile, Akka.NET, Architecture / Design, ASP.NET Core, ASP.NET MVC, AWS, Azure, Azure DevOps, Bicep, Bootstrap, Business Continuity, Business Operations, C#, Change Management, cloudtalk, CosmosDB, Crowdin, CSS, Cybersecurity, Dapper, Delivery Management, DevOps, Distributed Computing, Docker, DynamoDB, Engineering Practices, Entity Framework, Event Sourcing, F#, Freshworks, Global Call Forwarding, Google Gemini, Gremlin, HTML, Identity Server, ISO 27001, JavaScript, jQuery, Leadership, LLBL Gen Pro, Marten, Microsoft 365 Admin, Microsoft Agent Framework, Microsoft Identity Platform, MSSQL, Nuxt, OAuth 2.0, OpenAI, People Management, PostgreSQL, Power BI, Product Management, Redis, SCIM for ASP.NET, Scrum, Shape Up, SIP Phone, SpecFlow, SSO, Stakeholder Management, Team Building, Tech Strategy, Technical Leadership, Thought Leadership, Twilio, Vendor Management, Vue.js, Zoho CRM ## Education **Tertiary Education** - Bachelor of Information Science, majoring in Computer Science - Massey University **Certifications** - PSM I