Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Jarvis, a Light Table like companion for Python (madlag.github.com)
164 points by madlag on June 28, 2012 | hide | past | favorite | 52 comments



There is a problem with this kind of ultra-rapid iteration when you start doing certain kinds of low-level stuff that can crash your development environment. I suspect that Jarvis avoids much of this by running in a different process, but there are certain things that might still cause a reboot.

Still, it just occurred to me that one could use integration with scm like git or mercurial to get the same kind of benefit as the Smalltalk change log+image.

What if every change to a function was snapshotted, and the developer could easily scroll/flip through these snapshots? Merging the change back to a main branch would then be like image saving in Smalltalk. This would give developers the ability to try really risky development, since they would always be able to quickly get back to a previous state.

(This can already be done, but by making the integration really seamless, it has a synergistic effect with development.)


I love the hilarious youtube's subtitles. For instance (3:34): "without a student to conduct a kidney advocate" or (3:19): "registers configure troop went upstairs don't just goes up"

But you should disable them by default, they are confusing!

Edit: Why the downvote(s)?


Thanks, I've removed them ! I did not realize they would be on by default. I suppose the errors are due to my subtle french accent ;-)


I find it curious that Google has a very good translation software but they don't pass the generated subtitles through their language models to detect when they are gibberish.

It's not your fault, but YouTube's. I just find computer generated gibberish funny.


Their language models might perform acceptably with text, but speech is much looser with structure and grammar. They may apply a bit of local expectation-maximisation but anything more strict or long-range wouldn't work.


Speech may be much looser, but a classifier to (try to) detect absolute gibberish from real content doesn't look too far fetched to me. Its only action would be to disable the subtitles by default if gibberish was detected.

It may be computationally impractical though.


The problem with that is that the language model's power is already used to fix things up locally (because this is transcribed from audio). As a result it can't be used again to decide if the transcription fits the model; it's the case by design. There must be some kind of confidence metric at the end of the process, but I don't think it's possible to tell how much of the ambiguity comes from inadequacies in the phoneme model, or the audio environment, or the language model. They'd have to throw out good transcriptions in noisy environments along with bad transcriptions, and probably wouldn't keep much at all. As it is it seems they prefer to publish crappy results and hopefully have some feedback channel involving the video uploader.


I'm thinking of the following: audio track of the video ---[process (language recognition)]---> transcription ---[process (classifier based on textual language model)]---> answer to "gibberish?"

So good transcriptions would be good, regardless of the noise environment. It might give some false positives, but I expect that a good price to pay to avoid the kind of mess they create now.


What does your "transcription" step mean? Either it would transscribe each word "in divy two Ellie, buy it's Elf", which produces garbage without context, or it would additionally have to use the language model to patch things up.

For example, the difference between "its" and "it's", "red" and "read", "know" and "no" is irreconciliable without understanding the rest of the sentence these trouble words appear in.


Transcription is the textual output of the speech recognition process, be it phonetic, LVCSR or direct. All current applications of them do take some context in consideration, usually via a transition matrix and lots of training data.

What I'm proposing is to pass the output of speech recognition through a binary classifier that answers the question "is this text gibberish?", which is trained with the help of a textual language model, unrelated to the speech recognition pass.


As someone who's excited to be learning Python, seeing tools like this makes me even happier. Thanks! I have a feeling going back to PHP is going to be very difficult for me :)


Yes, I was thinking about people learning Python too when developing this. My daughter is 6 years old, and I suspect she will learn Python in a few years or even months ;-)


It seems everyone is rediscovering Smalltalk!


Yeah, except without all the bad parts like images that can get corrupted and stateful (wtf were they thinking?) web-apps.


Yeah, except without all the bad parts like images that can get corrupted

Sorry, I've been a professional in Smalltalk since 1998, and I've never encountered a corrupted image. The closest thing I've seen to that is de-sync with source code. (Which you don't care much about if you're using SCM, for the same reasons everyone else uses SCM.)

stateful (wtf were they thinking?) web-apps.

Same things others were thinking at the time -- you're just seeing a slice of history. People still rave over the debugging in Seaside like it's magic, though.


>People still rave over the debugging in Seaside like it's magic, though.

Typing `C-c p d b` in my Emacs inserts this macro:

import sys; sys.stdout = sys.__stdout__; import ipdb; ipdb.set_trace()

