<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Henri Bergius - Tablet</title>
    <description>Latest posts in category 'tablet'</description>
    <link>https://bergie.iki.fi</link>
    <language>en</language>
    <lastBuildDate>Tue, 05 May 2026 19:17:08 +0000</lastBuildDate>
    
    <item>
      
      <title>Atreus: Building a custom ergonomic keyboard</title>
      <description>&lt;p&gt;As mentioned in my &lt;a href=&quot;https://bergie.iki.fi/blog/working-on-android-2017/&quot;&gt;Working on Android post&lt;/a&gt;, I’ve been using a mechanical keyboard for a couple of years now. Now that I work &lt;a href=&quot;https://bergie.iki.fi/blog/flowhub-ug/&quot;&gt;on Flowhub&lt;/a&gt; from home, it was a good time to re-evaluate the whole work setup. As far as regular keyboards go, the MiniLa was nice, but I wanted something more compact and ergonomic.&lt;/p&gt;

&lt;h2 id=&quot;the-atreus-keyboard&quot;&gt;The Atreus keyboard&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/ready-2.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/ready-2-small.jpg&quot; alt=&quot;My new Atreus&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Atreus is a 40% ergonomic mechanical keyboard designed by &lt;a href=&quot;https://technomancy.us/&quot;&gt;Phil Hagelberg&lt;/a&gt;. It is an &lt;a href=&quot;https://github.com/technomancy/atreus&quot;&gt;open hardware design&lt;/a&gt;, but he also &lt;a href=&quot;https://atreus.technomancy.us/&quot;&gt;sells kits&lt;/a&gt; for easier construction. From the kit introduction:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Atreus is a small mechanical keyboard that is based around the shape of the human hand. It combines the comfort of a split ergonomic keyboard with the crisp key action of mechanical switches, all while fitting into a tiny profile.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My use case was also quite travel-oriented. I wanted a small keyboard that would enable me to work with it also on the road. There are many other small-ish DIY keyboard designs like &lt;a href=&quot;https://olkb.com/planck/&quot;&gt;Planck&lt;/a&gt; and &lt;a href=&quot;http://www.40percent.club/2016/11/gherkin.html&quot;&gt;Gherkin&lt;/a&gt; available, but Atreus had the advantage of better ergonomics. I really liked the design of the &lt;a href=&quot;https://www.ergodox.io&quot;&gt;Ergodox&lt;/a&gt; keyboard, and Atreus essentially is &lt;a href=&quot;https://technomancy.us/173&quot;&gt;that made mobile&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I found the split halves and relatively large size (which are fantastic for stationary use at a desk) make me reluctant to use it on the lap, at a coffee shop, or on the couch, so that’s the primary use case I’ve targeted with the Atreus. It still has most of the other characteristics that make the Ergodox stand out, like mechanical Cherry switches, staggered columns instead of rows, heavy usage of the thumbs, and a hackable microcontroller with flexible firmware, but it’s dramatically smaller and lighter&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I had the opportunity to try a kit-built Atreus in the &lt;a href=&quot;https://www.meetup.com/Berlin-Mechanical-Keyboards-Input-Devices-Meetup/&quot;&gt;Berlin Mechanical Keyboard meetup&lt;/a&gt;, and it felt nice. It was time to start the project.&lt;/p&gt;

&lt;h2 id=&quot;sourcing-the-parts&quot;&gt;Sourcing the parts&lt;/h2&gt;

&lt;p&gt;When building an Atreus the first decision is whether to go with the kit or &lt;a href=&quot;http://imgur.com/a/qcgdF&quot;&gt;hand-wire it yourself&lt;/a&gt;. Building from a kit is certainly easier, but since I’m a member of &lt;a href=&quot;https://c-base.org/&quot;&gt;a hackerspace&lt;/a&gt;, doing a hand-wired build seemed like the way to go.&lt;/p&gt;

&lt;p&gt;To build a custom keyboard, you need:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Switches: in my case 37 Cherry MX blues and 5 Cherry MX blacks&lt;/li&gt;
  &lt;li&gt;Diodes: one 1N4148 per switch&lt;/li&gt;
  &lt;li&gt;Microcontroller: a Arduino Pro Micro on my keyboard&lt;/li&gt;
  &lt;li&gt;Keycaps: started with recycled ones and later upgraded to DSA blanks&lt;/li&gt;
  &lt;li&gt;Case: got a set of laset-cut steel plates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even though Cherry — the maker of the most common mechanical key switches — is a German company, it is quite difficult to get switches in retail here. Luckily a fellow hackerspace member had just dismantled some old mechanical keyboards, and so I was able to get the switches I needed via barter.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/keyswitches.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/keyswitches-small.jpg&quot; alt=&quot;Keyswitches&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Cherry MX blues are tactile clicky switches that feel super-nice to type on, but are quite loud. For modifiers I went with Cherry MX blacks that are linear. This way there is quite a clear difference in feel between keys you typically hold down compared to the ones you just press.&lt;/p&gt;

&lt;p&gt;The diodes and the microcontroller I ordered from Amazon for about 20€ total.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/microcontroller.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/microcontroller-small.jpg&quot; alt=&quot;Arduino Pro Micro&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At first I used a set of old keycaps that I got with the switches, but once the keyboard was up and running I upgraded to a very nice set of blank DSA-profile keycaps that I ordered &lt;a href=&quot;https://www.aliexpress.com/store/2230037&quot;&gt;from AliExpress&lt;/a&gt; for 30€. That set came with enough keycaps that I’ll have myself covered if I ever build a second Atreus.&lt;/p&gt;

&lt;p&gt;All put together, I think the parts ended up costing me around 100€ total.&lt;/p&gt;

&lt;h2 id=&quot;preparations&quot;&gt;Preparations&lt;/h2&gt;

&lt;p&gt;When I received all the parts, there were some preparation steps to be made. Since the key switches were 2nd hand, I had to start by dismantling them and removing old diodes that had been left inside some of them.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/keyswitches-prep.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/keyswitches-prep-small.jpg&quot; alt=&quot;Opening the key switches&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The keycaps I had gotten with the switches were super grimy, and so I ended up sending them to the washing machine. After that you could see that they were not new, but at least they were clean.&lt;/p&gt;

&lt;p&gt;With the steel mounting plate there had been a slight misunderstading, and the plates I received were a few millimeters thicker than needed, so the switches wouldn’t “click” in place. While this could’ve been worked around with hot glue, we ended up filing the mounting holes down to the right thickness.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/filing-plate-1.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/filing-plate-1-small.jpg&quot; alt=&quot;Filing the plate&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/filing-plate-2.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/filing-plate-2-small.jpg&quot; alt=&quot;Little bit of help&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;wiring-the-keyboard&quot;&gt;Wiring the keyboard&lt;/h2&gt;

&lt;p&gt;Once the mounting plate was in the right shape, I clicked the switches in and it was time to solder.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/switches-mounted.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/switches-mounted-small.jpg&quot; alt=&quot;All switches in place&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hand-wiring keyboards is not that tricky. You have to attach a diode to each keyswitch, and then connect each row together via the diodes.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/diode-rows-1.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/diode-rows-1-small.jpg&quot; alt=&quot;Connecting diodes&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/diode-rows-2.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/diode-rows-2-small.jpg&quot; alt=&quot;First row ready&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The two thumb keys are wired to be on the same column, but different rows.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/diode-rows-3.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/diode-rows-3-small.jpg&quot; alt=&quot;All rows ready diodes&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then each column is connected together via the other pin on the switches.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/columns.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/columns-small.jpg&quot; alt=&quot;Soldering columns&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how the matrix looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/wiring-ready.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/wiring-ready-small.jpg&quot; alt=&quot;Completed matrix&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After these are done, connect a wire from each column, and each row to a I/O pin on the microcontroller.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/soldering.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/soldering-small.jpg&quot; alt=&quot;Adding column wires&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you haven’t done it earlier, this is a good stage to test all connections with a multimeter!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/soldering-microcontroller.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/soldering-microcontroller-small.jpg&quot; alt=&quot;Connecting the microcontroller&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;firmware&quot;&gt;Firmware&lt;/h2&gt;

&lt;p&gt;After finishing the wiring, I downloaded the &lt;a href=&quot;https://github.com/qmk/qmk_firmware&quot;&gt;QMK firmware&lt;/a&gt;, changed the &lt;a href=&quot;https://github.com/bergie/qmk_firmware/commit/1902fc2affcd4cb1cbe2225b8c0736f57eca5646&quot;&gt;PIN mapping&lt;/a&gt; for how my Atreus is wired up, switched the layout to &lt;a href=&quot;https://colemak.com/&quot;&gt;Colemak&lt;/a&gt;, and the keyboard was ready to go.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/ready-1.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/ready-1-small.jpg&quot; alt=&quot;Atreus in use&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don’t mind the key labels in the picture above. These are the second-hand keycaps I started with. Since then I’ve switched to &lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/ready-2.jpg&quot;&gt;blank ones&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;usb-c&quot;&gt;USB-C&lt;/h2&gt;

&lt;p&gt;The default Atreus design has the USB cable connected directly to the microcontroller, meaning that you’ll have to open the case to change the cable. To mitigate that I wanted to add a USB breakout board to the project, and this being 2017, it felt right to go with &lt;a href=&quot;https://en.wikipedia.org/wiki/USB-C&quot;&gt;USB-C&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/usb-breakout.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/usb-breakout-small.jpg&quot; alt=&quot;USB-C breakouts&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I found some cheap USB-C breakout boards from AliExpress. Once they arrived, it was time to figure out how the spec works. Since USB-C is quite new, there are very few resources available on how to use it with microcontrollers. These tutorials were quite helpful:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.scorpia.co.uk/2016/03/17/using-usb-type-c-on-hobyist-projects/&quot;&gt;Using USB-C on hobbyist projects&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.embedded.com/electronics-blogs/benson-s-blocks/4442214/USB-Type-C-in-a-Micro-B-world&quot;&gt;USB Type C in a Micro-B world&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is how we ended up wiring the breakout board. After these you only have four wires to connect to the microcontroller: ground, power, and the positive and negative data pins.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/usb-breakout-wired.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/usb-breakout-wired-small.jpg&quot; alt=&quot;USB-C breakout with wiring&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://sgotti.me/post/atreus-keyboard-build-log/&quot;&gt;This Atreus build log&lt;/a&gt; was useful for figuring out where to connect the USB wires on the Pro Micro. Once all was done, I had a custom, USB-C keyboard!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/usb-ready.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/usb-ready-small.jpg&quot; alt=&quot;USB-C keyboard&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;next-steps&quot;&gt;Next steps&lt;/h2&gt;

&lt;p&gt;Now I have the Atreus working nicely on my new standing desk. Learning Colemak is a bit painful, but the keyboard itself feels super nice!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/standing-desk.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/atreus-build/standing-desk-small.jpg&quot; alt=&quot;New standing desk&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, I’d still like to CNC mill a proper wooden case for the keyboard. I may update this post once that happens.&lt;/p&gt;

&lt;p&gt;I’m also considering to order an &lt;a href=&quot;https://atreus.technomancy.us/&quot;&gt;Atreus kit&lt;/a&gt; so I’d have a second, always packed for travel keyboard. The kit comes with a PCB, which might work better at airport security checks than the hand-wired build.&lt;/p&gt;

&lt;p&gt;Another thing that is quite tempting is to make a custom firmware with &lt;a href=&quot;http://microflo.org/&quot;&gt;MicroFlo&lt;/a&gt;. I have no complaints on how QMK works, but it’d be super-cool to use our &lt;a href=&quot;https://flowhub.io/&quot;&gt;visual programming tool&lt;/a&gt; to tweak the keyboard live.&lt;/p&gt;

&lt;p&gt;Big thanks to &lt;a href=&quot;http://github.com/technomancy&quot;&gt;Technomancy&lt;/a&gt; for the Atreus design, and to XenGi for all the help during the build!&lt;/p&gt;
</description>
      <pubDate>Thu, 20 Apr 2017 00:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Fatreus-build-log%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/atreus-build-log/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/atreus-build-log/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
    <item>
      
      <title>Working on an Android tablet, 2017 edition</title>
      <description>&lt;p&gt;Back in 2013 I was &lt;a href=&quot;https://bergie.iki.fi/blog/working-on-android/&quot;&gt;working exclusively on an Android tablet&lt;/a&gt;. Then with the &lt;a href=&quot;https://bergie.iki.fi/blog/noflo-kickstarter-launch/&quot;&gt;NoFlo Kickstarter&lt;/a&gt; I needed a device with a desktop browser. What followed were brief periods working on a Chromebook, on a 12” MacBook, and even an iPad Pro.&lt;/p&gt;

&lt;p&gt;But from April 2016 onwards I’ve been again working with an Android device. Some people have asked me about my setup, and so here is an update.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_travelers_notebook.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_travelers_notebook_small.jpg&quot; alt=&quot;Information technology&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;why-work-on-a-tablet&quot;&gt;Why work on a tablet?&lt;/h2&gt;

&lt;p&gt;When I started on this path in 2013, using a tablet for “real work” was considered crazy. While every story on tablet productivity still brings out the people claiming &lt;em&gt;it is not a real computer for real work&lt;/em&gt;, using &lt;em&gt;tablets for real work&lt;/em&gt; is becoming more and more common.&lt;/p&gt;

&lt;p&gt;A big contributor to this has been the plethora of work-oriented tablets and convertibles released since then. Microsoft’s popular &lt;a href=&quot;https://en.m.wikipedia.org/wiki/Microsoft_Surface&quot;&gt;Surface Pro line&lt;/a&gt; brought the PC to tablet form factor, and Apple’s &lt;a href=&quot;https://en.m.wikipedia.org/wiki/IPad_Pro&quot;&gt;iPad Pro devices&lt;/a&gt; gave the iPad a keyboard.&lt;/p&gt;

&lt;p&gt;Here are couple of great posts talking about how it feels to work on an iPad:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://mattgemmell.com/rediscovering-the-ipad/&quot;&gt;Rediscovering the iPad&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.macworld.com/article/3130710/ios/when-traveling-my-ipad-is-essential-and-my-mac-is-the-add-on.html&quot;&gt;When traveling, my iPad is essential and my Mac is the add-on&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.macstories.net/stories/one-year-of-ipad-pro/&quot;&gt;A Computer for Everything: One Year of iPad Pro&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://brooksreview.net/2016/12/evovling-ipad-desktop-usage/&quot;&gt;Evolving iPad Desktop Usage&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://medium.learningbyshipping.com/my-tablet-has-stickers-8f7ab9022ebd#.vqpn9n2fi&quot;&gt;My Tablet Has Stickers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With all the activity going on, one could claim using a tablet for work has been normalized. But why work on a tablet instead of a “real computer”? Here are some reasons, at least for me:&lt;/p&gt;

