Via Michael Verona

Via Michael Verona

Originally shared by Russ Abbott

Is programming obsolete?

The pattern is that there’s an existing software project doing data processing using explicit programming logic, and the team charged with maintaining it find they can replace it with a deep-learning-based solution. I can only point to examples within Alphabet that we’ve made public, like upgrading search ranking, data center energy usage, language translation, and solving Go, but these aren’t rare exceptions internally. What I see is that almost any data processing system with non-trivial logic can be improved significantly by applying modern machine learning.

This might sound less than dramatic when put in those terms, but it’s a radical change in how we build software. Instead of writing and maintaining intricate, layered tangles of logic, the developer has to become a teacher, a curator of training data and an analyst of results. This is very, very different than the programming I was taught in school, but what gets me most excited is that it should be far more accessible than traditional coding, once the tooling catches up.

The essence of the process is providing a lot of examples of inputs, and what you expect for the outputs. This doesn’t require the same technical skills as traditional programming, but it does need a deep knowledge of the problem domain. That means motivated users of the software will be able to play much more of a direct role in building it than has ever been possible. In essence, the users are writing their own user stories and feeding them into the machinery to build what they want.

I know this will all sound like more deep learning hype, and if I wasn’t in the position of seeing the process happening every day I’d find it hard to swallow too, but this is real. Bill Gates is supposed to have said “Most people overestimate what they can do in one year and underestimate what they can do in ten years“, and this is how I feel about the replacement of traditional software with deep learning. There will be a long ramp-up as knowledge diffuses through the developer community, but in ten years I predict most software jobs won’t involve programming. As Andrej memorably puts it, “[deep learning] is better than you”!

via Wayne Radinsky

“A perfect API”

“A perfect API”

This article introduces the basic ideas of algebraic JavaScript by using various libraries that implement the Fantasyland specification.

The author thankfully avoids using category theory terminology which is probably the single biggest barrier to the wider adoption of these principles by JavaScript engineers.

Seriously we need better names than Functors, Setoids, Semigroups and so on. Those names are ridiculous.

Manual currying of functions in JavaScript is easy and powerful. Eg.

Manual currying of functions in JavaScript is easy and powerful. Eg.

a => b => c => a + b + c

But what this article is saying is that autocurrying of function arguments is not a natural fit for JavaScript unlike say Haskell because JavaScript has all these ways of dealing with absent arguments. This includes new features just added to ES2015 to handle default arguments. In other words all those Pythonic things that have been added to the language over the years.

So rather than autocurrying how about language support for partial application instead? The main use of currying is to reduce functions down to single argument functions so they can be easily composed. This can be also achieved by partial application.

Language support for partial composition is a possible answer and there’s a proposal to add that in the process of being considered.

E.g.

const square = Math.pow( ?, 2);

square(3); //9

const maxGE10 = Math.max( 10, …);

maxGE10(7, 8, 9, 10); //10

maxGE10( 8, 10, 12, 15); //15

GPlus on iOS Gripe #1045

GPlus on iOS Gripe #1045

When you share anything from one app to another, you must not switch tasks until the post has been completed or it will be lost. The process of switching cancels your post without saving anything you typed.

I’ve lost several carefully worded posts that way just from deciding at the last minute to research something or find a link.

The most ridiculous side effect of this is that you cannot share anything that may involve launching a new window. The window switch will auto cancel your share.

Seriously Google…