
Keith Kennedy
Software Developer · Thornhill Associates
When everything seems to be going against you, remember that an airplane takes off against the wind, not with it.
I’m a Software Developer at Thornhill Associates, working remotely from KZN, South Africa. The role is a mix of hands-on development, DevOps leadership, and figuring out what should exist but doesn’t yet. I architected the CI/CD pipeline strategy across all Thornhill services, Git workflows from development through UAT to production, and I own the organisation’s cyber security posture: penetration testing, OWASP-based hardening, vulnerability assessments across legacy systems, modern services, and WordPress. I lead all AI integration research and development, researching and implementing Automation using some of the latest AI Technologies.
Before Thornhill, I spent four years as a Senior Drupal Developer at VML, working on production systems for clients like Nestlé (Nescafé, KitKat, Nespresso), Johnson Outdoors, and Purina, multilingual e-commerces, Stripe and Vertex API integrations, and Drupal 9→10 migrations. That’s where I got serious about backend reliability and security at scale.
Fifteen years of web development across PHP, Drupal, WordPress, Laravel, React.js, TypeScript, and Python. Stripe Certified Professional Developer. Acquia Certified Developer (Drupal 10). Currently building AI integrations at work and experimenting what these tools can actually do when applied to real systems, not toy problems.
Outside the screen: I do some woodworking, and I drive a 1989 Ford Mondeo that, I know well enough to fix myself. Working with your hands teaches you to understand the Importance of quality workmanship. digital or otherwise.

keith@mrkennedy.co.za

@MrKennedy001

@digitaltunerza