On 01/08/2014 06:10 PM, Mark Engelberg wrote:

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

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.

--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to 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+unsubscr...@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+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to