the plaid lab

Meet Dominic Aveyard

My technical career began in 2002, when I took up a support role at ABN AMRO, building and maintaining a custom mortgage web application for the bank’s home-loan practice. One fateful afternoon, I had to cover the regular support desk. It was a wretched experience. I was quickly overwhelmed by acronyms, hard to discover procedures, and technologies that varied by the business unit or geographical location. For example, applications called something completely different in Florida versus Michigan. I did not feel any of the satisfaction I was used to feeling in my normal role. Of course, I learned the ropes after this process repeated itself a few times, but that single afternoon left a big impression and usability has been a guiding principal in my development since.

A couple of years later, my former manager mentioned that due to recent acquisitions, the helpdesk needed a web knowledge-base to get new employees up to speed quickly. And so, with the goal of making support staff feel empowered and ready to help from day one, i.e. avoiding an initial experience like mine, I began developing Zebra. Built using classic ASP and SQL Server, the app was a resounding success, giving the bank the flexibility it needed to support the different processes and infrastructure threads it had acquired.

I continued to advance my development skills, designing and optimizing databases, writing backend code in languages such as PHP, and building thoughtful and enjoyable user experiences via the frontend. Over time I gravitated to the frontend parts of development, and it became my specialty at Orbitz.

Behind the curtain

Of course, the frontend is just a slice of the full stack of technologies required to delight customers, empower colleagues and generally make magic happen. I have significant experience with JSP on the java enterprise platform and PHP including frameworks such as Wordpress and Drupal. I have also had the delight of working with Ruby on Rails on some projects.

Other skills: Integrating share widgets, Full on custom Facebook and Twitter integration, Velocity and Javamail templating, XML, XSLT, SQL Scripting and query optimization, Adobe CQ, Unix/linux scripting, and a touch of server administration.

Current Experiments

This very site is built with node.js -> express with jade templating. As I add functionality, MongoDB will most likely come into play. The possibility of a single language across the full stack is exciting, and so far LinkedIn, Air BnB and other folk are doing cool things with it.

Objective C and iOS also fills some nights and weekends in my techie home.

Cyanogenmod on my HTC One S, though, honestly that road is probably one I should have turned away from. Curiousity, alas!

Successful Results

Swipe left or right to see my different projects.

Orbitz Worldwide - Orbitz Hotels - E-Commerce site

screenshot

After a successful period working on the Orbitz "classic" platform, blogs, Open Cuba and Orbitz for Business - I joined the high profile hotel team. This was the most critical product to the company and all features and bug fixes had to meet the highest accessibility and browser support standards across 17 points of sale; the same experience being served to millions of visitors daily across the Americas, Europe and Asia.

Our team implemented custom functionality on top of google maps, to help improve a customers ability to plan travel by providing a better sense of their chosen destination - amenities, hotel variety, local attractions etc. Various versions were MVT tested and features included adding expanded markers, microcontent with CSS3 transitions, various sizes and default states - wee map / big map / expanded or collapsed by default.

I led a major refactoring of the map javascript objects, leveraging prototypical inheritance, to ease development and provide the Business more reliable releases and allow the various map permutations to be happily isolated.

  • Built with JSP on a custom "render" framework that supported flexible designs, multiple languages and currencies.
  • Custom fully OO javascript using custom events, google maps api and the prototype.js library to ease cross browser support. Prototype.js has now been eclipsed by JQuery, however, its legacy is visible in newer js features such as Object.extend.
  • First example of Glaswegian in the semantic markup of hotel search results. As of Jan 2013, div.weeResultsMapContainer is still there!

Madison Square Garden - msg.com - TV Network and Event site

screenshot

Revved up and ready for tablets, mobiles and super wide displays. The redesigned msg.com emphasises HD content and leverages responsive design to complement the fans experience anywhere. I joined the team in the last push to finish the project, working on a CSS 3 driven prototype and the final production "Browse All Videos" page (#4 site destination). I employed modular construction of search, sort, filter and paginate js allowing the team to use it across the site with minimal effort.

  • Built with JSP via the Adobe CQ based backend.
  • Responsively designed to the core - layout, content and images adjust to the size and likely pixel density of the guests device.
  • CSS 3 Fonts, animation and HTML 5 markup. All without leaving IE 8 and other elders(?) in the cold, of course.
  • Javascript organized into namespaced modules, using immediately executing function expressions to abate the global hobgoblins.

Inspect some samples of my code on this site (last checked Feb 2013):

  • On the homepage select the top left menu then select 'Browse All Video' page - /scripts/pagination.js or videoWall.js should be visible using your browser development tools.

Herff Jones - High School Commerce and Ring Designer - E-Commerce site

screenshot

A major overhaul for this e-commerce site featuring popular graduation products and a vastly improved ring designer featuring 3D preview and social media integration. I mentored and trained the frontend team, developing style guides, coding standards and best practices. Using a backbone based js framework, I developed key parts of the ring designer, including phone/tablet friendly hide/reveal and animation. To increase engagement I developed the ring gallery with social media integration.

As the release approached, I made some final, safe improvements to various aspects of the site*, completed documentation and supported the transition to a small extended maintainance team.

* Refactoring is wonderful, but a few weeks from release, often a deep breath is in order. It can be hard for a developer who cares, to step back. However, performing small and targeted improvements of the most value is the best for everyone close to final release.

  • Built with JSP via the Adobe CQ based backend, Twitter Bootstrap framework and for the ring designer - 1 page backbone based js and Flash.
  • Used a somewhat tweaked implementation of the sandbox pattern to provide organization, easier debugging and reuse for the non-ring site js.
  • An essentials only build of Bootstrap with OO CSS patterns to provide robust, cohesive styling without a labyrinth of floats (tables by another name when in excess, I fear). (Last checked Feb 2013).

Inspect some samples of my code on this site (last checked Feb 2013):

  • On the home page - /scripts/hjMasterScriptContainer.js or hjRingWall.js should be visible using your browser development tools.
  • In the design your ring flow - /scripts/pridesides-helpers.js or stone-helpers.js

Orbitz For Business - Login - Business to business commerce

screenshot

One of the shortest and yet most satisfying projects I completed. Orbitz for Business is a highly customised travel site allowing corporate customers to set allowable rates, control preferred carriers and generally manage all aspects of corporate travel. Their employees benefit from a familiar Orbitz search and book experience.

Originally the site was developed by branching the lesuire site, resulting in a login page which featured product tabs, several css and js downloads and several background graphics. A lot of this did not make sense in the corporate context, for example, product tabs were only accessible after logging in!

I discussed the idea of optimizing the page with stakeholders and on the green light, spent a couple of days slimming it down to the bare essentials. Logging in is a necessary annoyance to customers, so my goal was to make it as fast and forgettable as possible.

  • Reduced several css and js http requests to a single js call for the essential webtrends.
  • Abstracted a core set of minimal styles and moved them to the -head- of the page, usually an anti-pattern but in this case, it vastly reduced the style weight of the page and removed the overhead of an additional http request.
  • Eliminated several rounded corner background images and such, bringing the design in line with the modern Orbitz feel.
  • Raised the YSlow score from a C to an A, making each page load several hundred kb lighter. This adds up significantly when scaled to 160,000 requests per month.