Arnout Boks
Software architect at Moxio
Maassluis, The Netherlands
Actions
Software architect by profession but mathematician by education, Arnout has his interests on the boundary between the two, where formal modelling and logical reasoning meet practical problems and pragmatism. He works at Moxio, where he solves complex information management problems with innovative software, and aims to grow a culture of learning and quality. In his free time he contributes to a number of open source projects, like PHP_CodeSniffer, Symfony and the PHP core, and maintains a number of packages himself.
Links
Area of Expertise
Topics
Beating the intelligence agency (well, at their Christmas puzzle)
Every year, the Dutch equivalent to the CIA publishes a Christmas puzzle as a fun challenge for the general public. Having some programming skills can definitely help to solve these tough problems, but only when combined with clever observations and logical reasoning.
In this ‘case study’, we will look at one of these problems and my journey to solve it using PHP. We will look at modelling the problem, implementing a blunt brute force approach (spoiler: it’s nowhere near fast enough), and iteratively using our own analytical skills to refine the solver algorithm, ultimately arriving at a strategy that solves the puzzle in no time.
While solving such puzzles will probably not earn you a living (if you do, let me know 😉), they can teach us some valuable skills that are useful in our day jobs. We will learn about creating robust and expressive domain models, natural language detection, algorithms and data structures to improve our performance. But most of all we will sharpen our problem solving skills, turning our failed attempts into insights for better approaches.
Effective error handling: the exception rather than the rule?
Nowadays you probably use exceptions to signal error conditions in your code. But do you have a comprehensive strategy for how to apply them in practice? Can you ensure that your exceptions are delivered to the correct audience, or do you get complaints from end users about technical error messages and spam your engineers when a user enters incorrect input? Do you use a sensible type hierarchy for exceptions and apply them at the correct level of abstraction? Do you know the correct place to catch the exceptions that arise form your code?
It's no shame if you struggle with some of these issues, because good error handling takes care and is actually hard. In this talk, I will present you some simple principles and best practices to build an error handling strategy that actually works! We will see how you can make your debugging more effective and your users happier. Because good error handling should not be an exception!
This talk is based on the best practices and principles I blogged about in https://moxio.com/blog/best-practices-for-php-exception-handling/.
From CRUD to DDD: how did we end up here?
So you’ve moved from a legacy database-centric architecture to a brand new Domain-Driven Design approach. Your coworker told you that this would be about speaking the language of the customer and putting the primary focus on the business domain logic. But now you find yourself looking at aggregate roots, command buses, event projects and process managers, and wonder what they have to do with that. Moreover, what used to be an easy change now requires editing at least seven different files. How did we end up here?
In this talk we will look at an evolution from CRUD to a modern architecture based on DDD and adjacent patterns like CQRS and Event Sourcing. We will follow the thought process that led to each of these new tactical constructs, see which problems they solve, but also which disadvantages they have. This talk is not a criticism of DDD, but aims to show where it and related patterns shine (and where they don’t), so you can make a deliberate choice where and when to apply them and develop to their strengths.
Of representation and interpretation: A unified theory
Many hard problems in programming originate from one single source: not properly distinguishing the representation of data from the way it is interpreted. Have you ever written code that filters $_GET for SQL injection attempts? Struggled with timezones? Tried to get escaping right for Javascript in HTML? Detected the character encoding of a string? All are examples of this one problem.
In this talk we will look at some examples of the representation-interpretation problem and find the general pattern behind it. We will see how primitive types make it so hard for us to get this right, and how we can use value objects to steer us in the right direction. Once you notice the pattern, you'll be able to reason about and solve these problems much more easily.
Contains: math, character sets, strong opinions on string escaping, and an almost illegal slide.
PageRank all the things!
Most people know PageRank as Google’s algorithm for ranking search results, but its uses extend far beyond only that: PageRank has already been utilised for analysing social networks, finding the most important functions in source code, predicting traffic, and deriving a more accurate ranking table of teams in an ongoing sports competition.
In this session we will cover the basics of linear algebra, developing an intuitive notion of how matrices and vectors interact, and use it to understand the principles of PageRank. Then we’ll jump straight into real-life applications of PageRank beyond web search and how these can be implemented in PHP using the math-php library.
Arnout Boks
Software architect at Moxio
Maassluis, The Netherlands
Links
Actions
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top