Hacker News new | past | comments | ask | show | jobs | submit login
Light Table - Embracing Abstraction (chris-granger.com)
163 points by bpierre on Sept 26, 2012 | hide | past | favorite | 74 comments



> we are not the recipe writers we were 20 years ago - that instead we are "abstractioners"

> we have to know far more than just the basic consturcts [sic] of the language and things like IO

Did anyone else find these annoying? I recall building a great deal of abstraction into my systems 20 years ago, and we certainly used frameworks at various layers of the system. We had to know far more than basic language constructs and IO.

Today's systems and frameworks are more available (open-source) and differently targeted (e.g. cloud-scale problems), but they're still just building abstractions on what came before, just like us old fogies were doing 20 years ago. The problems and solutions are not qualitatively different -- they just have different scale and connectivity.

All that said, Light Table seems pretty cool. But it's not evidence of deeper insight than what came before.


Yes, I found that annoying. But it's not uncommon when reading stuff written by programmers who make extensive use of JavaScript. For whatever reason it seems to have attracted people who don't have much breadth or depth of programming experience yet at the same time like to make grand statements.

It's interesting that the author, who is speaking about things that were happening 20 years ago, graduated from college in 2008 (http://www.chris-granger.com/resume/) and thus 20 years ago he was likely a very small child.

This combination of lack of depth and yet grandeur is seen in other projects and is annoying because it means that one is forced to wade through a lot of noise to understand projects like nodejs, couchdb, etc. And it does the people who write like that a disservice. Rather then overselling their weak knowledge they should point out the cool stuff in what they are doing and let that speak for itself. It's counterproductive to pretend to be smarter than you are.


I wouldn't necessarily pinpoint the Javascript community, but yes, I would agree that there does seem to be an awful lot of really young and frankly inexperienced developers who seem to have ridiculous delusions of grandeur and are completely ignorant of the rich history of brilliant and accomplished people who have explored the problem spaces they are also exploring.

I blame the whole Silicon Valley "10x hacker" mentality. There's a whole lot of young and frankly pretty mediocre developers strutting around thinking that because they (a) live in the valley and (b) built shittytodoapp.io they're at the same level as Knuth.


You are correct that I should not claim that the entire JavaScript community is like that, but that's where I've seen the most prevalent delusions of grandeur problem.


You don't realize the irony in what you said! You complain about JavaScript developers making grand statements and you are making a grand statement about ALL JavaScript developer!

tsk tsk tsk


A sweeping generalization is not the same as a grand statement.


I actually attended the talk this is from, the concept of recipe writers vs abstractioners is not aimed at the actual developers but at the tools and how they are developed. His idea is that the tools should be built around aiding developers in their need to abstract the data (Bret Victor talked a lot about this as well).


Yeah, I was surprised about how big a deal he was making of 'abstractions'. I genuinely can't think of a single real-world developer tool that did not have support for it.

Even UML had support for PSM, PIM, etc.


I think Mr. Granger should refrain from using inaccurate remarks about the history of programming. Light Table is neat but it is not the first attempt at an interactive development environment. His ideas were quite common 30+ years ago (20 years ago would have been right about the time when this style of programming started falling out of vogue). Alan Kay does a far better job than I can in explaining some of this history:

http://www.youtube.com/watch?v=FvmTSpJU-Xc&feature=youtu...

Update I wasn't being terribly fair. Granger might simply not have been aware. In that case I hope he sees my comment and watches the above video. :)


When I gave my talk on live programming in OOPSLA/Onward! 2007, one of the gang of four (of Design Patterns fame) criticized me on not mentioning smalltalk enough. You know, I think we are all aware of Smalltalk and its ability to reload code on the fly, or the "live" eToys demo Alan Kay was giving in the late 90s/early 00s (I saw it the first time at his ECOOP 2000 banquet speech). But there really is something special in Light Table (and other projects, including my own) that go beyond that; they are working on a practical tool for programmers, they are really focusing on an interactive UX, which to be clear, Smalltalk environments never really had.

Yes, get your history and citation right to avoid being flamed. But no, it didn't end with Smalltalk (or Lisp, or whatever) and we are not just going back to that.


"Yes, get your history and citation right to avoid being flamed."

That's the wrong motivation for understanding the history of computing as it relates to what you are working on. There are things to learn from history. It's not the ability to correctly cite Smalltalk etc. to quiet some older programmers , it's the ability to compare, contrast and learn from what came before. The really debilitating thing about not understanding the history is that you are doomed to repeat the same mistakes; it's better if you can make new mistakes.

