Hacker News new | comments | show | ask | jobs | submit login
It's Playtime - Light Table Playground released (chris-granger.com)
384 points by ibdknox on June 25, 2012 | hide | past | web | favorite | 124 comments

Who thought "It's Playtime" was a better title for this than "Light Table Playground released"? Why does this keep happening to Light Table posts?

Edit: Now "It's playtime - Light Table Playground released", after ibdknox altered the blog title. So... success?

I still think it's ridiculous, though.

I clicked on this when it was still Light Table Playground and that was interesting to me, but "It's Playtime"? What the hell is that? It doesn't tell me anything at all about the article and I only figured it out by clicking on the comments.

I don't see anything wrong with having a title that is different than the source's title if it gives CONTEXT, which it did in this case.

I don't know, but it's starting to make me sad. It doesn't seem to fall under the "editorial spin" guidelines - if anything it was clarification.

Hopefully the mystery will bring more people in? haha ;)

It's either an auto-renaming script or a human with the personality of an auto-renaming script.

My current hypothesis is that it's an individual moderator (perhaps showing off) running a script without official sanction, hence the silence from the admins.

The way the post on the subject[0] was buried without official comment after over 500 upvotes suggests a certain amount of institutional blindness.

[0] http://news.ycombinator.com/item?id=4102013

I think PG did comment on a subsequent post asking why post on subject[0] was taken down. I am not sure if commenting on a soon-to-be-killed post constitutes an official comment though, perhaps it was decided there is no need since according to policy meta-concerns should be dealt with using email.

So instead of having a thread pop up to address meta-concerns, they have to be dealt with privately causing any front page title change to now have 10-20 comments at the top discussing the title change. All the actual discussion about the article is well beneath the fold now

>Hopefully the mystery will bring more people in? haha ;)

I know that's why people use mysterious titles, but trust me - that's done, it's over, it's the old and busted of social news.

It's one of those things that may have worked when social news was new and interesting and still a novelty, and people would click all sorts of stuff wily-nily just to see what neat treasure lies underneath.

But we're all over that, and now what we're dealing with is information overload - how to manage the signal:noise ratio in the information we consume and maximize the signal.

The expectation of informative titles is a key part of that, so all mysterious titles do now now is piss people off for making them click to see what the article was about, instead of just telling them in the submission title, which is what it's for.

You as a submitter (or advertiser, I've seen studies on this for SEM) are much better served writing a concrete, informative title. You may have less clickthroughs (but sometimes more - specifics are very effective), but every single one of them will be someone interested in whatever you linked to (or are selling, in the latter case), more likely to read, buy, participate, etc., and less likely to close the window annoyed at having been tricked into wasting a few seconds and attention on something they don't care about.

This has got to stop. I don't know if the rewriting is getting especially bad lately, or if it's just happening more to the articles I'm reading.

He's already altered the page title to "It's playtime - Light Table Playground released"...can we at least get someone to include the subtitle on HN?

The original title ("Light Table Playground released") was significantly more informative.

Uggh. I'm very interested in LightTable but probably wouldn't have clicked on that one, unless it got to 300 points or so.

The new title is definitely better, imho. I hate titles that keep me guessing about what the article is actually about.

"It's Playtime" has zero informative value. At least with the edit I now know it's about Light Table, and can click or skip as necessary and not waste any cycles guessing, or clicking and finding it's something I'm not interested in.

Uninformative titles are a plague. Concrete titles (and concrete language in general, but that's a whole nother blog post) are always better than vague ones, no matter how catchy, cutesy, or kitschy you may think it is.

If it was intended to prefer the author's title, even "It's playtime - Light Table Playground released" is far better.

To be fair, I added that after it got changed with the hope it might end up reverted :)

I understand you're working fast and it's early.

But not providing hashes and using a two stage downloader and not using ssl and using auto updates and not using code signing means that your app will now be the weakest link in terms of security for all but the worst configured computers.

While it's almost certain no one is targeting you or your users now, that could change when people see such a weakness or could leave people open to local attackers that you'll never have a chance to notice.

It's early and we honestly didn't think down those lines. Ultimately, the deployment mechanism will look different than this, but this was the path of least resistance. At the very least though we can do a few of these things to remove some of the danger - we'll get on it.

Yeah, I am not that exercised about the security risk but it made a really bad first impression. I primarily use Windows, I wouldn't mind so much if I were Unix-based. Also, installing it in my Documents folder under Windows is weird.

On the plus side, I like the prototype itself and will be interested to see where it goes.

To reply to the post you deleted about downvotes...

I didn't downvote you, because I appreciate you bringing up a relevant technical concern.

But sometimes people bring food over to my house and I just eat it. At the alpha stage of development, I think it's reasonable that your option is to not download.

If anyone is going to update their software manually, surely it's going to be HN/code editor users (I know I do). And anyway, it's a preview release that people won't be using as their main editor anyway. Install, play around, uninstall.

Glad I'm not the only one who thought this. I'd appreciate either signed packages or SSL, otherwise this is very, very insecure.

What is a two stage downloader? Serious question :)

