
Eve Dev Diary (August 2016) - doty
http://incidentalcomplexity.com/2016/08/31/august/
======
Dobbs
I was really confused when I saw this that the Eve Dev Blogs,
[https://community.eveonline.com/news/dev-
blogs/](https://community.eveonline.com/news/dev-blogs/), were being posted on
HN. For others this is a new programming language called Eve and is completely
unrelated to the video game Eve.

~~~
cjslep
Here I was hoping others were getting as excited about clone states (free to
play) as I was.

------
ZenoArrow
What's interesting to me is that the more Eve develops the more it seems to be
returning to its LightTable roots. This isn't a bad thing, there's still
plenty of life in the LightTable approach, but my impression of Eve before was
that it was designed to be a tool that non-programmers would use. Based on
this latest blog post, it appears that may be of less importance. I still hope
Eve continues to develop in its current direction, I'd like to see how the
immediate feedback and flexibility of Eve can continue to be refined.

~~~
logicallee
A programming language that non-programmers can use is like a written language
that illiterate people can read: it's an oxymoron. (The minute you can use it,
you're a "programmer"; the minute you can read, you're "literate")

~~~
ModernMech
Not everyone who writes is necessarily a writer. In the same vein, not
everyone who wants to tell a computer what to do wants to be a programmer.

~~~
logicallee
but when people say "that non-programmers can use" they don't mean "that
people whose job title isn't 'programmer' can use." They mean "that people who
can't program can use." it's a bit confusing and I suppose I could be wrong.
(They could mean "people whose job title isn't 'programmer.'")

~~~
MichaelBurge
Somebody who makes a spreadsheet is telling a computer what to do. Are
advanced users of Excel programmers?

Businesses occasionally express the business rules in the form of spreadsheets
to be directly implemented into code.

Spreadsheets even double as unit tests.

~~~
falcor84
> Are advanced users of Excel programmers? Yes.

Edit: here's a previous discussion about a Turing Machine in excel -
[https://news.ycombinator.com/item?id=6416631](https://news.ycombinator.com/item?id=6416631)

------
mej10
You can do the same style of programming using the ClojureScript libraries
reagent/posh/re-frame/datascript. Why not just use those?

It isn't clear to me what Eve offers that those don't.

~~~
mintplant
To me your comment reads like the infamous "why not use FTP and this
hodgepodge of CLI tools" comment on the original Show HN for Dropbox. Eve is
trying to bring everything together into a unified, standalone package, with
the goal of being more accessible to non-specialist developers (think people
who write Excel macros).

[http://www.witheve.com/](http://www.witheve.com/)

~~~
mej10
Hmm, I don't think the situations are even remotely comparable when you look
at the actual projects.

With Eve, you still have to learn their home-grown programming language. That
is non-trivial. If you didn't have to learn a completely new programming
language along with its own non-standard terminology and idiosyncrasies then I
would agree.

I am aware of what they are trying to do -- I've been following the team for
the last 4 years. I liked their approach of starting from first principles,
but at some point they lost the plot.

~~~
ibdknox
Out of curiosity, would you say the same thing about Clojure? It's also a
home-grown language with its own non-standard terminology that is non-trivial
to learn. Any fundamentally interesting change in programming will fit that
description. Rust, Go, even Typescript, add a bevy of new syntax constructs
and a whole set of terminology that isn't shared with other languages
(borrowing, type definition files, goroutines). Every library brings with it
new semantics and new terminology to deal with. It's not like datascript is
inherently obvious to folks.

The important bit from that line of thinking is that there's a cost to
adopting it and the benefits have to outweigh that cost. We haven't talked
much about what those benefits are, so I get where you're coming from - it may
indeed look like we've "lost the plot." :) Most of our content is geared
toward people who are already interested in what we're doing and want to
follow along with the work. It's very much not a pitch at the moment, that
will be coming in a couple of months. You can pick up on some of it from what
we _have_ shown though:

\- Eve programs are naturally tiny (no tricks/golfing/epic one liners). The
CLJS libs you mentioned all have TodoMVC implementations that are ~5x as large
as Eve's (just 63 lines!).

\- There's no incidental ordering in the language, which means you're free to
organize your program however you want. As a result, it enables truly literate
programming.

\- Another result of a lack of ordering is that programs grow very organically
through composition. Want to react to an event on a thing someone else
created? Write a block that matches for it. Want to add some fake data into
the system? No changes needed, add a block that adds some data. Want to
visualize where all the active users are in your app? Write a block anywhere.

\- Eve programs aren't talking to a database, they _are_ the database. That
means no plumbing, no impedance mismatch, and no extra infrastructure is
needed. A practical example of this from one of my tweets[1]: I can take our
todomvc add three @global tokens (changed from "all") and we now share todo
lists. No server setup, no client->server transport, etc.

\- Eve's semantics were built for concurrency, asynchrony, and distribution.
There are no promises, or thread synchronizations, or borrows.

\- Correctness can be defined globally through integrity constraints, allowing
people to safely contribute to an application without worrying about checking
every possible invariant locally. No more null checks and Joey can't check
something in late at night that allows people to have a negative salary.

\- _Everything_ is data. The file system, http requests, the DOM... That means
everything can be queried and everything can be reacted to. Want to be alerted
when the machine you're on is running low on memory? Write a match against the
machine's memory and commit an email when it dips below a certain threshold.
Want to know how many open http requests there are? It's just a query away.
With no indexing, no passing things around, no real effort at all, you can ask
any question about your system you want.

\- Since everything is data, we can provide amazing tools. A very simple
example here: [2].

Excitingly, the list continues on, we're just focusing on making Eve a lot
more real before we tell people about it. It's up to us to prove and
communicate what Eve brings to the table and we're taking that very seriously.
My blog post about Light Table was never meant to be a big deal - I did it on
a whim. Eve, on the other hand, is deliberate, well researched, and well
grounded. As you suggest, it will take a lot to convince folks that there's a
net gain to the switch and so we're collecting lots of evidence. Amusingly
enough, in some ways we're actually returning to the original "plot" \- one of
the demos I want to do in October is a recreation of the LT demo. We finally
have a language with the semantics necessary to fulfill that vision. :)

[1]:
[https://twitter.com/ibdknox/status/755450540104884224](https://twitter.com/ibdknox/status/755450540104884224)
[2]:
[https://twitter.com/ibdknox/status/760963855296016384](https://twitter.com/ibdknox/status/760963855296016384)

~~~
mej10
Thanks for the response.

> Out of curiosity, would you say the same thing about Clojure? ...

Fair enough. :)

What is the largest thing you've written in Eve? I've found that Clojure
strikes an amazing balance between semantics that help you reason clearly
about problems and the flexibility to do things that the language creators
didn't imagine. I guess I just haven't seen that with Eve.

However! If you tell me to stay hopeful about Eve, I will. :)

------
sixbrx
I was really hoping to see more happen in line with the interactive database
querying tools and demos. Slicing and dicing data, some simple analytics,
maybe a little about how to get the data in and out to/from other systems.
Something to show that it's almost at a practically usable point - then I'd be
on board.

That's the kind of thing I could use _now_ for my projects, but I get the idea
that it's not the focus, with this new effort on the programming language. I
was really a bit shocked and disappointed to see Flappy Bird to tell the
truth, I felt that the project has maybe lost its focus.

After some reflection, it makes _some_ sense, because I guess it's showing how
the database is used for state in the background, so it's showing the close
integration that's possible. OK cool - now please back to the data
exploration/querying/analytics focus!

------
avindroth
I tried to read the documentation, but I didn't quite get it.

What would I use Eve for?