&lt;h3 id=&quot;free-of-legacy-cruft&quot;&gt;Free of legacy cruft&lt;/h3&gt;

&lt;p&gt;Desktop operating systems have become clunky. Window management. File management. Multiple ways to discover, install, and uninstall applications. Broken notification mechanisms.&lt;/p&gt;

&lt;p&gt;With a tablet you can bypass pretty much all of that, and jump into a simpler, cleaner interface designed for the modern connected world.&lt;/p&gt;

&lt;p&gt;I think this is also the reason driving some developers back to Linux and &lt;a href=&quot;http://swaywm.org&quot;&gt;tiling window managers&lt;/a&gt; — cutting manual tweaking and staying focused.&lt;/p&gt;

&lt;h3 id=&quot;amazing-endurance&quot;&gt;Amazing endurance&lt;/h3&gt;

&lt;p&gt;Admittedly, laptop battery life has increased a lot since 2013. But with some manufacturers using this an excuse to ship thinner devices, tablets still win the endurance game.&lt;/p&gt;

&lt;p&gt;With my current work tablet, I’m customarily getting 12 or more hours of usage. This means I can power through the typical long days of a startup founder without having to plug in. And when traveling, I really don’t have to care where power sockets are located on trains, airplanes, and conference centers.&lt;/p&gt;

&lt;p&gt;Low power usage also means that I can really get a lot of more runtime by utilizing the &lt;a href=&quot;http://www.macworld.com/article/3034575/hardware/anker-powercore-20100-review-a-top-performing-usb-c-battery-pack.html&quot;&gt;mobile battery pack&lt;/a&gt; I originally bought to use with my phone. While I’ve never actually had to try this, back-of-the-envelope math claims I should be able to get a full workweek from the combo without plugging in.&lt;/p&gt;

&lt;h3 id=&quot;work-and-play&quot;&gt;Work and play&lt;/h3&gt;

&lt;p&gt;The other aspect of using a tablet is that it becomes a very nice content consumption device after I’m done working. Simply disconnect the keyboard and lean back, and the same device you used for writing software becomes a great e-reader, video player, or a gaming machine.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_spacex.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_spacex_small.jpg&quot; alt=&quot;Livestreaming a SpaceX launch&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This combined with the battery life has meant that I’ve actually stopped carrying a Kindle with me. While an e-ink screen is still nicer to read, not needing an extra device has its benefits, especially for a frequent one-bag traveller.&lt;/p&gt;

&lt;h2 id=&quot;the-setup&quot;&gt;The setup&lt;/h2&gt;

&lt;p&gt;I’m writing this on a &lt;a href=&quot;https://en.m.wikipedia.org/wiki/Pixel_C&quot;&gt;Pixel C&lt;/a&gt;, a 10.2” Android tablet made by Google. I got the device last spring when there were developer discounts available at ramp-up to the Android 7 release, and have been using it full-time since.&lt;/p&gt;

&lt;h3 id=&quot;software&quot;&gt;Software&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/android_homescreen_2017.png&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/android_homescreen_2017_small.png&quot; alt=&quot;My Android homescreen&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Surprisingly little has changed in my software use &lt;a href=&quot;https://bergie.iki.fi/blog/working-on-android/&quot;&gt;since 2013&lt;/a&gt; — I still spend the most of the time writing software in either &lt;a href=&quot;https://flowhub.io&quot;&gt;Flowhub&lt;/a&gt; or terminal. Here are the apps I use on daily basis:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.sonelli.juicessh&quot;&gt;JuiceSSH&lt;/a&gt; for mosh access to my remote development servers&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.termux&quot;&gt;Termux&lt;/a&gt; for local and offline development&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://flowhub.io&quot;&gt;Flowhub&lt;/a&gt; for visual programming&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=io.thegrid.app&quot;&gt;The Grid&lt;/a&gt; for updating my various websites&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.Slack&quot;&gt;Slack&lt;/a&gt;, &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.talk&quot;&gt;Hangouts&lt;/a&gt;, and &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.inbox&quot;&gt;Inbox by Gmail&lt;/a&gt; for communications&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.docs&quot;&gt;Google Drive&lt;/a&gt; and the associated applications for budgeting and planning&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.android.chrome&quot;&gt;Chrome&lt;/a&gt; for web&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking back to the situation in early 2013, the biggest change is that &lt;strong&gt;Slack&lt;/strong&gt; has pretty much killed work email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Termux&lt;/strong&gt; is a new app that has done a lot to improve the local development situation. By starting the app you get a very nice Linux chroot environment where a lot of software is only a quick &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apt install&lt;/code&gt; away.&lt;/p&gt;

&lt;p&gt;Since much of my non-Flowhub work is done in &lt;em&gt;tmux&lt;/em&gt; and &lt;em&gt;vim&lt;/em&gt;, I get the exactly same working environment on both local chroot and cloud machines by simply installing &lt;a href=&quot;https://github.com/bergie/dotfiles&quot;&gt;my dotfiles&lt;/a&gt; on each of them.&lt;/p&gt;

&lt;h3 id=&quot;keyboard&quot;&gt;Keyboard&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_laptop.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_laptop_small.jpg&quot; alt=&quot;Laptop tablet&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I’m on the road I’m using the &lt;a href=&quot;http://www.anandtech.com/show/9972/the-google-pixel-c-review/7&quot;&gt;Pixel C keyboard&lt;/a&gt;. This doubles as a screen protector, and provides a reasonable laptop-like typing environment. It attaches to the tablet with very strong magnets and allows a good amount of flexibility on the screen angles.&lt;/p&gt;

&lt;p&gt;However, when stationary, no laptop keyboard compares to a real mechanical keyboard. When I’m in the office I use a &lt;a href=&quot;http://www.cultofmac.com/290750/filco-minila-air-bluetooth-keyboard-review/&quot;&gt;Filco MiniLa Air&lt;/a&gt;, a bluetooth keyboard with quiet-ish Cherry MX brown switches.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_desktop.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_desktop_small.jpg&quot; alt=&quot;Desktop tablet&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This tenkeyless (60%) keyboard is extremely comfortable to type on. However, the sturdy metal case means that it is a little too big and heavy to carry on a daily basis.&lt;/p&gt;

&lt;p&gt;In practice I’ve only taken the mechanical keyboard with me when there has been a longer trip where I know that I’ll be doing a lot of typing. To solve this, I’m actually &lt;a href=&quot;https://www.instagram.com/p/BP0lNxJDng_/?taken-by=henribergius&quot;&gt;looking to build&lt;/a&gt; a more compact custom mechanical keyboard so I could always have it with me. (&lt;strong&gt;Update&lt;/strong&gt;: &lt;a href=&quot;http://bergie.iki.fi/blog/atreus-build-log/&quot;&gt;here is the keyboard I built&lt;/a&gt;).&lt;/p&gt;

&lt;h2 id=&quot;comparison-with-ios&quot;&gt;Comparison with iOS&lt;/h2&gt;

&lt;p&gt;So, why work on Android instead of getting an iPad Pro? I’ve actually worked on both, and here are my reasons:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Communications between apps&lt;/strong&gt;: while iOS has extensions now, the ability to send data from an app to another is still a hit-or-miss. Android had intents from day one, meaning pretty much any app can talk to any other app&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Standard charging&lt;/strong&gt;: all of my other devices charge with the same USB-C chargers and cables. iPads still use the proprietary Lightnight plug, requiring custom dongles for everything&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Standard accessories&lt;/strong&gt;: this boils down to USB-C just like charging. With Android I can plug in a network adapter or even a mouse, and it’ll just work&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Ecosystem lock-in&lt;/strong&gt;: we’re moving to a world where everything — from household electronics to cars — is either locked to the Apple ecosystem or following standards. I don’t want to be locked to a single vendor for everything digital&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Browser choice&lt;/strong&gt;: with iOS you only get one web renderer, the rather dated Safari. On Android I can choose between Chrome, Firefox, or any other browser that has been ported to the platform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, iOS has its own benefits. Apple has a stronger stance on privacy than Google. And there is more well-made tablet software available for iPads than Android. But when almost everything I use is available on the web, this doesn’t matter that much.&lt;/p&gt;

&lt;h2 id=&quot;the-future&quot;&gt;The future&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_cbase.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/android-tablet-2017/pixel_c_cbase_small.jpg&quot; alt=&quot;Hacking on the c-base patio&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a software developer working on Android tablets, the weakest point of the platform is still that there are &lt;em&gt;no browser developer tools&lt;/em&gt; available. This was a problem in 2013, and it is still a problem now.&lt;/p&gt;

&lt;p&gt;From my conversations with some Chrome developers, it seems Google has very little interest in addressing this. However, there is a bright spot: the new breed of convertible Chromebooks being released now. And they run Android apps:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.wired.com/2016/09/chromebooks-totally-transform-laptop-design/&quot;&gt;How Chromebooks Are About to Totally Transform Laptop Design&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://chromeunboxed.com/detachable-chromebooks-pixel-c-and-the-future-of-chrome-os/&quot;&gt;Detachable Chromebooks, Pixel C And The Future Of Chrome OS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://arstechnica.com/gadgets/2017/02/samsungs-chromebook-pro-a-thoughtful-marriage-of-android-and-chrome-os/&quot;&gt;Samsung’s Chromebook Pro gives me hope in Chrome OS—thanks to Android’s help&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chrome OS is another clean, legacy free, modern computing interface. With these new devices you get the combination of a full desktop browser and the ability to run all Android tablet software.&lt;/p&gt;

&lt;p&gt;The Samsung Chromebook Pro/Plus mentioned above is definitely interesting. A high-res 12” screen and a digital pen which I see as something very promising for &lt;a href=&quot;https://flowhub.io&quot;&gt;visual programming&lt;/a&gt; purposes.&lt;/p&gt;

&lt;p&gt;However, given that I already have a great mechanical keyboard, I’d love a device that shipped without an attached keyboard. We’ll see what kind of devices get out later this year.&lt;/p&gt;
</description>
      <pubDate>Fri, 10 Feb 2017 00:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Fworking-on-android-2017%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/working-on-android-2017/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/working-on-android-2017/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
    <item>
      
      <title>Flowhub public beta: a better interface for Flow-Based Programming</title>
      <description>&lt;p&gt;Today I’m happy to announce the &lt;a href=&quot;http://flowhub.io#app-scope&quot;&gt;public beta&lt;/a&gt; of the &lt;a href=&quot;http://flowhub.io&quot;&gt;Flowhub&lt;/a&gt; interface for Flow-Based Programming. This is the latest step in the adventure that started with &lt;a href=&quot;http://bergie.iki.fi/blog/inspiration-for-fbp-ui/&quot;&gt;some UI sketching&lt;/a&gt; early last year, went through our &lt;a href=&quot;https://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;successful Kickstarter&lt;/a&gt; — and now — thanks to our &lt;a href=&quot;https://noflojs.org/kickstarter/&quot;&gt;1 205 backers&lt;/a&gt;, it is available to the public.&lt;/p&gt;

&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h2&gt;

&lt;p&gt;This post will go into more detail on how the new Flowhub interface works in a bit, but for those who want to dive straight in, here are the relevant links:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://app.flowhub.io&quot;&gt;Hosted web version of Flowhub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/flowhub/aacpjichompfhafnciggfpfdpfododlk&quot;&gt;Flowhub Chrome App&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make sure to read the &lt;a href=&quot;http://flowhub.io/documentation/&quot;&gt;Getting Started guides&lt;/a&gt; and check out the &lt;a href=&quot;http://flowhub.io/documentation/flowhub-faq/&quot;&gt;Flowhub FAQ&lt;/a&gt;. There is also a &lt;a href=&quot;http://flowhub.io/#video&quot;&gt;new video available&lt;/a&gt;:&lt;/p&gt;

&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;https://bergie.iki.fi//www.youtube.com/embed/8Dos61_6sss&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Both the web version and the Chrome app are built following the &lt;a href=&quot;http://offlinefirst.org/&quot;&gt;offline first&lt;/a&gt; philosophy, and keep everything you need stored locally inside your browser. The Chrome app and the upcoming iOS and Android builds will enable us to later introduce capabilities that are not possible inside regular browsers, like talking directly to &lt;a href=&quot;http://microflo.org/&quot;&gt;MicroFlo&lt;/a&gt; runtimes over USB or Bluetooth. But other than that they’re similar in features and user experience.&lt;/p&gt;

&lt;h2 id=&quot;new-user-interface&quot;&gt;New User Interface&lt;/h2&gt;

&lt;p&gt;If you read the &lt;a href=&quot;http://bergie.iki.fi/blog/noflo-update/&quot;&gt;NoFlo Update from last October&lt;/a&gt;, you might notice that the new Flowhub user interface looks and feels quite different from it.
&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-main.png&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-main-small.png&quot; alt=&quot;Main screen of new Flowhub UI&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-menu.png&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-menu-small.png&quot; alt=&quot;Graph editing in new Flowhub UI&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This new design was implemented to improve touch-screen friendliness, as well as to give Flowhub a more focused, unique look. It also allowed us to follow some interesting UX paths that I’ll explain next.&lt;/p&gt;

&lt;h3 id=&quot;zooming&quot;&gt;Zooming&lt;/h3&gt;

&lt;p&gt;One typical problem in visual programming tools is that they can become quite cluttered with information. To solve this, we utilized the concept of &lt;a href=&quot;http://en.wikipedia.org/wiki/Zooming_user_interface&quot;&gt;Zooming User Interfaces&lt;/a&gt;, which allow us to show a clear overview of a program when zoomed out, and reveal all kinds of detail about it when zoomed in.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-zoom-out-small.png&quot; alt=&quot;Zoomed out&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-zoom-in-small.png&quot; alt=&quot;Zoomed in&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Zooming works with two-finger scroll on typical desktop computers, or with the pinch gesture on touch-enabled devices.&lt;/p&gt;

&lt;h3 id=&quot;pie-menu&quot;&gt;Pie Menu&lt;/h3&gt;

