A logo for Deno

Note: this post is more about the ideas behind Deno rather than a specific design. The actual logo is just an example.

In 2014 when io.js asked people for logo ideas, tens of people volunteered their designs. It was overwhelming but what do you expect when you create a new shiny tool for a crowd whose specialty is web and design?

Fast forward to 2018, the creator of Node.js boots a similar project called Deno, this time trying to avoid the design mistakes of his first popular creation. The new project is way more interesting.

Not only Deno has the learnings of Node.js considered, but it is based on some of the most modern and popular technologies like Golang and TypeScript.

I have previously written a long article about the merits of TypeScript and firmly believe a “sound” type system can unleash the power of JavaScript even more. TypeScript’s design also involves carefully chosen “unsound” behaviour:

TypeScript’s type system allows certain operations that can’t be known at compile-time to be safe. When a type system has this property, it is said to not be “sound”. (source: typescriptlang.org)

The greatest thing about TypeScript’s type system is that the types are optional — meaning that you can go far without using types and only add them when the size of the project justifies the extra effort.

Deno also uses Go which has a similar history. As of 2018 JavaScript is the most popular language in the world. Go too was built on the lessons learned from its popular predecessors:

Go was born out of frustration with existing languages and environments for systems programming. […] Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. (source: golang.org)

Don’t take my word for it, Go is one of the few language not bashed by the “king of geeks” Linus Torvalds:

I think Go picked a few good and important things to look at, but I think they called it “experimental” for a reason. I think it looks like they made a lot of reasonable choices. But introducing a new language? It’s hard. Give it a couple of decades, and see where it is then. (source: quora & original post)

That’s a huge compliment (from the creator of Linux and git) considering how he bashes C++ (the language Ryan used in Node.js)! I’m very excited about Ryan Dahl’s new project because it is a step in the right direction.

Update: On 8th of June 2018, Ryan announced a total rewrite in Rust.

The logo

5 hours ago someone brought up the topic “Let’s make some logos” and I predict that this is going to be one hell of a challenge.

I am mainly a programmer but most importantly I follow the technology trends. I do design for fun too and I’d be flattered if this design gets accepted but more than the actual design, I want to mention a few design goals that I think should be considered by a possible logo.

First let’s see the design:

Just a circle? Let me explain!

  • Simplicity: Deno is Ryan’s effort to bring simplicity to tooling and runtime design. A simple and non-crowded design is a key to communicate that. In my design that circle is just a simple and basic geometrical shape. Disclaimer: I’m Swedish. 🇸🇪
  • Security: in the post-Snowden era, in a year that started with two of the most distributed security vulnerabilities of the computing history (spectre and meltdown) it is a step in the right direction to design our tooling from the ground up with security in mind. Ryan’s talk at JSConf had a sharp emphasis on security. Security is particularly and extremely important for anyone who uses NPM. In my design that red color is to emphasize the importance of security.
  • Perfection: as anyone who has worked with computers can tell you, we are far from perfection because computers are programmed by imperfect beings but every now and then a brave move like Deno (and for that matter Node.js at its time) comes to change our view of what to expect from our tooling. TypeScript arguably addresses one of the most important flaws of JavaScript: a gradual type system that makes it possible to handle larger code bases as well as quick proof of concepts. This is a balance that not many tools can claim to have achieved. This is the closest thing to perfection as of 2018. Circle is a symbol of perfection.
  • Easy to use: since the logo is practically a red circle on a white background, it can be used in a variety of settings. This ease of use comes handy given the diverse environments that Deno is going to be used (hint: it’ll go wherever JavaScript goes!).
Here’s how it may look like in the terminal

Here’s the SVG code for the logo:

<?xml version="1.0" encoding="utf-8"?><svg viewBox="0 0 100 100" width="100px" height="100px" xmlns="http://www.w3.org/2000/svg"><circle style="stroke: rgb(255, 0, 0); fill: none; stroke-width: 15px;" cx="60" cy="60" r="30" transform="matrix(1, 0, 0, 0.999999, -12.169998, -15.070964)"/></svg>

I’m sure there are many talented designers out there who can design a much more beautiful logo for Deno but when designing it, please keep the 👆history and design goal of the project into consideration.

If you enjoyed this, maybe you like programming is the best job ever. Don’t forget to follow me if you want to get the latest essays as soon as they’re published.