Building a Design System – The challenges we face

At Moxio we develop a suite of applications. These applications can work together or stand alone. Keeping the UI and interaction consistent between functions, views and different applications is quite a challenge. To make it easier to develop new views and functions and to offer our users a consistent UI and interaction we started building […]

event.stopPropagation() in a modular system

Here at Moxio we build web applications from modules that we call widgets. A widget contains some logic and it controls a little bit of HTML. Think of a checkbox input element or a list of other widgets. A widget can declare what data or dependencies it needs and can choose to pass resources down […]

On type safety without generics, and the role of package design

Despite recent discussions in the PHP community about whether type hints are to be considered ‘visual debt’ or not, at Moxio we still strongly value adding types to our code. Writing type-safe code lets us catch bugs early, enables static analysis, and serves a self-documenting purpose. Still it can be a challenge to write type-safe […]

Data and donuts – a dashboard for insight and guiding users to the right place

In this blog I will share the process of redesign the dashboard for one of our more complex applications. How we create insight through combining data, enhance insight by good visualization, create possibilities for interaction and guide the user to the right data. Moxio loves data At Moxio we love data. We enjoy making data […]

Understanding Exceptional Flow

Maybe you recognise the following situation. You are implementing a new feature, and you know that you can use a certain method, as it already covers some of the functionality you need. You briefly look at it, and you don’t see any exception handling constructs. The method documentation does not contain information about what exceptions […]

How to make a cross domain request in JavaScript using CORS

Cross-origin resource sharing (or CORS) can be used to make AJAX requests to another domain. We’ll look at how to set up CORS on the server in PHP, how to make the request in JavaScript and some considerations. CORS as a concept is broader than just AJAX requests but this is it’s main use. Here at […]

Detecting hidden bugs in PHP code using PHP_CodeSniffer

Although PHP serves us well as a programming language, we cannot deny that some of its behavior can be very surprising. If one is not aware of these pitfalls, this can easily lead to hidden bugs in PHP code. In fact, we have ran into a fair share of these issues ourselves, but try to […]

Introducing Review Roulette

At Moxio we recently started an experiment we called ‘Review Roulette’: a process of randomized code reviews. We believe this emphasizes code reviews as a means of bidirectional learning and helps onboarding junior developers, and thus improves upon our previous review ‘policy’. In this post I would like to sketch the background behind this experiment, […]

CSS transitions not being ignored when printing in Chrome

Currently (29-8-2016) there is an issue in Chrome relating to how print stylesheets are applied when printing. Other browsers do not have the same behaviour. The problem like how we came across it is also described in the Chromium bugtracker where it has been marked as fixed. The issue will be resolved in a future Chrome […]

Serving compressed SVG files

Over the years, Scalable Vector Graphics (SVG) has become the de facto standard for vector images on the web. One of its disadvantages however is its verbose XML-based format, with relatively large file sizes as a result. Luckily, the plaintext nature of XML lends itself well to compression. The SVG standard reserves the .svgz-extension for […]