&lt;p&gt;Another interface concept that we used to make interactions faster and more contextual is &lt;a href=&quot;http://en.wikipedia.org/wiki/Pie_menu&quot;&gt;Pie Menus&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For example, you can easily navigate to subgraphs and component source code with the menu:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-menu-navigation-small.png&quot; alt=&quot;Navigating with the Pie Menu&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When you have selected multiple nodes, you can use the menu to group them or move them to a new subgraph:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-menu-group-small.png&quot; alt=&quot;Group selections with the Pie Menu&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The menu can also be used for removing edges or nodes:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-menu-edge-small.png&quot; alt=&quot;Deleting an edge with the Pie Menu&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can activate the pie menu in the graph editor with a right mouse click, or with a long press on touch-enabled devices.&lt;/p&gt;

&lt;h3 id=&quot;component-editor&quot;&gt;Component Editor&lt;/h3&gt;

&lt;p&gt;Another new major feature is in-app component editing. If your runtime supports it, you can at any time create or modify &lt;a href=&quot;https://noflojs.org/documentation/components/&quot;&gt;custom components&lt;/a&gt; for your project and they’ll become immediately available for your graphs.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-new-component-small.png&quot; alt=&quot;Creating a new component&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-component-editor-small.png&quot; alt=&quot;Component Editing&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The programming languages available for component creation depend on the runtime. With NoFlo these are JavaScript and CoffeeScript. With another runtime they might be C, Java, or Python.&lt;/p&gt;

&lt;h3 id=&quot;offline-first&quot;&gt;Offline First&lt;/h3&gt;

&lt;p&gt;While some claim that &lt;a href=&quot;http://signalvnoise.com/posts/347-youre-not-on-a-fucking-plane-and-if-you-are-it-doesnt-matter&quot;&gt;in reality you’re never offline&lt;/a&gt;, the reality is that there are many situations where Internet connectivity is either not available, unreliable, or simply expensive. Think of a typical conference or a hackathon for instance.&lt;/p&gt;

&lt;p&gt;Because of this — and to give software developers the privacy they deserve — Flowhub has been designed to work “offline first”. All your graphs, projects, and custom components are stored locally in your browser’s &lt;a href=&quot;http://en.wikipedia.org/wiki/Indexed_Database_API&quot;&gt;Indexed Database&lt;/a&gt; and only transmitted over the network when you wish to push to a GitHub project, or interact with a remote runtime.&lt;/p&gt;

&lt;p&gt;We’re following a very similar UI concept as &lt;a href=&quot;https://kindle.amazon.com/&quot;&gt;Amazon Kindle&lt;/a&gt; in that you can download projects locally to your device, or browse the ones you have available in the cloud:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-projects-small.png&quot; alt=&quot;Local and remote projects&quot; /&gt;&lt;/p&gt;

&lt;p&gt;At any point you can push your changes to a graph or a component to GitHub:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-push-small.png&quot; alt=&quot;Pushing to GitHub&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Runtime discovery happens through a central service, but once you know the address of your FBP runtime, the communications between it and your browser will happen directly. This makes it easy to work with Node.js projects running on your own machine even when offline.&lt;/p&gt;

&lt;h2 id=&quot;cross-platform-full-stack&quot;&gt;Cross-platform, Full-stack&lt;/h2&gt;

&lt;p&gt;When we launched the &lt;a href=&quot;https://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;NoFlo UI Kickstarter&lt;/a&gt;, we were initially only thinking about how to support NoFlo in different environments. But in the course of development we ended up defining a &lt;a href=&quot;https://noflojs.org/documentation/protocol/&quot;&gt;network protocol for FBP&lt;/a&gt; that enabled us to move past just a single FBP environment and towards supporting all of them. This is what prompted the &lt;a href=&quot;http://bergie.iki.fi/blog/flowhub/&quot;&gt;Flowhub rebranding&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since then, the number of supported FBP environments has been growing. Here is a list of the ones I’m aware of:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://noflojs.org/&quot;&gt;NoFlo&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;browsers&lt;/li&gt;
      &lt;li&gt;Node.js&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;http://bergie.iki.fi/blog/flowhub-gnome-dx/&quot;&gt;GNOME desktop&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://microflo.org/&quot;&gt;MicroFlo&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;microcontrollers&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.jonnor.com/2014/04/imgflo-0-1-an-image-processing-server-and-flowhub-runtime/&quot;&gt;ImgFlo&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;image processing with &lt;a href=&quot;http://www.gegl.org/&quot;&gt;GEGL&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/jonnor/protoflo&quot;&gt;ProtoFlo&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Python&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope that the developers of other FBP environments like &lt;a href=&quot;http://sourceforge.net/projects/flow-based-pgmg/&quot;&gt;JavaFBP&lt;/a&gt; and &lt;a href=&quot;https://github.com/trustmaster/goflow&quot;&gt;GoFlow&lt;/a&gt; add support for the FBP protocol soon so that they can also utilize the Flowhub interface.&lt;/p&gt;

&lt;h2 id=&quot;open-source-vs-paid&quot;&gt;Open Source vs. Paid&lt;/h2&gt;

&lt;p&gt;As promised in our Kickstarter, the &lt;a href=&quot;https://github.com/noflo/noflo-ui&quot;&gt;NoFlo Development Environment&lt;/a&gt; is an open source project available under the MIT license.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://flowhub.io/&quot;&gt;Flowhub&lt;/a&gt; is a branded and supported instance of that with some additional network services like the Runtime Registry.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/noflo-ui-vs-flowhub.png&quot; alt=&quot;NoFlo UI vs. Flowhub&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://flowhub.io/preorder/&quot;&gt;Flowhub plans&lt;/a&gt; allow us to continue development of this Flow-Based Programming toolset, as well as to provide the various network services needed for making the experience smooth.&lt;/p&gt;

&lt;p&gt;Just like &lt;a href=&quot;https://github.com/pricing&quot;&gt;with GitHub&lt;/a&gt;, Flowhub provides &lt;em&gt;a free environment for anybody working on public and open source projects&lt;/em&gt;. Private projects need &lt;a href=&quot;http://flowhub.io/preorder/&quot;&gt;a paid plan&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;kickstarter--pre-ordered-plans&quot;&gt;Kickstarter &amp;amp; Pre-Ordered Plans&lt;/h3&gt;

&lt;p&gt;It is likely that many readers of this post already supported our Kickstarter or pre-ordered a Flowhub plan. Since Flowhub is still in beta, &lt;em&gt;we haven’t activated your plans yet&lt;/em&gt;. So for now, everybody is using Flowhub with the free plan.&lt;/p&gt;

&lt;p&gt;We will be rolling out the paid plans and Kickstarter rewards towards the end of the beta testing period.&lt;/p&gt;

&lt;p&gt;Feel free to already log in and start using Flowhub, however! The plan will be added to your account when we feel the software is ready for it.&lt;/p&gt;

&lt;h2 id=&quot;examples&quot;&gt;Examples&lt;/h2&gt;

&lt;p&gt;Here are some examples of things you can build with Flowhub targeting web browsers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://app.flowhub.io/#example/7804187&quot;&gt;Photo booth&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://app.flowhub.io/#example/7135158&quot;&gt;Animated clock&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://app.flowhub.io/#example/1319c76fe006fb34c9c9&quot;&gt;Canvas pattern generator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a more comprehensive cross-platform project, see my &lt;a href=&quot;http://bergie.iki.fi/blog/ingress-table/&quot;&gt;Building an Ingress Table with Flowhub&lt;/a&gt; post.&lt;/p&gt;

&lt;p&gt;There is also an &lt;a href=&quot;http://meemoo.org/blog/2014-05-06-summer-of-code-2014/&quot;&gt;ongoing Google Summer of Code project&lt;/a&gt; to port various &lt;a href=&quot;http://meemoo.org/hack-our-apps/&quot;&gt;Meemoo apps&lt;/a&gt; to Flowhub. This will hopefully result in a lot more demos.&lt;/p&gt;

&lt;h2 id=&quot;next-steps&quot;&gt;Next Steps&lt;/h2&gt;

&lt;p&gt;The main purpose of this public beta is to allow our backers and other FBP enthusiasts an early access to the Flowhub user interface. Now we will focus on stabilization and bug fixing, aided by the &lt;a href=&quot;https://github.com/noflo/noflo-ui/issues?state=open&quot;&gt;NoFlo UI issue tracker&lt;/a&gt;. We’re also gathering feedback from beta testers in form of user surveys and will utilize those to prioritize both bug fixing and feature work.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/flowhub-florence-small.jpg&quot; alt=&quot;Flowhub team testing the UI&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Right now the main areas of focus are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/noflo/noflo-ui/issues/218&quot;&gt;Improving the GitHub integration&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Landing the &lt;a href=&quot;https://github.com/noflo/noflo-ui/issues/53&quot;&gt;graph autolayout feature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/noflo/noflo-ui/issues/45&quot;&gt;Compatibility with upcoming Chrome 35&lt;/a&gt; and its native HTML5 Custom Elements support&lt;/li&gt;
  &lt;li&gt;Implementing real-time collaboration over WebRTC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We hope to release the stable version of Flowhub in summer 2014.&lt;/p&gt;
</description>
      <pubDate>Wed, 07 May 2014 00:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Fflowhub-beta%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/flowhub-beta/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/flowhub-beta/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
    <item>
      
      <title>Software is not text</title>
      <description>&lt;p&gt;It has been interesting to watch the reactions to &lt;a href=&quot;https://vimeo.com/71278954&quot;&gt;Bret Victor’s The Future of Programming&lt;/a&gt; and our &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;NoFlo Kickstarter&lt;/a&gt;. While much of it has been supportive, there seems to be a largish group of people that are offended by these notions. &lt;em&gt;How dare we suggest that software could be made in other ways than textually?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is somewhat understandable. We all feel pride in being able to master the arcane skills our daily work needs. Even commanding a text editor like Vim can be daunting to a beginner, and yet we do it effortlessly! But therein lies the danger, as Bret Victor explains:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The most dangerous thought that you can have as a creative person is to think that you know what you’re doing. Because once you think you know what you’re doing you stop looking around for other ways of doing things. You stop being able to see other ways of doing things. You become blind.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, software development has been happening textually for quite a while — ever since &lt;a href=&quot;http://en.wikipedia.org/wiki/Fortran&quot;&gt;Fortran&lt;/a&gt; came about. Some even see programming evolving into &lt;a href=&quot;http://en.wikipedia.org/wiki/Literate_programming&quot;&gt;a form of literature&lt;/a&gt;. Nothing wrong with that!&lt;/p&gt;

&lt;h2 id=&quot;input-is-the-problem&quot;&gt;Input is the problem&lt;/h2&gt;

&lt;p&gt;But at the same time, why not explore other avenues of building software? Visual programming has been around nearly as long as the textual variant, but has always stayed outside of the mainstream. There are many reasons for this, but I believe the primary one has been the lack of suitable input devices.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Until quite recently, the keyboard was the only efficient way of communicating with a computer.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But interestingly, while computer keyboards have become worse, the other input tools have improved. Graphics tablets, touchpads, and touchscreens are all way better and more ubiquitous now than ever before. As I’ve &lt;a href=&quot;http://bergie.iki.fi/blog/tablet-productivity/&quot;&gt;argued before&lt;/a&gt; this may eventually make our culture less textual.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Until now, text has been the dominant way of handling business communications. Touchscreens are bad for writing, and so the professions that have most benefitied from them have been from outside the traditional business domain: &lt;a href=&quot;http://www.techradar.com/news/mobile-computing/tablets/how-musicians-are-using-the-ipad-921391&quot;&gt;musicians&lt;/a&gt;, &lt;a href=&quot;http://terrywhite.com/techblog/ipad-fits-photography-workflow/&quot;&gt;photographers&lt;/a&gt;, and many others can already do some things better on a tablet than they could on a traditional computer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;With tablets and smartphones becoming ubiquitous, it might not be far-fetched to imagine the business culture to change as well. Consider:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;Video conferencing instead of email&lt;/li&gt;
    &lt;li&gt;Not being bound to a desk. Maybe offices will look more like lounges?&lt;/li&gt;
    &lt;li&gt;Large, zoomable visualizations of business data instead of rigid report generators&lt;/li&gt;
    &lt;li&gt;Bringing software and connectivity to areas outside of traditional office work&lt;/li&gt;
    &lt;li&gt;Replacing dedicated hardware for measurements, analysis, etc&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Why should programming stand apart?&lt;/p&gt;

&lt;h2 id=&quot;building-software-by-touch&quot;&gt;Building software by touch&lt;/h2&gt;

&lt;p&gt;One big benefit of &lt;a href=&quot;http://en.wikipedia.org/wiki/Flow-based_programming&quot;&gt;flow-based programming&lt;/a&gt; is that the flow graph definitions are quite nicely disconnected from the way they’re produced. You can write them “&lt;a href=&quot;https://noflojs.org/documentation/fbp/&quot;&gt;as code&lt;/a&gt;”, or you can draw them &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;in an editor&lt;/a&gt;. The system doesn’t care. A graph is a graph.&lt;/p&gt;

&lt;p&gt;To give the necessary car analogy: &lt;em&gt;When you power a car with electricity, you suddenly have many more options for generating that power… Solar, wind, or even just burning hydrocarbons. Similarly, when you decouple the logic — the flow of your software — from text you will have new ways to build and visualise it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Writing software textually is to work on a 1D medium. The visual representation given by NoFlo UI allows us to interact better with the software with the 2D input tools we have now, like touch screens and mice.&lt;/p&gt;

&lt;h2 id=&quot;building-software-by-speaking&quot;&gt;Building software by speaking&lt;/h2&gt;

&lt;p&gt;But it would be easy to imagine other input types as well. Given that the problem domain of building graphs is quite nicely constrained, it is an area where &lt;em&gt;speech input&lt;/em&gt; could actually work. Think of speaking to your computer and telling it to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;add node with component Foo&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;connect node Foo with node Bar&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This might be something interesting to experiment with using the web-based NoFlo UI and the &lt;a href=&quot;http://www.google.com/intl/en/chrome/demos/speech.html&quot;&gt;speech recognition API in Google Chrome&lt;/a&gt;!&lt;/p&gt;

&lt;h2 id=&quot;building-software-by-gestures&quot;&gt;Building software by gestures&lt;/h2&gt;

&lt;p&gt;I recently ran into the concept videos by &lt;a href=&quot;https://www.spaceglasses.com/&quot;&gt;Meta&lt;/a&gt;, a company building augmented reality glasses that include a Kinect-like gesture sensor.&lt;/p&gt;

