Emacs on an iPad
andschwa.com
andschwa.com
- NoMachine with X works really well, especially over a VPN. Full linux desktop, great scaling and kb support
- Use mosh instead of ssh, especially if connecting over cellular, as it is tolerant of dropped connections
- Like the person who switched to an X230, I followed a similar path finally settling on a Microsoft Surface v7 which was £300 second hand. The hardware is fantastic, with a glorious screen and lovely typecover keyboard. Live in WSL and it could be a linux box. I leave the ipad behind now when I travel.
Having said that, even if it had to be handbuilt against a testflight account, it would be wonderful to have a native emacs app. Seems like the developers of hummingbird eXceed or blink might be clever enough to do that?
Although I went into the purchase knowing about Apple's walled garden, I really do resent the way good hardware has been artificially crippled. It feels like being treated like a child, I should be able to make informed decisions with my own hardware! I won't be buying another ipad unless things change up big time.
I use, and love, Wireguard, but I think out of the box Wireguard does not support multicast. And I expect that NoMachine also depends on multicast to do its autodisovery. Probably with mDNS and DNS-SD.
Upon googling now, it does seem like some people have successfully been able to get multicast working over Wireguard. For example:
> Hey! Just in case you (or anyone else browsing this) still needs this, i've got avahi working over my wireguard client-to-site connection. I can access my home LAN computers using hostname.local from any VPN-connected device.
> I think the missing piece was adding 224.0.0.251/32 and ff02::fb/128 (multicast addresses) to allowed ips.
from https://www.reddit.com/r/WireGuard/comments/g80bxf/cant_get_...
Likewise, there seem to be some additional useful information relating to mDNS / Avahi on this issue on GitHub, for various situations:
https://github.com/lathiat/avahi/issues/262
And here is someone who got DLNA (which also uses multicast) working through site-to-site Wireguard VPN:
https://an0n-r0.medium.com/making-dlna-through-site-to-site-...
My real reason for doing this was ergonomics: https://www.reddit.com/r/ErgoMobileComputers/comments/vzs8mm... , but vented my ipad frustrations for a while ( https://imgur.com/a/CQwApt8 , https://news.ycombinator.com/item?id=31648704 )
Gnome has really made strides in the past couple years of having something fairly tablet friendly.
There are great prices on wonderful M1 iPads right now, and I love my MacBook Air, so I got this year’s iPad Air.
You must be joking.
After hours of futility, I am forced to accept that Apple still has no API for adding Control Escape arrow keys to keyboard apps.
While I can use the hard coded keyboard option in the great a-Shell app, I can’t customize it. And I can’t use its keyboard in Safari for online Visual Studio Code or Colab notebooks.
With Termux, I set up a keyboard via a simple text config file. Done. And for a general system keyboard, in a pinch I can use a the “Hacker Keyboard” keyboard app. It’s ugly but it works.
Please tell me I’m taking crazy pills and that there’s a keyboard app that solves this.
No, I can’t use a hardware external keyboard in this use case.
But my real gripe is the lack of these keys in an onscreen keyboard that I could use in Safari.
Online, web-hosted VS Code (via GitHub dot-dev, in my case), and Jupyter notebooks via CoLab or local hosted -- they are nice to have, but the editor library in Jupyter seems to map each word of code in its own text field. You can't use the usual iOS/iPadOS touch editing features, it's impossible to select a line of code... And on and on.
It doesn't sound like it would be such a big deal but it's a show-stopper. "Type F1 for the Command Palette" -- aaargh!
I noticed that I still use Panic Software's "Coda" on my 10-year-old iPad 4, and the terminal, editor, and keyboard design choices are the best I've found for iOS.
And that said, I wanted to call out that on Android, the Termux environment is native, local Linux (userland on Android). I use it for SSH, sure, but I also use it for everything else. Last night I tried some Zsh, FORTRAN, GCC, and Python. All on-device. Performance on my cheap Kindle Fire HD is actually better experience than attempting to use a web browser. Android is old; newer versions may restrict Termux functionality.
Around 2015-2019, Macs were terrible. They overheated, theottled and had loud fans. At the same time, the iPad Pro was dead silent, lighter, faster and had better battery life.
Today, the M1 MacBook Air gets all those goodies and you get a nice keyboard and a capable OS. The battery life is also twice as long as an iPad Pro.
Apple needs to pull a rabbit out of the hat to pull the iPad ahead again.
Besides whoever is in charge of designing MacOS.
Ive was Chief Design Officer. Now check Apple's Leadership page (https://www.apple.com/leadership/). Design is nowhere to be found on it. It had temporarily been assigned to HR chief Deirdre O'Brien, no more, and Design co-chiefs Alan Dye and Evans Hankey report to the COO Jeff Williams, a.k.a. the Department of Everything Else. It's not a surprise both Dye and Hankey are leaving the company.
While I think Ive was mostly harmful to the company once the strong guiding hand of Steve Jobs that kept him on the straight and narrow went, it's not good to have this level of instability in the critical function of design either. Expect years of mediocre product design and stagnation ahead. On the plus side, no more butterfly keyboards, cables that fray if you look at them funny, or portless Macs either.
Guess that means I shouldn't be in the Apple ecosystem, which is fine by me I suppose.
There’s a rumor that was because Intel promised every year 10nm chips, which they ultimately postponed every year. MacBooks chassis were designed for the promised thermal advantages which have never been delivered.
Apple doesn't need to pull a rabbit out of a hat they just need to stop artificially limiting what iPadOS can do. There's no reason the iPad can't run Emacs natively with a full stack of dev tools except Apple's rules. The $80 Fire Tablet I'm typing this on can (OK it's not exactly quick but $80...).
I wish they would add a touch screen and pen input to their laptops.
Why would they do that when it would remove the incentive for their customers to buy one of each?
Give the iPad range Mac features, and it'd cannibalize Macbook sales from the bottom up. Give the Macbook a touchscreen, 5G, and the ability to run iPadOS apps, and it'd cannibalize iPad Pro sales from the top down. Neither of these are in Apple's commercial best interests.
(E.g. search Eve Energy in the Mac App Store and the iPhone/iPad apps tab becomes visible.)
Combine it with a bluetooth keyboard and mouse, hook it up to an external display, and it's hard to distinguish from any other desktop computer. Remove everything, and it's the optimal size to consume books and video on the couch. Combine it with a Pen, it's perfect for photo editing or drawing. Connect it to your guitar or midi instrument, and it's perfect for making music.
Funny thing is, i'm starting to use the ipad as a keyboard alternative more and more, text dictation often feels more convenient than typing.
Sure, for programming you'll probably want to ssh into another machine (using blink, which also provides visual studio code on the ipad), but that's maybe 5% of my home use of a computer.
This is more of a PEBKAC problem than you realize, iPads are only "faster" because they do a better job of managing background tasks.
So a warning: Long-term exposure to this code may cause loss of sanity, nightmares about GAS macros and linker errors, or any number of other debilitating side effects. This code is known to the State of California to cause cancer, birth defects, and reproductive harm.
I tried emacs in it once and it was too slow to be usable - would be keen to hear if you get a performant setup.
Or just run alpine with openssh and ssh in locally through an iOS client. I'd be curious how running UTM/qemu continuously would affect battery life. Is it 10% or 50% less? 10% would be an acceptable trade off for me.
I am still hoping that someone will develop a native Emacs version (willing to contribute to a bounty for that!).
Of course you can restrict yourself to a subset of shortcuts, but that's not the point of Emacs, isn't it?
For org only users on ios: beorg is soo good. Miss it on android very much.
In comparison, I have been running Vim on iDevices (as native app) for over 7 years. Vim design of using letters insteads of Chords proved useful in the simple onscreen keyboards.
"Impressive" is not the word I'd use for running a terminal with SSH. Especially since the iPad is likely several times more powerful than the remote Ubuntu server that is actually running emacs.
It is just accessing a VPS via ssh. That is not at all impressive, rather the opposite: you have to connect to another machine because the ipad just cannot do what you want. And you then still have to deal with keyboard issues....
And that is kind of a shame because the screen and form factor are both really nice.
> And you then still have to deal with keyboard issues....
What kind of issues?
Typing on a touchscreen is much slower than a keyboard.
Add a keyboard to your iPad, congratulations you've now got a laptop with half the features.
Cloud development sucks if you live far away from the datacenter due to latency. Also, if your internet connection goes down then you're unproductive until it comes back.
And it’s not about feature comparison to a laptop, even with a keyboard as MacBook Air M2 is better and cheaper than iPad. But easy content consumption, taking notes, sketching, writing, and many others. It’s just more fun than a heavy laptop. But yes, it’s not for everyone as using it full-time requires a change in personal habits. There’s also not much pro apps, but for now you can produce videos, music, cad designs, web design (figma, adobe, serif), so it’s not so limiting as it was years ago.
Because none of the activities you list afterwards are writing and debugging code, tests, etc.
But it's not, the opposite actually. Any kind of serious typing requires a proper keyboard. If you have to carry a tablet, which is essentially just a screen, and a keyboard, you might as well just take a laptop and gain the ability to take advantage of a general computing device.
Unless one flies business class, there is often not enough space between seats to comfortably use a traditional laptop. With a tablet, you can at least do something.
The other big thing is that iPad Pros have very high screen brightness. For working outside it's a big benefit, as most portable laptops don't get that bright. The M2 Air and the M* Pros do, but you can't just pull the screen off when you only need a screen.
The best of both worlds, imo, is to have an M2 Air and an iPad Pro. When you're at a desk to do real work, you get the full laptop benefit plus the big iPad Pro as a second monitor. When you're on the daily outing, you take either or depending on your expected need. But you do now have a $5000 setup, which is more than many people would like to spend for a little more flexibility.
If Apple hadn't done such a great job with the M* Air, it would be easier for me to consider some other vendors' 180 degree folding laptops. But the silence of my Air and the amazing battery life are hard to give up.
I have previously setup a Hetzner server (EU) with openVPN and Code Server, and then I was able to really have the benefits of pretty secure dev environment that was always on, easily accessible, and powerful. Of course it required a connection to use, but the bandwidth requirements were low. Latency requirements were more important, but they weren't as harsh as if you were using a remote desktop.
you cannot run Emacs directly on an iPad as an app
There are many things I like about it the iPad, particularly the focused modality of single-screen apps (split screen was also too finicky and cramped to be useful). It felt very productive. But make no mistake if you're reading this, an iPad is no substitute for a laptop. Don't waste 1000 bucks like I did to figure that out.
My whole setup can also be used with emacs. I have an emacs config as well and have tested using Eglot etc - basically the same setup as what I have in Vim.
The real power move here is to stick to a terminal based workflow. GUIs lock you down to a machine and a platform. Using a terminal based editor, tmux, etc. allows you to be instantly portable, infinitely flexible, and allows you to work anywhere.
SSH is also the other power tool. I mean SSH is actually insane. If you understand SSH agent forwarding, port forwarding, proxy jumping, you can actually be anywhere with any keys you want, proxy dev as a prod environment, use services on any computer anywhere you want, it’s absolutely incredible what you can do with SSH.
I run vim this way and love it.
Really happy someone figured this out!
I run a Wireguard VPN for some context
Hmm, my device disagrees:
File Edit Options Buffers Tools C Help
#include <stdio.h>
int main() {
printf("Hello, world!\n");
}
-UUU:**--F1 test.c All L5 (C/*l Abb