All the benefits of a Lisp REPL and a Smalltalk debugging environment in a language people actually use. Tab-completion, dumps, breakpoints, testing assumptions/data, running arbitrary code inside a specific environ...the works.

I can use it in my virtualenvs without having to explain to an IDE what a virtualenv, a running test in Nose, a normal script, or a running web server. It's normal code so I can wrap the trace in a condition or whatever else I want.


Apparently, you missed the point -- which was not a nerd missing match. Is this a defensive reaction to my calling you on the "corrupted image" BS?


No, I'm wondering if the promulgators of Smalltalk as a superior debugging environment actually have anything superior to what I just described so that I can steal it for Python.

Sometimes I toss stuff out there in the hopes of being shown something better. It's teaches me new things.

Lets take a moment to think on our poor brethren still tossing print statements all over the place though.


Good. Please steal! I want that for Python. Back in the early 2000's, we Smalltalkers called that "winning despite losing."

Also let me take another moment to call you out on the "corrupted image" BS.


>Good. Please steal! I want that for Python.

Yes but, want what? What does my little ipdb snippet not do that you want?


Just because you "toss stuff out there" in the hopes that someone will "show you" doesn't mean people will.

Oh, and let me take another moment to call you out for your "corrupted image" BS.


You are monomaniacal.


Only to the same extent that you are persistent in evasion. So let me take this moment...


Yeah, the image concept only works properly when Smalltalk is the operating system, as it was originally developed.


What experience are you basing this on, exactly?

(I've often said around here that things would've worked out better if there wasn't such a barrier between stuff happening in Smalltalk and outside in the OS -- community wise. But if you're willing to play just in the Smalltalk sandbox, it's a pretty awesome experience.)


Don't take it personally, I love Smalltalk.

I've only used Smalltalk/V during university, back in 1995, if memory serves me right.

I've seen integration problems migrating code between implementations, lack of proper support for source control specially in distributed teams, lack of integration with the operating system for desktop applications.

I know that many of these problems have been solved in newer implementations, but maybe now it is too late.


I don't often see things on HN and think, "wow, I absolutely must have that," but this is one of those times. Thank you for releasing this; if you do a kickstarter page or put up a donation link somewhere I'll throw some money at you. :)


Thanks !!! It's really heartening to have your support, and to see that it could help a lot of people.

I have been using it daily for a few months now, it's a bit like re-discovering coding because it's just way more fun to code with it.

And I will definitely consider creating a Kickstarter project.


I would help if explained how to get the dependencies in better detail. I have been finding packages for 20 minutes. I would love to try this out but I can't seem to get it running. If you list the project dependencies in your 'setup.py' instead of having

# List your project dependencies here. # For more details, see: # http://packages.python.org/distribute/setuptools.html#declar...

then people might try out your software more easily.


OK, I will do that. It's listed in Requirements at http://madlag.github.com /jarvis/ , but not yet in the RTD documentation.


Awesome, thanks! Can't wait to try it out.


I guess it should be "pip install jarvis" and not "pip install pip". Very nice tool!


Thanks ! Typo should be fixed now !


Fantastic tool, can't wait to try it. I agree this is kickstarter worthy. Looks like the OSG bindings and pane makes it easy for devs to hack motion design, I wonder what will come out of that.


Very nice implementation of some of Bret Victor's ideas!


Well done! You should go on Kickstarter!


Thanks ! I am going to think about it ;-)


Nice work ! Very nice implementation.


Glad to see more and more tools for the shortest feedback loop while you code.


Imagine in 50 years:

"Nope, that's a bad idea right there in you thoughts."


"Hey, how about the public pool today."

"WARNING: Usage of public pools during hot weather is deprecated. Misuse may lead to a degradation of your insurance policy. At short-term-alpha memory, synapse group #23AE18-123, phase shift 3"


(Hate to be that guy but) Could something like this ever be possible for PHP?


Yes, it could be, but it may be just a bit slower as there is no reload function in php.


Great tool, OSG real-time editing and visualization looks very useful!


Well done! I like the iron man touch at the end of the video;)


Well done guys, faster feedback makes your more efficient!


Awesome idea, LiteTable doesn't handle python, good job!


Light Table reached $300,000+ of funding so it will support Python.


Yes, I am a backer on KickStarter, but I could not wait !


Nice work :) I hope to see more tools like this soon!


I bet Tony Stark is jealous now. Looks awesome!


Awesome! Congrats on that work!




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

Search: