New release of Light Table (which is now open source!)

612 views
Skip to first unread message

Chris Granger

unread,
Jan 8, 2014, 1:19:59 PM1/8/14
to clo...@googlegroups.com
Hey Folks,

We did a big release today which includes a lot of love for Clojure! We also released all the source to Light Table, which has to be one of the largest full ClojureScript applications out there. To read more about all the goodness check out my blog post: http://www.chris-granger.com/2014/01/07/light-table-is-open-source/

And take a look at the source here: https://github.com/lighttable

Cheers,
Chris.

David Nolen

unread,
Jan 8, 2014, 1:21:35 PM1/8/14
to clojure
Congrats!


--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Baishampayan Ghose

unread,
Jan 8, 2014, 1:26:30 PM1/8/14
to Clojure Group
LightTable is indeed, a remarkable piece of software. Really shows
what ClojureScript is capable of. The code is very beautiful too.
Congratulations, Chris! ~BG
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+u...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+u...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.



--
Baishampayan Ghose
b.ghose at gmail.com

Mark Engelberg

unread,
Jan 8, 2014, 2:01:50 PM1/8/14
to clojure
As one of the initial kickstarter supporters for LightTable, every time a new release comes out, I eagerly download and check out the Clojure support in the latest version.

I'm always surprised to see there still isn't a decent REPL.  There's still the same "instarepl" proof-of-concept that came with the earliest alphas, which doesn't really connect with projects or have any particularly usefulness for real development, but simply is there as an intro to people trying Clojure.

There's also some inline evaluation for writing code, but again, that's not the same thing as a REPL.

So for those of you who are actually using LightTable for development, how do you function without a REPL?  What am I missing?

Chris Granger

unread,
Jan 8, 2014, 2:06:43 PM1/8/14
to clo...@googlegroups.com
There's still the same "instarepl" proof-of-concept that came with the earliest alphas, which doesn't really connect with projects

That's not true at all :) The instarepl will work with any nrepl client you're connected to. By default if you don't have a connection to a project, it will just open a plain repl for you to play with, but you can disconnect from that one and connect to your project, or you can eval in a file before you open an instarepl to create a connection, or you can...

There's also some inline evaluation for writing code, but again, that's not the same thing as a REPL.

If you open an empty file and set it's syntax to Clojure, what's the difference between it and the REPL?

Cheers,
Chris.


--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/dvnX09qOZJU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+u...@googlegroups.com.

Peter Mancini

unread,
Jan 8, 2014, 3:36:32 PM1/8/14
to clo...@googlegroups.com
I'm using regular editing windows as a repl. I turn off live most of the time as I don't think it's useful - I don't type fast enough before an unlimited take goes to work on an unlimited lazy collection... Everything else about it is great - a console is available to test println messages. The results are in a format that is easy to interpret. For me it works fine.

Full disclojure: I absolutely hate EMACS so anything is better. I just happen to like Light Table. I'm still hoping some of the original demo stuff will show up. For now it's pretty darn useful and getting more useful with each release.

Thanks Chris - another great release.

           

Benjamin Yu

unread,
Jan 8, 2014, 3:49:59 PM1/8/14
to clo...@googlegroups.com
Grats! I love the pain points that light table solves for me.


--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.

Lee Spector

unread,
Jan 8, 2014, 3:58:34 PM1/8/14
to clo...@googlegroups.com

On Jan 8, 2014, at 3:49 PM, Benjamin Yu wrote:

> Grats! I love the pain points that light table solves for me.

The inline documentation is pretty great once I discovered how to invoke it (which took a while... and while I really love a lot of the ideas in LightTable I have to say that it always takes me a while to figure out how to do basic things in the interface, which I find cryptically minimal...).

Does anyone know if there's a hidden way to turn off automatic bracket insertion or to get console output without namespace prefixes?

-Lee



Lee Spector

unread,
Jan 8, 2014, 4:04:13 PM1/8/14
to clo...@googlegroups.com

On Jan 8, 2014, at 3:58 PM, Lee Spector wrote:
> The inline documentation is pretty great once I discovered how to invoke it (which took a while... and while I really love a lot of the ideas in LightTable I have to say that it always takes me a while to figure out how to do basic things in the interface, which I find cryptically minimal...).
>
> Does anyone know if there's a hidden way to turn off automatic bracket insertion or to get console output without namespace prefixes?


Also, any way to see a stack trace after an exception?

(.printStackTrace *e) doesn't do it.

Thanks,

-Lee

Lee Spector

