Hacker News new | comments | ask | show | jobs | submit login
Light Table Playground Levels Up (chris-granger.com)
179 points by ibdthor on July 9, 2012 | hide | past | web | favorite | 53 comments

I don't mean to crap on this fresh out of the gate, but can you include a glossary that connects all the marketing-slang to the common concepts that they represent? Frankly, I barely have any idea what you're talking about over 2/3s of this post, and a lot of it smells like a coffeehouse-MBA. Sorry, only my opinion!

The most exciting addition to the playground is the ability to use your own projects as the context for the Instarepl. You do this by using the lein-light leiningen plugin. Just run lein light from one of your projects and use the sidebar's connect verb to hook into it.

A friendly (honestly!) tip about writing tutorials and helptext in general: the word "just" usually means it would be better to describe the actual steps to be taken. Think of it as a code-smell or a misplaced abstraction.

I know LT has community support and I might just be an odd man out, but the writing here is highly targeted toward initiates. Perhaps intentionally to further foster a subculture, or perhaps out of laziness, I don't know, but it's frustrating to read.

I don't see any marketing speak, but there's a lot of Clojure terminology. If you're not familiar with Clojure I can see how this could be annoying.

REPL: read/eval/print/loop (think irb from Ruby, although there's more to it). http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print...

Instarepl: A portmanteau of instant and REPL, meaning a REPL that evaluates immediately as you type.

"context for the Instarepl": essentially the namespace in which the REPL executes, meaning that if you run lein-light inside your project folder you can get access to your project's functions inside LightTable.

leiningen: Clojure's most popular build tool and vector for plugins that enhance the build cycle. https://github.com/technomancy/leiningen/

Think about getting people to use your project/app/tool as a funnel:

targeted industry -> people who are exposed to it -> people who actually investigate it -> people who actually download it -> people who actually try it once downloading it -> people who continue to use it.

You want to get as many people to that last step as possible. Unless you only care about getting closure people, appealing to a wider base will help adoption and broadening the base vocabulary is the first step.

Right now this is only appealing to closure people, and statistically only a small subset will actually go through the trouble of giving it a try. An even smaller number of people will switch to it full time. Considering mainstream development doesn't happen in closure (yet), your first part of the funnel is already pretty freakin' small.

Just my $0.02.

I agree with the funnel analogy, but I would like to point out that this release was an upgrade of the existing playground. Our purpose here was certainly not to feel exclusive or to narrow the funnel, it was to add certain features to the playground that had been requested by a large portion of our users. These playground updates are very early alpha testing - the goal is to have frequent updates to test many different features so when v1.0.0 drops, the funnel will be as wide as possible.

"Unless you only care about getting closure people,"

Uh, Light Table is an IDE for clojure.

You're right, but I always understood that Light would support multiple languages. The Kickstarter site mentions "The first two languages it will support are Javascript and Clojure, but the application will be written in such a way that adding new languages can happen through plugins." And I think Python will be the third based on contributions. So it's good not to discourage people that aren't using clojure.

True, but it's probably a lot easier to build an IDE by concentrating on supporting one language, at least in the beginning, and thinking about support for other languages later on. Don't forget that this is not even an alpha version of Light Table yet. This is simply a demo, showing us what we might expect. I have no doubt that both JavaScript and Python will be supported in the final version of LT.

I think what alttab was saying is that you should still post updates without assuming you're just talking to a bunch of clojure aficionados.

E.g., I'm somewhat interested in LT but for the other languages. I'm curious enough to check out the odd blog post now and then, but if it's all gibberish, I won't come back and may lose track of the project and miss the other language support when it does land.

Nailed it sir.

Yeah, there's a ton to learn about how all this should and needs to work. Spreading ourselves across supporting the basics of multiple languages this early means our rate of learning decreases dramatically. We're using Clojure to prove a bunch of assumptions because it's the easiest to support quickly and so far it's been great. Our first goal is to build the best Clojure env out there and then move from that solid base into everything else.

I think that might be a mistake in strategy. If what you posit is true, that means they're going to have to re-invent their way of talking about the interface and usage for each language, though probably they would start to settle their terminology on the third or fourth reinvention. If this is so, that means they're actually wasting energy now in tying the app story to Clojure concepts.

This is true. The story might break with ruby or JS, and no doubt the abstractions and assumptions of the behavior of how the programming language works will break the minute you go to a different execution model.

It's a tightrope, for sure, and it can be hard to see when you're in the middle of it.

I was under the impression they were going to add support for both Python and JavaScript as well.

We will :)

