Photo of Marton Bodonyi

Hi I’m Marty, front-end developer , UX consultant , and keen traveller. I work with startups and corporates, big and small, in Melbourne and around the world.

I've written...

Development React Native JavaScript Android

Detecting React Native Apps in WebViews

On the project I’m working on at Rome2rio I’m currently implementing React Native’s WebView component and hitting some issues with sending headers and User Agent’s reliably. Sometimes User Agent’s get rewritten by the website inside (which is very strange) and...

UX Travel UX

Progress indication on flight metasearch websites

Flight metasearch websites like Skyscanner, Momondo, and Kayak search a variety of online travel agents in real-time to get the cheapest tickets for a given route. When results aren’t cached they take a lot of time to load, an age...

UX Travel UX

Experiment Watch - Skyscanner buttons

I’ve just spotted Skyscanner running experiments on their booking ticket select buttons: Button states The new pill shape design now has an active state and has a more subtle hover effect. What’s interesting is that the old hover effect was...

UX Travel UX

How changing one word increased our flight booking conversions by 30%

It was a warm night in March and I was going over my research for the unified booking experiment to prepare a presentation for the Rome2rio team the next day. The results had been really great, and I was in...

UX Travel UX

How travel websites tell stories

In 100 Things Every Designer Needs to Know About People, Susan Weinschenk discusses the role of story telling in helping people process and store information. The basic premise is that if you want to get a powerful response from your...

UX Travel UX

Revamping the Rome2rio flight booking user experience

It was early 2016 and I was sitting at my desk in Melbourne’s Inspire9 co-working space in a corner that Rome2rio peacefully occupies. In front of me were printed out screenshots of the existing Rome2rio flight booking user interface. We...

UX Travel UX

Peripheral vision in digital travel design

In 100 Things Every Designer Needs to Know About People Susan Weinschenk talks about the role peripheral vision plays when users interact with websites. According to research performed in 2009 by Dimitri Bayle human beings often react more than twice...

Development JavaScript Performance

Real world JavaScript performance of large element lists

At Rome2rio we’re working on improving the front-end performance of our large booking ticket lists which present upwards of 150 combinations to users. When considering front-end performance we consider both the DOM speed as well as the Javascript execution time....

Development Drupal 7 Security PHP

Give all user permissions to the admin role in Drupal

I’ve seen, especially on older Drupal 7 websites, situations in which the default admin role has either not been set or the role has had to be changed. Changing the admin role in Drupal however doesn’t automatically give the role...

Development CoffeeScript Backbone JavaScript

Using Backbone.js with CoffeeScript

If you want an example of just how elegant CoffeeScript can get, look no further then how it integrates with Backbone.js. In this tutorial we’re creating a model and a collection in Backbone.js in it’s simplest form, then expanding it...

Development CoffeeScript Testing JavaScript

Testing in QUnit with CoffeeScript

During an interview process recently I was asked to create a CoffeeScript powered AJAX widget for displaying external content. Having never used CoffeeScript before I decided to go about learning it in a completely test driven way instead of the...

Development Drupal 7 Module development Open Source

Drupal Field Paywall walkthrough

Field paywall (https://www.drupal.org/project/field_paywall) is a Drupal module I produced for News Corp Australia that allows Drupal editors to assign paywalls to entities choosing which fields to hide and what kind of message to display. Using the core Drupal Field API...

Development Drupal 7 PHP

How to use the $user->data property in Drupal 7

Everything you need to know about how to use the highly performant $user->data property whilst maintaining data integrity with a bit of best practise Single Responsibility Principle and Single-Entry, Single-Exit thrown in for good measure. Drawbacks of using Field API...

Development Drupal 7 Open Source

Entity Legal - Legal Document Management for Drupal

Most websites I’ve personally worked on for clients have had, at minimum, a Terms and Conditions page or Terms of Use page. Recently on the brightday project (http://brightday.com.au) I was tasked with creating a versionable, auditable and robust legal document...

Development Drupal 7 Drush MySQL

Resetting a Drupal 7 module schema with Drush

There are times when you’re testing hook_update_N hooks and need to revert to a previous schema version to re-run your update hook. For example if your developing an update called my_custom_module_update_7002 and you run it there are only two ways you can...

Development Drupal 7 Security PHP

User permissions in Drupal

In Drupal, the user permissions system plays a vital role in providing fine grained access to content and settings forms on a site. By default most modules, contributed and core, come with in built permissions for managing access to their...

Development Drupal 7 PHP

Database independent Views 3 custom field handlers

Views has so many convenient field handlers that almost all use cases can be covered using the standard set however there are times when you may need to display custom or specially formatted data in a view row without resorting...

Development Drupal PHP Xdebug

Drupal debugging: Xdebug and Devel

Being able to debug core, contributed and custom code efficiently and verbosely is hugely important when developing with Drupal. The two main methods used in the industry are Xdebug and Devel DPM and both have strengths and weaknesses which will...

Development Drupal 7 Testing PHP

Break out of the SimpleTest sandbox

One of the common elements of every single successful web project in history is thorough testing, whether manual or automated. Thankfully Drupal has a relatively painless out-of-the-box testing framework however it’s biggest flaw is that it aims to do end-to-end testing using...

Development Drupal 7 Theming PHP

Theme override functions - beautify breadcrumbs, lists and form elements in Drupal 7

First things first: the template.php file Before we start we need to know where our code will be going. Theme overrides should be placed in the template.php file in the root folder of your active theme so if you don’t...

Development Drupal 7 AJAX PHP JavaScript

Changing the page title with AJAX Commands in Drupal

So you’ve loaded that new AJAX fragment using AJAX commands but you want to change the page title too? The JavaScript Create a new JavaScript plugin called jquery.changePageTitle.js and add it to the same pages your AJAX will be running...

Development Drupal 7 PHP AJAX JavaScript

AJAX commands in Drupal 7

One of the great ‘new’ features of Drupal 7 is the ability to use AJAX commands outside of FORM API allowing back-end and front-end developers to leverage high performance and solid JSON responses. JSON AJAX commands can be used simply...

Development Drupal 7 PHP Beginners

Super simple custom Drupal 7 module

Create a folder Before we start, we need to create a folder that has the same name our module will. Don’t include any special characters and use underscores in place of spaces. Use only lowercase letters and avoid numbers in...

I'm a specialist in...

React JS Front-end development A/B Testing and experiment driven development ES2015 Native mobile development ReactNative Drupal UX Google Analytics

I've worked with...

Rome2rio Engineers Without Borders Australia News Corp Australia Department of Justice: Victorian Government Solicitors Office Catch Digital London TMW London Icon Inc Melbourne Itomic The Crocodile London