unread,
Jan 8, 2014, 4:09:11 PM1/8/14
to clo...@googlegroups.com

On Jan 8, 2014, at 4:04 PM, Lee Spector wrote:
>
> Also, any way to see a stack trace after an exception?
>
> (.printStackTrace *e) doesn't do it.

Ah -- sorry to be writing so quickly. I've discovered that clicking on the exception appears to give a stack trace. Nice! (But again, wasn't obvious to me at first.)

It'd be super sweet if this showed arguments and locals :-)

-Lee

Mark Engelberg

unread,
Jan 8, 2014, 4:35:02 PM1/8/14
to clojure
Ok, I appreciate the suggestions and I'll give it another try with these comments in mind.  You still need to create and manage projects from a command line with lein, right?

Jamie Brandon

unread,
Jan 8, 2014, 5:45:09 PM1/8/14
to clo...@googlegroups.com
You can disable the bracket insertion by disabling the keys that
trigger it. Add this to your user.keymap:

:- {:editor.keys.normal {"\"" [(:editor.repeat-pair "\"")]
"(" [(:editor.open-pair "(")]
")" [(:editor.close-pair ")")]
"[" [(:editor.open-pair "[")]
"{" [(:editor.open-pair "{")]
"]" [(:editor.close-pair "]")]
"}" [(:editor.close-pair "}")]
"backspace" [:editor.backspace-pair]}}

gvim

unread,
Jan 8, 2014, 5:59:50 PM1/8/14
to clo...@googlegroups.com
Chris

Thanks for a great product. Can you help me out? I just installed the
latest 0.5.21/binary 0.8.0-rc1 on OS X Mountain Lion and every time it
starts I get the same message - "There's been a binary update!". Can't
get rid of it.

gvim

Chris Granger

unread,
Jan 8, 2014, 6:03:47 PM1/8/14
to clo...@googlegroups.com
you have to do what the popup says :) Because this is a binary update you have to download the latest Light Table from www.lighttable.com

Cheers,
Chris.


On Wed, Jan 8, 2014 at 2:59 PM, gvim <gvi...@gmail.com> wrote:
Chris

Thanks for a great product. Can you help me out? I just installed the latest 0.5.21/binary 0.8.0-rc1 on OS X Mountain Lion and every time it starts I get the same message - "There's been a binary update!". Can't get rid of it.

gvim




On 08/01/2014 18:19, Chris Granger wrote:
Hey Folks,

We did a big release today which includes a lot of love for Clojure! We
also released all the source to Light Table, which has to be one of the
largest full ClojureScript applications out there. To read more about
all the goodness check out my blog
post: http://www.chris-granger.com/2014/01/07/light-table-is-open-source/

And take a look at the source here: https://github.com/lighttable

Cheers,
Chris.

--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with
your first post.
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send

For more options, visit https://groups.google.com/groups/opt_out.
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/dvnX09qOZJU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+unsubscribe@googlegroups.com.

Sean Corfield

unread,
Jan 8, 2014, 3:45:43 PM1/8/14
to clo...@googlegroups.com
On Jan 8, 2014, at 11:01 AM, Mark Engelberg <mark.en...@gmail.com> wrote:
> So for those of you who are actually using LightTable for development, how do you function without a REPL? What am I missing?

It has a perfectly good REPL and the ability to evaluate live code anywhere on the REPL "canvas" is very useful since you can sketch out multiple pieces of related code side-by-side.

I guess I don't understand why your view of what LT provides is so negative?

Sean Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)



signature.asc

gvim

unread,
Jan 8, 2014, 6:21:32 PM1/8/14
to clo...@googlegroups.com
Chris

I did that. I had 0.5.20 installed earlier.

gvim


