Hacker News new | past | comments | ask | show | jobs | submit login
The future is specific (chris-granger.com)
346 points by olauzon on May 22, 2012 | hide | past | favorite | 135 comments



I don't mind if the future is specific. But its really wrong to say IDE's like Eclipse don't do one specific task well.

Eclipse really makes Java programming very easy. And I can tell you minus Eclipse programming in Java would be a very frustrating experience, given the verbosity, configuration mess and XML's all over the place. Eclipse these days is advanced enough to really blur the difference between and novice and a expert Java programmers. So by any measure I would say eclipse already does what light table aims to do. The only problem with eclipse is its too heavy, chews a lot of memory and becomes very heavy as things go on.

What we expect from light table is really what things like Emacs and Vim already are, plus what they miss. Which is modern GUI candy, easy configuration, availability of packages, stuff like refactoring, bench marking, auto complete and Intellisense easily available out of the box. Along with evolution with modern needs and demands.

So that is why what we really needed was an Emacs + all that I mentioned.

I think it will be nice if at some point requirements are frozen for Light table. Because things like this really slip into Second systems effect easily.

According to me Light Table must be Emacs for the Modern Generation. Anything else, and it won't be impressive. A thin editor, extensible by lisp. All lisp and other Emacs editor goodies but with all the modern demands.

We already have enough of other kind of IDE's.


I would say eclipse already does what light table aims to do.

Can you come to a realization in the middle of an Eclipse debugging session, get a great idea for making yourself more productive, take time to script yourself a working and fully debugged extension of Eclipse and continue what you were doing 20 minutes later?

I've done precisely this in Smalltalk on many occasions. You can script something like a custom browser that shows you everything that uses function A and also function B and has a reference to class C (and with complete syntactic accuracy) in around that time.

I suspect that this kind of very small grained toolsmithing is common for really good programmers in dynamic environments. The only problem is that it's been harder than necessary to integrate that with the most commonly used coding tool. (TextMate's ability to export selections to scripts is very nice, but it can go farther than that. Emacs is very powerful for this, but not everyone wants to script in elisp.)

It's not that Light Table is going to do something unprecedented. It's more like what git did with quick access to diffs: a quantitative change can become a qualitative change. Change the cost-benefit of toolsmithing, and you can use it in new ways.


Acme supports constantly improving how you work in little ways, better than tools with plugins or extension languages, by not having many features, and providing a good interface to route text through shell pipelines.

For a simple example, Acme has no paragraph justifier, but it doesn't need one, since fmt exists. To use it, highlight a paragraph of text with the left mouse button, highlight a typed-in |fmt command with the middle mouse button, and release the middle mouse button to run the paragraph through |fmt and replace it in place.

With this I can leverage anything I can call from the command line, in any language, to be part of my editor. No need to rewrite tools in the program's specific extension language, whether Elisp or Smalltalk or Clojure.

As another example, since it's so easy to just run a shell command from Acme (highlight the command text and middle-click it), I'm constantly customizing pre-written shell commands to e.g. grep for lines in code (to the point of creating indexes on the fly for files), and then right-clicking on grep -n output to jump to a specific line in a file.


You still need to use the mouse. One of the biggest benefits of Vi(m)/Emacs over everything else out there is that you don't need to use mouse for anything. For example, to justify a paragraph in Emacs I highlight it (several quick ways to do it with keyboard) and press C-u M-q. And you can do the general "replace text by running a shell command over it" by highlighting the text, and doing C-u M-| [shell-command-here].

The feature you're describing is awesome and useful, but I wouldn't be happy to have to use mouse for it. Is there a way to invoke it from keyboard in Acme?


An Eclipse plugin usually takes me about half a day at this point. It's not good for short scripts, but these examples don't seem to be that either.

For the "20 minutes later" version, I typically abuse JUnit tests, or use search+working sets.

What Eclipse misses more than anything else is performance and generalization. It's sufficient for my Java work: it is insufficient for my four-language code base.


Couldn't you build a LightTable-like IDE in Squeak right now?


Squeak is somewhat LightTable-like already, except everything needs to be refreshed manually. (And not all of it is obvious to the beginner, though all of it is readily available if you know how.)

You actually couldn't have everything update automatically and expect bad things never to happen. Functional programming has an advantage here.


Is Light Table written in Haskell-like language? Because other functional language still allow side effect and IO and running everything in those language can still cause bad things.


Well, you can have bad things happen even more easily in Smalltalk, but enough of the library is well behaved that it's workable in development, especially since you can save the image periodically and you have a transactional log for even what you do after your last save.

To make Light Table work, you don't need 100% perfect semantics. You just need 99% good semantics, plus some way of turning off automatic refresh and refreshing manually.


These were examples of extensions to make a point and not at all what we'll be focusing on. What we're making sure of is that the platform for such things exists and enables all of the things that old UI's and such don't allow.

I think the parallel to emacs is a good one and while I certainly won't say at this point that we'll be the "modern emacs", it's our hope we can come close.


I think from the discussions and other threads what I infer is that we need a total re-look at the concept of an editor, Your way actually looks good. Except that we need to retain the 'Emacs infrastructure'.

We need to really keep Lisp as the extension language.

