Building a new foundation for mathematics

Type theory has its origins in an attempt to fix a critical flaw in early versions of set theory, which was identified by the philosopher and logician Bertrand Russell in 1901. Russell noted that some sets contain themselves as a member. For example, consider the set of all things that are not spaceships. This set — the set of non-spaceships — is itself not a spaceship, so it is a member of itself.

Russell defined a new set: the set of all sets that do not contain themselves. He asked whether that set contains itself, and he showed that answering that question produces a paradox: If the set does contain itself, then it doesn’t contain itself (because the only objects in the set are sets that don’t contain themselves). But if it doesn’t contain itself, it does contain itself (because the set contains all the sets that don’t contain themselves).

Russell created type theory as a way out of this paradox. In place of set theory, Russell’s system used more carefully defined objects called types. Russell’s type theory begins with a universe of objects, just like set theory, and those objects can be collected in a “type” called a SET. Within type theory, the type SET is defined so that it is only allowed to collect objects that aren’t collections of other things. If a collection does contain other collections, it is no longer allowed to be a SET, but is instead something that can be thought of as a MEGASET — a new kind of type defined specifically as a collection of objects which themselves are collections of objects.

An important distinction between set theory and type theory lies in the way theorems are treated. In set theory, a theorem is not itself a set — it’s a statement about sets. By contrast, in some versions of type theory, theorems and SETS are on equal footing. They are “types” — a new kind of mathematical object. A theorem is the type whose elements are all the different ways the theorem can be proved. So, for example, there is a single type that collects all the proofs to the Pythagorean theorem.

The article goes on to discuss Vladimir Voevodsky reasonings for the adaptation of a new type theory informed by homotopy theory as a replacement for set theory in mathematics. This would allow computers to check all mathematical proofs—which apparently we can’t currently do with set theory.

Source

Making Badass Developers

Kathy Sierra (Serious Pony) Fluent Conf 2015 keynote discusses the optimization techniques for learning quicker by acknowledging our cognitive capabilities and modifying how we approach learning and mastering new skills or working with new APIs. I’ve been fascinated with cognitive overhead for a while – it’s great to get practical recommendations on how to combat it besides the common advice of simply exposing yourself to less of it by reducing daily choices across the board. This is definitely worth your time if you’re a web developer or are in a position where you’re required to do a massive amount of learning in a constrained time period.

Source

Mobile User Experience: Limitations and Strengths

In spite of the modern trend towards larger-screen phones, what makes mobile phones so convenient and portable is their small size. Compared with desktop and even laptop screens, phone screens accommodate a lot less content. As a result, screen size is a serious limitation for mobile devices. The content displayed above the fold on a 30 inch monitor requires 5 screenfuls on a small 4-inch screen. Thus, mobile users must (1) incur a higher interaction cost in order to access the same amount of information; (2) rely on their short-term memory to refer to information that is not visible on the screen. It’s thus not surprising that mobile content is twice as difficult.

Whenever you include a new design element or a new piece of content on the mobile screen, something else gets pushed out (or below the fold). Think hard of the opportunity cost of each new element: what does it mean for the users if you leave out element B in order to include element A? Is element A more important than element B? Content and feature prioritization is key. Although we provide general guidelines in this report, your answer likely depends on the kinds of users and tasks that you have.

It seems to me that feature prioritization is often compromised in responsive design. Part of this is the paradigm shift of actually switching to a small-screen first design approach. So often we end up making desktop features fit into a mobile design, because we think that people like feature parity between desktop and mobile viewports. I think in general that’s true, but that would contend that it’s actually content parity that’s more important. At any rate both are clearly it’s important.

Source

ES6 arrow functions, syntax and lexical scoping

Single line function expressions in ES6 are nice.

function (param) {
  return expression
}

Becomes:

param => expression

Which allows you to write much more readable code. This short walk through discusses some of the new JavaScript features you can be using now in combination with Babel. Assuming you’re using a build step this just makes sense. I’m particularly excited about the lexical scoping of “this” in the fat arrow function, which will allow us to avoid setting ‘var this = that;’, or using .bind(this) or .call(this).

Source

Cameron Moll discusses his history with Proxima Nova

2013

By now, Proxima’s use is rampant. It’s everywhere. Seriously, people. Websites, apps, you name it. Cries of banality flood the internets. How dare we use one font so excessively!

A fair cry indeed. Yet as it turns out, Proxima Nova is more than just the new Helvetica Neue. It’s incredibly versatile for digital interfaces, performs like a workhorse at many different sizes, and looks remarkable on retina displays.

And then in 2015:

In my experience as a UI designer, Medium and Semibold weights are indispensable for interface work, especially all-caps at small sizes (e.g. navigation menus and button text).

“Indispensable” doesn’t seem like the right word, but I would have to agree that it’s an incredibly usable, versatile font for interface design.

Source

Scopes in NPM

Great to see these features shipping.

Scopes go hand in hand with the new private modules system — which is a very nice feature considering NPM is currently managing 141,898 packages. One of the most difficult parts of programming is naming functions or variable declarations, and even though naming a package is outside of that scope it’s just one less thing to worry about at the end of the day if someone is hosting a module on NPM with the same name as something you’ve built.

Source

The Hamburger Menu on Office for Windows Phone Explained:

The problem is, there’s just way too many things on the top bar. For example, you might want to print. How do you do it? Well, you could design a print icon in the top bar. But it’s probably not worth it. You could hide it in the ribbon, but that sort of sucks for discoverability.

And then you notice the top left corner. And you think “Well, tons of Android apps just put everything there. Maybe we could try that?”

And so it became clear, due to the massive number of features in Office apps, and the extremely tight real estate, and alignment with tablets, that a hamburger was the best overall pattern.

And Later:

I was out for coffee with a Windows PM a few weeks ago and she said “what do you think of the hamburger?” And I’m starting to piece 2+2 together. Apparently there’s a big hamburger backlash brewing in the Windows community that I wasn’t aware of.

But here’s a design challenge. And I’m serious – when Excel comes out, download it and see everything in the hamburger. Then redesign it. I’m curious to see what people come up with, because I’m always ready to see more ideas. We went through a ton but that doesn’t mean we could have thought of everything

There’s always more ideas, but sticking to conventions can save time for design work on other, possibly more complex or important problems. I’m confident a better pattern will evolve eventually, but it might not be as universal.

Source