On 08/01/2014 23:03, Chris Granger wrote:
> you have to do what the popup says :) Because this is a binary update
> you have to download the latest Light Table from www.lighttable.com
> <http://www.lighttable.com>
>
> Cheers,
> Chris.
>
>
> On Wed, Jan 8, 2014 at 2:59 PM, gvim <gvi...@gmail.com
> <mailto:gvi...@gmail.com>> wrote:
>
> Chris
>
> Thanks for a great product. Can you help me out? I just installed
> the latest 0.5.21/binary 0.8.0-rc1 on OS X Mountain Lion and every
> time it starts I get the same message - "There's been a binary
> update!". Can't get rid of it.
>
> gvim
>
>
>
>
> On 08/01/2014 18:19, Chris Granger wrote:
>
> Hey Folks,
>
> We did a big release today which includes a lot of love for
> Clojure! We
> also released all the source to Light Table, which has to be one
> of the
> largest full ClojureScript applications out there. To read more
> about
> all the goodness check out my blog
> post:
> http://www.chris-granger.com/__2014/01/07/light-table-is-__open-source/
> <http://www.chris-granger.com/2014/01/07/light-table-is-open-source/>
>
> And take a look at the source here: https://github.com/lighttable
>
> Cheers,
> Chris.
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com
> <mailto:clo...@googlegroups.com>
> Note that posts from new members are moderated - please be
> patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscribe@__googlegroups.com
> <mailto:clojure%2Bunsu...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/__group/clojure?hl=en
> <http://groups.google.com/group/clojure?hl=en>
> ---
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To unsubscribe from this group and stop receiving emails from
> it, send
>
> an email to clojure+unsubscribe@__googlegroups.com
> <mailto:clojure%2Bunsu...@googlegroups.com>.
> For more options, visit
> https://groups.google.com/__groups/opt_out
> <https://groups.google.com/groups/opt_out>.
>
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com
> <mailto:clo...@googlegroups.com>
> Note that posts from new members are moderated - please be patient
> with your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscribe@__googlegroups.com
> <mailto:clojure%2Bunsu...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/__group/clojure?hl=en
> <http://groups.google.com/group/clojure?hl=en>
> --- You received this message because you are subscribed to a topic
> in the Google Groups "Clojure" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/__topic/clojure/dvnX09qOZJU/__unsubscribe <https://groups.google.com/d/topic/clojure/dvnX09qOZJU/unsubscribe>.
> To unsubscribe from this group and all its topics, send an email to
> clojure+unsubscribe@__googlegroups.com
> <mailto:clojure%2Bunsu...@googlegroups.com>.
> For more options, visit https://groups.google.com/__groups/opt_out
> <https://groups.google.com/groups/opt_out>.
>
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+u...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to clojure+u...@googlegroups.com.

Chris Granger

unread,
Jan 8, 2014, 6:23:52 PM1/8/14
to clo...@googlegroups.com
ah try hard refreshing the lighttable.com site, sounds like you're downloading an older version maybe? This should be the address of the download for mac: http://d35ac8ww5dfjyg.cloudfront.net/playground/bins/0.6.0/LightTableMac.zip

Cheers,
Chris.


        <mailto:clojure@googlegroups.com>

        Note that posts from new members are moderated - please be
        patient with
        your first post.
        To unsubscribe from this group, send email to
        clojure+unsubscribe@__googlegroups.com

        For more options, visit this group at
        http://groups.google.com/__group/clojure?hl=en

        <http://groups.google.com/group/clojure?hl=en>
        ---
        You received this message because you are subscribed to the Google
        Groups "Clojure" group.
        To unsubscribe from this group and stop receiving emails from
        it, send

        an email to clojure+unsubscribe@__googlegroups.com

        For more options, visit
        https://groups.google.com/__groups/opt_out
        <https://groups.google.com/groups/opt_out>.



    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clo...@googlegroups.com
    <mailto:clojure@googlegroups.com>

    Note that posts from new members are moderated - please be patient
    with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@__googlegroups.com

    For more options, visit this group at
    http://groups.google.com/__group/clojure?hl=en

    <http://groups.google.com/group/clojure?hl=en>
    --- You received this message because you are subscribed to a topic
    in the Google Groups "Clojure" group.
    To unsubscribe from this topic, visit
    https://groups.google.com/d/__topic/clojure/dvnX09qOZJU/__unsubscribe <https://groups.google.com/d/topic/clojure/dvnX09qOZJU/unsubscribe>.

    To unsubscribe from this group and all its topics, send an email to
    clojure+unsubscribe@__googlegroups.com



--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with
your first post.
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send

For more options, visit https://groups.google.com/groups/opt_out.
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/dvnX09qOZJU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+unsubscribe@googlegroups.com.

Mimmo Cosenza

unread,
Jan 8, 2014, 6:34:48 PM1/8/14
to clo...@googlegroups.com
On Jan 8, 2014, at 8:01 PM, Mark Engelberg <mark.en...@gmail.com> wrote:

So for those of you who are actually using LightTable for development, how do you function without a REPL?  

If you are on the TDD wagon, there is a very good introduction to TDD with LT at the following URL:


You can reach a similar workflow by using clojure.test and lein-test-refresh plugin. 