I think what we need is Light Table with something like this : http://www.kickstarter.com/projects/568774734/emacsy-an-embe...

You have to develop Light Table ON the Emacs OS!


Lisp is the extension language :) Everything so far is Clojure + ClojureScript with the language backends written in the language they support (python in python and so on)


How about Stallman's idea for GUILE (Scheme) uber-alles. Do source-to-source translation of approximations of the supported languages to Clojure. This would allow everyone access to almost everything in the tool.


That effort hasn't even materialised for Scheme+Elisp for Emacs.

The whole approach is guaranteed to not produce a perfectly compliant of any other language.


Yes, that is the price. That's the price for native access to the entire codebase of the underlying editor.

So long as it's close enough, you don't need perfect compliance.


I disagree. If the support isn't perfect, you might as well not bother and help people learn your native language.


I think the popularity of CoffeeScript is a datapoint against your idea. I bet a lot of pythonistas use it because it's less of a shift than Javascript. Also, in such a system, if people are curious enough, they will learn the native implementation language as a result of the system being so constructed.


I'm not sure it's a datapoint against; most people I talk to use it because it fixes objective flaws in JavaScript.


It might have been better to demonstrate this with examples like:

  truth-tables for (nested) if statements
  petri-nets for a state machine
  etc. etc. etc.


out of curiosity, is js going to be your "elisp"?


Clojurescript, actually -- a Clojure dialect that compiles to JS.

Well, Clojure too, on the server side of things.


Are we really gonna need the JVM running the backend for this? That seems so unnecessary.


Given the initial goal was for a Clojure editor (which runs on the JVM), running the JVM was a prerequisite anyway.


I'm pretty sure the core of it is to be written in Clojure, so yes, you'll need the JVM running. It is necessary if it is to be written in a JVM language. Eclipse and a number of other IDEs also require a JVM to be running.


you could probably just precompile your extension


afaict, precompiled java still requires the jvm.


What I worry about Light Table is what it won't be from Emacs. At the end of the day, Emacs is still a text editor, and still edits files. This means that I really can use it for anything, doesn't matter if I have a mode for it, or an embedded compiler/REPL. It still just works, and we can't forget this if we want a modern Emacs.

Emacs was born in a world of textfiles, Light Table shows us a post-textfile world, but before we can get to the future, it needs to be able to survive in the world we live in today, which is one where textfiles are king.


From the bottom of the post:

"If you couple [DSTs] with the generalized editing capabilities I showed last time, you have what we believe to be the future of tools: an environment that you are able to mold to the exact shape of your problem."

I agree, we have no intention of removing general editing - you need it as much as anything else at this point.


I'm more deeply concerned about the fact that Emacs is something which, roughly speaking, I can control. Emacs is a community project. Your project appears to be commercial in nature, regardless of whether or not it's open source. Your project will also be a dictatorship by dint of the fact that it belongs to you.

Why should I trust you to provide the most fundamental tool in my work?


It will probably be under the GPL just like Emacs, so I'm not sure I understand the concern?


I think the fear is in the "probably". YCombinator, for instance, doesn't have a good record of doing things just for the community good, they are after all profit seeking.

That's not to say it won't happen, but the fear is there.


What kind of business strategies would be compatible with that?


I'm fine with profit-seeking, but GNU projects like Emacs tend to be too fundamental to allow a proprietary solution to predominate. (Cf. gcc)

I'm fine paying for servers, for contractors, services, random productivity-ware like Pivotal Tracker etc. but I'm never going to be okay with subjecting my development environment, something I've honed for years and years, to fee extraction or proprietary control by a commercial entity.


He doesn't have to cater to you or me and I think it would be a mistake to do so. Visual Studio is very popular... When Light Table comes out, at the end of the day I'll still be using vim and I suspect most emacs users will still be using emacs. We're not the target audience. I disagree that Light Table needs to be anything like emacs to dominate, it can even have a proprietary license, it can skip over us just as Eclipse, VS, et al. have done. That's fine. I'd rather that be the case and see a pretty end-product that serves its original goals well (and I may even try it for fun if it's free) than having a half-baked "vim-mode" stuck on at the end just to try and attract me.


Visual Studio is a unique case in that it had the giant of Microsoft and their windows platform behind it, and IIRC, at the time no opensource free alternatives. I'm not sure in a modern world, Light Table advantages would afford it the same spread.


>He doesn't have to cater to you or me

You're right.

>I think it would be a mistake to do so.

Maybe.

>Visual Studio is very popular... When Light Table comes out

Does not follow. Visual Studio users will NOT be using Light Table even if they're aware of its existence (and they won't be, save for the few poor bastards working in Microsoft-land and reading HN).

Light Table, in terms of addressable market, is really only talking to grumpy hackers like me and startup people. Maybe particularly keen hobbyists who are good at following the state of the art.

> We're not the target audience.

Then why is his open source community (Clojure) and people he's reached mostly involve exactly our target audience?

>I'd rather that be the case and see a pretty end-product that serves its original goals well (and I may even try it for fun if it's free) than having a half-baked "vim-mode" stuck on at the end just to try and attract me.

That is...not what I was talking about. Did you even read what I said?

I was talking about freedom, not bolting it onto an existing editor. The point is that I don't want to Monsanto-ify my tools and be dependent on an unaccountable commercial entity for how I work.


