Notes on designing, developing and delivering great products

Elixir and Phoenix: The Future of Web APIs and Apps?

By on in Development, Elixir

phoenix-elixir

Buzz has been building up around Elixir (and Phoenix) in the development community over the last year. We’re pretty excited about them too and want to share the reasons why they’ve piqued our interest and what we’ve learned so far.

We decided to kick the tires by rewriting one of our in-house web applications using Elixir and Phoenix so that we could answer the questions that are most front of mind:

  • How productive is the stack?
  • Are there any emergent benefits?
  • Are there any significant gotchas?
  • What are the performance characteristics?
  • What’s the community like?

Continue reading …


Introducing Wallaby – Concurrent Feature Tests for Elixir and Phoenix

By on in Elixir

Feature tests are one of the best ways to ensure reliability and consistency for web applications. But, as we’ve discussed previously feature tests can become a performance bottleneck for a large test suite.

With the fast approaching release of Ecto 2.0, Elixirists will be able to run feature tests for Phoenix applications concurrently. To take advantage of these performance benefits we wanted a testing tool that supported concurrent tests out of the box and provided a flexible api for querying and interacting with webpages.

Thats why we built Wallaby.

Continue reading …


New Arrow Functions in ES6!

By on in Web

Among many of the new features of ES6, aka ECMAScript 2015, is the arrow function expression, also known as the fat arrow function. For those that have been programming in CoffeeScript, the syntax will look quite at home.

This corresponds to this syntax in the current standard JavaScript:

Essentially, it’s just a different way of specifying a function (of which there are a ton of different ways in ES6), but it’s not a direct replacement for function — you can’t do a ‘replace all’ in your code. Several important differences beyond syntactic sugar exist, including: 1) it creates a lexical this, 2) it implicitly returns an expression, and 3) it’s always an anonymous function. And that is where it gets interesting. To understand the problem the standards committee was trying solve, you first have to delve into context and the lexical this.

Continue reading …


April 21st 2016 Talk Night at Carbon Five LA – Sketching for UX

By on in Design, Los Angeles

sketching

Great communication is at the heart of a great team with the free and clear exchange of ideas flowing between design, development, and product. However, we’ve all had moments where the team gets “blocked” on a design; some members struggling putting their thoughts into words, others feel they have to provide high quality comps, while others remain silent feeling they don’t have the skill or place to contribute.

Continue reading …


Fintech Startups Continue Wall Street Transformation

By on in Announcements, Startups

c5ny

Back in 2008, I moved from Paris to New York City right as the Big Apple was in a Big Mess. I remember walking past a live air studio as a visibly flustered newscaster gestured erratically in front of an Armageddon-esque stock screen. And, I recall witnessing Barclays ascent on Lehman Brothers, encircling the iconic building in a virtual moat of town cars from which a flow of pinstriped suits scuttled.

Eight years later, I find myself back in New York and am happy to report that the financial sector is looking up again – thanks to the current wave of fintech innovation.

Continue reading …


Founder Five: Pete Shalek and Steve Marks from Joyable

By on in Everything Else, Startups

We’re catching up with some of the most inspiring founders we’ve worked with to share insights and advice from their experience of starting and growing businesses. Recently, we worked with the Joyable team on their iOS app, and we were inspired by their customer-focused mindset. For those who are not yet familiar, Joyable offers an online Cognitive Behavioral Therapy program to help individuals overcome social anxiety. Every decision made by Pete and Steve from the outset was validated by real consumer experience.

We also published an extended version of this interview on Medium.

1) What was the “aha moment” that motivated you to start Joyable?

Pete: I knew I wanted to do something in healthcare, and I wanted to see problems on the ground [and] do some customer development work. So I convinced some doctors at Stanford Hospital, where I was in business school, to let me shadow them. I followed doctors in the emergency room for eight hours a day. It was fascinating and really fun. As anyone who works in a hospital will tell you, there are many things that can be improved in hospitals— even at great hospitals.

That hit me really hard. This idea that someone was in bad enough shape that they went to an emergency room, and they were being told to wait three months. – Pete Shalek

PeteShalekSteveMarks

Continue reading …


Concurrent Acceptance Testing in Elixir

By on in Development, Elixir, Web

If you’ve practiced Test-Driven Development, you know that fast-to-execute tests are more than just a nice-to-have. As suites get slow, developers run them less often locally. Failures start to crop up in the CI environment, and the length of time between a breaking change and its detection increases.

The problem gets worse with acceptance tests. Since they execute in a browser, they’re slower to begin with and significantly more brittle. But with these negatives come a huge benefit: since they interact with your application in the same way a user does, they give you much more confidence that your system is working than isolated unit tests.

Running tests in parallel can sometimes help speed up tests, but doing so comes with its own set of issues. As with any concurrent code execution, global state can cause intermittent failures. In particular, very often tests rely on making changes to a database. These changes can easily leak from one test to another, causing havoc.

The upcoming release of ecto has a interesting new solution to this problem. It offers a connection pool built on the db_connection library, which provides a module named DBConnection.Ownership.

Continue reading …


ES6, ES7, and Looking Forward

By on in Development, Everything Else, Web

After attending Allen Wirts-Brock’s presentation on ES6 and ES7 at ForwardJS last week, I asked him if there was more momentum in shaping the JavaScript language recently. ES6, or ECMAScript 2015, has only just been released and shall soon be followed by ES7, or ECMAScript 2016. And what is ECMAScript, you may ask? ECMAScript is nothing more or less than the standard that defines what JavaScript is. With the last major release of ES5.1 back in 2011, and two new releases two years in a row, it appeared to me there was new momentum put into evolving this incredibly popular language. This blog will give you an overview of how JavaScript is being shaped over time and give a high-level look at ES6 and ES7.

Shaping JavaScript

Allen famously created the JavaScript language with Brendan Eich in just 10 days in May of 1995. He points out that while that statement is true, the reality is that there was a lot of thought preceding those 10 days about how the language would be shaped. After initially creating the language, it was picked up by two different companies who were trying to develop it independently. That is when the standards committee was developed. Technical Committee 39 (TC-39) of ECMA International now sets the ECMAScript standard. The standards committee is headed by pioneers in the business: Mozilla, jQuery, Meteor, Salesforce, Internet Explorer, Intel, et al. Continue reading …


The 10 Practices of Healthy Engineering Teams – Part 1

By on in Culture, Development, Process, Startups

Behold the engineering team at SuperStartupCorp: their steady delivery of features, humble reception of feedback and crafting of well-architected software systems earn them praise up and down the company. The team greatly enjoys working together, and consistently leaves the office feeling accomplished, empowered, and happy.

happy_engineers

How is this team able to consistently deliver features for the business, while maintaining morale in a changing sea of fluctuating product requirements, leadership changes, and unplanned site emergencies? It wasn’t always this way.

Read on to learn the first three steps to this team’s journey towards engineering happiness…

Continue reading …


Sharing and Testing Code in React with Higher Order Components

By on in Development, Web

Higher Order Components (HoC) in React can be simple to use and test. If you haven’t read about HoC’s and how and why they’ve replaced mixins, check out this great Medium post by Dan Abramov.

Most of the resources and examples that I found online about higher order components are complex, and don’t include a testing solution. This is a super simple example designed to demonstrate how we can generalize React components using Higher Order Components and unit test them. We will be using ES6 syntax and Enzyme to test.

Continue reading …