Lessons Learned Developing the 99designs Tasks API

Dennis works at 99designs, and in this article he describes the choices, experiences and takeaways from building an API to complement the new Tasks service.
“Wanna see something cool?”
Two years ago my boss, Lachlan, came to me with a secret side project he’d been hacking on for getting small design tasks done quickly. The idea was for customers to submit a short design brief that would be matched to a designer who’s waiting and ready to go.
We assembled a small team and spent the next two months working like crazy to get an initial public release out and prove it was something people wanted.
Lachlan’s original vision included the idea of an API for graphic design work along the lines of Amazon’s Mechanical Turk—but more beautiful and tailored specifically for graphic design.

We’ve continued to refine 99designs Tasks as a consumer service, but the vision of an API for graphic design continued to stick in our minds. We just weren’t quite sure if it was worth doing or not.
A Turning Point
Then we were caught by surprise. We discovered that our friends at Segment had built an automated tool using PhantomJS, which screen-scraped our website to work around the fact we hadn’t built an API yet!
I’ll admit—it was pretty embarrassing to be beaten to the punch by a customer on an idea we’d been thinking about for two years. On the other hand, there’s probably no better way to validate an idea than to have a customer do it for you.
OK, Let’s Do This
We quickly realized that developing an API would involve more than just the technical design and implementation. The audience and concerns of an API are very different from anything we’d worked on before.
Scoping It Out
One of the first challenges we faced was figuring out what features we wanted in an API. We already had a few API customers that needed a fairly specific feature set for creating tasks—but we wanted to open up the possibilities and allow ideas we hadn’t even begun to think of yet. We made the decision to expand the scope beyond task creation to cover the entire task workflow in order to enable a wider set of possibilities.
Developer Marketing
Another big question we faced was how to market an API? Our customers are typically entrepreneurs and small businesses. The target audience of an API is very different from what we’re used to.
There’s a saying that “if you build it, they will come”, but I’m not convinced it’s quite true. We knew there was some hard work to be done if we wanted to attract developers. There are a few questions that developers might ask when looking at an API:
“Why should I be excited?”
“What are the benefits?”
One strategy we had for attracting developers was to have a collection of compelling examples that would inspire new ideas. The problem is that building these examples requires us to attract developers to build them in the first place. We tackled this chicken/egg problem by working with a group of launch partners in a private beta ahead of our public launch to build some great quality applications that we could show off.
We also applied a “dogfooding” approach at 99designs, where our development team worked on a number of app ideas internally—including a browser extension and a chat bot, all of which used our in-development API.
Continue reading %Lessons Learned Developing the 99designs Tasks API%

via Reme Le Hane

The Future of Programming: WebAssembly & Life After JavaScript

Recently we heard that the web platform is getting a new browser-native compile target called WebAssembly (see What is WebAssembly: The Dawn of a New Era for details). Wasm makes the web platform a more attractive compile target for other languages. That leaves us wondering what might come after JavaScript.
JavaScript has some great features, but I sincerely hope we move on as soon as possible. JavaScript is great and it taught us a lot, but programming will evolve. There will be life after JavaScript.
I’m not a fan of C++ (I’m a recovered user and abuser of C++), but I am a fan of many things built with it, including the Unreal Engine, which runs great when compiled to JavaScript. There’s no good reason to write everything in JavaScript forever. It’s time to look to the future.
I’ve been using and really enjoying CoffeeScript from time to time, which helped inspire a lot of the new ES6 features. CoffeeScript feels much simpler than JavaScript. It has a more concise syntax, yet adds a lot of expressive capability that did not exist in ES5. Of course, I’d simplify CoffeeScript even more by ridding it of the poisonous class keyword. I like to fiddle with Haskell, too. But these languages represent the present.
So what could we do next?
Whatever catches fire after JS, I hope it has these features:
Built-in immutable data structures and immutability by default.
Literal forms for objects, collections, and primitive types.
A better default number type for most use cases.
Custom structural types, including good support for low-level binary types (bonus if we get definable literal syntax).
Lambdas with closures.
Functional utility belt built-in. Similar to the RxJS Observable API.
Native support for object and factory composition. Something like built-in stamps.
Realtime guarantees for low-latency processing & precision scheduling for apps like gaming, music & video production, DSP, scientific applications, synchronization of distributed systems, etc…
Minimal syntax, similar to Ruby, Python, or CoffeeScript. Now that I’ve had a chance to get comfortable without curly braces and semicolons everywhere, I feel a lot less confined by syntax.
First-class Support for Reactive Programming
Baked into the language, a simple, consistent API around all of these:
Continuous data sources (UI inputs, time, vector images, etc…).
Collections including arrays and objects.
This API should be used the same way regardless of whether data flows through the functions one value at a time (i.e. iterables / generators + yield), in response to emitted events (e.g. Node-style streams), or continuous data sources such as audio, electrical signals, UI inputs, sensors, even time-independent things like vector graphics, etc…
A built-in API like this could wrap all types, which has the potential to simplify the syntax, as well.
For a really insightful perspective about how all this reactive stuff works, check out A General Theory of Reactivity.
Better Tooling
Unreal Engine 4 Blueprint
A fantastic visual IDE for easily modeling and visualizing reactive relationships in the system. Think NoFlo with a much better UX.
Time-travel debugging (example with JavaScript) enabled by immutable data structures. Time-travel debugging lets you easily shuttle back and forth in the history of your live, running program.
Compile to JS & wasm great support for browsers and Node.
Better analysis tools both static and runtime / dynamic. Specifically designed to help make programs more predictable by analyzing reactive dependency graphs. These could create great visual reports, too, including complexity reports, and marble diagrams to help you further understand and predict the behavior of your program.
Marble diagram for .merge()
Continue reading %The Future of Programming: WebAssembly & Life After JavaScript%

