Readers of this blog will probably already know that I use cross platform productivity apps that allow me to work on both my mobile devices and my laptop and desktop.
Microsoft office, Todoist, Evernote, Dropbox and Google Calendar allow me to pick up any of my devices and continue where I left off on my other devices.
The only missing piece of my attempt to be device independent has been my inability to code on my iOS devices. Part of the problem has been my own unawareness of the new tools that appeared in the last couple of years, and my reliance on, mostly, C for my programming.
Since I’ve moved to Python and C# for some of my programming needs, I’ve learned of three apps that have made my ability to go fully mobile much more feasible.
For my python programming, I rely on Pythonista, for C# I use Continuous, and for accessing git I use Working Copy. These three apps allow me to do a lot of programming while on the move — of course, they are not a complete replacement for my computers, there are still a lot of things they can’t do, but I can quickly test ideas on my iOS devices, commit them to git and then take it from there when I have access to my computer.
I’ll now try to explain each of these apps in greater detail.
I have had Pythonista on my phone for quite a while, but I’ve only realized how strong of a python development environment it is a couple of months ago.
It comes with lots of pure python packages pre-installed. For me, the most important are numpy and matplotlib. They allow me to quickly test ideas for my research, and to visualize data in order to work with in on my more powerful computers.
In addition to the pure python libraries preinstalled, you can download StaSh and have access to a full shell with support for pip and git. This has allowed me to install many more pure python modules. It should be noted, however, that Pythonista does not support any module that has non-python dependencies — this rules out, among others, tensorflow, keras and sklearn. Since my main use for python, apart for automating iOS, is for machine learning, this was a bit of disappointment for me.
But anything that can be done in pure python can be done on Pythonista. It can even read git repositories checked out using Working Copy — more about that later.
It also has deep integration with iOS, so you can access things like location services and gyroscope data. You can also design GUIs, and complete games. It’s a joy to you with all feature you would expect from a professional IDE, including code completion and syntax highlighting. You can check out this post where I use pythonista to solve a problem I actually needed to solve. It’s a programming tool that actually works, not a mere toy.
If you prefer to code in C#, there is an app for that too. Continuous is an app that I just learned about, it supports C# and F#. I currently use it to test ideas for my C# class and check code submitted by my students. There are some limitations to the app that I’m yet to discover, but the one that I bumped up against as soon as I started using it is that it cannot from the console, I have to modify the console applications to read from files.
But that is a minor modification, and if it’s the only limitation that I bump up against, I’ll be very happy. Like Pythonista, the IDE allows you to create GUI applications — I tested it by writing the standard introductory apps we use in class. Also like Pythonista, it can read git repositories from Working Copy.
Even though Pythonista allows me to access git from the command prompt using StaSh, Working Copy is my preferred method for accessing git. It’s a fully functional client that allows me to clone, modify and commit to my heart’s content.
You will need to pay for premium feature if you want to commit code, but if you need to program on the go, this is more than worth the price.
The best thing about Working Copy is that it exposes its filesystem to all the development apps, so you can clone repositories, work on them on your phone or iPad, and then commit them. Programming workflow nirvana if you’re on the move a lot.
While iOS is still not a fully mature platform for writing code, it is fast heading that way. I’m sure these two apps will continue to receive updates as they become more mature. For now, they offer me a great way to test ideas quickly while on the move.
I can do preliminary data cleaning and exploration with python using Pythonista, and then develop my full fledged code when I get to my computer.
I can test new ideas for my C# class while on the move, and grade student submissions during my commute. For now, this is enough for me, but as I get used to the idea, I’m sure that I’ll clamor for more features from these apps. Give them a try, I’m sure you’ll enjoy them.
Ps: there is also an app for programming using Lua but I don’t know much about that programming language, so I haven’t tested it.