&lt;iframe width=&quot;500&quot; height=&quot;281&quot; src=&quot;https://bergie.iki.fi//www.youtube.com/embed/b7I7JuQXttw&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;While the current technology won’t be able to &lt;a href=&quot;http://blogs.valvesoftware.com/abrash/why-you-wont-see-hard-ar-anytime-soon/&quot;&gt;bring hard AR into reality&lt;/a&gt;, something like these glasses could be awesome when collaborating on software design with a group of people. Imagine seeing the graph floating in space in the middle of the room, and to be able to collaboratively pick up and move things around!&lt;/p&gt;

&lt;h2 id=&quot;letting-all-this-merge&quot;&gt;Letting all this merge&lt;/h2&gt;

&lt;p&gt;In the end, I think we will end up using some combination of various of these together. Sometimes we’ll want to have a desk and a keyboard to dive in and write some tests or new components. But sitting at a desk the whole day is also bad for you, and so sometimes it may be nice to move around and do development on your tablet. Or even dictate changes to the graph while sitting in a car?&lt;/p&gt;

&lt;p&gt;By moving the logic &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;into a graph&lt;/a&gt;, we can let software free.&lt;/p&gt;
</description>
      <pubDate>Sun, 11 Aug 2013 00:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Fsoftware-is-not-text%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/software-is-not-text/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/software-is-not-text/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
    <item>
      
      <title>NoFlo Kickstarter, the hacker's perspective</title>
      <description>&lt;p&gt;This has been a big week for &lt;a href=&quot;https://noflojs.org/&quot;&gt;NoFlo&lt;/a&gt;, the flow-based programming environment for JavaScript. Yesterday we released &lt;a href=&quot;https://github.com/noflo/noflo/releases/tag/0.4.0&quot;&gt;NoFlo 0.4&lt;/a&gt;, which added support for running flow-based programs in web browsers. And today we launched our &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;NoFlo Development Environment effort on Kickstarter&lt;/a&gt;. Before continuing, make sure to watch &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;the video&lt;/a&gt;!&lt;/p&gt;

&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;https:&amp;#x2F;&amp;#x2F;www.kickstarter.com&amp;#x2F;projects&amp;#x2F;noflo&amp;#x2F;noflo-development-environment&amp;#x2F;widget&amp;#x2F;video.html&quot; frameborder=&quot;0&quot;&gt; &lt;/iframe&gt;

&lt;p&gt;This is our effort to bring visual and collaborative flow-based tools into the world of mainstream software development. Similar tools are already in use in many specialized industries from movie special effects to hardware simulation, but we programmers still have to &lt;em&gt;construct these complex maps of our software’s control flow&lt;/em&gt; inside our brains based on their textual representation. With &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;your support&lt;/a&gt;, we could change that!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ve already reached a third of our goal on the first day. Clearly people see the need for these tools. Exciting times!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The stories from &lt;a href=&quot;http://techcrunch.com/2013/08/01/noflo-launches-kickstarter-campaign-to-provide-a-way-for-everyone-to-understand-and-visualize-code/&quot;&gt;TechCrunch&lt;/a&gt; and &lt;a href=&quot;http://gigaom.com/2013/08/01/noflo-turns-to-kickstarter-to-expand-program-to-help-non-techies-read-code/&quot;&gt;GigaOm&lt;/a&gt; tell the story well for non-programmers. But based on the questions I’ve received today, I thought it would be good to clarify various points from a more programmer-centric point of view.&lt;/p&gt;

&lt;h2 id=&quot;hasnt-visual-programming-been-tried-before&quot;&gt;Hasn’t visual programming been tried before?&lt;/h2&gt;

&lt;p&gt;The story of visual programming tools started with the &lt;a href=&quot;http://youtu.be/QQhVQ1UG6aM&quot;&gt;GRaIL system&lt;/a&gt; of the 60s, and has progressed to tools like &lt;a href=&quot;http://www.ni.com/labview/&quot;&gt;LabView&lt;/a&gt; and &lt;a href=&quot;http://puredata.info/&quot;&gt;Pure Data&lt;/a&gt;. So far none of these tools has reached mainstream acceptance outside of their (sometimes fanatic) industry niches.&lt;/p&gt;

&lt;p&gt;This is partly because these tools were built originally with a particular problem domain in mind, and partly because of the user experience. Execution matters, as we’ve seen so many times in the tech industry. After all, there were tablets a lot before the iPads.&lt;/p&gt;

&lt;p&gt;With &lt;a href=&quot;http://www.kickstarter.com/profile/noflo&quot;&gt;our team&lt;/a&gt; I have the confidence that we have the necessary skills and vision to build something that is actually a pleasure to use, and that makes it truly easier to work with the control flow of your software than it is with the text editors.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is not a rehash of UML&lt;/em&gt;. UML is a diagram mapping out object-oriented constructs, often used for code generation. NoFlo graphs instead are only the &lt;em&gt;coordination layer&lt;/em&gt; that manages the control flow of your software. The components are still handcrafted and unit-tested code that NoFlo merely wires together at runtime, following the edges specified in a &lt;a href=&quot;https://noflojs.org/documentation/json/&quot;&gt;JSON file&lt;/a&gt;. No code generation here.&lt;/p&gt;

&lt;h2 id=&quot;why-map-out-the-control-flow&quot;&gt;Why map out the control flow?&lt;/h2&gt;

&lt;p&gt;All software is inherently a graph. Functions call other functions, sending data along. Signals are emitted and connections are made. But outside of some debugging tools we rarely see this in a visual format. Instead, when starting to work on a program you have to parse the code and build this map in your head.&lt;/p&gt;

&lt;p&gt;This imposes a lot of cognitive load that tools like NoFlo could avoid. When you can see visually how things are connected, you can focus on the bigger picture and build the software you need in a more efficient way. This is what &lt;a href=&quot;http://vimeo.com/71278954&quot;&gt;Bret Victor talked about recently&lt;/a&gt;.&lt;/p&gt;

&lt;iframe src=&quot;https://player.vimeo.com/video/71278954?title=0&amp;amp;byline=0&amp;amp;portrait=0&quot; width=&quot;500&quot; height=&quot;281&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;what-is-the-role-for-code-then&quot;&gt;What is the role for code, then?&lt;/h2&gt;

&lt;p&gt;However, there still remains a role for text-based code. The actual components, the boxes in the graph, are still written out in JavaScript. But since they’re isolated from their surroundings until a NoFlo graph wires them together, each component can focus on accomplishing a single task well.&lt;/p&gt;

&lt;p&gt;My original &lt;a href=&quot;http://bergie.iki.fi/blog/inspiration-for-fbp-ui/&quot;&gt;NoFlo UI prototype&lt;/a&gt; already included the code editor for modifying and creating new components. By the principles of &lt;a href=&quot;http://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;TDD&lt;/a&gt;, each component is always edited alongside its unit tests, and the tests can be run at any point with a single click. We’re now bringing that back into the new UI:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/noflo-ui-code.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/noflo-ui-code-small.jpg&quot; alt=&quot;Editing code in the NoFlo UI&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For those who don’t want this UI, NoFlo is still fully usable also without it. As a matter of fact, we don’t have a UI before the Kickstarter succeeds, and yet many companies are already building their applications with NoFlo. One way is by using the &lt;a href=&quot;https://noflojs.org/documentation/fbp/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.fbp&lt;/code&gt; language&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;why-now&quot;&gt;Why now?&lt;/h2&gt;

&lt;p&gt;Another reason why the &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;NoFlo development environment&lt;/a&gt; may succeed where many others failed is that programming has changed.&lt;/p&gt;

&lt;p&gt;We no longer target a single protocol — whether the Win32 API or HTTP — in our applications. Instead, we need to talk multiple protocols and with multiple devices at the same time. Even just dealing with both REST and WebSockets is difficult to many traditional programming environments.&lt;/p&gt;

&lt;p&gt;The other big change is the usage of &lt;a href=&quot;http://bergie.iki.fi/blog/internet-application-blueprint/&quot;&gt;different web APIs&lt;/a&gt; as part of your applications. Authentication, handling asynchronous requests and services that are sometimes down can be a pain.&lt;/p&gt;

&lt;p&gt;NoFlo brings a &lt;em&gt;controlling layer&lt;/em&gt; to your software that allows you to map out these scenarios and isolate the handling of each protocol or API into its own set of small, simple components.&lt;/p&gt;

&lt;h2 id=&quot;where-could-this-be-used&quot;&gt;Where could this be used?&lt;/h2&gt;

&lt;p&gt;Many of the nodal editing tools built in the past have been very domain-specific. However, &lt;a href=&quot;http://en.wikipedia.org/wiki/Flow-based_programming&quot;&gt;flow-based programming&lt;/a&gt; is a general software development paradigm. NoFlo has already been used for a wide variety of tasks, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Business data extraction and reporting&lt;/li&gt;
  &lt;li&gt;Automating billing workflows&lt;/li&gt;
  &lt;li&gt;Receiving, routing, and sending text messages&lt;/li&gt;
  &lt;li&gt;Static site generation&lt;/li&gt;
  &lt;li&gt;Building server-side web applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that we &lt;a href=&quot;https://github.com/noflo/noflo/releases/tag/0.4.0&quot;&gt;added browser support&lt;/a&gt; it will be possible to also build physics-based user interfaces with NoFlo. There should be some interesting examples of that coming up soon.&lt;/p&gt;

&lt;p&gt;NoFlo being a general JavaScript library could in future enable us to coordinate the flows also in new kinds of places like desktop applications. There are &lt;a href=&quot;http://www.gnome.org/&quot;&gt;several&lt;/a&gt; &lt;a href=&quot;http://kde.org/&quot;&gt;desktop&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Windows_Runtime&quot;&gt;environments&lt;/a&gt; where JavaScript is a first-class citizen. Combining flow-based interactions with declarative UI definitions could be something very powerful!&lt;/p&gt;

&lt;p&gt;Many of the giants of the software industry, like Google, Facebook, Microsoft, Adobe, and Mozilla are all working on improving the JavaScript development tools. It would be awesome to have their support for what we’re doing.&lt;/p&gt;

&lt;h2 id=&quot;how-about-open-source&quot;&gt;How about open source?&lt;/h2&gt;

&lt;p&gt;If you’re following this blog, you probably know that I feel strongly for software freedom. Everything I’ve done during my &lt;a href=&quot;http://www.linkedin.com/in/bergie&quot;&gt;professional career&lt;/a&gt; has been possible only thanks to the open source community.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://noflojs.org/&quot;&gt;NoFlo&lt;/a&gt; and the UI we’re building are and will remain open source available under the &lt;a href=&quot;https://en.wikipedia.org/wiki/MIT_License&quot;&gt;MIT license&lt;/a&gt;. As a matter of fact, the UI is designed to not only work with NoFlo, but also to be adaptable to work with other flow-based systems. I feel this is an area with a lot of potential for collaboration with the various functional and dataflow projects out there.&lt;/p&gt;

&lt;p&gt;We will however be offering a hosted version of the software for a fee. The various &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;Kickstarter rewards&lt;/a&gt; will give our backers an early and cheaper access to that.&lt;/p&gt;

&lt;p&gt;But still, you’ll always be able to run the whole stack on your own infrastructure if you choose to do so.&lt;/p&gt;

&lt;h2 id=&quot;what-happens-next&quot;&gt;What happens next?&lt;/h2&gt;

&lt;p&gt;Our &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;Kickstarter campaign&lt;/a&gt; has been up for less than a day, and we’re already &lt;em&gt;above 30%&lt;/em&gt; of our goal. This makes me quite optimistic for the effort. But of course we won’t succeed without the help of the wider open source and JavaScript community!&lt;/p&gt;

&lt;p&gt;There are still quite a lot of days left in the campaign. Tonight I’ll be flying back to Europe, and then we’ll focus on the next steps.&lt;/p&gt;

&lt;p&gt;One important area of attention is publishing more demos and examples of NoFlo in real-world use. I hope by early next week we’ll be able to show a few applications running on both browser and Node.js. I will also publish our flow-based port of the &lt;a href=&quot;http://jekyllrb.com/&quot;&gt;Jekyll static site generator&lt;/a&gt;. These should help people getting started with this style of programming.&lt;/p&gt;

&lt;p&gt;We also have quite a lot of content lined up and waiting for editing. Something of interest to everybody working with flow-based or functional programming will be the long cut of the interview we made with &lt;a href=&quot;http://en.wikipedia.org/wiki/John_Paul_Morrison&quot;&gt;J. Paul Morrison&lt;/a&gt;, the father of FBP. My hope is that video will be live by the end of the next week.&lt;/p&gt;

&lt;p&gt;If you’re interested in the developments, make sure to follow NoFlo on &lt;a href=&quot;https://twitter.com/noflo&quot;&gt;Twitter&lt;/a&gt;, &lt;a href=&quot;https://www.facebook.com/noflo&quot;&gt;Facebook&lt;/a&gt;, or &lt;a href=&quot;https://plus.google.com/u/0/112372998187205178398&quot;&gt;Google+&lt;/a&gt;. If you back &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;our campaign&lt;/a&gt;, you’ll also receive the updates via Kickstarter.&lt;/p&gt;

&lt;p&gt;Thanks everybody for helping to make this possible! Keep spreading the world and giving &lt;a href=&quot;http://www.kickstarter.com/projects/noflo/noflo-development-environment&quot;&gt;your support&lt;/a&gt;!&lt;/p&gt;
</description>
      <pubDate>Thu, 01 Aug 2013 00:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Fnoflo-kickstarter-launch%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/noflo-kickstarter-launch/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/noflo-kickstarter-launch/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
    <item>
      
      <title>Leap Motion and the virtual interfaces</title>
      <description>&lt;p&gt;The eagerly waited &lt;a href=&quot;https://www.leapmotion.com/&quot;&gt;Leap Motion&lt;/a&gt; controller is now out, and &lt;a href=&quot;http://arstechnica.com/gadgets/2013/07/hands-on-with-the-leap-motion-controller-cool-but-frustrating-as-hell/&quot;&gt;reviews&lt;/a&gt; are pouring in. Most of them see the promise but find the current experience frustrating:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Here’s the thing: the Leap Motion is almost amazing. When using it to interact with my desktop and perform actions (clicking, dragging, scrolling), the experience is about 50 percent fluid intuition and 50 percent screaming frustration. There are moments, sometimes ten or fifteen seconds long, when everything magically clicks into place—the Leap doesn’t decide your hand is too far away or too close to be able to execute actions, and for a few seconds, boom, you’re scrolling, dragging, and clicking effortlessly. It feels totally natural. Then, almost capriciously, your gestures aren’t good enough any more and you spend ten more seconds trying to get a single click to register.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ve had a Leap sensor as part of their &lt;a href=&quot;https://www.leapmotion.com/developers&quot;&gt;developer program&lt;/a&gt; for a while now, and the description above feels quite accurate to both the Leap, and our &lt;a href=&quot;http://bergie.iki.fi/blog/qt-air-cursor/&quot;&gt;Kinect air cursor work&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;lacking-interface-concepts&quot;&gt;Lacking interface concepts&lt;/h2&gt;