Also emacs provides an extensive platform with tons of modes to support pretty much anything you can throw at it, works in a terminal if needed, has an abstraction over files (buffers), debuggers, easy modes for vi/cua users, can connect to browser instance if needed and tons more.

Building a lighttable mode or even several small modes (libraries vs framework) for emacs would make more sense.

It is going to require a huge effort to duplicate a fraction of what it provides already.

But from a marketing point of view it is/was probably smarter to show eye candy to attract funding, but I am not sure it is the best route in the long run.


The advantage of LightTable's approach is that using HTML, is a simple, trivially extensible and powerful way to provide advanced UI widgeting, something modern emacs supports very poorly. Mostly due to working in a terminal if needed, but I think it holds it back a bit. The closest thing we have in emacs is pixmap support, which is poor, and painful to use!

Though, is LightTable the best/easiest way to get that? I don't know, it may be easier to render emacs buffers into a webkit view, it may also not be.


> Though, is LightTable the best/easiest way to get that? I don't know, it may be easier to render emacs buffers into a webkit view, it may also not be.

That is what I meant with "connect to browser instances" (swank-js already allows that, among others). Basically when you need more advanced rendering, or browser environment when it is your target (browser based games and whatnot), this could be good enough and you can leverage a huge ecosystem for all the rest.


Sure, it could be good enough, but the ecosystem has not been building up around that. Perhaps it's the seperate languages used, or the clunkiness of having to use another browser and all the setup just to render a simple graph. But I personally have not found an extension that takes advantage of that.


It's the versatility of emacs that keeps me coming back. I need to use R for this project? Python? C? Well, at least I can use it through the comforting interface of emacs.


> minus Eclipse programming in Java would be a very frustrating experience

I'm not sure about that... Eclipse gets fatter and slower with each release. Of course, I still use it because Google really wants Android developers to do so. In my opinion, the most frustrating thing about using Eclipse for Android work is that it crashes every time I try to export a package, unless I close every open file and restart Eclipse before trying. (the problem is mitigated by disabling automatic builds)

I guess that's because Eclipse runs on Java and Java is wasteful. It would be really nice if we could have a "native" equivalent of Eclipse, with less bloat.


I face similar issues at work but I don't think Eclipse's issue is Java, else you're saying that anything developed in Java will face a "boated" fate. Eclipse's problem is exactly what Chris mentioned in the article, ok on most things and awesome at none.

Edit: Typos.


Indeed, it's not all Java's fault. But I think Java does contribute to the overhead because my experience with Java programs in general usually involves long startup time and excessive memory usage.

(And then there's the UI bloat, which makes Eclipse look like this by default: < http://www.flickr.com/photos/geofharries/5145925147/sizes/o/... >. But that's a totally different issue. Thank goodness for Fast View.)


I see your point there. I myself tolerate Eclipse on Ubuntu, where the UI surprisingly fits, at least for me. Its almost indistinguishable from other UIs, except maybe Spotify which is (IMO) way ahead of the rest. But I cant stand Eclipse on my Mac OS X and there you can see all the stuff you mentioned.


At it's core, Eclipse is really good at Java. It's why it killed off Visual Cafe and most other commercial IDEs (was sad to see Borland go).

The issue is that it's more than just a Java language editor. Once you load it up with all the extras to accommodate development models, frameworks, runtimes, build processes, etc. it does become an unwieldy mess. But it's really hard not to considering how moving parts large-scale development has.


I think Light Tables target is dynamic languages, which the current crop of IDEs dont have great support for.


If we assume dynamic languages are the future, then scripting is absolutely the right answer.

However, what I see is people using dynamic languages because they are what frameworks are written in, not because they want to use a dynamic language. I hope that LightTable incorporates a packaging mechanism such that we can have a Ruby on Rails package, for example, and the 60% of RoR developers who never tweak anything can be more productive.

The problem is that you can give an excellent developer an unspecified tool and they will make it serve their purpose. We need the ability to pass those productivity improvements down the food chain, which is where Emacs fails utterly.


> But its really wrong to say IDE's like Eclipse don't do one specific task well. Eclipse really makes Java programming very easy.

“Making Java programming easy” is not one specific task!


I don't quite understand what the difference is between Light Table's modes and IDEs' plugins. Domain-specific components are exactly what make IDEs 'integrated'; without them they are generalised editors. But there is absolutely no difference, as far as I can tell, between Light Table's new SQL mode and an SQL IDE plugin.

I'm personally much more fond of the Unix 'tool approach', in which there are no task-specific modes or plugins, but tools can still be composed ad hoc, as in Plan 9's Acme.


Sure, anything can be built given enough time :) The difference is that those modes can be built in a couple of hours with arbitrary UI and virtually any interactions you can think of. It's hard for me to imagine being able to build any of the things I showed in say Eclipse in any reasonable amount of time.

The idea is that Light Table will be built from the ground up to support very dynamic environmental contexts in which you can place anything.


But, instead compare that to Emacs, these are exactly the sorts of things people can and do do in emacs in reasonable amounts of time. And exactly why emacs has many great tools, from paredit-mode to SLIME.

The comparison to emacs isn't meant as a slight to LightTable either, but please, let's not forgot the past when creating the future.


