
Light Table reaches 0.1.0 - Mariel
http://www.chris-granger.com/2012/08/17/light-table-reaches-010/
======
techtalsky
A lot of people are mentioning Python support. I just wanted to put in my vote
that Python support will be the thing that gets me to download and try this.
It looks awesome but it'll be so much easier for me to relate to if there's a
supported language I'm already productive in. I'd like to learn some lisp-
likes, but learning a new and innovative IDE at the same time is a bit more to
bite off than I have for at one time.

~~~
Swizec
What languages are supported right now? I keep forgetting and all the images
are showing clojure.

Anyone know if there's any plans for haskell?

~~~
tsumnia
I believe the first supported languages will be Clojure and Javascript,
followed by Python.

------
shadowfiend
It's awesome how similar some of this looks to Smalltalk IDEs, with some bonus
improvements. It's true that it's high time someone picked up the baton on the
concepts they pushed, and I'm pumped to see that Light Table is picking up
that baton and running with it to present even more interesting possibilities.

~~~
norswap
I hope you are wrong, because I find Smalltalk IDEs infuriating. Mostly I
dislike the fact I have to either make 10 click to reach any code I want to
see, or manage a large number of annoying windows to keep track of what I'm
working on.

~~~
tdrgabi
I don't know why you're downvoted. I think you're right.

There are lots of windows you have to drag around all the time and click in
many places to get to some code.

~~~
rbanffy
Much like when you complain about parenthesis in Lisp, if you complain about
windows in Smalltalk (or key combinations on Emacs) you are probably focusing
your attention on the wrong thing. Stop fighting the environment. Let it flow
around you.

~~~
ezy
I don't think this type of argument carries much weight. Just because one can
get used to something, doesn't really make it a clear choice.

All of these environments are good choices for many reasons. However, they
aren't without major flaws.

Smalltalk environments do tend to be a bear when following the code around
window after window, emacs keychords are not very human friendly or composable
and can give you RSI, and lisp parentheses are mainly for the convenience of
the language parser, not for the programmer (contrary to the famous quote).

~~~
yoklov
While I don't disagree on your other points, lisp's parentheses aren't just
for the convenience of the parser, they're also for the convenience of the
programmer who uses macros. Homoiconicity is a huge boon there.

Try using another language which allows macros and you'll see what I mean. For
example, Haxe allows macros, and while it's syntax for them has recently
improved, it still has a ways to go. Here's an example macro which checks if
its argument is a constant string, and if it is, reads the file it represents.
<http://haxe.org/manual/macros/#manipulating-expressions>

edit: The equivalent in clojure would be something like

    
    
        (defmacro get-file-contents [s]
          (if-not (string? s)
            (throw (Exception. "Expected string"))
            (slurp s)))
    

Which happens to look very similar to a function that does the same thing, but
at runtime instead of at compile time.