For example, you say "But there really is something special in Light Table". Great. What is it?


I've mentioned in a peer post that his design is very well done; they are focusing on awareness and code topology issues that I think is long overdue. Now, do I know exactly what the differences are between smalltalk yet? No, not at all. But I've never seen smalltalk demos like this (the closest would be etoys, which was a not-very-comparable end-user programming experience).

Again, its a blog post and a talk, I don't think we should expect rigor on previous/related work coverage at this point, that will come with time.


Appeals to emotion don't really tell me what makes Light Table innovative. You say there is, "something special," about it. What is it?

It takes either hubris or ignorance to believe your ideas are completely original. Whether Chris is aware of it or not, Light Table is not a new idea. I'm not suggesting it isn't a good one because I believe it is. However the way he worded his post suggests to me that he is probably not aware of the giants upon whose shoulders he now stands.

Nobody just picked up a guitar and invented rock-and-roll. The theory or relativity didn't just come to Einstein one day. No good idea is born in a vacuum.

I only rain on the parade a little in the hopes that his writing will improve and to raise awareness in people who aren't aware that these are good ideas and that there have been many attempts to develop them.


Light Table's layout and association between code and UI is much more direct than Smalltalk's; I would say its even better when you consider morphic. The way they've reified execution is also nicely done (seeing what objects exist as they are created).

There is a lot of innovations here, and yes, they are probably building on 20 years of related work THAT GO WAY BEYOND SMALLTALK. If he goes into a smalltalk credit, why not Lisp machines? Why not VPLs? Why not every little research project that has attempted this in the past (including my own work)? And he is still correct: the vast majority of programmers haven't been influenced by this at all, we failed, and he is trying again hopefully with something that will work! If he was writing a technical paper, then he could discuss everything in a related work section; but it was a strangeloop talk + blog post, what kind of rigor are you expecting?


Why not simply be more aware of those things?

His blog post made sweeping generalizations about what programming was like twenty years ago that are clearly inaccurate at their worst or at least misleading at best.

He doesn't need to cite anything. He could just make fewer generalizations of the sort in his post. Many programmers from twenty years ago were working on the very kinds of projects he is today. His might be better for many reasons than those early attempts but he does himself and his audience a disservice by not being aware of them.


What does "many" mean? 10? 20? Out of how many programmers who were active back then?

20 years ago most programmers were not using Smalltalk or lisp machines or whatever, even if those things existed they weren't used often, so the author is technically correct about the "state of the art" with the caveat that their were many attempts to go beyond this but nothing got any traction.

Also, you are incorrect about 20 years ago. The first example of liveness and directness in programming was in...1962 with the Sutherland/Sketchpad demo. 50 years ago.


I think 20 years ago would've been a good time to really hardcore market those environments. As a new student with a profitable software company, I would've been interested in this. However I never heard about these technologies until much later; C(++) & Pascal (Modula) and 'rapid' friends Clipper (for business applications) and such were things popular then. Not sure how it was in the US then, but in the EU I didn't see much promotion going on for Smalltalk/Lisp and I didn't know anyone outside uni using those languages. So I think Chris is right there; most programmers will never have seen anything like this in their lives nor do they know it exists, even if they were around in the 80s/90s or earlier when they could've known.


Indeed! The Sketchpad demo. The Mother of All Demos (Englebart who basically conceived of hyper-media and the future of knowledge work). The Symbolics lisp machines.

It's all really cool stuff. I'm really glad that Light Table is making it popular again. Maybe this time we can at least give a nod to where these ideas come from so that more people can be aware. New instead of novel.


> interactive UX, which to be clear, Smalltalk environments never really had

Smalltalk had an interactive UX in 1986 or so when I used it first for some CAD stuff. Or is there a special definition of 'interactive UX' which would rule out what smalltalk offered back then?


You know, people sometimes say Visual C++ is interactive UX because of the freaking form builder. I guess my argument is more about a certain level of interactivity that is missing; its not black and white to be sure.


Don't know about "back then", but if Pharo and Morphic are not "interactive UX" then I have no idea what could be called that...


I was at that talk at UIUC!


I was skeptical of buying into the light table idea until now. Now I see it for what it is: A programmable debugger with a dashboard for your software, as well as an editor, the latter part being less important. It's like if gdb had a baby with some visualization app.