I've seen a lot of cool stuff in Emacs, but I haven't seen anything nearly this nice done in any reasonable amount of time. Emacs is a predominately text-based thing. Light table is not.

With that said, wouldn't his "It's hard for me to imagine being able to build anything I showed in say Eclipse in any reasonable amount of time" comment also apply to Emacs?


Generally speaking, it ends up much less graphical, which is the major failing of Emacs in comparison to Lights Table, but if the functionality is what you are looking for, instead of the pretties then Emacs has similar development time. I'm not saying there is no value in Lights Table, but we should just be clear on exactly what the advantages are.


So, an IDE with a better plugin API?


So Light Table is a rapid prototyping tool?


Light Table is a rapid tool prototyping platform :)


Same. At least you have my upvote, for what it's worth!

Light table looks to me (with all the respect due to the work of the authors) like a fad where people get all hyped up about a product. I mean there's nothing revolutionary and while looking at the video I was thinking "boy this is too confusing!". I also believe that when the project is going to have 500+ lines of code per file, the way it's done now, is going to be horrible to deal with it!

There are other stuff that bug me out: when I program I don't want rounded borders and everything. I don't want 40 different colors.

But if people are going to be it, great.


Maybe it's all a fad (although I personally doubt it) but I think it's a step towards a revolution in it's own little way however it turns out. Modern IDEs are extremely cluttered and (imho) messy. Light Table seems like a refreshing change of pace.

As for the rounded corners, I think it really is a matter of personal preference and they're definitely not going to affect my ability to program. Colors are just used to visual convey information seamlessly (think syntax highlighting). I think they can really be put to good use.

I do agree with you that huge "files" (the concept seems to be abstracted by the IDE) could get messy. However, I trust the Light Table guys to get it right :)


Watch it again. It's not so much the LOC per file that matters, it's the size of your functions / methods. Notice when light table pulls up the relevant code being used by a call it's method specific and not file specific.

Isn't that the whole point? To me this looks pretty amazing.


The one thing that stands out is the "there's nothing revolutionary" comment. Have you watched the videos this guy puts out? If there is something like this already around, please link me to it so I can use it!


With all of the demos and information posted I still have trouble visualizing this working for real-world applications. A specific example: in the Python/Flask demo, functions were added to the current view as it was called. How would this work in a more complex case with calls to many functions, each which call many more functions (and so on), each belonging to different objects, etc.? The view would quickly become a huge list of functions and code blocks, most of which you probably don't need to see at any given time, and at this point it's no more useful than plain old user-curated tabs.

That's just one example. The same conceptual problems pop up for stuff like on-the-fly code execution (what if your code depends on user input or many SQL queries or files that may or may not exist at that point), benchmark mode (benchmarking a complex app is obviously a lot more complicated than just running two code blocks side by side), etc.

I know this is just a demo and it's all very early in the process, and I'm not saying that this should be a solved problem yet, but I just can't picture in my head a way that this could ever be a solved problem as long as LightTable remains somewhat similar to its current state.


Right now it goes at most one level deep into the call tree to prevent what you're talking about. The thinking I've had so far is that you then have a few options. You could go to one of the specific functions and say I want to see everything, you could go to a specific token and bring up its definition, or you could "focus" it to switch the starting point to that function. I think any of those could work, but I haven't tested them yet :)

To your second point the normal caveats of a replish environment will apply to any code execution stuff :) And the benchmarking mode was a simple example for working against functions once you already know they're the bottleneck. In a real application you probably need help getting there.

I agree and I think a big part of the job ahead is to understand how we can ensure these sorts of experiences mesh and flow together when working on something larger. Fortunately, Light Table itself provides a great project to prove that on.


They could display it as a graph with function names like a call stack. Most IDEs support most of the features shown in a piecemeal fashion but Light table seem to have the features more integrated, reducing the friction between coding and testing.


As promised, this is the second demo complete with python!

For those who can't use vimeo: http://www.youtube.com/watch?v=osLReQSB9F0


It is so sad that Vimeo is blocked by many Indian ISPs for silly reasons. The whole Internet feels crippled. There must have been at least a dozen videos I wanted to watch today that were recklessly censored. Thanks for the youtube link. I think we need a Redundant Array of Cloud Videos.


off topic, but dont feel bad, vimeo and youtube are both blocked at DHS.


Do you mean the Department of Homeland Security?


Yes. HQ specifically.


Thank you for taking time to put it on Youtube also! I really liked the website example. Reaching to the right code in the right file gets cumbersome pretty quickly in a project of even medium size!


It would be great to see the code used to make these modes.


A 'macro system for tools'. Isn't this what the academic bozos call Language Workbenches?

Extensible tool-building platforms for DSLs are hardly anything new. Reading things like this, i sometimes worry that the HN-circling web crowd is reinventing things that others invented just a few years ago. Like some sort of collective not-invented-here syndrome.

E.g. Check out MetaEdit+ - their website isn't Silicon Valley Sexy, but the tool is amazing. And has been, for the past 10+ years. http://www.metacase.com/mep/

Now, there's plenty new and well-rehashed ideas in Light Table. I'll be buying a license, probably. But the insight in this article isn't very new at all.


