Elm Native logo

Elm-Native.png

Elm Native is a project to enable support for writing React Native powered mobile applications in the Elm language.

I designed this logo combining the colorful Elm logo with the familiar React logo, and it has since been adopted by the project.

The background image is a photograph of the Golden Gate bridge, by Abigail Keenan.

The Grid

tumblr_inline_n80hkv2Gqe1qznqrs

I’m finally able to share that I recently joined The Grid!

I feel proud to be a part of the team behind GSS, NoFlo, FlowHub, and more.

Backing the Future

tumblr_inline_n80gf8qMJV1qznqrs

I first encountered The Grid last year when I backed the NoFlo Development Environment on Kickstarter, and again a few months ago after working with Auto Layout on iOS.

At that time I was frustrated with web development and had sought refuge in producing native applications. Underwhelmed by the current landscape, I wondered if I’d ever go back.

I kept dreaming of a world I thought I’d never see. And then, one day… I got in.

– Tron Legacy

The Grid changed all of that. Here are just a few reasons why I’m excited about what we’re doing:

Remote

tumblr_inline_n80g92h3t71qznqrs

We’re a distributed team comprised of people across 7 countries. I love that our culture supports working remotely where geography isn’t a barrier to working with great people. Everyone I’ve come into contact with has been incredibly talented and humble.

Style & Substance

tumblr_inline_n80hu7ThwD1qznqrs

Design is given the attention it deserves. In conjunction with the innovative technology required to make them a reality, beautiful aesthetics are at the forefront of everything we do.

Open Source

tumblr_inline_n80gb6wcNH1qznqrs

Just take a look at one or two of our organizations on GitHub and it’s easy to see that we believe in open source. I’m a big proponent for writing software in an open source environment that encourages collaboration and produces more modular, testable code with better documentation.

A Digital Frontier

tumblr_inline_n80h71Zhp11qznqrs

Years of development have been invested into projects like these to facilitate building our platform, which launches soon.

I’m continually blown away by what we’re doing and I can’t wait for everyone else to experience it too.

tumblr_inline_n86eszLmzq1qznqrs

Jade Inheritance

TL;DR I created jade-inheritance to understand the dependencies between Jade templates in order to only compile the files I needed.

In a previous post I described how some much needed updates to our Jade templates at CrowdTwist came at the cost of slowing down our development time.

'Are you stealing those LCDs?' 'Yeah, but I'm doing it while my code compiles.'

At first I thought, “Sure. We’re doing some pretty complicated stuff now and our app has grown, so it’s bound to take longer.”

But then it hit me – our watch task (which monitors changes to our templates) was compiling everything everytime I edited something. Even if the edited file lived in total isolation, the entire app’s Jade files were getting compiled into HTML.

And it was taking 57s.

Even for the smallest change. Fixing a typo, iterating on a feature, anything at all.

The Problem

I started by asking, “Why?”.

Why were we compiling all of our templates when potentially only one of them had changed?

Well, there was the possibility that the changes to the modified file could impact the output of other files. Updating a file which was extended or included by other files would require those files to be recompiled too.

The Solution

To solve this problem I created jade-inheritance.

Given a Jade file and a directory, it will determine which files within that directory extend or include the file. By passing a modified file to jade-inheritance it’s possible to understand which other files should be recompiled. On the file with the most dependants in our project, this additional processing can be done in around 1.5s.

Conclusion

Now, modifying a file which is completely isolated takes only 0.15s. A 99.7% improvement, with other files of varying dependence compiling in much less time too.