The more you TDD the less time you spend in the REPL. I'm not a TDD fanatic at all, especially while programming in clojure (thanks to default immutability of its data structures), but if you are on that wagon you're going to spend less time in the REPL and more in the test files and LT let you make one of those file to be your repl too, which is not bad at all. 

mimmo

p.s. I'm addicted to emacs and REPL, but I have to admit that LT (I was a kickstarter supporter too) is intriguing me a lot. 


--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
signature.asc

Lee Spector

unread,
Jan 8, 2014, 6:38:29 PM1/8/14
to clo...@googlegroups.com
On Jan 8, 2014, at 5:45 PM, Jamie Brandon wrote:

> You can disable the bracket insertion by disabling the keys that
> trigger it. Add this to your user.keymap:
>
> :- {:editor.keys.normal {"\"" [(:editor.repeat-pair "\"")]
> "(" [(:editor.open-pair "(")]
> ")" [(:editor.close-pair ")")]
> "[" [(:editor.open-pair "[")]
> "{" [(:editor.open-pair "{")]
> "]" [(:editor.close-pair "]")]
> "}" [(:editor.close-pair "}")]
> "backspace" [:editor.backspace-pair]}}

Thanks Jamie. I managed to get this to work, so that's great.

FWIW my perspective (esp as a teacher of newbies) it'd be nice if there was some sort of simple switch for this. It's sort of cumbersome to have to discover this, find the file, and add a bunch of code to get the keyboard to behave normally....

-Lee

Sean Corfield

unread,
Jan 8, 2014, 8:50:13 PM1/8/14
to clo...@googlegroups.com
On Jan 8, 2014, at 3:38 PM, Lee Spector <lspe...@hampshire.edu> wrote:
> FWIW my perspective (esp as a teacher of newbies) it'd be nice if there was some sort of simple switch for this. It's sort of cumbersome to have to discover this, find the file, and add a bunch of code to get the keyboard to behave normally....

I suspect the majority of users think the default behavior is "normal" - and desirable :)
signature.asc

Sean Corfield

unread,
Jan 8, 2014, 8:54:01 PM1/8/14
to clo...@googlegroups.com
On Jan 8, 2014, at 1:35 PM, Mark Engelberg <mark.en...@gmail.com> wrote:
> You still need to create and manage projects from a command line with lein, right?

Correct. Until someone builds a plugin for that :)
signature.asc

Mark Engelberg

unread,
Jan 8, 2014, 9:10:22 PM1/8/14
to clojure
On Wed, Jan 8, 2014 at 12:45 PM, Sean Corfield <se...@corfield.org> wrote:
It has a perfectly good REPL and the ability to evaluate live code anywhere on the REPL "canvas" is very useful since you can sketch out multiple pieces of related code side-by-side.

I guess I don't understand why your view of what LT provides is so negative?

That's a good question, and maybe enough has changed that I need to give it another try.  On the surface, it didn't appear that much had changed so I haven't really spent significant time with Light Table recently.

When I first played around with Light Table, I was strongly disturbed by the lack of a REPL.

First, I have absolutely no interest in having executable test-out-this-code snippets interspersed with the actual program code, unless it is a formal test that is intended to stick around and uses something like clojure.test.  This means I have to create a separate file and pretend that this file-with-live-execution is a REPL.  But it's not.

1.  A REPL puts you "inside" a namespace and interactively move around between namespaces.  Within a namespace, you have access to all the aliases and referred names available within that namespace.  If I set up an independent file, the file itself presumably needs its own namespace header.  This means to simulate being "in a namespace" I have to use that namespace and clone the entire header from that namespace.  I have to keep these headers in sync, and the notion of moving between namespaces is a heavyweight, annoying activity.

2.  A REPL has a notion of a command history, letting you easily redo a recent command.  Each command and response becomes part of a log that you can copy or save to a file if you want.  With a file, there's no simple way to "execute the command I executed two times ago".  You have two options: copy and paste the command again and re-execute it, or, the more common option is probably to just go back up to the previous command and hit ctrl-enter (overwriting the previous answer).  And you don't really end up with a log of commands and responses, you just end up with a file containing the sequence of commands.  The assumption is that this can all be reevaluated in the future.  But if your commands are, for example, queries to some rapidly changing database, this assumption is false.

A big part of how I use Clojure is that I build a suite of functions that allow me to interactively explore problems.  I program for a while, building those functions, and then I switch to the REPL to use what I have built.  I switch around between namespaces, I make queries to live databases that are always changing, I call my functions on the results of those queries.  I hit "Ctrl-Up" to re-execute the query from a few minutes ago to see if anything has changed.  Sometimes, I copy the whole log of my interactions off to a file; sometimes I don't.