The debugger already is omniscient in terms of what is going on within the program, but it's inept at showing it to you. It's too low-level in that it doesn't know what specific entities are important in your program. It knows addresses, variables, maybe objects. But you have a mental model and instead of trying to get your mental model into low level terms you can program it to have some notion of what to display.


I've spent the last decade writing debuggers; they are anything but omniscient. It's a miracle that they work at all, frankly.

In principle gdb could look at everything that's going on, but in practice doing so would (a) hit a bug in the compiler's debug output and fail, and (b) take forever for any program worth debugging.


Interesting! The point I was trying to make wasn't that it knows everything everything, but it knows a lot more useful information than you.


Reminded me of Minsky's quote about the null program : http://lambda-the-ultimate.org/node/12


Most debuggers are technically not omniscient because they don't trace history. IntelliTrace is better in this regard, but you can see projects like LightTable taking that to the next level.


I'd really really like to watch this video, and countless of other awesome tech videos -- but I can't, there's no captions. As someone who is hard of hearing, I have to wonder how many things I end up missing out on when I can't watch things like this.

Grr.


I took a stab at adding English subtitles for this using Amara's universalsubtitles.org

You can see the results here http://www.universalsubtitles.org/en/videos/9Ws8B7yC3Fjl/en/... and you can also help make the subtitles better.


The video doesn't show any time marks so you'll have to interpolate the locations.

--

So the first thing I thought we would do is create a little custom git widget that shows the files modified in our repository.

So we add a custom object.

And we're going to write some clojure script code just to hold the state of our (circle??) the git status

We just need a way then to get that

So we ask the server for it

And... here we're just creating some html representation of our list of files

And then when we save

We're going to make sure we update

So if we run this

We should see

Yes, there we go we have a list of modified files

We can add some css to make it look prettier

And now I can just move this wherever we want

I'll put it down here

And let's actually open a file and modify it and prove that our widget is actually working

So, we have server.clj here

And when I save it

Yes, there we go

It's changed

And if I remove that modification, then it goes away, great!

Then I thought we should do something a bit more interesting than that.

I've been working on a game with my little brother

So let's build an environment to play that game in and work on it

It's written in Javascript so we're going to need a canvas element

So that we can put the game on the canvas

Canvas by default isn't visible so you dont't see it immediately

So Let's give it a background, black just so we can actually see that we added something.

here we go

And we'll move this over to this this side so don't have it in the middle of our workspace

And that as well

Let's run the game to make sure this is all working as expected

There's the game

there is the javascript file

execute it

there we go

Now we have the game running, You can see I can play it here

You can move around, some little bad guy shooting me. Cool!

now I talked about being able to build, to bring your abstractions into the environment

Let's control the game from light table

I add another custom object

We're going to create start and stop buttons for the game

We start writing the clojure script here

we create a little function to create a button

That has a label and an action

And here is our init which just returns the html that we want it to to be represented as

And you can see after executing it you get a start and stop

Some css here , that's a little too big

Let's actually shrink the font size a bit

that's still too big.. 11 60

Great, now if I click stop, he stops moving there you go

And If I click start he starts moving again

And you can see what this init function is doing is calling our javascript code

Move this guy down here

So let's take this up a notch

Let's actually bring one of the abstractions from the game directly in.

So games are usually composed of entities that get drawn to the canvas

So let's create a list of all the entities

to do that

We need some state for our entities

And a way obviously to add and remove them

And then we need a representation of them in html

We have this little item function

We're setting our on-add and on-remove functions within our game to our add and remove

Execute this and

Do the magic of some data binding here

We'll see that

Every time something gets shot a new entity is added to the canvas

So if I shoot this guy, he actually explodes into a bunch of shrapnel

let me show this

there you go

so there is a bunch of shrapnel that's been added

And as it sort of fades away it goes away again

Cool!

So we've actually created a little environment for our game here

the whole thing was less than about 50 lines of code

And it was completely trivial to build

there you go!

Fun little way to show how

You can extend light table


No, you don't have to. It's just annoying when people give talks, or make interesting videos for a product and they forget about people who may be hard of hearing, Deaf or from overseas.

That's such a big chunk of the market that they're missing out on.


It is always much easier to criticize the work of others than to do similar work. Can't you be grateful that the author shared something of value, even if it is not perfect, rather than just deciding not to share because 1) there are no subtitles; 2) even if there were subtitles, they were only available in English; 3) the choice of colors is not optimal for people that are color blind; etc. Should they give up on sharing it, because they do not have the time to invest in making it better?


