Skills at a glance
- I'm a software engineer who works as both a leader mentoring teams and architecting solutions, as well as a direct contributor.
- I've been using Ruby, Rails, PHP and Laravel since 2008. However I cut my programming teeth in Objective-C and plain-old-C.
- I've also been using Javascript for many years, and have worked with Node.js, Vue.js and React Native. At various times I've also been responsible for "glue-code" in Perl and Python.
- Having worked on lean teams and in startups, my linux system administration experience is extensive, and I've worked with automation and containerization tools such as Docker and Kubernetes.
- My full CV is available here.
Engineering principles I live by
- Unless it's for fun, software is generally built to do something that hasn't been done before. Business logic would dictate this to be true, otherwise it should preference integrating an existing solution*.
- This means estimates are generally hard, but not insurmountable. Hone the cone of uncertainty early in the project by focusing on the epicentre of the problem.
- Domain-Driven Design is a useful approach to building robust and scalable architectures. Teams should take a gradual, iterative approach to domain modelling as upfront over-analysis of objects can hamper progress and lead to further uncertainty.
- Engineers are most successful when they know not only what they are working on, but why.
- "The best part is no part, and the less parts the better". It's amazing how often a solution can be produced using just some well-crafted SQL and any decent BI/visualisation tool.
*There are obvious cases where security, safety, performance or auditing concerns mean that rolling your own solution should absolutely be considered.
About me
I'm a Gold Coast father of two and a running/cycling, sustainability, urbanism and permaculture enthusiast. Ran GC half marathon in 2023, aiming for the full 42 in 2024! [me]