The script that you download and execute goes back out to the internet to download the real executable, so it makes it (somewhat) difficult to review beforehand or to make sure you're running the official version

Is there any interesting piece of code that might help me see this working to its true potential? I tried the factorial function expecting it to show all the recursive calls. What can I expect to see here? Call trace over multiple functions?

EDIT: Just tried this , atleast this shows the last calls made to the functions

(defn my-add [a b] (+ a b))

(defn fact[x] (if (<= x 1) 1 (* x (fact (- x 1)) )))

(my-add (fact (my-add 3 3)) (fact (my-add 2 5)))



(defn my-add [||720|| ||5040||] (+ ||720|| ||5040||))

(defn fact[||1||] (if (<= ||1|| 1) 1 (* ||1|| (fact (- ||1|| 1)) )))

(my-add (fact (my-add 3 3)) (fact (my-add 2 5)))|| => 5760||

A little example I've come up with is writing a bunch of tests for a function you are implementing and seeing them automatically executed.

Try to fix fib by changing a, b and i values:

  (defn fib [n]
    (loop [a 1, b 1, i 1]
      (if (= i n)
        (recur b (+ a b) (inc i)))))

  (= (fib 0) 0)
  (= (fib 1) 1)
  (= (fib 2) 1)
  (= (fib 3) 2)
  (= (fib 4) 3)
  (= (fib 10) 55)

Hello world:

(javax.swing.JOptionPane/showMessageDialog nil "Hello World")

A quick search failed me but I am pretty sure my question has been discussing elsewhere, in which case I would appreciate a redirect/summary. Is there a difference between LightTable and Emacs' eval-last-sexp and similar functions? What is LightTable supposed to add? besides support for Clojure.

It's prettier. And it shows parameter expansion in some cases I think. And some day it will have some fancy-ass version of narrow-to-tag (which actually does sound like a real step forward).

Thanks for considering Windows user in this release.

Alas it has issues. I tried to install, with the initial commands not working. Downloaded the script myself, set execution policy and it stated running. Download issues arise (probably due to being behind a proxy requiring authentication) and after a few minutes the script managed to remove itself.

I will try again when I have a real internet connection.

I haven't been able to get it working on Windows 7. After much hoop jumping I've gotten stuck on this error while trying to run the jar:

Exception in thread "main" java.lang.IllegalStateException: Can't change/establish root binding of: warn-on-reflection with set (compiler.clj:1)

Are you running the jar with prod as an arg?

  java -jar lighttable-full.jar prod

Yes. I get the same result with or without the "prod" argument.

I was running it under JRE6... switching to JRE7 got past the error and it is working fine now.

Heads up, just sent an e-mail to feedback, with an error on starting up the system on powershell. Not sure if it's my environment or not.

For me, the issue was trying to load Light Table via the 64-bit version of PowerShell. Switching to the x86 version (and setting the remote code signing) had me working in no time.

I'll check on this, I use 64bit powershell and 64bit jvm.

You first need to allow remote scripts to be executed with: set-executionpolicy remotesigned

Then you have to "Unblock" the downloaded ps1 file (Properties, click Unblock at the bottom).

Next you have to make sure that java.exe is in your path. After that you are good to go!

