When somebody makes an action on a webpage, they expect instant feedback. They’re not thinking about the server responding and acknowledging a change. At MyBuilder we’re aware our customers are using mobile devices more then ever. Without optimistic updates network latency can kill our app’s perceived speed.
The Flux architecture abides by a single unidirectional data-flow throughout the entire application. This provides us with a host of benefits, ranging from easier to reason about code, to clearer testing strategies. However, one issue we faced in our recently updated interface tradesmen use to communicate with customers, was how to handle asynchronous calls within these constraints. Throughout this post I wish to guide you through the iterative design decisions made, along with the resulting abstractions and boundaries.
I was playing with Docker last week and decided to replicate a virtual host environment where different domains should point to different containers running in the host machine. The same way we can easily do with Apache or Nginx.
As a designer, I sometimes struggle to remember that the audience can’t always see what I see. When I solve a problem there are usually many constraints and frameworks that — unbeknownst to the audience — must be adhered too. I have to make products that not only solve a problem but make sense to me, and the audience.
Well, I recently finished my first three months at MyBuilder, and according to tradition, I was asked to write a blog post about my experience.
I had been contracting for some years and was pondering a return into permanent employment. When my last contract ended I had some down time and plenty of time to think things over. As much as I love the freedom of contracting I did miss being part of a company proper; where my input would shape my own future in it.
Recently Max Howell (creator of Homebrew) posted an interesting tweet in regard to Google’s interview process. In this tweet he mentioned how one of the proposed questions was to white-board a solution to invert a binary tree. Over the past couple of years I have been interested in exploring fundamental Computer Science data-structures and algorithms. As a result, I thought it would be interesting to explore this structure and associated operations in more depth - using immutable and mutable PHP implementations to clearly highlight the benefits garnered from each approach.
Throughout project development we use Jenkins to provide meaningful test feedback on each Git push event. These builds are required for a sufficient amount of confidence to be gained for merging into master and subsequently deployment. Each member of the team has their own project which they manage with the current project/branch they are working on. However, typically we find ourselves working on multiple branches throughout the day, and it can become cumbersome to update the projects configuration.
It can be hard to know when to put down the mouse and get some fresh eyeballs on your design work. Act too soon and your ideas might not quite be fully formed and be misunderstood. Wait too long and you may have travelled too far down the wrong road. Like most things you need to find a compromise. Here are a few tips on how I try and strike a balance when delivering comps.
Welcome to the weekly round up, where we talk about our favourite articles we’ve seen this week. We also also have plenty of tools we’ve started using such as Babel and php-timecop that we would love to tell you more about.
“Extract till you drop” came up in my twitter feed, I had seen it before but I just quickly re-watched it, and recognised something really interesting.
To give a little background; I was that guy who believed that TDD can greatly improve our ability to refactor code, but I found that some places it just didn’t work for me.