CTOKinesis
Mark Hibberd spends his time working on scenario planning and sustainability problems for Kinesis. Mark takes software development seriously. Valuing correctness and reliability, he is constantly looking to learn tools and techniques to support these goals. This approach has led to a history of building teams that utilise purely-functional programming techniques to help deliver robust products.
Talks I've Given
-
Systems That Don't Forget
Featuring Mark Hibberd
Software systems form an intrinsic feedback loop, the more we use and rely on a system, the more we demand of that system. This loop drives a cost and complexity that if left unchecked eventually inhibits growth and improvements to the software or in the worst case brings it crashing down.
The...
haskell -
Failure and Change: Principles of Reliable Systems
Featuring Mark Hibberd
As we construct larger or more complex systems, failure and change are ever-present. We need to accept and even embrace these tensions to build software that works and keeps working.
architecture-&-design
This is a talk on building and operating reliable systems. We will look at how systems fail, particularly in the... -
Failure and Change: Principles of Reliable Systems
Featuring Mark Hibberd
As we construct larger or more complex systems, failure and change are ever-present. We need to accept and even embrace these tensions to build software that works and keeps working.
architecture-&-design
This is a talk on building and operating reliable systems. We will look at how systems fail, particularly in the... -
Failure and Change: Principles of Reliable Systems
Featuring Mark Hibberd
As we construct larger or more complex systems, failure and change are ever-present. We need to accept and even embrace these tensions to build software that works and keeps working.
architecture-&-design
This is a talk on building and operating reliable systems. We will look at how systems fail, particularly in the... -
Failure and Change: Principles of Reliable Systems
Featuring Mark Hibberd
As we construct larger or more complex systems, failure and change are ever-present. We need to accept and even embrace these tensions to build software that works and keeps working.software-development
This is a talk on building and operating reliable systems. We will look at how systems fail, particularly in the... -
Hanging on in Quiet Desperation: Time & Programming
Featuring Mark Hibberd
Time has a profound impact on the complexity of the systems we build.
A significant amount of this software complexity comes from either an
inability to recall previous states or the inability to understand
how a state was arrived at.From the foundations of AI, LISP and functional programming [1],...
design -
Lake, Swamp or Puddle: Data Quality at Scale
Featuring Mark Hibberd
Data is a powerful tool. Data-driven systems leveraging modern analytical and predictive techniques can offer significant improvements over static or heuristic driven systems.
The question is:
- How much can you trust your data? Data collection, processing and aggregation is a challenging task.
- ...
-
Lake, Swamp or Puddle: Data Quality at Scale
Featuring Mark Hibberd
Data is a powerful tool. Data-driven systems leveraging modern analytical and predictive techniques can offer significant improvements over static or heuristic driven systems.
The question is:
- How much can you trust your data? Data collection, processing and aggregation is a challenging task.
- ...
-
Mundane Utility: A Functional Shell
Featuring Mark Hibberd
Functional programming is a useful technique. We spend a lot of time discussing it in the context of hard, challenging or interesting problems, but no where nearly enough in the context of mundane problems.
The UNIX shell, or command line interpreter. A simple, but useful program too often...
language -
Lab to Factory: Robust Machine Learning Systems
Featuring Mark Hibberd
Data-driven systems and machine learning continue to be a significant trend across our industry. However, most attempts at these systems face serious difficulties due the tension between the clean, controlled, lab environments where statisticians apply their skills, and the messy unpredictable,...
ai-&-ml -
Lab to Factory: Robust Machine Learning Systems
Featuring Mark Hibberd
Data-driven systems and machine learning continue to be a significant trend across our industry. However, most attempts at these systems face serious difficulties due the tension between the clean, controlled, lab environments where statisticians apply their skills, and the messy unpredictable,...
ai-&-ml -
Lab to Factory: Robust Machine Learning Systems
Featuring Mark Hibberd
Data-driven systems and machine learning continue to be a significant trend across our industry. However, most attempts at these systems face serious difficulties due the tension between the clean, controlled, lab environments where statisticians apply their skills, and the messy unpredictable,...
ai-&-ml -
Lake, Swamp or Puddle: Data Quality at Scale
Featuring Mark Hibberd
Data is a powerful tool. Data-driven systems leveraging modern analytical and predictive techniques can offer significant improvements over static or heuristic driven systems. The question is: how much can you trust your data?
Data collection, processing and aggregation is a challenging task. How...
data -
Turning Technical Debt into Monetary Debt: Price Aware Architecture
Featuring Mark Hibberd
How much does your software cost to operate?
Software design and implementation has an uneasy relationship with cost. As software developers, we often dwell on the cost of building software, but far less so on the cost to operate. The current zeitgeist of pay-as-you-go infrastructure makes this...
software-development -
Failure: Or the Unexpected Virtue of Functional Programming
Featuring Mark Hibberd
Even correct software fails.
So what happens if we shift the focus of functional programming to reliable systems? Let’s attack the hard and ugly set of programming problems, the solutions that don’t naturally fall out from building a neat library. Let’s apply our functional...
practice -
Programming in the Large: Architecture and Experimentation
Featuring Mark Hibberd
Building robust, quality systems is hard. We trade off organizational issues against technical decisions; the ability to deliver quickly against our ability to change; and the ability to build systems easily against the ability to run those systems in production. However, good architectural...
architecture-&-design -
Programming in the Large: Architecture and Experimentation
Featuring Mark Hibberd
Building robust, quality systems is hard. We trade off organizational issues against technical decisions; the ability to deliver quickly against our ability to change; and the ability to build systems easily against the ability to run those systems in production. However, good architectural...
architecture-&-design -
Programming in the Large: Architecture and Experimentation
Featuring Mark Hibberd
Building robust, quality systems is hard. We trade off organizational issues against technical decisions; the ability to deliver quickly against our ability to change; and the ability to build systems easily against the ability to run those systems in production. However, good architectural...
architecture-&-design -
The Art of Incremental Stream Processing
Featuring Mark Hibberd
Purely functional, elegant, correct, incremental and composable stream processing that is CPU and memory efficient. This is our (worthy) goal, but where do we start?
This problem space is being extensively explored across a variety of languages and libraries, each with subtly different trade-offs...
technique -
Tic-Tac-Type: Dependent Types with Idris
Featuring Mark Hibberd
Functional programming provides a fundamental basis for reasoning about our programs and building out principled abstractions. However, it is not enough on its own and we also rely on other programming tools to aid in constructing programs correctly and efficiently. An advanced example of such a...
practice -
Haskell in Production: 12 Months Building ApiEngine
Featuring Mark Hibberd
Web development in Haskell is efficient, contorting, rewarding, frustrating and elegant all at the same time. 12 Months building production quality Haskell has taught many lessons, and in this talk we will discuss the amazing, with the downright painful, and hope to provide a glimpse at what it...
technique -
Argonaut: Purely-Functional JSON in Scala
Featuring Mark Hibberd
Argonaut is a purely-functional library for dealing with JSON in Scala. Argonaut utilises advanced functional programming techniques that emphasise correctness and performance without sacrificing convenience. Argonaut provides zippers and lenses for efficient navigation and modification of...
technique -
Patterns in Types: A Look at Reader, Writer and State in Scala
Featuring Mark Hibberd
Developers are often very good at spotting repetition in their programs at the value level, but for some reason struggle, or are reluctant to apply that same careful analysis at the type level. This talk aims to build up an intuition for spotting when you can factor your types, examining what...
design -
Zippers, Comonads and Data Structures in Scala
Featuring Mark Hibberd
The term zipper is a colloquial used to describe n-hole (most often, 1-hole) contexts. That is, a data structure that has a hole or pointer focused on a specific element with the ability to efficiently traverse to its neighbouring elements, providing an elegant solution for the need to...
technique