via Reme Le Hane

How to Grunt and Gulp Your Way to Workflow Automation

This article is part of a web dev series from Microsoft. Thank you for supporting the partners who make SitePoint possible. When you are new to front-end development and start mastering HTML5, CSS and JavaScript, the obvious next step is to put your hands on tools that most developers use to stay sane in this […]
Continue reading %How to Grunt and Gulp Your Way to Workflow Automation%

via Reme Le Hane

The Best Free Minimalist WooCommerce Themes

If you’re used to the abundance of free WordPress themes, you might expect to have the same choice with WooCommerce. After all, it’s the most popular WordPress ecommerce plugin (we’ve got a nice introduction to WooCommerce if you want to come up to speed). Unfortunately, the choice of free themes created especially for WooCommerce isn’t as large as the choice for WordPress itself.
As a result, when you want a minimalist theme for your WooCommerce site, you have two options. The first one is to (heavily) modify an existing WooCommerce theme and make it suit your needs.
The second approach is to adapt a general WordPress theme. Basically, photography or image gallery types of themes are easier to adapt, but even a blog theme, or a magazine type of theme can sometimes do the trick.
There is always the risk the adapted theme might not function properly. However, in some cases you simply need to go this route. For example, if your WooCommerce store is part of your WordPress blog, then for consistency, you might want to use the same theme on both of them.
Continue reading %The Best Free Minimalist WooCommerce Themes%

via Reme Le Hane

Crawling and Searching Entire Domains with Diffbot

In this tutorial, I’ll show you how to build a custom SitePoint search engine that far outdoes anything WordPress could ever put out. We’ll be using Diffbot as a service to extract structured data from SitePoint automatically, and this matching API client to do both the searching and crawling.

I’ll also be using my trusty Homestead Improved environment for a clean project, so I can experiment in a VM that’s dedicated to this project and this project alone.
What’s what?
To make a SitePoint search engine, we need to do the following:
Build a Crawljob which will index and process the entire SitePoint.com domain and keep itself up to date with newly published content.
Build a GUI for submitting search queries to the saved set produced by this crawljob. Searching is done via the Search API. We’ll do this in a followup post.
A Diffbot Crawljob does the following:
It spiders a URL pattern for URLs. This does not mean processing – it means looking for links to process on all the pages it can find, starting from the domain you originally passed in as seed. For the difference between crawling and processing, see here.
It processes the pages found on the spidered URLs with the designated API engine – for example, using Product API, it processes all products it found on Amazon.com and saves them into a structured database of items on offer.
Continue reading %Crawling and Searching Entire Domains with Diffbot%

via Reme Le Hane

510 Vector Clip Art Collection with an Extended License – Only $15

Give your designs a real boost with this collection of vector clip art! From decorations to flowers, frames, swirls, ribbons, banners to borders and arrows – everything you need is in here.
Just open the vector file and start using these resources. Seriously, this will become your go-to source when you’re getting some work done.
Also, because we know clip art is used in all kinds of projects, we made sure that this set comes with an extended license, allowing you to use it in an unlimi…Keep on reading: 510 Vector Clip Art Collection with an Extended License – Only $15

via Reme Le Hane