&lt;p&gt;The problem is that our current interface concepts are simply not suitable for this sort of interaction. There must be incredible things you can accomplish when &lt;em&gt;the computer can see your fingers or whole body in motion&lt;/em&gt;. We just haven’t discovered them yet.&lt;/p&gt;

&lt;p&gt;This is very similar to the situation we had for a long time with touchscreen devices. There have been tablets available since the 90s, but they didn’t take off until there was a &lt;a href=&quot;http://en.wikipedia.org/wiki/IOS&quot;&gt;new kind of OS&lt;/a&gt; and &lt;a href=&quot;http://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html&quot;&gt;new kind of UI guidelines&lt;/a&gt; for this world. After all, your finger is not a mouse.&lt;/p&gt;

&lt;p&gt;Once those guidelines were out there, and manufacturers built compelling enough all-touch devices, the market took off. I’ve said for a long time that &lt;a href=&quot;http://bergie.iki.fi/blog/why_the_tablet_form_factor_is_winning/&quot;&gt;the tablet form factor is winning&lt;/a&gt;, an estimate validated by the &lt;a href=&quot;http://www.asymco.com/2013/07/18/the-pc-calamity/&quot;&gt;recent sales figures&lt;/a&gt;. And yet, the new kind of tablets have only been available since &lt;a href=&quot;http://bergie.iki.fi/blog/meego-diaspora/&quot;&gt;2006&lt;/a&gt; or &lt;a href=&quot;http://en.wikipedia.org/wiki/IPad&quot;&gt;2010&lt;/a&gt; depending how you look. The big shift is only getting started.&lt;/p&gt;

&lt;p&gt;Right now tablets are still mostly used for recreation and light data processing, as &lt;a href=&quot;http://bergie.iki.fi/blog/tablet-productivity/&quot;&gt;productivity applications and culture&lt;/a&gt; always take a bit longer to adapt. We need to move beyond text as the main way of communicating ideas.&lt;/p&gt;

&lt;p&gt;I’ve &lt;a href=&quot;https://noflojs.org/&quot;&gt;already taken a few steps&lt;/a&gt; that way for us programmers.&lt;/p&gt;

&lt;h2 id=&quot;behind-the-glass&quot;&gt;Behind the glass&lt;/h2&gt;

&lt;p&gt;While there are many great user interfaces built on the touch paradigm, interacting with a featureless piece of glass lacks a lot of the haptic feedback we get from physical interfaces. The author &lt;a href=&quot;https://en.wikipedia.org/wiki/Douglas_Adams&quot;&gt;Douglas Adams&lt;/a&gt; commented on this in &lt;a href=&quot;http://en.wikipedia.org/wiki/The_Hitchhiker&apos;s_Guide_to_the_Galaxy&quot;&gt;The Hitchhiker’s Guide to the Galaxy&lt;/a&gt;already back in 1979:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A loud clatter of gunk music flooded through the Heart of Gold cabin as Zaphod searched the sub-etha radio wave bands for news of himself. The machine was rather difficult to operate. For years radios had been operated by means of pressing buttons and turning dials; then as the technology became more sophisticated the controls were made touch-sensitive–you merely had to brush the panels with your fingers; now all you had to do was wave your hand in the general direction of the components and hope. It saved a lot of muscular expenditure, of course, but meant that you had to sit infuriatingly still if you wanted to keep listening to the same program.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Zaphod waved a hand and the channel switched again.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;(thanks to &lt;a href=&quot;http://arstechnica.com/gadgets/2013/07/hands-on-with-the-leap-motion-controller-cool-but-frustrating-as-hell/?comments=1&amp;amp;post=24987285#comment-24987285&quot;&gt;Ars commenter Joannemullen&lt;/a&gt;, I had forgotten about that quote!)&lt;/p&gt;

&lt;p&gt;The book &lt;a href=&quot;http://mitpress.mit.edu/books/invisible-computer&quot;&gt;Invisible Computer&lt;/a&gt; argues for building physical appliances for different computing purposes. I don’t see that happening anytime soon given the strong onward march of &lt;a href=&quot;http://en.wikipedia.org/wiki/Ephemeralization&quot;&gt;ephemeralization&lt;/a&gt;, of moving everything to converged devices and increasingly capable software.&lt;/p&gt;

&lt;p&gt;But even with software there would be so much more we could be doing.&lt;/p&gt;

&lt;h2 id=&quot;physical-interaction&quot;&gt;Physical interaction&lt;/h2&gt;

&lt;p&gt;The devices we carry around us are filled with different sensors which could provide new kinds of interaction concepts.&lt;/p&gt;

&lt;p&gt;For example, on many Nokia phones you’ve been able to &lt;a href=&quot;http://allaboutwindowsphone.com/flow/item/17791_Flip_to_silence_on_the_Nokia_L.php&quot;&gt;mute the phone&lt;/a&gt; by flipping it around. In 2001 I had an Ericsson phone which used the proximity sensor to &lt;a href=&quot;http://www.ciol.com/ciol/news/123339/now-app-wave-hand-alarm&quot;&gt;snooze the alarm&lt;/a&gt; when you waved your hand over the phone.&lt;/p&gt;

&lt;p&gt;iOS devices use the gesture of shaking the device to &lt;a href=&quot;http://ipod.about.com/od/iphone3gs/qt/shake-to-shuffle-iphone.htm&quot;&gt;shuffle a playlist&lt;/a&gt; or &lt;a href=&quot;http://ipod.about.com/od/iphonehowtos/qt/Shake-To-Undo-On-Iphone.htm&quot;&gt;undo an action&lt;/a&gt;. On many Android devices you can use NFC touches &lt;a href=&quot;http://en.wikipedia.org/wiki/Android_Beam&quot;&gt;to move data or interaction between devices&lt;/a&gt;. Touch a screen to send a picture there, or touch a speaker to make your music play from there.&lt;/p&gt;

&lt;p&gt;These are all great, natural gestures that allow us to interact with the device in a physical way, not with just with the virtual interfaces behind the glass.&lt;/p&gt;

&lt;p&gt;Gestures like these should be more universally available, just like touch UI concepts like &lt;a href=&quot;http://www.theverge.com/2013/5/21/4350826/twitter-pull-to-refresh-patent-innovators-patent-agreement-announced&quot;&gt;pull to refresh&lt;/a&gt;. When people trust a gesture to work consistently everywhere, it will be used a lot more, and users will be happier.&lt;/p&gt;

&lt;p&gt;We are after all interating with physical devices we can not only touch, but also move around.&lt;/p&gt;
</description>
      <pubDate>Sat, 27 Jul 2013 00:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Fleap-motion-virtual-interfaces%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/leap-motion-virtual-interfaces/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/leap-motion-virtual-interfaces/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
    <item>
      
      <title>Working on an Android tablet: first six weeks</title>
      <description>&lt;p&gt;I’ve been &lt;a href=&quot;http://bergie.iki.fi/blog/working-on-android/&quot;&gt;working full time on my Android workstation&lt;/a&gt; for over a month now, and it is time to write an update about it. How has it worked out?&lt;/p&gt;

&lt;h2 id=&quot;what-ive-been-doing&quot;&gt;What I’ve been doing&lt;/h2&gt;

&lt;p&gt;I would love to tell stories of working from parks and cafes, like &lt;a href=&quot;http://yieldthought.com/post/31857050698/ipad-linode-1-year-later&quot;&gt;Mark O’Connor has on his iPad setup&lt;/a&gt;, but unfortunately we had a backlash of winter here in Berlin and the warm spring weather only came back this week.&lt;/p&gt;

&lt;p&gt;Instead — &lt;a href=&quot;http://bergie.iki.fi/blog/all-you-need-is-good-backpack/&quot;&gt;quite atypically&lt;/a&gt; — I’ve been mostly desk-bound in this time. The &lt;a href=&quot;http://iks-project.eu&quot;&gt;EU projects&lt;/a&gt; that mandated a lot of travel have now ended, and my current projects are more about software development than evangelism.&lt;/p&gt;

&lt;p&gt;But that actually makes this experiment even more useful, as it means most of the six week has been actual programming, which is what most of my readers also do.&lt;/p&gt;

&lt;p&gt;For those who missed my setup in &lt;a href=&quot;http://bergie.iki.fi/blog/working-on-android/&quot;&gt;the previous post&lt;/a&gt;, this is how it looks in action:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-desk2.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-desk2-small.jpg&quot; alt=&quot;Nexus 10 as a programming workstation&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On-screen are &lt;a href=&quot;http://tmux.sourceforge.net/&quot;&gt;tmux&lt;/a&gt;, &lt;a href=&quot;http://www.vim.org/&quot;&gt;vim&lt;/a&gt;, and a &lt;a href=&quot;http://gruntjs.com/&quot;&gt;Grunt&lt;/a&gt; test automation &lt;a href=&quot;https://github.com/gruntjs/grunt-contrib-watch#readme&quot;&gt;watcher&lt;/a&gt; running inside a &lt;a href=&quot;http://mosh.mit.edu/&quot;&gt;MOSH client&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-shell.png&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-shell-small.png&quot; alt=&quot;Nexus 10 as a programming workstation&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some things I’ve done in the last month:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Porting the &lt;a href=&quot;https://noflojs.org&quot;&gt;NoFlo flow-based programming engine&lt;/a&gt; to run in both browser and Node.js with the same codebase, including a &lt;a href=&quot;http://bergie.iki.fi/blog/sharing-javascript-libraries-node-browser/&quot;&gt;tutorial on how others can do the same&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Writing and publishing an implementation of &lt;a href=&quot;http://bergie.iki.fi/actionbar/&quot;&gt;Android-style Action Bars for web apps&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Adding multiple major features to the &lt;a href=&quot;https://github.com/noflo/noflo-ui&quot;&gt;web-based NoFlo IDE&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Dealing with the issues raised with the release of jQuery UI 1.10 and Backbone 1.0.0 with &lt;a href=&quot;http://createjs.org&quot;&gt;Create.js&lt;/a&gt; and &lt;a href=&quot;http://viejs.org&quot;&gt;VIE&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Blogging, including publishing &lt;a href=&quot;http://bergie.iki.fi/blog/no-smartphones/&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;http://bergie.iki.fi/blog/wordpress-decoupled/&quot;&gt;quite&lt;/a&gt; &lt;a href=&quot;http://bergie.iki.fi/blog/working-on-android/&quot;&gt;popular&lt;/a&gt; posts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In general the experience has been a positive and productive one. I’ll write about some nuances here.&lt;/p&gt;

&lt;h2 id=&quot;web-debugging&quot;&gt;Web debugging&lt;/h2&gt;

&lt;p&gt;As you can see from the list above, much of my recent work has been client-side. With this, the unavailability of web debuggers on mobile browsers can become a problem.&lt;/p&gt;

&lt;p&gt;I’ve tackled this issue in two ways:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;More tests&lt;/em&gt;. Instead of poking around in a debugger, I try to write &lt;a href=&quot;http://visionmedia.github.io/mocha/&quot;&gt;Mocha tests&lt;/a&gt; for most aspects of my applications. This also has the benefit of automation, meaning that &lt;a href=&quot;http://phantomjs.org/&quot;&gt;PhantomJS&lt;/a&gt; will test everything in my application every time I commit&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;VNC and desktop browsers&lt;/em&gt;. When I really need one, I can still use the web debugging tools of traditional web browsers via VNC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-vnc.png&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-vnc-small.png&quot; alt=&quot;Web debugging via VNC&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://yieldthought.com/post/12638596672/setting-up-an-ipad-linode&quot;&gt;See Mark O’Connor’s setup instructions&lt;/a&gt; for VNC on one of these tablet workstation setups.&lt;/p&gt;

&lt;h2 id=&quot;post-pc-means-post-office&quot;&gt;Post-PC means post-Office&lt;/h2&gt;

&lt;p&gt;One area where tablets are really lacking is support for traditional office tools like word processors and spreadsheets. There is a Google Drive client, but it is very slow (even small spreadsheets can take minutes to load) and mostly non-functional (word processor doesn’t even support headlines).&lt;/p&gt;

&lt;p&gt;There are also some &lt;a href=&quot;http://androidheadlines.com/2012/05/featured-top-10-android-office-suites.html&quot;&gt;other office suites&lt;/a&gt; available, but even these are better used for viewing documents than actually making changes to them.&lt;/p&gt;

&lt;p&gt;But the bigger question is whether traditional office tools even have a place in this modern world. The commentary on constant &lt;a href=&quot;http://macsparky.com/blog/2011/11/30/microsoft-office-and-the-ipad.html&quot;&gt;delays with Microsoft Office for iOS and Android&lt;/a&gt; shows that people don’t see them as that relevant any longer:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;For the longest time, Office was the ubiquitous productivity suite. Everybody used it. Nobody considered using anything else. However, since this mobile revolution started, even non-geeks are starting to question whether Office is still &lt;em&gt;all that&lt;/em&gt;. I had breakfast this morning with a CPA who does all of his work in Google docs. There is an entire generation of future workers going through high school and college now who don’t even have Office installed on their computers. If Microsoft has any hopes of keeping Office relevant, it needs to be everywhere, including the iPad.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Personally, I might be a lot better off writing my documents in &lt;a href=&quot;http://daringfireball.net/projects/markdown/&quot;&gt;Markdown&lt;/a&gt;, versioning them with git, and maybe using custom data-gathering applications with &lt;a href=&quot;http://bergie.iki.fi/blog/business_analytics_with_couchdb_and_noflo/&quot;&gt;CouchDB map-reduces for data visualization&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://bergie.iki.fi/blog/tablet-productivity/&quot;&gt;story of tablet productivity&lt;/a&gt; is still evolving. The new tools and interaction techniques we have will eventually give rise to new kinds of productivity applications. That may signal the end of the Office hegemony.&lt;/p&gt;

&lt;h2 id=&quot;presenting-from-the-tablet&quot;&gt;Presenting from the tablet&lt;/h2&gt;

&lt;p&gt;On the first week of this experiment I was actually traveling. The final review meetings for both of the EU projects were being held in Brussels and Luxembourg, and I had to present our results.&lt;/p&gt;

&lt;p&gt;As the presentation tools on Android are not very good, I took this as an opportunity to finally start using an HTML-based presentation system. For this, I picked &lt;a href=&quot;http://paulrouget.com/dzslides/&quot;&gt;DZSlides&lt;/a&gt;, with a custom Jekyll-based flow for constructing slide decks from &lt;a href=&quot;https://github.com/bergie/talks&quot;&gt;individual assets stored in git&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The results are &lt;a href=&quot;http://bergie.iki.fi/talks/2013/jquery-europe/&quot;&gt;quite nice&lt;/a&gt;, and I love being able to &lt;a href=&quot;http://bergie.iki.fi/talks/2013/jquery-europe/#12.0&quot;&gt;embed live demos&lt;/a&gt; inside the slides.&lt;/p&gt;

&lt;iframe src=&quot;http://bergie.iki.fi/talks/shells/embedder.html#http://bergie.iki.fi/talks/2013/jquery-europe&quot; width=&quot;460&quot; height=&quot;345&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;With every computing platform, there is always some fiddling involved with getting your device connected to a beamer. I was positively surprised with how easily the Nexus 10 worked. Simply connect using a &lt;em&gt;micro-HDMI to VGA&lt;/em&gt; adapter, and you’ll have the tablet screen up on the projector.&lt;/p&gt;

&lt;h2 id=&quot;minor-annoyances&quot;&gt;Minor annoyances&lt;/h2&gt;

&lt;p&gt;Everybody knows about the &lt;a href=&quot;http://www.businessinsider.com/google-lacking-android-tablet-apps-2012-11&quot;&gt;common gripes with Android on large tablets&lt;/a&gt; — most apps have been written with a narrow phone screen in mind, and simply look bad on a wide 10” screen. &lt;a href=&quot;https://twitter.com/bergie/status/319710122349838336&quot;&gt;Twitter is a good example&lt;/a&gt; of the typical neglect of &lt;a href=&quot;http://developer.android.com/design/index.html&quot;&gt;Android’s UI guidelines&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Somewhat surprisingly, this even applies to Google’s own tablet applications. Apps like Google+ and Google Drive are a lot more functional on an iPad than on a large Android tablet.&lt;/p&gt;

&lt;p&gt;However, these are more of a problem when using something like my &lt;a href=&quot;http://www.google.com/nexus/10/&quot;&gt;Nexus 10&lt;/a&gt; as a &lt;em&gt;media tablet&lt;/em&gt;, and don’t really affect how well it works as a &lt;em&gt;programming workstation&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;For programming work, what matters is things like the beautiful screen, Android’s reasonably good support for hardware keyboards, user-accessible file system, and the ability to share information between applications. These are the main reasons why I went with Android instead of an iPad.&lt;/p&gt;

&lt;p&gt;However, not all is sunshine. So far, the main annoyances for me have been:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://code.google.com/p/android/issues/detail?id=39665&quot;&gt;Regressions in Magic Trackpad support&lt;/a&gt; mean that it is practically unusable when you also have a Bluetooth keyboard. A lot of character presses get duplicated, making typing near-impossible. I’m assuming other mouse devices would however work&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://dan.drown.org/android/mosh/&quot;&gt;MOSH ConnectBot&lt;/a&gt; — which I’m using for my programming sessions — makes &lt;a href=&quot;https://code.google.com/p/irssi-connectbot/issues/detail?id=26&quot;&gt;Ctrl and Esc keys not work&lt;/a&gt;. Luckily I was able to &lt;a href=&quot;https://code.google.com/p/irssi-connectbot/issues/detail?id=26#c4&quot;&gt;find a workaround&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Android 4.2.2 is buggy on the Nexus 10. Especially &lt;a href=&quot;http://forums.androidcentral.com/google-nexus-10-tablet/254863-chrome-causes-my-crashes.html&quot;&gt;Chrome can cause the system to crash&lt;/a&gt;. Other browsers help here, and hopefully Google will fix the issue soon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, crashes and freezes may sound like a big deal. But thanks to using &lt;a href=&quot;http://tmux.sourceforge.net/&quot;&gt;tmux&lt;/a&gt;, they just mean a short interruption, and not any lost work. I just restart my tablet or MOSH client, attach back to the tmux session I was working with, and I’m right back to where I was, cursor position, vim splits, and all.&lt;/p&gt;

&lt;h2 id=&quot;quantifying-productivity&quot;&gt;Quantifying productivity&lt;/h2&gt;

&lt;p&gt;Calculating &lt;a href=&quot;http://en.wikipedia.org/wiki/Programming_productivity&quot;&gt;programming productivity&lt;/a&gt; is notoriusly difficult. While &lt;a href=&quot;http://yieldthought.com/post/31857050698/ipad-linode-1-year-later&quot;&gt;Mark was able to show impressive figures&lt;/a&gt; from his iPad setup, I don’t have anything similar because:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I haven’t had the time to &lt;a href=&quot;http://yieldthought.com/post/6070927890/metagame-productivity-boost-stats-and-charts&quot;&gt;crunch the numbers&lt;/a&gt; on the work I do&lt;/li&gt;
  &lt;li&gt;The ending of the EU projects meant that I’m now doing different things than I did with my laptop, and so comparing results from the two is hard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And in the end what matters more is the results of the work, not the effort spent getting there.&lt;/p&gt;

&lt;p&gt;But still, it would be good to have a bit more data on how well the setup works besides the subjective “&lt;em&gt;it feels like a good way to program&lt;/em&gt;”.&lt;/p&gt;

&lt;p&gt;To this end, I recently started using the &lt;a href=&quot;https://www.rescuetime.com/&quot;&gt;RescueTime&lt;/a&gt; tracker on both of my Android devices. It keeps calculates how much time I spend with different applications each day, and even allows me to give some sort of productivity scores for them:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-rescuetime.png&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-rescuetime-small.png&quot; alt=&quot;Scoring applications on RescueTime&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ll be running this for a while, and will try to combine it with some statistics from &lt;a href=&quot;https://github.com/bergie&quot;&gt;my GitHub account&lt;/a&gt;. Those two should be able to paint a picture of how I work.&lt;/p&gt;

&lt;h2 id=&quot;conclusions&quot;&gt;Conclusions&lt;/h2&gt;

&lt;p&gt;In the beginning, like with any new tool you have to start using, the Android tablet setup felt weird and limiting. But it has grown on me since, and right now &lt;em&gt;I’m not regretting giving my laptop away.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But at the same time, if a new interesting device came out, the cost of switching to that would be minimal. After all, the Nexus 10 for me is essentially just a window into the web and my terminal running somewhere else.&lt;/p&gt;

&lt;p&gt;In a way this decoupling is similar to the traditional desktop PC setup where you have a separate computer, screen, mouse, and a keyboard. The difference here is that none of those parts are bound to a desk or connected with cables. Instead, the peripherals talk with my screen over Bluetooth, and my screen with the “computer” over the Internet.&lt;/p&gt;

&lt;p&gt;If I for instance want a &lt;a href=&quot;http://matias.ca/laptoppro/mac/&quot;&gt;better keyboard&lt;/a&gt;, I can just buy one and replace that part without having to change anything else with my setup.&lt;/p&gt;

&lt;h3 id=&quot;cost-advantage&quot;&gt;Cost advantage&lt;/h3&gt;

&lt;p&gt;One aspect that people have remarked on is cost. Over the course of two years — which is the typical replacement cycle of a professional workstation — this setup is cheaper than a &lt;a href=&quot;http://bergie.iki.fi/blog/11-macbook_air-the_best_computer_i-ve_ever_had/&quot;&gt;MacBook Air&lt;/a&gt;. And with that price I get a lot better screen and about double battery life, and even a smartphone.&lt;/p&gt;

&lt;p&gt;What I lose is the ability to work fully offline, though somewhat alleviated by having local vim and git via &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.spartacusrex.spartacuside&amp;amp;hl=en&quot;&gt;Terminal IDE&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;moving-forward&quot;&gt;Moving forward&lt;/h3&gt;

&lt;p&gt;The experiment will keep continue. In these six weeks, I haven’t seen any negative impact on my productivity from working on an Android tablet instead of a laptop, and many positive ones. &lt;em&gt;Portability, battery life, and the emphasis on tests and automation&lt;/em&gt; are probably the foremost.&lt;/p&gt;

&lt;p&gt;Of course, new devices come to the market, and eventually something will come that beats the current setup. But then I’ll be able to switch without even losing my cursor position, so the only cost is the hardware itself.&lt;/p&gt;

&lt;p&gt;In time, I will write more about how things are going.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Read my &lt;a href=&quot;https://bergie.iki.fi/blog/working-on-android-2017/&quot;&gt;Working on Android, 2017 edition&lt;/a&gt; post.&lt;/p&gt;
</description>
      <pubDate>Tue, 16 Apr 2013 00:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Fsix-weeks-working-android%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/six-weeks-working-android/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/six-weeks-working-android/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
    <item>
      
      <title>There are no smartphones</title>
      <description>&lt;p&gt;iPad is three years old now, and many tech blogs are writing stories &lt;a href=&quot;http://arstechnica.com/gadgets/2013/04/i-was-an-ipad-skeptic/&quot;&gt;to reflect what has changed&lt;/a&gt;. More than 100 million of them have been sold, alongside other popular tablets like the Kindle Fire and Nexus 7. But originally the reception was quite sceptical.&lt;/p&gt;

&lt;p&gt;Many made the argument that the tablet was &lt;em&gt;“&lt;a href=&quot;http://www.pcworld.com/article/187888/ipad_first_impressions.html&quot;&gt;just a big iPod Touch&lt;/a&gt; or iPhone”&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;at the end of the day, the show’s centerpiece - the iPad – is just a big iPod Touch. Lots of folks will want it, in a hypothetical sort of way. But it’s hard to imagine all that many of them will fork over the initial $499 for a crippled version&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The funny thing about this argument is that — while the skepticism was misplaced — the core point was true: The iPad is just a big iPhone.&lt;/p&gt;

&lt;p&gt;Or to put it the other way, &lt;em&gt;the iPhone is just a pocket-sized iPad.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;tablets-of-different-sizes&quot;&gt;Tablets of different sizes&lt;/h2&gt;

&lt;p&gt;There was a recent &lt;a href=&quot;http://techland.time.com/2013/04/02/an-interview-with-computing-pioneer-alan-kay/&quot;&gt;Time interview of the computer science legend Alan Kay&lt;/a&gt;. I shared it &lt;a href=&quot;https://plus.google.com/100751105859582805241/posts/G2XKvZEJjDJ&quot;&gt;on Google+&lt;/a&gt;, and there was some discussion. I made the following argument:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In the end there are no phones any longer. Just tablets of different sizes, from tabletop (iPad, Surface) to pocketable (what we call smartphones)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The chances are that if you’re reading this post, you will have what you consider a smartphone. Look at it, and consider how you use it. Is it really a &lt;em&gt;phone&lt;/em&gt;, or is the way you use it a lot closer to what you’d consider a &lt;em&gt;tablet&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Back in mid-to-late 2000s, we had &lt;a href=&quot;http://bergie.iki.fi/blog/meego-diaspora/&quot;&gt;Nokia’s Internet Tablet devices&lt;/a&gt;. We considered them tablets, and did tablet-like things on them. The Nokia 770 tablet had a 4.13” screen. The iPhone has a 4” screen, and the Nexus 4 has a 4.7” screen. And yet somehow the first device was seen as a tablet, and the two latter as smartphones.&lt;/p&gt;

&lt;p&gt;The software running on smartphones and tablets is nearly identical, as are the use cases.&lt;/p&gt;

&lt;h2 id=&quot;phablets-meet-in-the-middle&quot;&gt;Phablets meet in the middle&lt;/h2&gt;

&lt;p&gt;Smartphones and tablets are converging, quickly. Manufacturers know this, and the device-buying public is starting to see it too. But still the &lt;a href=&quot;http://arstechnica.com/gadgets/2013/04/a-massive-6-3-inch-smartphone-from-samsung-may-be-in-the-works/&quot;&gt;gadget blogs love to diss&lt;/a&gt; the large &lt;em&gt;“phablet”&lt;/em&gt; devices, even though they &lt;a href=&quot;http://arstechnica.com/gadgets/2012/03/samsung-announces-5-million-galaxy-notes-sold-and-premium-update-upgrade/&quot;&gt;sell quite well&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The problem here is that many technology bloggers still try to keep the two categories of devices — smartphones and tablets — separate, even though they really aren’t. Maybe these devices are two big for holding against your head for a phone call, but who really does that anymore?&lt;/p&gt;

&lt;p&gt;In reality all of them are tablets — &lt;a href=&quot;http://alistapart.com/column/windows-on-the-web&quot;&gt;windows on the web&lt;/a&gt; — and the only difference is that some of them fit in your pocket, and others need a bag, providing a bigger canvas to see information and work on in exchange.&lt;/p&gt;

&lt;p&gt;This is the use case I have. For most of my internet and communication needs, I’m using a Nexus 4 as a pocketable tablet. I also have a larger tablet, which I &lt;a href=&quot;http://bergie.iki.fi/blog/working-on-android/&quot;&gt;use as my workstation&lt;/a&gt; and for some things where a bigger screen is nicer, like graphic novels.&lt;/p&gt;

&lt;p&gt;Some are even &lt;a href=&quot;http://www.citeworld.com/mobile/21577/man-did-all-his-work-smartphone-one-year-heres-what-he-learned&quot;&gt;able to do all their work on the smaller phablets&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;end-of-telephony&quot;&gt;End of telephony&lt;/h2&gt;

&lt;p&gt;The big news here is that the &lt;em&gt;telephony&lt;/em&gt; part of a smartphone is not going to matter for much longer. Internet-based communication tools like instant messengers, email, and hangouts provide richer ways to interact, and don’t tie you down to a specific device, or a specific telecommunications provider.&lt;/p&gt;

&lt;p&gt;In the long run, this means an end to phone subscriptions. As I wrote &lt;a href=&quot;http://bergie.iki.fi/blog/toolkit-2012/&quot;&gt;on my “hacker’s toolkit”&lt;/a&gt;, buying prepaid data is cheaper and easier:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;As the MiFi is only used for Internet access, I can buy cheap pre-paid SIMs from each country I travel to. Paying somewhere around ten euros for a month of Internet abroad certainly beats the usual roaming charges!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is already happening. For example, &lt;a href=&quot;http://www.asymco.com/2013/01/18/whats-up-with-text-messaging/&quot;&gt;Asymco reported on dropping SMS volumes in Spain&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;After peaking at the end of 2008 at about €450/quarter, revenues have fallen by 60% to about €171 million in the third quarter of 2012. These figures represent almost 100% operating profit for operators so the impact is felt directly in the bottom line.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The culprit is IP-based messaging. Services like Whatsapp, iMessage and even Facebook offer “free” messaging to users who have a smartphone and a data plan. I’ve been told that 97% of Spanish smartphone users have Whatsapp installed. In some markets this “free” messaging is offered via BlackBerry Messaging.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This obviously is a development telecommunications companies are scared of. But while SMS and call volumes go down, the other change is that &lt;em&gt;all these new devices will have SIM slots&lt;/em&gt;, and so the operators can sell a lot more of data plans.&lt;/p&gt;

&lt;p&gt;Some of them are already targeting this new world. &lt;a href=&quot;http://mobile.slashdot.org/story/13/03/26/2048233/t-mobile-ends-contracts-and-subsidies&quot;&gt;T-Mobile recently killed their traditional subscriptions and subsidies&lt;/a&gt; in favor of prepaid plans.&lt;/p&gt;

&lt;h2 id=&quot;this-is-a-new-world&quot;&gt;This is a new world&lt;/h2&gt;

&lt;p&gt;The computing world is &lt;a href=&quot;http://bergie.iki.fi/blog/why_the_tablet_form_factor_is_winning/&quot;&gt;switching to tablets&lt;/a&gt; rapidly. These tablets can be smaller or bigger depending on the requirements of the user, but they all are internet-connected, touch-capable and full of sensors. They already fit use cases from &lt;a href=&quot;http://yieldthought.com/post/31857050698/ipad-linode-1-year-later&quot;&gt;software development&lt;/a&gt; to watching media or social networking.&lt;/p&gt;

&lt;p&gt;This will mean &lt;a href=&quot;http://al3x.net/2011/01/10/a-thought-on-communication.html&quot;&gt;eventual changes in our culture&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;My generation will be at something of a loss when this new world comes about. In my life, I’ve been rewarded for communicating effectively online via text. I’m a reasonably effective verbal communicator, but not nearly as good as I’ll need to be to compete with the telepresence-native adults that the children of today will grow up to be.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Today’s digital natives will be tomorrow’s telegraph operators. The only way to survive will be to understand the impact of pervasive video communication before it sweeps us under our keyboards.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;PCs will still remain as the main productivity tool for some years, mainly thanks to all the legacy software built around that ecosystem. But the &lt;a href=&quot;http://bergie.iki.fi/blog/tablet-productivity/&quot;&gt;VisiCalc moment of tablets&lt;/a&gt; will come, sooner or later:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Every major shift in computing has brought its new big companies. PCs gave us Microsoft, web Google and Facebook. In the tablet space the focus has so far been on hardware and platforms, but I’m quite certain there will be winners in the productivity software space as well, companies that we may not have even heard of yet. Maybe your company is going to be one of them?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For now, I’m considering my adventures in the tablet productivity world an experiment. But day by day, my &lt;a href=&quot;http://bergie.iki.fi/blog/working-on-android/&quot;&gt;work tablet setup&lt;/a&gt; is feeling more and more comfortable.&lt;/p&gt;

&lt;p&gt;Right now I don’t miss my laptop. Or having a phone number.&lt;/p&gt;
</description>
      <pubDate>Wed, 03 Apr 2013 00:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Fno-smartphones%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/no-smartphones/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/no-smartphones/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
    <item>
      
      <title>Working on an Android tablet</title>
      <description>&lt;p&gt;As mentioned in my post &lt;a href=&quot;http://bergie.iki.fi/blog/toolkit-2012/&quot;&gt;Hacker-nomad’s toolkit, 2012 edition&lt;/a&gt;, the lease period of my lovely — Linux-driven — &lt;a href=&quot;http://bergie.iki.fi/blog/11-macbook_air-the_best_computer_i-ve_ever_had/&quot;&gt;11” MacBook Air&lt;/a&gt; expired this month, and I had to consider what kind of gear to go with next.&lt;/p&gt;

&lt;p&gt;The safe bet would’ve been to just get a newer version of the Air, or maybe the &lt;a href=&quot;http://arstechnica.com/apple/2012/11/13-retina-macbook-pro-review-more-pixels-less-value/&quot;&gt;13” Retina MacBook&lt;/a&gt; with its great screen. A fresher approach would be a ChromeBook, either the cheap and light &lt;a href=&quot;http://arstechnica.com/gadgets/2012/11/review-samsungs-new-arm-chromebook-gets-by-without-intel-inside/&quot;&gt;ARM ChromeBook&lt;/a&gt;, or the &lt;a href=&quot;http://arstechnica.com/gadgets/2013/03/review-chromebook-pixel-is-too-expensive-and-too-good-for-chrome-os/&quot;&gt;Pixel&lt;/a&gt; with awesome screen and design but crappy battery life.&lt;/p&gt;

&lt;p&gt;I’m spending most of my days developing software, and so I should be able to work with a ChromeBook and a remote Linux box. But if that works, why not &lt;a href=&quot;http://yieldthought.com/post/12239282034/swapped-my-macbook-for-an-ipad&quot;&gt;try working on a tablet&lt;/a&gt;? They’re cheap, light, durable, and have an all-day battery life. And if Mark O’Connor was able to &lt;a href=&quot;http://yieldthought.com/post/31857050698/ipad-linode-1-year-later&quot;&gt;work productively a whole year&lt;/a&gt; with one, why couldn’t I?&lt;/p&gt;

&lt;p&gt;Since I already had a &lt;a href=&quot;http://arstechnica.com/gadgets/2012/11/nexus-10-tablet-is-a-solid-house-built-on-shifting-sands/&quot;&gt;Nexus 10&lt;/a&gt;, this is what I decided to try.&lt;/p&gt;

&lt;h2 id=&quot;the-setup&quot;&gt;The setup&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-mobile-small.jpg&quot; alt=&quot;Nexus 10 as a laptop&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The Nexus tablet has a great, “better than retina” screen, which can render my coding sessions and web user interfaces beautifully. The 10” screen is somewhat smaller than what I had on my Air, but not terribly so.&lt;/p&gt;

&lt;p&gt;However, the big problem with &lt;a href=&quot;http://bergie.iki.fi/blog/tablet-productivity/&quot;&gt;tablet productivity&lt;/a&gt; is text input. Much of our current work environment is still textual, and typing on a non-haptic glass touch-screen is simply not very nice.&lt;/p&gt;

&lt;h3 id=&quot;hardware-keyboard&quot;&gt;Hardware keyboard&lt;/h3&gt;

&lt;p&gt;To fix this I purchased a &lt;a href=&quot;http://m.tomshardware.com/news/Wedge-bluetooth-keyboard-mouse-review,17633.html&quot;&gt;Microsoft Wedge Keyboard&lt;/a&gt;, which connects to the tablet over Bluetooth. Recent Android versions have quite full support for external keyboards, allowing me to use it for all text entry, and even for some keyboard navigation. So yes, &lt;em&gt;Alt-Tab&lt;/em&gt; works.&lt;/p&gt;

&lt;p&gt;The Wedge keyboard is about the same size as typical keyboards on compact laptops. Microsoft has always made good hardware, and the keyboard is no exception, providing a quite nice feel for the size it has. A handy additional feature is the included cover, which puts the keyboard to sleep automatically, and can act as a tablet stand when opened. No more issues with keyboard waking up in your bag and &lt;a href=&quot;http://andrewhy.de/two-months-with-ipad-as-my-computer/&quot;&gt;deleting everything&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For those prepared to lug a heavier option, there is &lt;a href=&quot;http://matias.ca/laptoppro/mac/&quot;&gt;a Bluetooth mechanical keyboard&lt;/a&gt;, which is probably a lot better than any laptop keyboard on the market. And if you already have a good keyboard, Android supports most of the USB ones via an OTG cable.&lt;/p&gt;

&lt;h3 id=&quot;desk-setup&quot;&gt;Desk setup&lt;/h3&gt;

&lt;p&gt;While I’m spending quite a lot of my time on the road, &lt;a href=&quot;http://bergie.iki.fi/blog/all-you-need-is-good-backpack/&quot;&gt;living out of my backpack&lt;/a&gt;, I do have a regular desk in the Berlin office I share with &lt;a href=&quot;http://www.contentcontrol-berlin.de&quot;&gt;Content Control&lt;/a&gt;. Since my coding sessions are often long, I’ve been a bit concerned with my &lt;a href=&quot;http://www.codinghorror.com/blog/2007/08/computer-workstation-ergonomics.html&quot;&gt;programming ergonomics&lt;/a&gt; for a while now, even considering a &lt;a href=&quot;http://blog.liangzan.net/blog/2012/09/29/my-standing-desk-experiment/&quot;&gt;standing desk&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-desk-small.jpg&quot; alt=&quot;Nexus 10 as a desktop&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Tablet has the same advantage as a traditional display in that it is decoupled from the input devices, giving you greater freedom in how to position them. I have a &lt;a href=&quot;http://youtu.be/Mmx1wh72hv0&quot;&gt;Callstel tablet stand&lt;/a&gt; that allows me to place the tablet in practically any place and height above my desk. The current setup is just slightly below my eye height in the normal sitting position, but I’m still experimenting with that.&lt;/p&gt;

&lt;h3 id=&quot;gorilla-arms&quot;&gt;Gorilla arms&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.wired.com/gadgetlab/2010/10/gorilla-arm-multitouch/&quot;&gt;Gorilla arm syndrome&lt;/a&gt; is what everybody brings up with every touchscreen computer — it is simply not nice to constantly lift your arm to touch the screen.&lt;/p&gt;

&lt;p&gt;In my experience this isn’t so much of an issue when you’re using the tablet positioned similarly as a laptop screen would. But when the screen is up in a more ergonomic position, like it is on my desk, then this quickly becomes an issue.&lt;/p&gt;

&lt;p&gt;To solve this I bought a Apple Magic Trackpad, which connects to the tablet again via Bluetooth, and allows both regular mouse usage with Android, as well as many multitouch gestures.&lt;/p&gt;

&lt;h2 id=&quot;why-android&quot;&gt;Why Android&lt;/h2&gt;

&lt;p&gt;Most people experimenting with replacing computers with tablets go with an iPad, the established market leader. iPad has many benefits over the Nexus 10, including a more mature software ecosystem, and better availability — if you break or lose your tablet, you’ll be able to pick up a new one from practically anywhere, whereas the Nexus devices are only available online.&lt;/p&gt;

&lt;p&gt;The reasons for me to go with Android have to do with openness. Since the core operating system is open source, there are &lt;a href=&quot;http://www.cyanogenmod.org&quot;&gt;custom ROMs&lt;/a&gt; I could use if I wanted, and I can &lt;a href=&quot;http://www.mondaynote.com/2013/02/24/ipad-and-file-systems-failure-of-empathy/&quot;&gt;do file management&lt;/a&gt; the traditional way when I need to. An even bigger reason is that the &lt;a href=&quot;http://developer.android.com/training/sharing/send.html&quot;&gt;sharing system&lt;/a&gt; makes it possible to connect various applications together. Being able to run multiple broser engines is also nice for a web developer.&lt;/p&gt;

&lt;p&gt;Another bonus is the &lt;a href=&quot;http://en.wikipedia.org/wiki/Android_Beam&quot;&gt;availability of NFC&lt;/a&gt; on the tablet. I’m quite often sharing content between it and my smartphone. If I run into an interesting web article, I can either send it to my &lt;a href=&quot;http://david-smith.org/blog/2012/10/11/instapaper-on-the-kindle-paperwhite/&quot;&gt;Kindle to read later&lt;/a&gt;, or touch the tablet with my phone and read the article on that. This is surely a feature that will gain more mindshare whenever it is introduced to iPhones.&lt;/p&gt;

&lt;p&gt;I also prefer the rugged, rubberized look-and-feel of the Nexus 10 to the cold metallic iPad, even though a 4:3 screen would be better than the widescreen I have now.&lt;/p&gt;

&lt;h3 id=&quot;software-used&quot;&gt;Software used&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/nexus10-homescreen-small.jpg&quot; alt=&quot;Nexus 10 homescreen&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I really don’t need much for my daily work — just a browser and a terminal. Here are the apps I use on a daily basis:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.android.chrome&quot;&gt;Chrome&lt;/a&gt; and &lt;a href=&quot;https://play.google.com/store/apps/details?id=org.mozilla.firefox&quot;&gt;Firefox&lt;/a&gt; web browsers&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.sonelli.juicessh&quot;&gt;JuiceSSH&lt;/a&gt; SSH client to access my remote Linux server&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.tapchatapp.android&quot;&gt;TapChat&lt;/a&gt; IRC client&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.rhmsoft.fm.hd&quot;&gt;File Manager HD&lt;/a&gt; for moving stuff around, including between file servers&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.aor.droidedit.pro&quot;&gt;DroidEdit Pro&lt;/a&gt; for quick local file edits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition I’m using some of the built-in Google apps, like Google Talk, GMail, and Google+ for Hangouts.&lt;/p&gt;

&lt;p&gt;For offline development I have an installation of &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.spartacusrex.spartacuside&quot;&gt;Terminal IDE&lt;/a&gt; that allows me to run Linux utilities like vim and git locally. If I would root my tablet I could also install a Ubuntu chroot and run whatever I need. With a previous tablet I even was able to run Node.js servers and databases on the thing!&lt;/p&gt;

&lt;p&gt;My development virtual machine is from &lt;a href=&quot;https://www.digitalocean.com/&quot;&gt;DigitalOcean’s&lt;/a&gt; Amsterdam site, providing quite nice fast connections here in Europe. I mostly work on it via &lt;a href=&quot;http://tmux.sourceforge.net&quot;&gt;tmux&lt;/a&gt; and &lt;a href=&quot;http://www.vim.org&quot;&gt;vim&lt;/a&gt;, and run whatever processes I need, including long-running &lt;a href=&quot;https://noflojs.org&quot;&gt;NoFlo&lt;/a&gt; flows.&lt;/p&gt;