~~~
Raphael_Amiard
The haxe macro reads the file at runtime. Your clojure macro reads the file at
compile-time. The proper version would be :

    
    
        (defmacro get-file-contents [s]
          (if-not (string? s)
            (throw (Exception. "Expected string"))
            `(slurp ~s)))

~~~
yoklov
Nope, the Haxe program reads and includes the file at compile time, but only
if it's a string literal. If it's an expression that evaluates to a string
(which only works if you have static typing, as Haxe does), it reads it at
runtime. If its neither it fails.

------
kamaal
Some comments in this thread are hilarious. Light Table is a modern IDE meant
to demonstrate some cool concepts that belong to this time. And people are
asking can if they can have vim and emacs bindings.

If all you want is vim or emacs, then use vim or emacs. What is the whole
point is asking Light Table to behave like them?

Light Table is supposed to bring in new ways of developing software. Dragging
ancient usability concepts just because a few can't work with anything else
isn't how you build a new product.

~~~
breckinloggins
Here is something else that belongs to "this time": the mouse and keyboard.

I do hope there will be some time in the future when we never have to type or
reach for a mouse because our brains are the only I/O device. But until that
time comes, we have essentially the same input mechanisms that we had when Vi
and Emacs were invented.

In some ways, your point is a valid one; there are many, many features of
these old programs that the Light Table developers should spend zero time re-
implementing. However, editor bindings are a special case.

No matter how fancy the code editing interface is, in the end you still have
to type out some code at some point. When the fingers hit the keyboard, many
professional programmers have preferred and habitual ways of entering and
editing text. In 10 years I might be using a text editor with flying swirling
animations and cool animations that "zoom in" on an identifier into its
definition, and so forth, but I won't be using it if it doesn't have Ctrl+c
and Ctrl+v. Vim and Emacs keybindings are just second nature to many of the
core audience for Light Table; it makes sense that those shortcuts are
requested.

For further evidence that key-bindings and editing modes are acknowledged as
universally useful things, regardless of origin, try typing Ctrl+E or Ctrl+A
in any OS X text field. You'll jump to the end of beginning of the line,
respectively. These are two of the many Emacs keybindings that are supported
out of the box on every text control in OS X.

Now, to the last part of your point. I agree that these kinds of things
shouldn't be the focus when developing a new product. When you're still just
trying out ideas, you really don't have the time to implement every little
feature request. However, when the thing you're developing is a developer
tool, I think it behooves you to design and implement a rich plugin system as
one of your first tasks. If your program and programmers have the Lisp nature,
you almost do this without a second thought. But the payoff is big. If you can
implement most of the program using its own plugin system, you're forced to
design highly orthogonal primitives that play well together from the start.
The end result is or should be that there's nothing a plugin author can't do
that the original developers can do.

So if it were me writing this thing, I'd make sure to release a plugin system
pretty early and tell everyone who wants to add Emacs, Vim, and Minesweeper to
go nuts :)

~~~
Jakob
_> but I won't be using it if it doesn't have Ctrl+c and Ctrl+v_

I would use an editor which makes copy&pasting a thing of the past very
happily.

In my experience copy&pasting is a big part of the problem. Some people use it
to think less about the given structure and duplicate code, others use it to
re-arrange code. Both are tasks which an editor like light table might handle
better.

~~~
dktbs
I don't understand how something like copying and pasting could be obviated
from a text editor. There are a million reasons you might need this
functionality, and they don't all have to deal with poorly structured code.

------
danielweber
Constructive criticism: pretend that someone hasn't head of Light Table
before. Have a one-sentence description near the top that links to a longer
description. (Clicking on "Light Table Playground" takes me a something that
includes the features you are working on for Light Box.)

~~~
ibdknox
done. Thanks for the suggestion!

(Side note, the real thing is called "Light Table" too, no light boxes here :)

------
ezy
The live evaluation is nice, but seems a little limited. If I have:

    
    
      (defn my-add [a b]
        (+ a b))
      (my-add 3 45)
      (my-add 1 2)
    

Only the "1 2" version is followed into "my-add". Is there anyway to force it
to look at "3 45" other than commenting out "1 2"?

I greatly prefer the idea of showing the value propagation explicitly as you
click on things. For example, using lines and arrows to show that this came
from there and that came from here.

~~~
simcop2387
In this case I suspect it's dealing with compiler optimizations. The first one
is being optimized out since it produces no side effects and the return isn't
used anywhere. How to work around this I have no idea.

------
slurgfest
This may sound completely insane or stupid to people who don't configure their
tools much or are avid followers of the project - but is it possible to expose
the preview functionality so that it can be used with other editors (e.g.
vim)?

The ideas are interesting but swapping out my entire existing setup for them
is not terribly appealing, even with some key-scheme... since I am not using
notepad, there is a lot more which goes into my editing environment than the
keys. And I am skeptical that anybody is going to do significantly better on
text editing.

------
vecinu
I'm not sure if Chris or any of you guys have seen this video but it is
exactly what Light Table is about to become (perhaps more) and that makes me
very excited.

<http://vimeo.com/36579366>

~~~
icey
Here's the blog post where Chris first talked about Light Table (before it was
called Light Table) [http://www.chris-granger.com/2012/02/26/connecting-to-
your-c...](http://www.chris-granger.com/2012/02/26/connecting-to-your-
creation/)

~~~
vecinu
Oh my. After re-reading that blog post I remember seeing it on HN before. My
apologies.

------
i_cannot_hack
I don't have a github account, but since I noticed the creator reads the
comments here I'll report some quick bugs I found:

1\. Closing parentheses do not work in table mode, the key combination for ")"
on my Swedish keyboard produces a "(" instead. (this has already been reported
on github)

2\. When I was asked to type in "(+ 4 5)" in the scratch during the tutorial,
pressing the spacebar without any modifier keys did not register as a
keypress. I had to press shift+spacebar to separate the numbers and complete
the task.

3\. The window displaying all shortcuts (accessed from the bottom right
corner) cannot be closed. I had to restart Light Table for it to disappear so
that I could continue coding.

~~~
ibdknox
1\. yeah, I didn't think about international keyboards. I'll have to come up
with something there.

2\. just pushed a fix for that

3\. Click anywhere outside the box and it'll close. I'll make that more
explicit :)

~~~
i_cannot_hack
Yeah, I realized I had probably missed something when it came to closing the
window. Strange how I never managed to click outside the box, considering how
much else I tried (pressing esc, clicking inside the box, opening the menu,
etc.) :)

But I forgot to say how much I love the editor already. Can't wait for the
final version!

------
airlocksoftware
Chris, if you're around, you mentioned that you're now building Light Table in
Light Table. Does this include the front end Clojurescript? Because I would
love to move my Clojure / Clojurescript project over to LT if that's possible.

~~~
ibdknox
It does indeed, but we punted on including CLJS in this release because we
didn't have enough time to test it. It should make it into the next release
though :)

~~~
mej10
Isn't it going to be open sourced at some point? Why not just let people get
at your dev branches or at least provide builds for them

Also, keep up the awesome work!

~~~
t_hozumi
Even if OSS isn't an option, I think it would be a nice idea for Light Table
to provide low level API/Interface so that eco system grow like
emacs/vim/eclipse. Perhaps Chris has already considered this idea.

~~~
airlocksoftware
Yep, that should all be happening. Scroll to the FAQ section of the
kickstarter - <http://www.kickstarter.com/projects/ibdknox/light-table> \- it
will be OSS and will also have an API for developing plugins with Javascript.
He's already shown a cool benchmarking mode in one of the videos.

------
snprbob86
Chris: I know you're a vim guy, so I know you'll be doing vim bindings
eventually. I also know that vim emulation modes are always incomplete. I'd
like to offer my services as a vim-mode tester. I vow to provide extremely
robust feedback. I'm willing to offer this service for free, so that I can
ensure Light Table's vim subset is a superset of my brain's vim subset ;-)

~~~
shabble
From the original kickstarter[1] app:

 _What about key bindings?

I'm a VIM guy myself, but since we'll be using the awesome CodeMirror[2]
editor, this is something that is easily adapted. If you're looking for a way
to contribute, help improve CodeMirror and its emacs/vim plugins!_

I haven't actually played around with the current release to see if it's been
integrated yet, but it's almost certainly part of the plan.

[1] <http://www.kickstarter.com/projects/306316578/light-table>

[2] <http://codemirror.net/>

~~~
MarkSweep
If you view-source on this release you can see a vim.js file is included with
vim bindings. I was able to activate them by setting a breakpoint in chrome on
line 2098 of codemirror.js and typing this in the console:

    
    
      CodeMirror.defaults["keyMap"]="vim"
    

Presumably there will be a better way to turn them on in the future.

------
fdb
If you're on Mountain Lion, Gatekeeper won't open the launcher, complaining it
isn't signed.

The best way around this without touching your security settings is to _right-
click_ the launcher and selecting "Open".

------
DigitalJack
I love this. Chris Granger is officially one of my heroes.

One quick suggestion: on the first time start up of the app, it goes through a
brief explanation of the various parts. It might seem obvious to most, but I
think it would make it a little nicer if the dialog that says "The instarepl
is an area where you can write code..." had an arrow shape, or an arrow in the
box pointing toward the repl.

Same for the dialog talking about the output area.

It's not so much that it's confusing, it's just an unfamiliar interface, and
an arrow would be reassuring that what I thought was the repl was really
indeed the repl.

------
rjsamson
I'm really impressed with how this is coming along. The UI has a great feel to
it. Playing with LT Playground makes me want to go back and give Clojure
another shot. Very cool!

------
1st1
When are you guys planning to add python support? BTW, will it be python 3 or
2?

------
FrojoS
Looks cool! When I first saw it I thought you where this guy: Bret Victor -
Inventing on Principle <http://vimeo.com/36579366>

Planing to support Octave/Matlab at some point?

------
eranation
It's simply great. Any estimates when will the Python module come out?

------
eranation
Shame on you, you made start playing and even liking Lisp instead of working.
These were the best sources for me by the way if anyone is interested:
<http://tryclj.com/> <http://www.4clojure.com/> (both are interactive, more
coding, less reading)

------
cellularmitosis
I'm wondering how difficult it would be to support Scheme. After seeing
<http://www.wescheme.org/about/> I'm guessing solutions to most of the hard
parts are already out there?

------
neutronicus
Any plans for emacs keybindings?

~~~
airlocksoftware
I'm pretty sure it has been mentioned before that yes, you'll be able to use
emacs keybindings. The editing surface is based on CodeMirror
<http://codemirror.net/>, which is very customizable.

~~~
mrkrwtsn
The problem right now is that the editor runs in a browser and so the
shortcuts for emacs conflict.

Why the fuck should a text editor be running in a browser?

~~~
airlocksoftware
It's using webkit as a rendering engine - while it's in beta, that means a
browser (although on mac it runs standalone). I'm pretty sure they've
mentioned that Windows & Linux will be a standalone app before the final
release.

------
minhhuong
What languages are supported right now? I keep forgetting and all the images
are showing clojure. Anyone know if there's any plans for haskell?
<http://khamphukhoa.com.vn/>

------
dmix
I tried loading my clojure project (<https://github.com/dmix/documeds>) but
I'm only getting a "Connecting" loading screen for 30min.

~~~
ibdknox
the reason it fails is because it's looking for an artifact that doesn't
exist:

    
    
       Caused by: org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException: Missing:
    
       1) org.clojure.contrib:prxml:jar:1.3.0-alpha4
    
       Try downloading the file manually from the project website.

------
d2s
Impressive project and it certainly gives a good reason to learn Clojure in
the future. :)

Tried current version and it seemed interesting, even while I'm still quite of
a beginner with code.

------
pyoung
Maybe add '(YC S12)' in the title? I know you were working on this before YC,
but these are the kinds of things I like to see get supported.

------
ludicast
Enjoyed playing with light table. Ruby is still my favorite language, but
clojure seems to be where all the innovation is at these days.

------
tocomment
So how would I use light table in building a django app? I'm trying to
envision some real world use cases for myself.

------
hndl
Anyone using this for "real world" development? How does this compare with
something you were previously using?

------
mck-
I love this thing, ever since you've announced it. Just wondering if it would
eventually support Common Lisp?

------
wamatt
I hope it allows for a "light" theme as well. Not all coding is done on dark
backgrounds

~~~
ibdknox
It will, we just haven't gotten to those things yet :)

~~~
wamatt
Cool, I really like the idea, and will probably become a fan, once it's
further along.

Bret Victor's talk was truly inspiring, and I'd wish he'd release his tool too
for comparison.

------
Void_
Looks beautiful on a Retina screen.

What is the color scheme you're using, by the way?

------
rbanffy
Looks remarkable! Can't wait to try it.

------
mvip
Go Chris and Rob!

------
boris007
I have created a Propster fan tip jar for Light Table. When it collects at
least $5, Chris will be contact and will get the money.