When I fired up Light Table a while back, I felt completely hamstrung -- I couldn't do anything the way I ordinarily would do it.  The notion of executing statements that live in a file didn't feel anything like the workflow I was used to.  It seemed distinctly weaker. 

On top of that, at the time I tried it, Light Table couldn't properly handle long and lazy outputs from functions.  I also couldn't figure out how to observe anything that printed to stdout.  Because of that, I couldn't use most of the REPL tools I was used to using (e.g., doc/source/pprint/trace) and the features in Light Table didn't seem to be a compensation for having those tools.

With each new version of Light Table, I go through this process of thinking, "Hmmm, I wonder if they have a usable REPL yet."  I pop open Light Table, read the docs which talk about the Instarepl quick start and the live-code execution feature, no way to create a project from scratch, and no discussion of a project repl.  I shrug and say, "Guess they aren't seriously targeting Clojure development yet; seems like all the focus lately is on JavaScript and Python and underlying infrastructure code."  I shut it down and figure I'll try again in a few months.

This time, I got excited because the announcement said there was lots of "Clojure love" in this release.  Again, I didn't see anything obviously new relating to Clojure in the docs.  So I'm left wondering, "Does the Light Table team really think this current state is adequate for Clojure development?  If so, what am I missing?"  This prompted my earlier question.

I'm willing to accept that I might be underestimating the value of what is currently there, and will give it an earnest try.  I would also welcome detailed workflow stories of how other users interact with Light Table.

Lee Spector

unread,
Jan 8, 2014, 9:40:30 PM1/8/14
to clo...@googlegroups.com

On Jan 8, 2014, at 8:50 PM, Sean Corfield wrote:
> On Jan 8, 2014, at 3:38 PM, Lee Spector <lspe...@hampshire.edu> wrote:
>> FWIW my perspective (esp as a teacher of newbies) it'd be nice if there was some sort of simple switch for this. It's sort of cumbersome to have to discover this, find the file, and add a bunch of code to get the keyboard to behave normally....
>
> I suspect the majority of users think the default behavior is "normal" - and desirable :)

Why would you suspect this? Conceivably it could be desirable (although I personally think it's awful), but "normal"? We all type all of the time in scores of applications and contexts, and in very few of them does the editor think it's smarter than us and add characters that we didn't ask for. (I guess there's autocorrect, but A: yuck, and B: this is different.)

On the other hand, I'm a big fan of auto-indentation, so maybe my position isn't 100% consistent :-)

Still, when writing Clojure something like half the characters you type will be brackets, which means that if your editor does the auto-insert-bracket thing then it's constantly doing something different from when you type in any other context, either adding a closing bracket that you didn't ask for or, when you type a closing bracket, sometimes typing it and sometimes not, depending on the context.

For newbies, in particular, the idea that they should have to re-learn how to type on top of everything else that they have to learn doesn't strike me as particularly friendly.

I do realize that tastes vary. But FWIW I wouldn't voluntarily use an environment with automatic bracket insertion, and I wouldn't want to foist it on my students either. So even if it's on by default, it would be important to me that it be easy to turn off.

-Lee

Tom Brooke

unread,
Jan 8, 2014, 10:46:56 PM1/8/14
to clo...@googlegroups.com
Looks fantastic  - Thanks

Stan Dyck

unread,
Jan 9, 2014, 2:14:02 AM1/9/14
to clo...@googlegroups.com
> --

I don't know if I can answer your question, Mark but I think it is an
interesting one. One suggestion I'd make is that you really shouldn't
expect to do anything the way you ordinarily would. Maybe, but probably
not. The point for me is to figure out what its differences are and how
they might make me more productive.

I should say that, like you, have also played around with LightTable but
don't use it regularly. I did attempt to use it exclusively for a
project at work about a year ago. It wasn't easy, largely because this
was before you could change the key bindings. Hard to undo muscle memory.

That aside, one of the things I liked the most I think was a style of
workflow that I took to calling "spreadsheet programming." Think of a
spreadsheet with lots of formulas as an application and the values in
the various cells as the application state. The attraction of
spreadsheets is that you can see the whole thing at once and you can
manipulate state. You change a number here or there and watch as the
entire thing updates itself. The problem has always been that you can't
see the formulas unless you click on a cell. And even then only one at a
time in a tiny window. This is why most spreadsheet applications are
filled with errors.