Wow, this... surprised me. The lack of subtitles is a perfectly valid criticism. Going off on the guy because he asked for them is reasonably harsh.


Do you have any idea how long it takes to add subtitles to a video? My point was, and still is, that it is always easier to criticize work of others (and complain when something is "missing") than doing the work yourself. If someone had come out and said: I've produced X videos and added subtitles to Y (where both X and Y are relatively large numbers) and I am disappointed that so few authors do the same ... then I would respect the statement as valid criticism.


How can he do the work himself if he can't hear?


You don't need to hear to produce your own videos AND add subtitles to them. Some people create, others criticize.


_hard of hearing_ and _can't hear_ are very different.


wow what a douchebag response. Its not this guys fault that he has hearing problems. Its a valid comment to make. The guy said he wished there were subtitles because he cannot hear whats being said and that he feels that people who don't add subtitles are missing out on a much larger audience. This doesn't sound ungrateful to me at all but a valid observation.

Can't you be grateful that the author shared something of value

Why should someone be grateful for content they cannot consume?

Should they give up on sharing it, because they do not have the time to invest in making it better?

He never said they shouldn't share it at all, he only said he wished they would add subtitles. Nowhere did he say "if they don't add subtitles, you know what, fuck it, they shouldn't share the video at all".


It sucks that you have to put up with this, but let's not pretend it's a "big chunk."

According to the Journal of Deaf Studies and Deaf Education, an article published in 2005 cites 11MM HOH and deaf individuals in the United States[1]. The Population Reference Bureau cites 296MM US citizens in the same year[2]. It's important to note that according to the first source, "over half" of those that are HOH or deaf are over 65 - likely not the target market of this video.

Even if we were to completely ignore the demographic issue of who makes up the majority of HOH and deaf individuals, we're talking about just over 3.7% of the population in the US (I would assume it's roughly similar when extrapolated to the entire internet population).

I think that anyone for whom the HOH and deaf population was a target market would certain take every opportunity to make their materials accessible.

[1] http://jdsde.oxfordjournals.org/content/11/1/112.full - ABSTRACT [2] http://www.prb.org/pdf05/05worlddatasheet_eng.pdf - PAGE 2


It's a much bigger chunk if you include those with missing/broken speakers, easily annoyed roommates, a loud environment, or who are otherwise incapable of listening to sound, permanently or transiently.


I can't reply to the sibling comment (davidw's) about video (level cap?), but I vehemently agree. I can read much faster than most people speak, (and can't "skim" a spoken monologue), so I almost always prefer text to video.

I'm feeling increasingly like an old gaffer complaining about these "young 'uns" and their "yoo tubes" (at a middling 30-something), but I see this trend toward video when text would suffice as evidence of a societal lack of good (writing) education.

Sure, in the OP's instance, it's a presentation he made to someone else, so a video is probably easiest, but this was a good opportunity to rant.

EDIT: And now the reply link appears. Weird.


.. but I see this trend toward video when text would suffice as evidence of a societal lack of good (writing) education

Think it's because there's so much written information now, I can't even read 1% of the stuff I want to. After reading "all day", good videos, e.g. talks, are refreshing.


My understanding is there's a relative level cap for the "reply" link, but no absolute level cap. So if you want to reply to something that lacks the reply link, click its "link" link to view it directly, and you can reply.


It's a time delay, meant to discourage furious back-and-forths.


I loathe videos where text + pictures would suffice, and will not watch them if at all possible.


"Loathe" is way too strong but I also prefer writing to video most of the time. Still, I prefer video-with-subtitles to video-without-subtitles, if it's going to be video regardless, so I don't need to fish out headphones or whatnot.


I like to scan articles quickly for keywords/key phrases/diagrams/code snippets. I'm often put off when something is in video for simply because this is not easy to do. Together with the sound issue in my other comment, this means that I often end up never watching videos that provide content I would otherwise have enjoyed or found useful.

Am I the one missing out? Probably, but I also pass a lot of content that I do like around to lots of people, so the authors also lose out on a potential fanbase/readership/whatever.


Agreed - I currently do a lot of my work in a shared office space and I don't always have headphones. This is the place where I would watch a lot of videos (or at least take a peek, and if they're good, make a mental note to watch them later). A phenomenal number of videos don't get watched because I happen to not have sound for whatever reason at that specific point in time.


