I recently purchased a new iPad Pro (11”), with an M4 processor. That makes it faster than my laptop, albeit with a smaller display and an operating system that significantly limits my ability to install software. However, the iPad can be used without a keyboard (great for watching streaming videos) and has an amazing battery life. So can I use the iPad as a “primary” computer?

Limitations

The most obvious limitation of an iPad is that it doesn’t support compiling code. That means no C++ or Rust. On the other hand, there are ways to run simple Python code locally, and I can always connect to a FreeBSD server if I want to develop ”real” code.

A corollary to this issue is that I can’t easily work on LaTeX locally. Now that I’m not writing a lot of papers, that’s less of an issue. But I also have access to Overleaf through my emeritus status at UC Santa Cruz (at least for now) and my alumni status at Brown and Berkeley.

Key applications

There are many apps I use to get work done on an iPad. Some of them are widely-used and obvious, like Microsoft Office, Apple apps, and Google apps (Drive, Docs, Sheets, Slides), so I won't describe them here. This section describes apps that might be less well-known, but make it possible to do real work on an iPad.

Shellfish

I do a lot of work in Unix shells, so a good terminal program is crucial. Shellfish fits the bill well. It‘s an ssh client with a nice interface that works well with private keys and tmux. Terminal emulation works well. It also has both a Mac and iOS version, and syncs its configuration between them. Those are the basics — the minimum expected of an ssh program. But there are some useful features that I haven’t seen elsewhere.

One important feature is the ability to access files via SFTP, on both iOS and Mac. A folder for each ssh connection shows up in the Files app on iOS, and in a folder on Mac. Any program can access these files; Shellfish downloads and uploads files as necessary behind the scenes.

Another feature is connection flexibility. The tmux support is crucial, since it allows the iPad to reconnect to a connection without losing state. You can even close a window on your iPad and reopen it on your Mac, or vice versa.

Shellfish supports specifying multiple IP addresses for a single connection; I use this feature to have a local server (e.g., 192.168.5.100) and a cloud host that forwards to it (e.g., cloudhost.service.com) as alternatives. As long as I (a) use a unique port number such as 8222 and (b) ensure that the port works on both the local and cloud host, I can have fast connections when I’m local and working connections when I’m not. The tmux support means that I get reconnected with the best available connection when I switch locations.

Jump servers are supported by using another profile that you’ve already entered as the jump server. This means that, if you use a profile that has a local server and remote server specified, the jump server dynamically selects the first option that works. As a result, you can have low-latency connections to “internal“ machines when you’re inside the internal network and higher-latency connections via a bastion host when you’re not.

Shellfish supports multiple terminal tabs, as you’d expect, so I can have multiple windows open at once. Overall, a very nice program, and well worth the cost.

Textastic

If you’re going to be programming or writing papers in LaTeX, you’re going to need a text editor. Yes, you can use Overleaf to write LaTeX papers if you want, but that only works online, and you might need to pay for it. Similarly, sites like GitHub may have online editors, but they’re not great and, again, requires connectivity.

Instead, it’s good to have an editor that works on the iPad, and Textastic fits the bill well. It can open files on the iPad as well as iCloud Drive, and supports SFTP as well. Of course, if you have Shellfish, you won’t need the SFTP service, and Shellfish does a better job of making files available (multiple connections, jump server, etc.) than Textastic does. Plus, using Shellfish for remote file access means you only need to maintain connections and keys in one place.

Textastic has extensive support, including syntax highlighting, for a wide range of languages, including the ones I use: C/C++, Python, Rust, and LaTeX. It supports custom themes and syntax definitions, so you can add your own if you don’t like the ones it came with.

While it’s overall a very good editor, it appears to be lacking one useful feature: the ability to collapse functions or clauses. This is a relatively minor feature, though, and the editor is, overall, a great tool.

Working Copy

Working Copy is a nice git client for iOS. It’s great for maintaining entire git repositories cloned from GitHub, GitLab, and a range of other sources, including self-hosted repositories.

Working Copy supports the essential navigation tools necessary to inspect git repositories (from any provider!), including file history, diffs between versions, and much more. It's at least as good as the tools I use on my Mac, and has the advantage of being totally portable. Of course, it has to download the repo to explore it, but that's not usually a major problem, since most repos aren't that large, and the iPad has plenty of storage space. This also means that you can do the navigation offline, with just your iPad.

Working Copy also allows editing and committing changes. You can use the built-in editor, or (as I do) use an external editor like Textastic. Just point your external editor at files managed by Working Copy, and it'll understand when and how files have changed. Commits are straightforward to do, and Working Copy supports things like tags and signed commits if that's what you need.

PDF Expert

The last thing I use a custom app for (other than basic stuff like scheduling and task tracking) is PDFs. I've used PDF Expert for years, since it supports annotation, large PDFs, and lots more. Yes, there are plenty of PDF programs out there, but I've found that PDF Expert meets my needs, and supports Apple Pencil annotations as well as lots of other stuff. It integrates well with Files, so I can read PDFs from pretty much any source in my iCloud Drive or iPad.