That's Clojure, not closure.

I agree with you, though.

> coffeehouse-MBA


IMO, you have to consider the audience. Chris probably hasn't had time to build any kind of glossary for 'marketing-slang'. He's probably spent most of his time building the functionality that the new version of LT is displaying today.

The line you highlighted can make plenty of sense if you take the time to think about what each word means. There is no instant gratification for understanding.

What do I mean by that? Google 'REPL' and take the time to learn what that concept means. Do some research and play around with leiningen. I'm really not trying to be rude, but do you know what type of developers LT is aimed at right now? hint: clojure


I'm about as far away from a "coffeehouse-MBA" as you can be haha :D Sorry though, the point wasn't to inundate people with things they didn't have the context to understand.

One thing to keep in mind is that this is an update to something already released, and terms like "Instarepl" were introduced there. Likewise, the playground itself is really only useful to people who either do Clojure or are interested in trying it out. The post contains links to things like Leiningen as that is likely new to folks starting out with Clojure, but aside from that I don't see many other Clojure specific things. Maybe it's worth reintroducing some terms every time, but I worry that serves as an equal annoyance to those who've already heard it all before.

What do you see as marketing-slang? And are there other things that made it frustrating to read?

I disagree. It reads perfectly fine to me, and the terms I was unfamiliar with were defined before usage (the "sidebar" and "verbs" for instance). Although I'm familiar with Clojure, I haven't been following Light Table especially closely.

You're apparently not alone though, so it's probably a good idea to make the writeups more readable to non-Clojurians.

You're not the only one. I actually stopped reading and came here to read comments hoping to get a better idea.

> can you include a glossary that connects all the marketing-slang to the common concepts that they represent?

What you are calling "marketing slang" are actually "common concepts". The definition of common is highly context dependent. Here, the common concepts are what is known by a clojure programmer.

> and a lot of it smells like a coffeehouse-MBA >> The most exciting addition to the playground is the ability to use your own projects as the context for the Instarepl. You do this by using the lein-light leiningen plugin. Just run lein light from one of your projects and use the sidebar's connect verb to hook into it.

What kind of MBAs you hang out with who know what is REPL, leiningen, plugin etc, and use it in the copy-writing?

> A friendly (honestly!) tip about writing tutorials and helptext in general: the word "just" usually means it would be better to describe the actual steps to be taken. Think of it as a code-smell or a misplaced abstraction.

So, every time he posts an update, he explains what is a REPL, leiningen, how to install leiningen, what is lein-light, how to install lein-light, what is clojure, how to install clojure?

You just run lein light is perfectly reasonable. Had he gone into details about leiningen, that would have been fluff and totally unnecessary.

LightTable is an IDE which right now is being developed for Clojure. If you don't know Clojure, you are't the target audience. I can assure you there isn't anything in the post which isn't obvious to a clojure programmer.

He means MBA like "Mac Book Air".

This is great, I have been using Light Table along side Clojure Programming and The Clojure Way and it has been invaluable. I am easily able to interact with Clojure without falling over setting a dev environment up, and this just makes it even better.

Is there a way to save files?

I've actually started learning Clojure and finally started understanding Lisp (like) languages because of this. Clojure is quite the shift from my normal toolkit of Ruby, Obj-C and PHP, but it's extremely enjoyable (though light in online documentation at times).