With LightTable, I found I could achieve the same sort of thing except
the formulas were all there in plain view also. Say I had a function
that needed to do something. Using this style I would write the first
draft of the function in an instarepl and then a set of calls to that
function with various inputs below. I could then observe the results of
all those calls as I modified the function. It was this instant feedback
that I found productive and not as easy to duplicate with a regular REPL
environment. Once I felt the function worked the way I wanted, I would
generally move it into a file with its own namespace. At that point I
could still get at it from my instarepl via a require as I continued to
the next function.

As the results of my functions got more complex, I found the inline
updating broke down. It starts to take up too much real estate and
creates visual clutter. I think they do a better job with that now but
I'm still evaluating that. My fix for this problem was put in a
statement at the bottom of the instarepl that outputted results to a
file. I then put that file on an emacs buffer on another screen with
auto-revert-mode on. That really worked well for demos. I could
demonstrate the DSL-ish code I was developing on an instarepl and the
audience could see the results in my emacs buffer update as I
manipulated the inputs. I guess that's similar to the proof of concept
demos you saw in LightTable's early days but less graphical. In my case
that was ok since my application was manipulating text.

Some of the other nits you brought up about not being able to create
projects and the lack of tools are more or less valid, but I think they
are mostly a function of application immaturity and a developer
community that is still figuring it out. Steve Yegge wrote a blog post a
few years ago (
http://steve-yegge.blogspot.com/2008/04/xemacs-is-dead-long-live-xemacs.html
) where he implored the xemacs and emacs developers to unite against the
competition. He suggested that this competitor was Firefox. He argued
that since, like emacs, Firefox was self hosting and had plugins, and
since it had rendering capabilities emacs lacked, it would eventually
beat emacs at all the things it's good at. I found it interesting today
to re-read that essay replacing "Firefox" with "LightTable". I said
elsewhere this morning that with this new release, LightTable has become
topologically identical (in the mathematics sense) with emacs. That is,
they both have the ability (and give their users the means) to morph
into whatever they need to be for whoever uses them. I don't quite know
if LightTable has those chops yet or if enough people will participate,
but I'm still very keen to keep watching.

StanD.

Freddy Potargent

unread,
Jan 9, 2014, 4:24:08 AM1/9/14
to clo...@googlegroups.com
Hi everybody, after lurking around for quite a while it's time for some active involvement. :-)

First, I have absolutely no interest in having executable test-out-this-code snippets interspersed with the actual program code, unless it is a formal test that is intended to stick around and uses something like clojure.test.  This means I have to create a separate file and pretend that this file-with-live-execution is a REPL.  But it's not.

[snip]

I'm willing to accept that I might be underestimating the value of what is currently there, and will give it an earnest try.  I would also welcome detailed workflow stories of how other users interact with Light Table.
 
I am or was a very heavy emacs/repl user until I encountered LT and it's instarepl. There's absolutely no need for an instarepl to be associated with a file. When I start working on I project I add a connection to the project and open a separate instarepl which uses this connection. This instarepl is not associated with a file in my project. LT will automatically connect to the existing running clojure instance ... and even ask which one to use when there are several clojure connections active.

With live mode off you get a large canvas where you can enter code and execute it with ctrl-enter. I usually end up with several blocks of code in the instarepl window separated by (in-ns ...) and can easily move between the different namespaces and code I executed earlier. So instead of a linear history as in a "normal" repl I get a free-form history I can rearrange any way I like, add comments and can save the "history" to a file, but without results as you say. So a real interaction log is not possible. Well, maybe it is but I haven't found it, probably because I didn't have a need for it yet.

For a Clojure/ClojureScript browser project I have a separate "dev" file which runs the jetty server. I evaluate this file and then open an instarepl and a browser tab, both are connected to the project. Editing a Clojure or ClojureScript file is completely transparent, ctrl-enter in either sends code changes to the correct target, I can interact with the Clojure part in the free instarepl window and the browser for the ClojureScript part.

This doesn't address all your issues but hope it adds some value anyway. :-)

Jozef Wagner

unread,
Jan 9, 2014, 10:45:30 AM1/9/14
to clo...@googlegroups.com
Congratulations on releasing it to the community!.

What surprises me is that there are no docstrings and very few comments. I wonder how you manage such codebase within a team.

JW

Chris Granger

unread,
Jan 9, 2014, 2:57:27 PM1/9/14
to clo...@googlegroups.com
BOT is actually quite self documenting.

Cheers,
Chris.


--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/dvnX09qOZJU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+u...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages