Something I did for last year for BAYGAME which made it onto a couple of snapbacks.
Hi, I’m Paul.
I enjoy writing software and designing interfaces.
I prefer purely functional, strongly typed programming languages.
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.
Branding and identity for my side projects in functional programming on GitHub.
CocoaFlow is an implementation of flow-based programming on Mac and iOS.
The project is still experimental / work in progress.
This quick logo was inspired by a slide in a talk on Functional Reactive Programming by Ash Furrow.
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.
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.
GSS brings the constraint-solving Autolayout in iOS to the browser: http://t.co/DxUDiuvnYj – center any element in another with a one-liner
— Addy Osmani (@addyosmani) March 7, 2014
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.