Though, my normal development machine is down for the day and I'm stuck on my CoreDuo 32-bit MacBook Pro. I might be a bit of an edge case here, but no where on the site does it mention that the Light Table.app executable only has a 64-bit binary inside rendering it useless on this machine. Maybe as a kind notice you could mention such a requirement?

Very cool! Running into an issue installing lein-light though. Are the jars not posted yet maybe? gist here: https://gist.github.com/3078428

Yeah screwed up in some renaming. Try lein-light 0.0.4

I'm having a similar issue, but I already tried 0.0.4, this is what I got, it seems it can't find clojure 1.5.0 jar.


You might've gotten one of my intermediates somehow.

rm -r ~/.m2/repository/lein-light ~/.m2/repository/ibdknox

Still getting the same error here as well with 0.0.4

I've installed it for the very first time, and it is pretty cool! I've dabbled in Clojure before, and the mention of Leiningen in the context of Light Field worried me a bit (getting Clojure, Leiningen, etc working on my Linux system was quite a chore).

However, installation of Light Field was a breeze and I'm puttering around. Links to basic how tos would be more helpful, and I'm sure you'll be getting to that. But for now, thanks, it is looking awesome!

  > getting Clojure, Leiningen, etc working on my Linux
  > system was quite a chore
Can you elaborate on that? Tooling and set-up used to be one of Clojure's big weaknesses; they are less so now. On Ubuntu, for instance, it shouldn't be much more than

  $ sudo apt-get install leiningen
  $ lein new my-proj
What went wrong?

It was some time ago (8 months or so). I remember googling around and finding different approaches to setting up the tool chain. The notes I kept on some of the steps I tried to get Clojure working on emacs included the following (not the whole list of commands):

Setting up Clojure

Followed the gist of http://riddell.us/ClojureSwankLeiningenWithEmacsOnLinux.html (no longer existing) The first time, invoking 'mvn2 install' to build clojure-contrib jar failed. Later, after cleaning up Java, it worked.

Java was already installed, so I apt-get installed ant and maven2

  ~$ git clone git://github.com/clojure/clojure.git
  ~$ git clone git://github.com/clojure/clojure-contrib.git 
  ~$ mvn install
  Copy jline-0.0.94.jar
Create a bash script called clj to start clojure with these commands:

  # without jline
  #java -cp "$CLOJURE_HOME/clojure-1.3.0.jar" clojure.main "$@"
  # with jline
  java -cp "$CLOJURE_HOME/jline-0.9.94.jar:$CLOJURE_HOME/clojure-1.4.0.jar" jline.ConsoleRunner clojure.main
Running clj in the terminal worked, with the repl functioning as expected.

For emacs:

  ~$ sudo apt-get install emacs-snapshot-gtk
SLIME, clojure-mode and leiningen

  git clone git://github.com/nablaone/slime.git
  git clone git://github.com/technomancy/clojure-mode.git
  ~$ wget --no-check-certificate http://github.com/technomancy/leiningen/raw/stable/bin/lein
Execute the leiningen script

  ~$ chmod +x lein
  ~$ ./lein self-install
For some reason, this didn't work in emacs and I opted instead to run Clojure in jEdit. It worked but I didn't quite like the jEdit look and feel. Anyway, the long and the short of it was I played with Clojure mainly in jEdit for a while.

As you said, the setup process was not well documented at that time and it was quite frustrating. I'm sure it's better now. I'm going to play with Clojure in Light Table again, and if it excites me, I'll have another go at a full Clojure install.

  > As you said, the setup process was not well documented at
  > that time and it was quite frustrating. I'm sure it's
  > better now.
As a matter of fact, it was much better than that 8 months ago, but the improvements took a while to become common knowledge. This is a massive problem with Clojure -- there's way too much outdated information out there.