> Reading things like this, i sometimes worry that > the HN-circling web crowd is reinventing things > that others invented just a few years ago.

The difference in this case is that the HN web crowd are targeting their fellow programmers, and not the "Enterprise" crowd.

I've been following the DSL tooling scene, and it's horrible. Think closed source, expensive and targeted at the Enterprise (or specific engineering disciplines).

The community is full of MDA (model-driven-architecture) types: too often is the focus on increasing complexity (for ego boosting / job security) instead of simplicity and accessibility.

The HN crowd are pretty much the polar opposite: the focus is on simplicity and scale. Sharing knowledge, instead of locking it up for fun and "profit".

That's why I like it here :)


> The community is full of MDA (model-driven-architecture) types: too often is the focus on increasing complexity (for ego boosting / job security) instead of simplicity and accessibility. > .. instead of locking it up for fun and "profit".

still, if you ignore the MDA and executable uml silliness, there's quite a few ideas that can be picked from that closed space, imo.


> still, if you ignore the MDA and executable uml silliness, there's quite a few ideas that can be picked from that closed space, imo.

Thats what Light Table does, isn't it? If not it will at least allow you to implement these ideas in a simple way.


The flask example is the really pertinent one to me. Those were all the views that you need when working on a web app and it would be awesome to have them all come up automatically like that. It's possible to make emacs show you all those views by manually opening up frames and finding the right code, and emacs can even render html (but really, use your browser of choice for that). I'm sure it would be possible to write the elisp to have it do it all almost as automagically and smoothly as light-table (but not with rounded corners). The problem is, if I'm a python expert writing python web-apps, breaking out elisp to script up an environment like this is just too daunting. Instead I usually just keep checking back at the emacs wiki to see if anyone else has done it for me... (should I admit that?)

Is Light Table going to solve that problem? Unfortunately this blog post and the videos don't demonstrate how you create these modes. Do you have to become a clojure, clojurescript, html5, css expert?


I spent this morning fiddling with elisp to get emacs to do something I wanted. On the one hand, it's incredibly annoying, considering that I don't know anything about elisp. On the other hand, I figured out what I needed, and now it's a little easier.

On the gripping hand, there's zero chance that I'll be trying to replicate that functionality in emacs. Even with the wiki, and it's random ~/Desktop/elisp_notes.ver2.txt feel, isn't that helpful.


Im guessing but you should be able to use any JVM language on the server and any language that compiles to JS on the client. If you want to do more visual stuff then the framework allready does you problebly want get around html and css.

With some work it would probebly be possible to make the Server IPA more general.


>> The future of tools isn't in a better Eclipse or Visual Studio, it's in easily created domain specific experiences.

