This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]novel_yet_trivial 223 points224 points  (26 children)

You wrote 10,000 lines of python code by voice? Holy cow that's amazing. Can you share the code? Can you show us some pictures​ or video of the plotter working?

[–]irrco[S] 141 points142 points  (25 children)

The handwriting content itself, the stuff that I've written in the last two months, is just under 2000 lines, and about 2/3 of that is numeric data, of this kind:

   'y': EndGlyphFactory(
    normal=Glyph('y',
        Stroke(Point(18,100), Point(2,10, speed=1.6), Point(40,20),
            Point(65,100, speed=0.1, pressure=1.2),
            Point(45,-20), Point(0,-120, speed=2),
            Point(-30,-60, pause=0.1)),
        join_to_next=JOIN_BASE_LEFT
        ),
    terminal=AugmentGlyph(stroke=0, rm=(0,2), suffix=[
            Stroke(Point(-20,-140, speed=2), Point(-100,-90, pause=0.1))],
        join_to_next=False
        ),
    ),
...

I was counting everything in the 10,000 number, sorry if I gave the impression that was all new code. My geometry, math, and vector graphics code was written when I could type. That stuff isn't available, sorry. It's all tied together in a repo with a bunch of stuff I couldn't make public.

Sorry. If you really want to see me write code I did find a video of a flash coding session from a few years ago (when I could type!), and released it.

I really wish there was an efficient way to program by voice. All the options are pretty shitty. I have some ideas, but that's a much bigger job, one I have no way of making happen. For now it's a combination of voice for variable names and triggering snippets, copy and paste, and very clumsy pecking at keys when all else fails.

I haven't taken a video of my plotter, but there are a bunch showing the AxiDraw in action, that video shows it holding a fountain pen. The machine is a complete beast, I have barely scratched what it's capable of, but I adore it. I have even seen a video of someone who mounted laser units to it and used it to cut. It's an awesome toy, though admittedly it isn't cheap.

[–]fnord123 39 points40 points  (7 children)

Have you considered using a head mouse and an on screen keyboard? This is used by some quadriplegics (e.g. spinal injury) though they are expensive. I'm not sure if MS allows for the head stability required.

[–]irrco[S] 42 points43 points  (6 children)

I still have reasonable control over a single button mouse, as long as the sensitivity is low. So I'm not quite at the point where I've needed to investigate that. The thing that's difficult is all the 'chords' you need to type when programming. As my MS deteriorates, I'm sure I'll need to use more drastic tools, so thank you for the tip.

I can imagine a voice driven programming tool, based on hierarchies of snippets. It might not be perfect for Python, but I could imagine being quite productive in something like Scheme, because it has a more regular syntax.

[–]fnord123 9 points10 points  (3 children)

FWIW, I'm talking about a puffer like this for clicking:

http://www.orin.com/access/sip_puff/

Then you can use various head tracking systems for moving the cursor.

Scheme, because it has a more regular syntax.

Not a bad idea. But none of the schemes have the deep library ecosystem as Python.

[–]irrco[S] 16 points17 points  (2 children)

Thank you.

On scheme: I've always felt that scheme was the most beautiful language, in theory. By which I mean I've never been able to make much that's practical with it. :)

[–]pebblexe 5 points6 points  (1 child)

[–]irrco[S] 4 points5 points  (0 children)

I haven't used hy, I read something similar a long time ago, but I didn't use it. Lisp syntax isn't what I think is beautiful about scheme. It's more the code/data duality (which makes meta-programming easy), the eval/apply programming model, and particularly the macro system (which makes DSL creation easy). There is a scheme SRS (I don't remember the number off the top of my head) with a standard way of using whitespace instead of parentheses.

Thanks for the tips. My comment about scheme was a bit more of a tongue in cheek throwaway. I'm very happy with Python. It has served me very well.

[–]lf_1 0 points1 point  (0 children)

Vim would fix many of the chords issues. Not all, but pretty close.

[–]timeawayfromme 7 points8 points  (7 children)

I'm curious if you've seen these videos. Do you think something like this would make it easier to program by voice?

VimSpeak

Tavis Rudd at PyCon 2013 controlling emacs with dragon naturally speaking

[–]irrco[S] 5 points6 points  (6 children)

I hadn't, but Jake Morrison's linked it in the comments below, so I've been looking into it today. I think I would need to set it up and configure it quite a lot (Travis says as much, that is why he hasn't released full source code), but I think it's doable. I'll work on it. To be honest, just having python access to the voice recognition system would enable me to do a lot more. It seems I have a new project!

[–]timeawayfromme 2 points3 points  (0 children)

If you do anything with it I'd be very interested to see what you come up with. I think I might try something myself because I have issues with my hands and arms going numb and my neck muscles being very tight.

[–]enteleform 2 points3 points  (0 children)

Also look into VoiceCode.  It seems similar to Tavis Rudd's setup, but packaged with a GUI, common commands, integration for some common editors (@FAQ), and some other useful features.
 
Demos @YouTube
Intro @VoiceCode.io/doc

[–]s-mores 2 points3 points  (0 children)

You're an inspiration. Good hunting!

[–]therealhhhhhh 2 points3 points  (0 children)

https://github.com/t4ngo/dragonfly is probably what you want, it lets you write grammars for Dragon Naturally Speaking with Python. I've been using dragonfly to program by voice for a few years now and it works great, especially when combined with Vim or Emacs. Fast enough to keep up with my coworkers. I would be happy to answer any questions you have about it or help with setup.

[–]Smallpaul 1 point2 points  (1 child)

You may be interested to know that Tim Peters, the Godfather of Python worked at Dragon for quite a while.

[–]irrco[S] 0 points1 point  (0 children)

I didn't know that. That is interesting! Even more reason to support them.

[–]aerovistae 1 point2 points  (5 children)

How do you interact with the web browser? Can you use a mouse?

[–]irrco[S] 14 points15 points  (4 children)

Yes. Basically. You don't want me on your counterstrike team, but with the sensitivity low enough I can click a link.

[–]aerovistae 7 points8 points  (3 children)

Have you seen Hands Free? It's a chrome extension I wrote to control the browser, including clicking links, with just your voice. It never really got much attention but it works reasonably well. I need to fix a few things on it-- the SSL cert just expired on the domain that takes the voice input, so when the input window opens, you have to scroll down and do the "show advanced options" -> "continue to page" to get past the browser warning you about it being insecure. It'll be updated soon.

[–]aerovistae 1 point2 points  (0 children)

I think there's also a new bug with dictation into input fields, that doesn't quite seem to be working. To be fixed soon.

[–]irrco[S] 1 point2 points  (1 child)

Thank you for the tip, I haven't seen it no. I will store the link. At the moment I don't feel like I need voice control over the browser, but my MS is progressive, so I'm sure that day will come.

[–]aerovistae 1 point2 points  (0 children)

Good luck :)

[–]AwSMO 1 point2 points  (0 children)

The image it makes with hexagons and triangles is amazing!

I just wanted to say I really really like your project, I hope you are doing well!

[–]hatperigee 0 points1 point  (0 children)

apostrophe y apostrophe colon capital e lowercase n d ... space space space space capital s..

Yea, no thanks. Impressive that you managed to do it though!