For your sanity's sake: don't mess with manual Clojure installation etc. Just use leiningen for everything. It pulls in the Clojure compiler and runtime on its own, offers a much more useful REPL, and even handles Emacs integration these days. In conjunction with package.el/Emacs24, there's not a single thing you have to install manually.

https://github.com/technomancy/swank-clojure \\ https://github.com/technomancy/leiningen

You were absolutely right. I've got leiningen running in one swat (sudo apt-get install leiningen). Will mosey out to get clojure-swank running on emacs next. :)

Thank you, I greatly appreciate your time and help. I will follow your suggestions which sound an awful lot more simple.

I've really enjoyed using light table.

I spent a few solid days using it while implementing a spreadsheet into a webapp (I wrote the algorithm in clojure and then migrated to clojurescript).

Immediate feedback and live tests felt natural.

Given my clojure is rusty it was helpful to be able to see how functions work with little test cases.

The lein plugin is a nice addition. I'm looking forward to seeing it trigger a refresh when project source files change.

I just tried this out with a project I'm working on. Finally upgraded to Leiningen 2 as well. In all, took about 3 minutes to get everything setup!

I'm just loving this instarepl. The most direct benefit for now is having a few of the function calls I'm testing all be there so I can interact with the program live. And have all the (use ... :reload-all) calls also setup.

I'll sign up with Github to post this bug if it actually is a bug and not just my ignorance, but this is still not working from the original release:

(ns foo.bar (:import (java.io File)))

I get a RuntimeException "EOF while reading".

It works from a regular repl and it's the first line in a project I wrote a while ago - so having Lighttable fail almost immediately for no obvious reason is leaving a bad taste.

Also the installation/updating was quirky and broke three times (downloaded it fully twice), and it launches Firefox, which gives me a blank+grey screen so I have to launch Chromium and that works well.

Does this fail for anybody else? Are there any other issues I should be skirting at the moment? I haven't encountered any others.

I've looked, but is there a better forum for Lighttable than the comments section of hacker news?

Love what I've seen so far.

I'm not entirely sure how you're supposed to use the lein-light plugin, though. I start light table, then run 'lein light' from a dummy lein project directory. I seem to be able to connect to the project via light table without any complaining, but then nothing happens. I'm unable to find any of my project namespaces from within light table.

Am I doing it wrong, or did I break something?

I'm having the same problem. It looks like we're not the only ones: https://github.com/Kodowa/Light-Table-Playground/issues/13

I'm on macosx 10.7. Perhaps it works better for Linux users?

Ok, since my previous post, ibdknox posted a comment in the issue. It was working all along. Once you have connected with "lein light", you should then be able to reference namespaces in your project from the instarepl.

I was seeing this under Ubuntu 11.10.

I don't know where to submit bug reports so i'll just write it here.

The "instarepl" stops evaluating all code as soon as there any what i'm guessing non ASCII characters in the buffer, even when they are inside strings.


  (println "Some string with umlaut åäö")
Will stop the instarepl from evaluating, and there is no error.

Running the install script installs and starts the old version. Might wanna fix that?

edit: It just keept saying version 0.0.8 is availible for me until i ran table update 0.0.8. Just running light table looked for updates but didnt find any. When i finaly got the 0.0.8 version it greeted me welcomme to 0.0.7 :-)

If you get stuck at "waiting for server", make sure you're not using Java 7. I installed it yesterday to play with Google Collide and light table wasn't working.

Light Table is better than collide anyway :-P

What programming language was used to make Light Table?

Clojure and ClojureScript

Was ClojureScript really used? For what?

It still doesn't work on my Chrome on Ubuntu :(

[edit] worked by deleting ~/.lighttable and trying again

Is there any chance that V .8 or V.9 will support Javascript?

I'd love to have any info on this as well. I tried learning a little clojure to mess with light table, and I loved it. Aching to have instant feedback from my js too.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact