Posted by Edd Mann on Nov 24, 2017

Scheduling EC2 Instances using Lambda and CloudWatch Events

Over the past couple of months MyBuilder has be transitioning from primarily a dedicated server-stack (with orchestration through Puppet) to cloud infrastructure by-way of Amazon Web Services. We have been a proponent of AWS for quite some time, taking advantage of services such as S3 and CloudFront in our current setup. We are also not unfamiliar with EC2, spreading some of our application requirements onto several instances over the past couple of years. However, we really have not been taking full advantage of the ‘Cloud nature’ of the product, and still treating each server as something in-between a Snowflake and Phoenix.

Posted by Will Thomas on Sep 14, 2017

React and Styled Components for Designers

Recently at MyBuilder we’ve started to adopt React more and more (Facebook’s Javascript UI framework), and it’s presented me with some really interesting opportunities to start changing the way I build and style interfaces. My goal here is to explain how somebody like myself — a designer — can get up and running with React quickly, and start building and styling components.

Posted by Edd Mann on May 10, 2017

Using Homebrew to Manage Project Development Scripts

When a project becomes sufficiently large in size you will undoubtedly encounter the need to simplify certain tasks, such as managing external dependencies or configuring environment parameters. Within the MyBuilder code-base we have required these kinds of processes for some time.

Posted by Edd Mann on Dec 22, 2016

Managing Newlines and Unicode within JavaScript and PHP

We were recently sent a tweet in-regard to a text-area client/server-side length validation not correlating. After some detective work we were able to find two issues that could have caused this to occur. In this post I wish to discuss our findings, and how we resolved each issue.

Posted by Edd Mann on Dec 14, 2016

Designing Immutable Concepts with Transient Mutation in PHP

In a recent project we felt it beneficial to introduce the Money pattern. There are many good resources on this pattern, so I will delegate to those for further definition. We decided that encapsulating this into a immutable value object allowed for a cleaner API and removed the fear of any unexpected mutation bugs. However, we noticed a spike in memory and processor usage when wishing to perform many successive actions on such values i.e. summation.

Posted by Edd Mann on Dec 01, 2016

Managing Background Processes within Symfony

When a web application reaches a sufficiently large size, it can become infeasible to perform all actions required within a single web request/response life-cycle. You may find yourself wishing to for example - batch up and send queued emails at particular intervals, or process payments asynchronous to the point in-time the user made the initial request. In this post I would like to discuss our changing use of background processes (both time-dependent and continuous) due to increasing throughput demands.

Posted by Jeff and Will on Nov 25, 2016

The MyBuilder bare bones usability lab

At MyBuilder, we do a lot of user research. From guerrilla testing to working with research agencies such a Fluent Interaction, user research is an essential part of how we work. Our in-house usability testing set-up needed some work, though. Our team wasn’t able to view usability testing sessions while they were happening. This how we solved this problem with the tools that were available to us.

Posted by Edd Mann on Nov 24, 2016

Using Constraint-based Ordering in PHP

An interesting problem arose last week when we wished to generate a listing of recently completed jobs (along with their shortlist fees). Upon review of some earlier attempts, we did not like the aesthetics present when many of a particular shortlist fee were clustered together (i.e. two or more adjacent jobs with the same shortlist fee). What we were instead looking for was to create a constraint-based ordering that when applied to the recently completed jobs, would give an even distribution of shortlist fees (data-set permitting).