How is that goal different from that of the Eclipse platform (http://www.eclipse.org/platform/overview.php) - a common base where people can develop individual add-ons to suit the domain they're working on? Eclipse platform and LT clearly have different interaction models and technologies, but from the leading quote of the article, the same goal.

Writing Java in Eclipse is, as many have said, a great experience (in the continuum of Java-development experience). But you know what else is pretty good? PyDev (http://pydev.org/) - a Python IDE that's written on the Eclipse platform. It uses the same interaction models and designs as Eclipse for Java, but it's also got a whole bunch of bits that are just targeted at Python development. There's also a tool (the name of which I don't recall) that our DBA uses for all his database management that's written on the Eclipse platform.

I'm all for specific - I use PyCharm every day, which does one thing (Python development) really well. But I think calling out Eclipse like the parent article does is wrong. It too can be a platform for "easily created domain specific experiences"; it's just a different one with a different paradigm.


> But you know what else is pretty good? PyDev

It's not. It's really not. I've heard good things about PyCharm, but the best environment for Python that I have seen so far is Emacs. And Light Table definitely looks like an improvement on that. My only concern with this is the speed. I want this to have the same response time as Emacs or Vim. Then there would be no reason not to use it.


I specifically chose the description "pretty good" (as opposed to "great" or something more flowery) for PyDev, because I think that best summarizes it. It's got a number of issues with it (and it's sometimes as slow as a dog), but for the hobby developer it's more than enough.

Once I started working in Python and spending 30-something hours/week in the environment, its flaws started to overcome its benefits (namely: it was free, and I knew how to use it), and it was time to move to PyCharm...which is also slow, unless you throw a few gigs of RAM at it and at which point it becomes amazing.


What I would like is a way to do more graphical programming, like this: https://www.google.com/search?hl=en&q=reaktor&ion=1&... or this: https://www.google.com/search?hl=en&q=reaktor&ion=1&... (which latter includes both C-like and assembly code modules, as well as extensive GUI manipulation capabilities).

When I was learning to code, and still sometimes, what annoys me about typing is that I don't know what I don't know. With graphical programming, having predefined modules with discoverable inputs and outputs encourages me to try connecting things together on a what-if basis to a much greater degree than a textual environment. This is what I find very attractive about the way Light Table is going; a lot of the time I want to build things but not necessarily to write code.


The first time I heard about Light Table I was rather critical but this begins to look like something that could really replace vim for me. This is rather surprising given my general distaste of IDEs.


Same here.

As much as I like vim - it remains software from the stone age and it seems absurd that our main work interface (editor and shell) still consists of an emulated 1980s text-mode terminal.

LightTable looks like a major step in the right direction. I think the best indicator for success will be when the vim/emacs-diehards start porting their respective shortcuts and functionality over.

I could very well see this fundamental approach (modular/dynamically expanding interface) become the new paradigm for editors and (hopefully) terminals if the author manages to make the prototype versatile and hacker-friendly enough.

We've really been entrapped inside ancient TTY-emulations and inadequate GUI-widget sets for way too long.


The thing that draws me to Vim, really, is the extensibility. There's a steep learning curve to creating a powerful Vim extension, but there are still a huge number of them. Imagine if Light Table can make editor extension something you can do per project!

I probably have a unique preferred layout of Vim splits and tabs that I use for each codebase I work with. Being able to take this further, telling the editor which parts of code are significant and in which ways they go together, I'd have so much less mental overhead.

I love the idea that I could navigate our current codebase by endpoint, jumping to the account management portion of our API, automatically having the relevant back-end code and unit tests on-screen, along with benchmark info and test results. Since we adhere to general conventions at least within a project, there's no reason this can't be done.


vims extensibility is a commonly cited positive, but I totally do not understand it, since pretty much every editor imaginable is extensible in similar fashion, and pretty much all of the use better languages then vim.

By contrast, emacs is basically an application platform that ships with an editor implementation, and eclipse is a platform for building editors.

It's not that vim isn't extensible, it is, just not as much as other alternatives, and nowhere near as easily as most of its competition.

IMO the real advantage of vim is that it is a highly efficient and productive tool that works great without any customization, and is available everywhere without installation. Which is pretty much the opposite of the above opinion.


>>but this begins to look like something that could really replace vim for me.

The Irony! If you find this is what is supposed to replace Vim for you, then Emacs already replaces vim.

He is talking of Extensible Macros for <any tool>. And Emacs is Extensible Macros for Taco Editor.

I guess what you want is Emacs.


Boy am I happy I pledged for Light Table. And the benchmark mode looks so freaking great. I'm getting excited just thinking about it. I don't think I'll be able to wait until the early beta. ARGHH!


It's a pretty impressive demo. It looks like it could be the mother of all scratchpads. It looks like it might have a bit of a scary learning curve though.

I can certainly think of a lot of ideas of what I might try to implement with such an approach. Really any existing code inspection/analysis approach.

I'm thinking some sort of view onto Powershell providers could be interesting.

Maybe exception lookups in the code as your browse through an error log.

Definitely a regex tester utility: does your string match the regex? Do parts of it match part of the regex? What's an example string that would match? Can we display all of this dynamically in real time?


Eclipse with http://xtext.org is an outstanding platform for domain-specific languages and domain-specific tools. I don't know any tool which comes even close.


I'd rather see Light Table features integrated into Eclipse, as creating something as fully featured as Eclipse is...

...going to end up being Eclipse.

So either a massive wheel is being reinvented, or Light Table will be absent of all standard IDE features and consist of the flashy neato Code Bubbles stuff and not much more.

That said, I say develop the hell out of the Light Table concept for all the "new age" (circa 196X) dynamic coder people since their IDEs tend to suck, and let's hope it becomes a standard and we can implement it all in everything else. :)


I'm specifically excited about Light Table (and the second half of this video where he dives into Python/Flask), because as a front-end guy, I generally spend most of my time in views/templates. I occasionally have to dive into models however, and it seems to me Light Table would help me navigate something I consider a bit of a wild west much more efficiently, resulting in learning much faster.

Basically, I'm excited about Light Table because I think it will help me become a better programmer.


The key line for me here is that the future is in 'easily created domain specific experiences'. I think this is very eloquently stated and can't agree more.

I like what Light table is trying to do, hoewver it is still working in pretty much the same 'domain' space as existing IDE's ('code'), and trying to improve on the 'easily created... experiences' part.

As the post is waxing lyrical, my piece to add to the broad-concept discussion is that I'd really like to see more programs which try to be applicable to a broad variety of non-coding domains, which actually occupy the majority of the work that people do on computers (working with images, working with spreadsheets, working with documents and pages, working with 3d spaces, animation, realtime information, etc.), allowing the easy creation of 'domain specific experiences' in these, which is generally impossible or very difficult in most of todays pre-compiled software for these tasks.

[I hope that all makes sense to someone :) Would also appreciate any discussion as something along these lines is a side-project of mine atm]


We showed examples that relate very cleanly to "normal coding", but what we ultimately want to see is exactly what you're describing. There are so many places where a thin veil over the implementation would be immensely useful, presenting new interfaces for things like working with physics simulations, financial models, etc etc.


Thanks for the response. I realise you probably have huge priorities finding your way to MVP right now, however I hope to see more of this side in the future. I just saw your 'live game editor' video, which is probably closer to what I am thinking of - using the visual element (in that case the game window) to feed back into the live code [this hasn't really been in the lighttable videos - which led me to my assumption lighttable was 'code' based in my prev post]. I really think that the future is in there somewhere.

Best of luck to you by the way :)


I think a lot of that stuff can be done if there are JS implmentation. You want be able to use the importend functions from excel in a browser (or anywhere else) its just made for this kind of stuff. If there are JS you might be able to inlude them into the working process of Light Table. Lets see, its a nice idea.


