Look, I love text a whole lot. But I want to program without a desk and without sitting. In 2019, programming should be as portable as guitar playing. The thing holding us back is reading and manipulating text.
We should take the things that text does well, and find an alternative that offers the same functionality in non-desktop contexts.
> Look, I love text a whole lot. But I want to program without a desk and without sitting. In 2019, programming should be as portable as guitar playing.
But without holding or playing a guitar?
Programming is already as portable as guitar playing; it's just far less linear so it involves a lot of backtracking. How do you handle backtracking on your guitar? Somebody, sitting at a desk, scrolls backwards, changes some parameters, and edits.
> In 2019, programming should be as portable as guitar playing.
It is, a netbook is great for coding and much smaller and more portable than a guitar. If you want to do it without sitting then you'll probably want to get a strap to hold it, much like guitars do.
You captured my thoughts perfectly. Many times I've been sitting outside with my phone or tablet in hand, wishing there was a natural way for me to get application logic from my head to the computer without a keyboard.
Well, I can guarantee that's not going to happen anytime soon. Phones & tablets fundamentally have lower bandwidth into the device. You need something that doesn't cost much, or even increases the bandwidth while still being portable. A touch-screen only interface isn't going to be it.
Note I'm making an information theoretic argument here, not a wishy-washy humanish discussion of "information". You literally have fewer bits/second you can input meaningfully on a touchscreen. This is something objective, not just an opinion. The fundamental sloppiness of the inputs, which is the fundamental reason for things like mobile interfaces having larger buttons than non-mobile interfaces, for instance, contributes to the lower bit rate.
(I would remind people who wish to dispute this of at least the following things: Information is a log-based number, so for instance "I have four types of swipes" does less than you might think, and you need to account for real information that can go in by a human, not just what theoretically something else could do. You are not a robot individually manipulating every capacitance sensor on the screen, nor does your finger teleport around and tap ten distinct selections per second at an accuracy of less than two pixels. Nor can you build an interface where a swipe in this direction does that, but if it's two degrees farther counterclockwise, it does something else entirely, nor are you going to be using an interface where every slight variation of a curve is meaningful. Swype-like tech is pretty much the upper limit of what you can count on, and honestly, at times that pushes it.)
I wish I could remember the name, but there was a demo of an experimental IDE for phones and building up blocks of odd shapes and directions that fit together like a stone wall. It wasn’t Scratch based. I think it was declarative rather than procedural.
> Nor can you build an interface where a swipe in this direction does that, but if it's two degrees farther counterclockwise, it does something else entirely
Two degrees, of course not. But https://en.wikipedia.org/wiki/Pie_menu are a thing. Swype text input is nowhere near the best we can do, it does not have context-driven feedback of any sort. The most annoying issue with touchscreen-only input, IME, is actually recovering from input errors, and (relatedly) confirmation for irreversible actions. Low-level environments for "modding" Android devices get this right - every destructive action always requires confirmation by issuing a full swipe, and it's only destructive actions that require this. Of course, porting this paradigm to more traditional environments (such as typical GUI applications) would require quite a bit of work.
We should take the things that text does well, and find an alternative that offers the same functionality in non-desktop contexts.