The Perfect Storm

In my previous post I talked about thoughts I’ve been having and a change in direction I’ve been considering.  In the three weeks that passed since writing this post I was busy researching the Clojure ecosystem for things I could use, to validate or invalidate this direction.  This felt like “the perfect storm” — ideas popping up and crashing down.  I came to learn a lot of new things and came to respect the immense amount of work done by the  Clojure community in recent years, and the deep thought that was put into this work.  Today, while I don’t yet have all the pieces figured out, I know, thanks to this community, what I want to achieve is feasible and achievable.

In this blog post I’ll capture my design ideas for what I currently call Cloudlog.clj.

Read More »


Recalculating Route

Doing a PhD is an iterative process of doing something you believe in, questioning your belief and adjusting what you do so that you continue doing something you believe in.  This is similar to driving with a navigational app.  You start with some route it calculated at first, but then some unexpected traffic starts to accumulate, and the app  recalculates route for you.  This happened to me several times so far during my PhD, and it’s happening right now as well.

Read More »

Cloudalion Monthly Report – Oct ’16

As it has been about a month since my last progress report, I decided to make it tradition to post monthly updates on progress in the development of Cedalion2, as well as in other fronts.

During September I made some progress in the development of Cedalion2, namely in implementing much of its editing logic, and made some preparations towards my participation in SPLASH 2016.  I’m dedicating this post to both topics.

Read More »

C++ is a Dynamic, Pure, Functional Programming Language

I haven’t blogged for a while.  I recently submitted a paper I’ve been working on for some time and I find it hard to “multitask writing”.  It’s like the part of my brain responsible for writing (as opposed to programming or other stuff) cannot do two things at the same time.

Apart from writing this new paper I’ve been working on presentations for the SPLASH 2016 conference, in which I’m presenting three different things (a poster, a demo about Cloudlog and a workshop paper on Cedalion).  I will write about all of those sometime before the conference.

… and of-course, I’m also working on cedalion2.  Stay tuned for updates…

But today I want to write about something completely unrelated I came across recently.  I’ve been using C++ practically all my professional life.  I learned it from a book (in Hebrew) even before I learned C…

I don’t like C++ very much.  If you learned anything from my blog so far, I’m more into declarative languages, and if they have to be imperative, I prefer those where I cannot create buffer overruns by mistake, or use an allocation that has already been freed.  But somehow my professional career went a certain way and I came to use C++ for most of it.

For most of my time working with C++ I knew there was more to it than meets the eye.  But until I went there and checked for myself I didn’t realize how cool it can be.  In this post I’ll give a taste of C++, but not the way you (probably) know it.  Most people know it as an imperative, statically typed, eagercompiled object-oriented programming language.  In this post I’ll show you why it is a declarative, dynamically typed, lazyinterpreted functional programming language.

Read More »

A New Cedalion Workbench

Yesterday I decided to go forward with an ambitious plan to implement a new workbench for the Cedalion language.  I even posted this tweet:

This move is a major one.  Up until today, the Cedalion language was inseparable from its Eclipse-based editor. With this new project, there will be two different editors capable of editing Cedalion code.  At some point, the Eclipse-based one will be deprecated and only the Web-based one will be supported.

In this post I’d like to explain this decision, including some of the design considerations.

Read More »

What’s the Deal with Projectional Editing?

If you read my previous posts here or saw some of my Cedalion videos, you probably understand that the Cedalion programming language is different than most other languages.  It is different in how it treats syntax, and in how it relates to editing.  In this post I will elaborate about this different approach, named projectional editing, why it was chosen for Cedalion and what it means for you if you want to use Cedalion.

Read More »

Your App Defined, not Implemented

At the end of my previous post, I think I lost most of the readers when I compared Web applications to DSLs, and then talked about implementing them as external or internal DSLs.  For people with no actual experience with implementing DSLs this comparison is probably hard, and especially the distinction between internal and external DSLs.  I remember having long conversations with fellow DSL researchers not agreeing if a certain DSL framework works with external or internal DSLs.  So if I lost you  there, don’t feel bad.  It’s on me.

In this post I am going to demonstrate this equivalence between DSLs and Web apps by defining the logic of a simple Web application using Cedalion — a language designed to host DSLs.  We are not going to implement a Web application here.  Unfortunately, no actual application will come out of this exercise, but with a bit of imagination this exercise will demonstrate what the goal of my research is: I want Web applications to be as easy to implement as this!

Read More »