&lt;h2 id=&quot;pros-and-cons&quot;&gt;Pros and cons&lt;/h2&gt;

&lt;p&gt;Based on my initial experiences of working with this setup for a week, working on a tablet is quite different from a traditional computer. Here are some good things:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Battery life: the Nexus can easily get me through a full workday with a single charge, meaning that I only need to connect it to a wall overnight. It also charges via standard micro-USB meaning that I don’t need any extra power bricks with me&lt;/li&gt;
  &lt;li&gt;Portability: most tablets are smaller and lighter than full laptops. And they can be used more easily when standing, sitting on the couch, etc.&lt;/li&gt;
  &lt;li&gt;Instant on: there is no suspend/resume cycle. I press the power button, the tablet recognizes my face via the camera, and I’m instantly back to where I left off&lt;/li&gt;
  &lt;li&gt;Modularity: with a tablet, my work environment is built out of multiple modular pieces that I can take with me, or leave at the office depending what I intend to do. And I can set them up in different configurations when working&lt;/li&gt;
  &lt;li&gt;Touch: for software developers, working on a tablet really drives home the importance of touchscreen friendliness. I’ve already noticed this affecting my UI designs&lt;/li&gt;
  &lt;li&gt;Focus: everything is full screen, meaning no need for window management. Tablet software also tends to be simpler and has less configuration to fiddle with&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But obviously there are some downsides as well:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Office documents: the office suites available for Android are quite poor, and the mobile version of Google Docs is simply terrible. One solution would be using MS Office or LibreOffice over a VNC connection&lt;/li&gt;
  &lt;li&gt;Mobile-first web: quite a few websites try to offer even large tablets like the Nexus 10 their silly mobile sites. Thankfully this is becoming less prevalent due to media queries and responsive design&lt;/li&gt;
  &lt;li&gt;Offline: much of my current tablet workflow requires me to be online. I could write code and blog posts offline with tools like Terminal IDE, but there would be no way to run and test software&lt;/li&gt;
  &lt;li&gt;Bugs: many tablet applications are still in their first generation and lack the maturity and robustness that their desktop counterparts have had time to gain&lt;/li&gt;
  &lt;li&gt;Web debugging: while &lt;a href=&quot;http://debug.phonegap.com&quot;&gt;WEINRE&lt;/a&gt; sort of helps here, it is still a lot less convenient than the web development tools that come with desktop browsers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;This tablet work setup is for now an experiment. If I find it hindering my productivity, I’ll just have to get one of the laptops mentioned in the beginning of this post and work in more traditional manner. But if it works, then great! In that case I have finally found a more modern setup for programming work — one that gives me both better ergonomics and mobility.&lt;/p&gt;

&lt;p&gt;I will try this setup for some period of time, and then report the results &lt;a href=&quot;http://bergie.iki.fi&quot;&gt;here on my blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Read my &lt;a href=&quot;https://bergie.iki.fi/blog/working-on-android-2017/&quot;&gt;Working on Android, 2017 edition&lt;/a&gt; post.&lt;/p&gt;
</description>
      <pubDate>Mon, 18 Mar 2013 18:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Fworking-on-android%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/working-on-android/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/working-on-android/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
    <item>
      
      <title>Hacker-Nomad's toolkit, the 2012 edition</title>
      <description>&lt;p&gt;Back in last July – when choosing photos to use in the epic &lt;a href=&quot;http://bergie.iki.fi/blog/meego-diaspora/&quot;&gt;The Dreams of the MeeGo Diaspora&lt;/a&gt; post – I noticed that it is quite fascinating to look at the various tablets and mobile phones we’ve been using over the years. Back then they all were so new, shiny, and exciting, and yet hardware moves so fast that something from a year or two ago would look quite dated now.&lt;/p&gt;

&lt;p&gt;And so I thought it might be interesting to keep some sort of record on what kind of computing devices I’ve been using for my work – and how – over the years. This post is the first of the series, and shows the setup I’ve had during 2012.&lt;/p&gt;

&lt;h2 id=&quot;the-setup-and-what-i-do-with-it&quot;&gt;The setup, and what I do with it&lt;/h2&gt;

&lt;p&gt;Many programmers believe in beefy workstations and huge &lt;a href=&quot;http://www.codinghorror.com/blog/2008/03/does-more-than-one-monitor-improve-productivity.html&quot;&gt;multi-display setups&lt;/a&gt;. I was never so much into that, and as I’m spending half of my working time on the road, it has made sense to adapt to a more minimalist setup. &lt;em&gt;A small laptop, a small tablet, and not much else.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/gear.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/gear-small.jpg&quot; alt=&quot;2012 gear&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most of my programming is for web services, and so the main things I need are a browser and a terminal. After the &lt;a href=&quot;http://bergie.iki.fi/blog/hacker-nomadism/&quot;&gt;move to Berlin&lt;/a&gt;, various video conferences with project partners all around the world via Google Hangouts or Skype are also almost a daily fare. My current setup handles these use cases quite well, and is simple and light to be carried around Europe without any problems.&lt;/p&gt;

&lt;p&gt;At the same time, the nomadistic lifestyle has meant there is really quite little use for a phone. I do couple of calls or SMS per week, but in general the roaming charges, and better communication tools that Internet offers means that phone is just another screen to the services I use, &lt;em&gt;essentially just a small tablet&lt;/em&gt;.&lt;/p&gt;

&lt;h3 id=&quot;workstation-2010-macbook-air-11&quot;&gt;Workstation: 2010 MacBook Air 11”&lt;/h3&gt;

&lt;p&gt;My current main computer is the &lt;a href=&quot;http://bergie.iki.fi/blog/11-macbook_air-the_best_computer_i-ve_ever_had/&quot;&gt;MacBook Air I got in early 2011&lt;/a&gt;. Apart from the lousy battery life, I’ve been generally very happy with it. It is small, light, and still has a reasonably good screen and keyboard. The solid state drive makes it also quite fast.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/mba.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/mba-small.jpg&quot; alt=&quot;MacBook Air 11&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m running this laptop with Ubuntu 12.04 and the &lt;a href=&quot;http://www.gnome.org/gnome-3/&quot;&gt;GNOME Shell&lt;/a&gt;. Linux supports this hardware quite well, meaning that I’ve never had issues with things like sound, the multi-touch trackpad, WiFi, or suspending. But external displays have sometimes been tricky.&lt;/p&gt;

&lt;p&gt;During a typical workday, I only have two windows open: a full-screen Firefox window for email, browsing, and testing the software I write, and a full-screen terminal window running &lt;a href=&quot;http://www.vim.org/&quot;&gt;Vim&lt;/a&gt; with various splits. All of the rest of the software runs usually on a cloud hosting provider, or inside a &lt;a href=&quot;http://vagrantup.com/&quot;&gt;Vagrant&lt;/a&gt; virtual machine. I sometimes also run Libreoffice, but more and more of my office productivity needs are now handled by Google Drive.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The battery life issue is what’s making me rethink this part of the setup.&lt;/em&gt; Apple promises a new MacBook Air about five hours of use, but after two years, and with running Linux instead of OS X, I’m down to maybe two and half hours. This is by far not enough, especially during conferences or travel where power outlets are not readily available.&lt;/p&gt;

&lt;p&gt;I’d also love to get to a device with a bit more standardized ports. Having to replace &lt;a href=&quot;http://arstechnica.com/apple/2011/11/frayed-magsafe-power-connector-theres-now-a-settlement-for-that/&quot;&gt;faulty Apple laptop chargers&lt;/a&gt; and to remember the display dongles when presenting something is a bother.&lt;/p&gt;

&lt;h3 id=&quot;tablet-nexus-7&quot;&gt;Tablet: Nexus 7&lt;/h3&gt;

&lt;p&gt;Having used tablets daily &lt;a href=&quot;http://bergie.iki.fi/blog/the_universal_communicator/&quot;&gt;for a long time&lt;/a&gt;, I’m a big believer in them as both &lt;a href=&quot;http://bergie.iki.fi/blog/tablet-productivity/&quot;&gt;production and communication devices&lt;/a&gt; and as a much better computer during free time. Actually, to help maintain a sensible work-life balance, our household of two programmers has a strict &lt;em&gt;no laptops at home&lt;/em&gt; policy.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/nexus.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/nexus-small.jpg&quot; alt=&quot;Nexus 7&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used a &lt;a href=&quot;http://en.wikipedia.org/wiki/Asus_Eee_Pad_Transformer_Prime&quot;&gt;Transformer Prime&lt;/a&gt; convertible tablet during the first half of 2012. With its detachable keyboard it was a great device as a travel computer and for &lt;a href=&quot;http://bergie.iki.fi/blog/symfony-live/&quot;&gt;conference live-blogging&lt;/a&gt;. The keydock contained an additional battery, and so I could rely on being able to use the device for a full day.&lt;/p&gt;

&lt;p&gt;At the same time, the tablet was a bit big and clunky for travel. You’d always have to dig it out of the bag separately, and such a big device wasn’t comfortable when reading in bed. And so, when the Google’s Nexus 7 came out, I swapped devices. &lt;em&gt;The seven inch form factor is great for both reading at home, and during travels.&lt;/em&gt; When you need to swich trains or board an airplane, you can just stick the device in your pocket. It certainly isn’t comfortable to keep there for long times, but pn short transfers this is a very handy possibility. No wonder people on the iOS side of the fence are so excited about the iPad Mini!&lt;/p&gt;

&lt;p&gt;I use the tablet for the various video conferences I have, and do most of my web reading with Firefox Mobile and Instapaper. On work trips I also read books on the Nexus, so that I don’t need to bring the dedicated Kindle e-reader as an extra device. Firefox Mobile is great in that it synchronizes my passwords and browsing history between the tablet and my laptop, so that I can always easily pick up and continue on either device.&lt;/p&gt;

&lt;h3 id=&quot;internet-access-huawei-mifi&quot;&gt;Internet access: Huawei MiFi&lt;/h3&gt;

&lt;p&gt;Since much of what I do happens online, being able to connect from everywhere is very important. While I could use JoikuSpot to share the Internet connection from my Symbian phone, having a dedicated device for this purpose makes sense. With the MiFi wireless base station I can spare the battery of my phone.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/mifi.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/mifi-small.jpg&quot; alt=&quot;MiFi&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;As the MiFi is only used for Internet access, I can buy cheap pre-paid SIMs from each country I travel to.&lt;/em&gt; Paying somewhere around ten euros for a month of Internet abroad certainly beats the usual roaming charges!&lt;/p&gt;

&lt;p&gt;However, having to dig this device from my bag and start it whenever I need connectivity is a slight hassle. Now that there is a Nexus 7 with 3G support available that might be a better option.&lt;/p&gt;

&lt;h3 id=&quot;audio-sennheiser-noise-cancelling-headphones&quot;&gt;Audio: Sennheiser noise-cancelling headphones&lt;/h3&gt;

&lt;p&gt;This is actually a piece of gear I’ve had for a while: For music and teleconferences I’m using &lt;a href=&quot;http://bergie.iki.fi/blog/quick_review-sennheiser_pxc_300_noise-cancelling_headphones/&quot;&gt;Sennheiser’s noise cancelling headphones&lt;/a&gt; that I bought back in 2008. While they’re bulkier and pricier than typical in-ear headphones, they are great especially when traveling or working in a noisy environment.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/sennheiser.jpg&quot;&gt;&lt;img src=&quot;https://d2vqpl3tx84ay5.cloudfront.net/toolkit-2012/sennheiser-small.jpg&quot; alt=&quot;Sennheiser&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The headphones are slowly getting a bit frayed, and so I will probably have to look for replacement soon. Having optional Bluetooth could be handy.&lt;/p&gt;

&lt;h2 id=&quot;thoughts-for-2013&quot;&gt;Thoughts for 2013&lt;/h2&gt;

&lt;p&gt;The current setup has generally served me well for about two years of intense travel and open source development. &lt;a href=&quot;http://nemein.com/en/&quot;&gt;We&lt;/a&gt; generally run our computers with a two year replacement cycle, and so at least my laptop is due to be replaced quite shortly.&lt;/p&gt;

&lt;p&gt;Thanks to services like &lt;a href=&quot;https://travis-ci.org/&quot;&gt;Travis CI&lt;/a&gt; and &lt;a href=&quot;http://www.heroku.com/&quot;&gt;Heroku&lt;/a&gt;, my computer needs are becoming even simpler than they used to be. Theoretically I could work with any device that has a good screen, a good keyboard, and can run terminal and a web browser. This means I could even &lt;a href=&quot;http://yieldthought.com/post/31857050698/ipad-linode-1-year-later&quot;&gt;work on an iPad&lt;/a&gt;. At least nearly.&lt;/p&gt;

&lt;p&gt;For the next cycle of devices, the focus will be on features like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Endurance: the battery should last a full working day when traveling or at conferences&lt;/li&gt;
  &lt;li&gt;Connectivity: I want Internet everywhere, without any unnecessary hassles&lt;/li&gt;
  &lt;li&gt;Resolution: having used some of the high-DPI devices like the new iPads and MacBook Pros, I definitely want something like that&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m also intrigued about switching to a &lt;a href=&quot;http://www.theverge.com/products/kindle-paperwhite-3g/6095&quot;&gt;Kindle Paperwhite 3G&lt;/a&gt; as my reading device. Better screen, and ability to access WikiPedia anywhere in the world for free!&lt;/p&gt;

&lt;p&gt;If you have any great suggestions for a device or a combo fulfilling those requirements, please comment!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this all sounds very consumeristic, it should be noted that my old work devices always get recycled to other users. When you do mobile and web development, you need to have access to the new hardware that people are buying and using.&lt;/em&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 21 Dec 2012 00:00:00 +0000</pubDate>
      <atom:link rel="payment" href="https://flattr.com/submit/auto?url=https%3A%2F%2Fbergie.iki.fi%2Fblog%2Ftoolkit-2012%2F&amp;user_id=bergie" type="text/html" />
      <link>https://bergie.iki.fi/blog/toolkit-2012/</link>
      <guid isPermaLink="true">https://bergie.iki.fi/blog/toolkit-2012/</guid>
      <author>henri.bergius@iki.fi (Henri Bergius)</author>
    </item>
    
  </channel>
</rss>