Yeah. JS might help in this regard, but I guess I am hoping for an system where there isn't the same divide between coding environment and platform being coded for. If you could build excel (or similar) _within_ lighttable - and still allow all sorts of live code testing - that would be a real leap to me.


If you come up with some new code in a "scratchpad" area and want to save it, where will it go? In a new file? Appended to the end of an existing file?

Similarly, if you edit one of the "supporting" functions that appear and want to save those changes, will they be saved in-place (e.g. line 217-241) in whichever file that function is from?


Being specific is not a feature, this is what you do when you have no other way to solve a problem. The ambitious challenge raised by Light Table was to generalize Bret Victor's ideas to general programming, if they are unable to do this, I'll stick to my IDE.


Bret Victor's ideas apply differently to different problem domains. This was very apparent from his talk. It looks like Chris is trying to build a platform that makes applying Bret's ideas very simple and natural. Also, I assume that many of these modes will be generalized and available out of the box, so all you have to do is the pick the one that best suits your needs for any given task.


In case anyone is wondering:

"Bret Victor - Inventing on Principle" (http://www.youtube.com/watch?v=PUv66718DII)


Thank you for the link.

Make tools to be extensions of our bodies via immediate feedback is a useful idea (it is not the main point of talk, but it stands out to me).

As a side note: It might be even be literally true for physical tools i.e., a brain can physically change to see the tool as an extension of the hand (from a study about ape, its brain, and a stick).


It generalizes them the lisp way: by building machines that build machines.


Looks more promising every time! While I like the idea to not work on your stuff as files, I have a question in that regard:

Do you have specific plans on how to incorporate version control when not primarily relying on files?


It's still serializing to files - it has to, our workflows are entirely dependent on them :)


Are you developing Light Table using Light Table? If not, is that a future aim?


Recently I was thinking maybe software industry is too much obsessive about tool making. I wouldn't mind spending much more time and effort using a bad IDE re-factoring bad code that works good and cures cancer. I don't really care how awesome the static analysis tool I am using, or how awesome the meta-meta-meta-meta-meta-meta-meta-meta programming language I am using if I work on pointless product. Maybe I am wrong and those tools are the only way for real breakthroughs in bioinformatics.

what do you think?


This 'problem' is old. Even the Hackers in the 60s didn't often do anything 'real'. The made tools to make it easier to make other tools, and so on. The think is that WHEN you want to develop something real you want to have these tools ready to go.

With your aditued there will not be that much progress, since everybody would have just said 'mmhh lets not develop a good compiler for C lets write assembler'. In my opinion as long as people develop better tools (languages, IDEs, compilers, debuggers) there is need for them. If one guy spends a couple of month on a Tool, how long will it take until the time saved is 'recoverd' by the users of that tool? Making tools yileds economic benefit, just like in the real word a maschine that does something better or faster will result in economic benefit.

That is not do say there is never mal-investment. Somebody might spend a long time developing something and nobody will use it, programming related or not. This however is not an argument for no innovation.


I love it, especially the grouping of files: route + models + templates, in 1 view is something I see a use for. Does anyone know of an editor which can do something similar?


Plenty of editors offer split view editing. You'll need to actually open the route, model and template files, but it's easy enough to have them all open at the same time. The real challenge here is how they'll handle larger files (real-world production code rarely is that small and clean, you almost always have complex logic and a number of database calls).


isn't it the idea to forget about files, so I can see the models & and views I'm interested in in for a particular workflow. Regardles of where & which file they're located in?


More of a meta comment on the future being specific and how it is all about creating more domain-specific tools vs generalized tools... I think that's really a common property in any complex, highly powerful system. Think about the brain, the economy, DNA, a corporation even... etc. Domain specificity is the past and the present, too!


As a non-developer. I would love this for php & wordpress.

Here me out: the people who aren't in IDE's all day could benefit the most from this. They don't know where the functions are or even how to find them sometimes. I resort to google 9/10 when looking for how some functions.

This has huge applications for helping non-programmers become programmers.


As an Indian who cannot access Vimeo, this is what I see. http://i.imgur.com/ojTVQ.png May I ask for a link to the video on another service?


Aw, that is a very boring "access denied" message.


look at my comment below.


Thank you!


I like this concept. Once Light Table is becoming available I will definitely try to make a Flow-Based Programming mode for http://noflojs.org/


This somehow reminds me of Microsoft's "strategy", or whatever you want to call it (VisualStudio LightSwitch, SharePoint Designer)?


I was just on Subtle Patterns this morning, and I now recognize where Chris grabbed the two background aluminum images!


LOVE the web example! Keep up the good work!


Light Table looks amazing. Simply amazing.


So the future is the Unix philosophy.


This is amazing! I can't wait to use it.


March of the specific.

Google didn't win by being the best general-purpose search, where people go to look for anything on the Internet. It won by being the best for searching only um, okay not the best example.

Facebook didn't just raise 14billion at a valuation of 100billion by being the best general-purpose social network, where just anyone would have a profile. It won by being the best network for, uh.. Okay, not the best example.

Well, take a revolutionary new product like the iPad. It doesn't have hundreds or thousands of apps to do uh, hold on. I'm sure that somewhere there's the ONE thing that it does. Uh, it's a screen?

Look, step back. There's only one thing you can do in Photoshop. I mean there's just one thing to use Ubuntu for. Sorry, I meant that when you say the word 'Harvard' everyone knows what the ONE thing that they teach is!

Okay, look, these might not be the BEST examples in the world. Take a pair of jeans. There is ONE time and ONE place to, uh.

Fuck. I'm done. If the future is anything like the present, nobody even knows what the fuck business Amazon is in anymore.

http://finance.yahoo.com/echarts?s=AMZN+Interactive#symbol=a...;

The future is the very opposite of the word "specific".


All of your examples are gestalts. They're not single seamless abstractions, they're patchworks that are more than the sum of their parts.

That's precisely what is being proposed here: a platform for creating a development environment that is more than the sum of its parts. Something that gives you composable pieces that can be fit together into something that maps directly onto your problem space.

Is this really so unclear? I can't picture the hypothetical product that you're arguing against.


Well, I looked at the "gestalt" Wikipedia article. As near as I can make out, you're saying that Google in fact highly tailors its search-for-geneticists, which has nothing to do with its search-for-bakers: it seems like a single whole, but isn't. But that patently isn't so. Patently, every niche runs off the same algorithms. Equally, bankers' circle of friends use the same facebook that teenagers' circle of friends use: it isn't multitudinous facebooks that seem to be one but are really quite different. Likewise jeans in jeans-and-a-blazer are obviously the same jeans as jeans in jeans-and-a-tshirt. iPad apps are built with the very same SDK and frequently have very similar UI/UX. There is literally nothing domain-specific about objective c. I will grant you that Amazon's cloud stuff is very different from its merchandizing operations, but beyond that I don't see where the big difference between shipping books and shipping dry cereal is, which is two businesses that Amazon is now in. In fact, if anything, Amazon's cloud services are the OPPOSITE of domain-specific: Reddit, which includes ZERO filesharing, is on it, and so is Dropbox, which is basically ONLY filesharing. If you look at what Amazon is actually exposing with AWS, you will see it is as generic and non-domain-specific as theoretically possible. Heck, they've even abstracted away the individual server! (So the last bastion of something that might separate a database-heavy user site from a disk-heavy backup site disappears). I would say that their whole movement is towards being non-specific.

You probably understand what you're saying better than I do, so please do explain. Because from where I'm standing, it seems the whole march of the Internet is in busting domain-specific-languages and approaches. Every time a cute hack with CSS hits the front page, it's proof that CSS derives its power precisely from not being a domain specific language. Off-hand, can you name a single domain-specific language or approach that has really 'won'?

You may know more about this than I do, so it is certainly a genuine question.


Let's talk about Google, then. In addition to having special ways of displaying results for different types of searches (local, geo, weather, shopping, etc.), there are also a lot of different heuristics underlying the search results. It's not just PageRank-and-done, it's many different approaches trying to maintain a uniform level of quality across a variety of niches.

I'll repeat that again: it's not the approach that's homogeneous, it's the quality.

You can see this with Apple, too. Their devices aren't limited to some set number of use-cases, it provides an API and ecosystem for creating new, domain-specific applications. You mention Objective-C in your response, which is kind of missing the point; we're talking about domain-specific applications, not domain-specific languages. LightTable will presumably be very consistent and general at the API level, and uses Clojure, which is a general-purpose language as well.

As for Amazon, their offerings span the entire spectrum from general to domain-specific. You can get an empty VM, but you can also get something like Elastic MapReduce. Amazon will happily develop domain-specific products on top of their platform as long as there's a large enough market.

Finally, look at Rails, which is a framework specifically for creating web apps. It doesn't help me write a new NoSQL server, it doesn't help me write a new AAA video game, it seems to be doing okay all the same. It's used because it's a really effective lever in certain, specific cases. If we can have a development environment which is a similarly large lever across a wide range of cases, how could that ever be a bad thing?


You're saying that CSS isn't domain-specific?


The more and more you can do with it, clearly it's becoming less and less domain-specific.

http://www.cssplay.co.uk/menu/amazing.html

or just google for hackernews posts like entirely in css, pure css, all in css, etc. Hell from a quick glance it seems that if you google for 'in css' half the posts on hackernews are like that...

http://y.ww.com/item?id=2636440

It's not hard to see where this is going...


All those Facebook profiles: all different, all highly customizable. Specific.

All those hundreds of thousands of iPad apps: mostly very specific, some wildly so.

Increasingly these days, every business Amazon gets into, it builds a different interface for. Certainly that's the case with their electronic and downloadable offerings.

Even Google web search is fairly specific when viewed in context of their putative mission to organize the world's information. It sure doesn't look like Groups (and thank god for that).

And Light Table itself: not very specific. A general platform.

The word "platform" is key, I think. The link discusses what we put on our platforms.


RUUUUUUBBBBYYYYY SUUUUPPPOOOORRRTTTTT!


Hopefully with the speed he added Python, ruby / rails support is only weeks away too. :)


I agree! this just screams Ruby/Rails/Sinatra to me. Can't wait for it's release.


Dear Rubyists/rockstar ninjas/brogrammers/whatever you're calling yourselves this week: please stay well away from whatever community develops around Light Table.




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

Search: