
It's Playtime - Light Table Playground released - ibdknox
http://www.chris-granger.com/2012/06/24/its-playtime/
======
Cushman
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.

~~~
ibdknox
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 ;)

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

~~~
Cushman
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>

~~~
why-el
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.

~~~
JoeCortopassi
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

------
trotsky
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.

~~~
ibdknox
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.

~~~
anigbrowl
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.

------
alokm
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)))

\---------------

OUTPUT

(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||

~~~
lmarinho
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)
            a
            (recur b (+ a b) (inc i)))))
    
      (= (fib 0) 0)
      (= (fib 1) 1)
      (= (fib 2) 1)
      (= (fib 3) 2)
      (= (fib 4) 3)
      (= (fib 10) 55)

------
why-el
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.

~~~
leif
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).

------
mey
Thanks for considering Windows user in this release.

~~~
mey
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.

~~~
madsushi
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.

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

------
munchor
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!

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

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

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

once the server is up and running.

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

~~~
jurjenh

      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.

------
pyrhho
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.

------
jasonjackson
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.

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

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

~~~
kaonashi
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.

~~~
lispm
anything where there is more than one invocation of a function

------
nyellin
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.

------
lucian1900
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).

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

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

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

~~~
freyday
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.

~~~
cnf
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...

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

~~~
jkbr
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>

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

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

------
_feda_
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.

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

------
tzury
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...](http://rootzwiki.com/topic/23008-howto-install-java-7-on-ubuntu-1204/)

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

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

~~~
mapleoin
They're using CodeMirror for the in-browser editor and that's the default
theme:
[https://github.com/marijnh/CodeMirror2/blob/master/lib/codem...](https://github.com/marijnh/CodeMirror2/blob/master/lib/codemirror.css)

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

------
gnarmis
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.

------
edwinyzh
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:

<http://liveditor.com/credits.html>

------
Estragon
Is it open source at this stage?

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

------
camelite
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.

~~~
vosper
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.

<https://github.com/arthuredelstein/clooj/>

------
greggaree
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?

------
ya3r
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.

~~~
jfoutz
Better start coding!

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

~~~
Luyt
...and got enough funding for it.

~~~
heretohelp
The funding floor for Python is the commitment.

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

~~~
irahul
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.

------
mrdmnd
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?

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

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

------
wildfennecfox
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!

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

------
arkx
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.

~~~
ibdknox

      (use 'clojure.repl)
      (doc map)

~~~
arkx
Brilliant, thank you!

------
Suor
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)

------
addisaden
I really love the way, i can test coljuresnippets.

Its really amazing and a really good expirience in debugging!

~~~
addisaden
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?

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

Nice job.

~~~
ibdknox
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.

~~~
wiredfool
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.

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

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

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

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

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

------
tlear
Perhaps provide some interesting piece of code to look at?

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

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

------
taylorlapeyre
Everything so far works fanatically. Awesome job.

------
hoprocker
Tossing us a bone! Thanks!

------
boggzPit
Nice, works very well....

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

------
batista
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?

------
tubbo
That's REALLY cool.