This line does not appear to be working - any ideas? (new-object System.Net.WebClient).DownloadFile("http://temp2.kodowa.com/playground/light.ps1, "light.ps1")

you can just manually download that script if you need to at the url it uses:


that's what I ended up doing - working fine now :)

First of all, I'm using Linux and it opened on Firefox instead of Chromium.

Secondly, it seemed quite slow, and I can't use Ctrl+Shift+Up to select a paragraph above and Ctrl+Shift+Down to do the same to the paragraph below, like on Emacs.

Either way, the live interpretation of Clojure code looks really great, keep on working and good luck!

It seems as if every single key press, whether or not it affects the output (for example, writing in a comment or hitting enter to reorganize and space out code) causes every single function to be evaluated again.

You can test this out by adding something like this...

(time (+ 1 1))

...and start typing in a comment on a new line and seeing how the elapsed time that is outputted changes on every single key press. Performance optimizations are probably not as important right now, but that's something that can be improved.

Still, as a basic test of the concept, it looks pretty interesting overall and I can see myself using this. As long as the idea is sound, everything else can be improved over time. Keep it up!

For Linux the script is doing "if chrome, else if firefox". Better to use xdg-open.

So it's looking for Chrome, a closed source browser that I'd never use, instead of Chromium. Too bad.

Seems like you can use any browser you'd like by going to: http://localhost:8833/

once the server is up and running.

Thank you, that's cool! How can I kill the server, though?

  light server stop
if you look through the script file, it has a series of options.

  light table
  light server start | stop | restart
  light update [version]
but as far as I can tell it always checks for updates first and will install them before it checks any of the arguments passed.

>So it's looking for Chrome, a closed source browser that I'd never use, instead of Chromium. Too bad.


You are of course free to use or not use anything you like, but the above sounds entitled and self-centered. At this point, who the duck cares if YOU are "never gonna use a closed source browser"?

It's a post about a new editor in a pre-pre-alpha stage. Something like "Seems to be requiring Chrome. Why such a restriction?" would be far better, no entitlement, no open/closed source zealotry, not tied to specific personal preferences regarding source license, etc.

So far the biggest annoyance is truncating results.. It's cute, but not very useful when exploring output.

For example: (.. System (getProperties)) produces a lot of output, and I'd like to look through it to find a property.

Maybe a way to expand the output (like chrome inspector's javascript objects) ?

That said, it's pretty cool, and really interesting.

It works perfectly on mac. Great work Chris, this demo gave me a sense of an Apple product "it just works", i typed in code and immediately it just worked.

Click the full-screen view. While this is of course a purely aesthetic impression, the clean-slate feeling is wonderful.

I somehow fail to see how it does something useful for recursive functions.

Clojure in general prefers the loop/recur construct over real recursion. You still can't see each iteration of the loop, though; perhaps that's what you meant by useful.

anything where there is more than one invocation of a function

I just tried some factorial code... and it just shows the last recursion, but it is still nice that it evaluates on the spot

i'm interested to see his solution here.

how will this development style mesh with infinite loops, and side effect code.

This is really sweet for a beta. If an inner function throws an exception, you should show the exception there, not just next to the toplevel function call.

The server starts up for me with:

> light table

  --- Checking for updates... 
  --- Starting server... (this takes several seconds) 
 nohup: redirecting stderr to stdout
  --- Server up! 
  --- Starting Chrome 
But then I get a blank window in Chrome pointing to http://localhost:8833/. If I reload, it loads forever. I've stopped and started it a few times, and once I got a dark background, another time I got some Clojure code loaded as plain text.

Running this on Ubuntu 12.04 amd64. It happens with OpenJDK (Java 6), OpenJDK (Java 7) and Sun (Java 6).

I ran into this problem as well, killed java and the light app and restarted (./light table) and it worked.

Java being required means this is a complete non-starter for me.

Do you have an ideological or practical opposition? Java is cross-platform enough for it not to be an issue. Are you memory-constrained?

Mostly due to the security risk. Especially on Windows. Even being a software developer (read: not your average computer user) and taking extra precautions (like click-to-run for java use in browsers) I've still gotten hit by malware that takes advantage of security holes in the Java runtime.

I second the exact sentiment on OSX.

And running a VM with linux (or windows, java is as much a pain on either platform) is a lot of effort for running an editor.

As long as it needs java installed, I'm out...

Then disable the java plugin for all your browsers. I think you can even disable java web start.

You could use a virtual machine running Linux for more security.

How would you like them to run clojure, a JVM based language?

There is an official, up-to-date ("within a week or so of milestones on Clojure main") .NET port at https://github.com/clojure/clojure-clr

Maybe once Light Table is somewhat stable, someone can hack it to use ClojureCLR for the benefit of the security-conscious Windows users :)

I really should get involved in open source projects.

I think the issue will be compiling it for the CLR and then distributing it. The current script gets and runs a JAR, but I 'd imagine it would be relatively trivial to modify the script to run the CLR instead - but you'd have to build from the source included in the JAR (if it's all there...)

Haven't had much experience with it myself, it has been a while since I've played with Clojure.

Or simply use [IKVM](http://www.ikvm.net/).

Nice color scheme. Anyone know of a similar theme for emacs?

It's quite similar to Solarized [0] for which there is emacs support [1].

[0] http://ethanschoonover.com/solarized

[1] https://github.com/sellout/emacs-color-theme-solarized

The core Clojure language analyzer is open-source: https://github.com/ibdknox/analyze

actually I don't use any of that anymore. I'm using some hackery around the CLJS analyzer to make it all happen.

Is there an easy way to get the editor to evaluate a different language? It's just I don't really use lisp but would like to try it out properly. I've tried poking about int he ./light script but don't see anything.

Fantastic software by the way. Could really see this having a big impact on a lot of people's development style.

Light Table is also being developed for Javascript and Python; but this alpha/early version is Clojure-only.

I had to install Java on my Ubuntu box to evaluate this, and I am happy about it.

In other words, it worth the effort[1].

Looking forward Python support. See how it will help me compose faster.

[1] http://rootzwiki.com/topic/23008-howto-install-java-7-on-ubu...

Love it. As someone who's only played around with Clojure, it's a wonderful tool for learning / refreshing.

Random, but does anybody know what color scheme his colors are based on? I'd love to crib that for Vim.

They're using CodeMirror for the in-browser editor and that's the default theme: https://github.com/marijnh/CodeMirror2/blob/master/lib/codem...

the parts that affect clojure have been changed a fair bit from the default theme.

Not completely what you are looking for, but I found a Chris Granger inspired vim theme: https://github.com/chmllr/vim-colorscheme-elrodeo

This is great! I'm doing some stuff with SICP in Clojure, and this should be helpful for that.

Btw, I was wondering if Dr. Racket's style of automatic parens-closing by just repeatedly pressing ']' (regardless of '(','{','[') makes anyone else wish other editors supported that feature.

Good to see the progress, Chris. I'm a kickstarter backer and I'm watching this project.

If I ever get any inspirations for LIVEditor (my own live html/css/js editor) I'll give the credits here:


Is it open source at this stage?

(Found the source in the jar file, wondering about publishing modifications.)

Hi, I'm a beginner programmer, I've played around with learning Lisp various time & just started the 4clojure problems. I was having issues getting a nice workflow going & getting diverted with IDE issues etc. This is wonderful. Thanks.

I recommend trying Clooj, it's a simple editor and REPL that requires virtually no setup or configuration, and it provides enough functionality to be useful when working on the 4clojure projects.


Once you start coding, the right side quickly gets cluttered. Maybe functions that get invoked by new code entry on left side should be brighter than non-invoked funcs/macros etc.. Or non-invoked funcs etc. should get dimmer?

I used it and it's not bad at all for a "playtime".

But since I've no idea how to write code in Closure, it's not useful for me.

What I want is a Python version. A Python enabled Light Table would definitely replace Python's REPL for me.

Better start coding!

Not quite, Granger committed to making a Python version in the Kickstarter.

...and got enough funding for it.

The funding floor for Python is the commitment.

I'm really hoping someone makes something similar to this for Vim.

VimClojure https://github.com/vim-scripts/VimClojure is something similar for vim. LightTable seems to focus on showing execution trace which isn't always desirable(a function that delete files, gets file over the network, does a lengthy computation etc). VimClojure provides you completions, repl, looking up doc, going to source etc.

Script hangs on server launch process -- cat server.log yields a NoClassDefFoundError for java/util/concurrent/LinkedTransferQueue.

That's pretty strange - any idea where my machine is borked?

That class was added in Java 7 - maybe you have older Java?

it was compiled for java 6, but should run on 7.. I have no idea what's going on there.

It seems the HTML rendering is not part of this release? I am seeing HTML printed as a string instead of being rendered. Is there something that I am missing? Thanks!

Promising. Already now it's quite useful for studying/debugging algorithms. Looking forward to Python support. Recursive call support would be awesome too.

I wish the instarepl supported doc and source, something all other Clojure REPLs seem to support. I've found both invaluable when working with Clojure.

  (use 'clojure.repl)
  (doc map)

Brilliant, thank you!

Sorry, if this is a dump question, but how I can add some package and then require it in playground?

I'm trying to (require 'http.async.client)

I really love the way, i can test coljuresnippets.

Its really amazing and a really good expirience in debugging!

Tested this on linux and a windowsmachine.

On Windows, is there a way to quit, without deleting the process? - Lighttable get started in the background. Is there a shortcut for shutting down lighttable?

I was highly surprised this worked for Snow Leopard and it being almost 2 releases old.

Nice job.

A fair number of people were still on Snow Leopard (because Lion is a bit of a disaster), so we were very intentional about making that work.

I'm getting this on Snow Leopard (x86):

  --- Checking for updates... 
  --- Starting server... (this takes several seconds) 
  --- Server up! 
  The application cannot be opened because it has an incorrect executable format.
But, hitting localhost:8833 does bring up the app.

I'm seeing the same on my hackintosh (Dell Mini 10v).

> because Lion is a bit of a disaster

How so?

Does anybody know if his color scheme exists for Textmate/Sublime Text?

Nice work, Chris! I can't wait to start learning Clojure with it.

Doesn't work on my iMac (from '11 all software up-to-date). :S

I also got the all-white window on first startup - MB Air with Lion, fwiw.

now it worked when I restarted it. First time it was all white

Perhaps provide some interesting piece of code to look at?

I find this to be a very efficient way to learn clojure :)

I can't wait to try this when I get home. Thanks ibdknox

Everything so far works fanatically. Awesome job.

Tossing us a bone! Thanks!

Nice, works very well....

On windows, I had to run set-executionpolicy Unrestricted since the light.ps1 isn't signed..

A quick off topic question -- this is Java right? I have 2-3 years to catch up on the latest developments, but the font smoothing seems quite nice on OS X. Is this Swing based?

That's REALLY cool.

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