Dev Diary (October 2016)

Corey Montella - 18 Nov 2016

(Eve is a new programming language, and this is our development blog. If you’re new to Eve, start here)

In September, we were busy prepping for the launch of Eve. This work carried over into October, and we released Eve v0.2 on October 28. Thank you to everyone who gave Eve a try and sent us your comments and criticisms. We’ve read hundreds of comments on HN, Reddit, and the mailing list, so November is really focused on how to address these and what the right path forward for Eve is. But first let’s talk more about what we did in October!

Eve alpha v0.2

Again, the biggest news from October was the release of Eve v0.2 (alpha) into the wild. We put up a lot of content on programming.witheve.com explaining our vision, the major highlights of Eve, and some discussion on how we got to where we are. We also made a nice video, showing how we think Eve could be useful in a development context.

Key features demonstrated in this video are:

  • The literate programming environment for Eve - with the Table of Contents, document-like WYSIWYG editing experience, and live application view
  • The inspector -  a debugging tool that lets you introspect and debug your program as it runs. The inspector is discussed more below.
  • Views - allow you to visualize the result of a block below the actual block. So far you can view text and various charts and graphs. We’ll be adding more views in the future. More on this below.
  • State loading - save and load the state of a running Eve application. This is useful in a bug report/debugging scenario. If you encounter a bug, you can save the state of the program and send it to another developer, who will see exactly the state of the application that you see.

Platform

As we teased last month, the Eve platform has moved over to a TypeScript codebase. This was really a tactical move more than anything else. One of the main motivating factors was that with TypeScript we could run Eve in the browser without any setup. Providing a zero friction programming experience is what we are trying to do, and there was a lot of friction with the C runtime. The TS runtime will act as a reference implementation, so Eve can be implemented in other languages and work as a cohesive system.

Roadmap

Let’s take a look at the platform roadmap, which provides a general direction for where we are headed:

  • Milestone 1: Programming for humans (We are here) - This milestone is about the language, semantics, syntax, and editor – the basis of Eve on which everything else will be built. Right now we’re focusing on fleshing out the langauge, building the standard library, defining what it means to work with Eve for a project, figuring out how Eve fits in with existing projects, connecting Eve to different data sources, deploying Eve programs, etc.

  • Milestone 2: The World Scale Computer - Eve is a meant to be a distributed system by default. We’ve left those features out of the 0.2 release, but the next big release will be about how Eve programs scale and distribute to multiple machines.

  • Milestone 3: Computation for all - This final milestone is the furthest out, requiring us to revisit our experimental work in end-user computing, and turning that into a real product for non-programmers. We’ve explored many ideas here, some more promising than others, but we still don’t have the right answer for what this looks like. So, we’ll be doing a lot more research before we can complete this milestone. One thing to note here is that we’re not calling this milestone “programming for all”. That’s intentional, for two reasons:

     1. We don’t believe a product like this will resemble programming as it exists today. Will it be graphs? A grid? A wiki? We’re not sure, but it will be exciting to find out.

     2. Most people don’t actually want to program. We don’t anticipate that the general population will want to use Eve to write traditional applications. Instead, we think Eve will be appealing to them for its ability to aggregate, transform, and distribute data to answer questions. Today, these are tasks you have need an experienced developer to accomplish. We don’t think it has to be that way.

Editor

The biggest changes to the platform were in the editor. We’ve already looked at the table of contents and the editing experience, which have been polished a little more since September. Let’s look at some other changes though:

The Inspector

The inspector is activated via the magic wand icon at the top of the editor. This toggles inspection mode, which allows you to click on any block in your program or element in your application, and get some info about it.

Eve Inspector

The inspector tool is a sort of one-stop-shop for all your debugging needs. If an area of your program isn’t displaying, the inspector can tell you why. If you see too many elements (or too few), the inspector will tell you how they came to be. If your program is running slowly, the inspector will tell you which blocks are consuming the most processing time:

Performance

Views

Up to this point we’ve been using bind @browser [#div text] as a sort of console.log() for Eve. This process is pretty antithetical to Eve, when you think about it. First, we’ve known for a long time now that drawing the result of a computation spatially near the computation is very powerful for debugging. Second, many things you don’t want to visualize as text. You can’t console.log() a bar-graph, for example. Enter views. Views are a way to visualize a block’s output right under the block itself. By writing data into the @view database, you can visualize it as chart, or even a time-series:

data over time

And of course we support plain text views:

Text view

The nice thing about both the inspector and views is that they are implemented entirely in Eve! The following links open in the Eve editor:

Community

First, I’d like to say the response to Eve has been fantastic. The mailing list has seen a lot more activity and a 30% increase in membership since the launch, which is great. Beyond the volume though, we’ve also gotten some very detailed and thorough proposals, comments, pull requests, and bug reports. Hopefully we can keep up this momentum, so spread the word!

Handbook

The Eve handbook has been moved to docs.witheve.com. The style now matches the Eve editor more closely, and you can now start to imagine how docs and Eve can work side by side. As always, there is an endless amount of work to do here, so keeping the docs up to date will be an ongoing process. If you find any docs that are missing, outdated, or insufficient, please let us know by submitting an issue here: https://github.com/witheve/docs/issues.

Eve Around the Web

We made a little splash on the web that generated some discussions and stories. Here are the launch day discussion threads:

And even better, some user-generated videos and blogs about Eve! These were fascinating to read and watch, so thanks everyone for taking the time to make these.