{"id":670,"date":"2014-01-08T18:11:29","date_gmt":"2014-01-08T18:11:29","guid":{"rendered":"http:\/\/sdi.thoughtstorms.info\/?p=670"},"modified":"2014-01-08T18:11:29","modified_gmt":"2014-01-08T18:11:29","slug":"questions-for-2014-3-programming-on-tablets","status":"publish","type":"post","link":"https:\/\/blog.thoughtstorms.info\/?p=670","title":{"rendered":"Questions for 2014 : #3 Programming on Tablets"},"content":{"rendered":"<p>Third in a series (<a href=\"http:\/\/sdi.thoughtstorms.info\/?p=656\">#1<\/a>, <a href=\"http:\/\/sdi.thoughtstorms.info\/?p=667\">#2<\/a>) of questions occupying my mind at the beginning of 2014. Which may (or may not) inform what I\u2019ll be working on.<br \/>\n<strong>3) How can we program on tablets?<\/strong><br \/>\nI&#8217;m now a tablet user. I became a tablet owner at the end of 2012. For six months I played around with it, trying a few Android programming exercises. But I only really became a regular tablet user half-way through the year. Firstly when I put Mind Traffic Control into a responsive design. Secondly when I bought a couple of e-books. And I only really got committed when I did <a href=\"https:\/\/github.com\/interstar\/OWLdroid\">OWLdroid<\/a> and coupled that with <a href=\"http:\/\/www.bittorrent.com\/sync\">btsync<\/a>.<br \/>\nSo &#8211; somewhat late to the party, I admit &#8211; I&#8217;m now a tablet enthusiast.<br \/>\nAnd so my question is, how the hell do I program on this thing?<br \/>\nThere&#8217;s a trivial answer to that question : get an external keyboard, an appropriate editor \/ IDE and treat it like a normal computer with a small screen. I can do that. I&#8217;ve worked a lot on netbooks and small screens don&#8217;t freak me out. But that&#8217;s not really what I mean.<br \/>\nBecause tablets aren&#8217;t meant to have keyboards. And a computer without a keyboard challenges one of my deepest held programming beliefs : <a href=\"http:\/\/thoughtstorms.info\/view\/textfreeprogramming\/view\/thereturnofthecommandline\/view\/smartascii\">the superiority of plain text<\/a>.<br \/>\nPlain-text is so flexible, so expressive, so powerful, so convenient to work with, that I&#8217;ve always been highly sceptical of those who want to do away with it. But on a keyboardless computer, it&#8217;s a different matter. Plain text isn&#8217;t at all convenient without a keyboard.<br \/>\nEspecially the text of programming languages which makes rich use of another dozen or so punctuation symbols beyond the alphabet and numerals. And where manipulation relies on cursor-keys, shift and control, deletes (both forward and backspace), page up and down, tab-complete etc.<br \/>\nAnd yet tablets are becoming ubiquitous. Increasingly they&#8217;re the target of our programming, and the tool we have with us. So how are we going to program in this new environment? With multi-touch or stylus but no keyboard?<br \/>\nI have yet to see anything even vaguely plausible as the revolution in programming &#8220;language&#8221; we&#8217;re going to need for this.<br \/>\nI don&#8217;t think it&#8217;s the &#8220;Scratch&#8221;-like or &#8220;App Inventor&#8221;-like &#8220;stick the blocks together&#8221; languages. The problem of programming <em>on<\/em> tablets shouldn&#8217;t be conflated with the problem of teaching novices to program. (Which is what most visual programming environments seem to be about.)<br \/>\nOne issue with that kind of system (and other &#8220;flow-charts&#8221;) is that blocks need to be big enough to be easily and unambiguously manipulated with fat fingers. But to be decently usable, a programming system should be able to have a reasonable density of information on the screen, otherwise you&#8217;ll spend all your time scrolling and forgetting what you&#8217;ve seen. How do you resolve that tension?<br \/>\nPerhaps <a href=\"http:\/\/sdi.thoughtstorms.info\/?p=643\">&#8220;data-flow&#8221; programming<\/a> of the Max\/MSP, PD, Quartz kind. <a href=\"http:\/\/pipes.yahoo.com\/pipes\/\">Piping<\/a> diagrams. Process Modelling packages have something to teach us about orchestrating in the large. But they are shockingly clumsy for certain fine-grained activities that are expressed easily in text. (Eg. how the hell can you talk about tree-shaped data or recursive algorithms using this kind of piping model?)<br \/>\nSo I don&#8217;t have any information about who is doing interesting work in this area. (Aside : while writing this post, I thought I&#8217;d consult the collective wisdom on StackExchange. Needless to say, my question was <a href=\"http:\/\/programmers.stackexchange.com\/questions\/223448\/what-interesting-ideas-are-there-for-programming-on-tablets\">immediately shot down<\/a> as too vague.) But I&#8217;m now very curious about it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Third in a series (#1, #2) of questions occupying my mind at the beginning of 2014. Which may (or may not) inform what I\u2019ll be working on. 3) How can we program on tablets? I&#8217;m now a tablet user. I became a tablet owner at the end of 2012. For six months I played around [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[44,79,98,110,118,238,249,294,356,361,417,451,483,487],"class_list":["post-670","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-bret-victor","tag-command-line","tag-dataflow","tag-device-swarm","tag-dsl","tag-language-design","tag-little-languages","tag-multitouch","tag-programming-languages","tag-pure-data","tag-sketching","tag-text","tag-user-interfaces","tag-visual-programming"],"_links":{"self":[{"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/posts\/670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=670"}],"version-history":[{"count":0,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/posts\/670\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}