Interesting - 3.7% sounds quite large to me. Where is the acceptable cutoff for a site that is not catering to the hearing impaired? It is a large enough percentage of the population that it seems like definite loss to have that many people excluded from online video content, generally speaking. It is a very widespread problem.


"Wow, thank you tisme for taking the time to hand transcribe the video so I can understand what was going on. Must have taken a long time" ^FTFY


Prior to there being a transcription in the comment, there was an offer to do the transcription.


The author isn't forgetting people who are hard of hearing; he's just not addressing them. It's a perfectly legitimate choice to make. It sucks for you. It also sucks for the people who don't read Clojure. You can't blame the author because he isn't catering to your needs.

I've made webcast videos before. It's not easy. I also didn't caption them because it's a hell of a lot of work. Sorry. You can ask, but you can't expect.


> No, you don't have to.

Hehe, too late. Sorry ;)

Enjoy!

And I agree that there should be more consideration for people that are hard of hearing or deaf. Slides are a lot easer in this respect.


While I think it would be great to provide the video to the whole market, I'm somewhat sympathetic — making a video takes a long time. Subbing it would make things take a lot longer. I could understand people deciding to just do an MVP which works for 90+% of the market.


Or people working in noisy places, or those without headphones or forgot them, etc.


As a deaf HN'er, thank you for taking the time to transcribe the video. It was a big help.


That would be really great! I would definitely appreciate that.


As another deaf HN reader: I agree. And in answer to some of the comments saying that "it's too hard", it can actually be quite easy using services such as Universal Subtitles: http://www.universalsubtitles.org/en/

[edit: Just saw somebody else linking to this same site. Sorry.]


Especially since YouTube makes it really easy to add either a caption file (more work for the uploader, they need to put in timestamps), a transcript file (just the text of what was said, YouTube figures out how to match text to the video), or just do auto captioning with speech recognition. http://support.google.com/youtube/bin/static.py?hl=en&gu...


I've noticed a lot of YouTube videos have a CC button which enables subtitles. This appears to be some sort of beta feature, and the captions aren't always perfect, but I've found it useful for videos where the sound isn't clear. Why isn't it available on this video? Is it only for listed videos? Does the uploader have to enable it? I thought it was universal since I first noticed it.


It is clear they have no idea what an abstraction is. Abstractions deliberately throw away information. He is instead making widgets which reveal more information.

What he calls abstractions are nothing of the sort.


He isn't calling the widgets he creates abstractions. He is saying that LightTable allows you through these widgets to dynamically control and display the existing abstractions of your code.


I still don't get it. What existing abstractions did he display? What were they abstractions of?


It is because he is using, "nominalizations." (A word which is a caricature of the very idea it represents). It is difficult to explain what he is talking about because he isn't talking about anything concrete. The word, "abstractions," is loaded with implicit meaning that he does not explain particularly well.

I've found this post quite useful: http://opinionator.blogs.nytimes.com/2012/07/23/zombie-nouns...


You didn't note the abstracted component connectivity bit, where buttons got hooked up to other components and used as commanders?


Can you concretely state what the abstraction you are describing is? In particular, what details does it hide or factor out?


Cool demo I guess, but I have no idea how this could fit into current workflows or even be applied to traditional applications or websites.

Anyone care to enlighten me?


The web development workflow is something that will be getting a lot of consideration in Lighttable - Chris Granger is the author of Noir which is the closest thing to a web 'framework' in the Clojure world.


Imagine you could create custom dashboards and debugging views for your domain types and your domain logic. Not just tailing the log and navigating some variables in a standard debugger.

I believe this will help immensely when approached from the right side, e.g. projects split into separate components with each having its own IDE setup (world, if you may) developed from the ground up together with the component itself.


I just watched this right after reading Bret Victor's Learnable Programming essay (http://worrydream.com/LearnableProgramming/).

The dissonance between Bret's visions and where even a quite progressive modern IDE is at disturbed me deeply. Nothing that Chris showed was "trivial" when seen from the perspective of how things might be rather than how Eclipse does things.


This is really neat. I see a lot of connections to Borlands visual C builder. Create a canvas, drag elements onto the resulting form and change their properties and code up actions. Of course this example here uses 'clojure' but there are a lot of similarities.

Something like that could make writing web applications much easier than it is right now. Interactive web application development could be a real game changer.


This is exceedingly cool. I'd love to see this in action for something that isn't a game (preferably my own project haha). Looking forward to the release!


Nice to see Javascript being used in the movie.


Also, please spellcheck!




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

Search: