Too much configuration to even get started!! and the fact that you can't work offline makes this setup so much worse than a regular laptop for my regular use :( I wish there was a better dev environment on the ipad already
It sounds horrible because, right now, it is horrible. But if someone enjoys the form factor it could likely be made not / less horrible. I mean ultimately it has most of the hardware of a laptop, minus the keyboard. There is no reason development couldn't be made at least decent on it.
I don't imagine ever wanting to give up my laptop for such a development environment but I could see myself using it when traveling to tinker / test out things or maybe making emergency / urgent changes.
I use an iPad Pro, and no, it doesn’t work as an ideal Dev machine. However it’s great for code review, as a slack machine, em, and basically everything that is outside the realm of a terminal and a text editor.
I get excited every time I see an article about using the iPad Pro for development. But then it always turns out that people just use blink to ssh/mosh into another machine.
I really wish I could have native Emacs on the iPad. It is one of the fastest and lightest machines around, phenomenally lightweight and with a great battery life. It has a pretty good keyboard attachment. And Emacs even without a native shell would work pretty well (using Tramp for editing remote files).
And no, Emacs via a shell is not nearly enough. You can't get enough modifiers through the TTY, so it ends up being crippled. And no, Apple is not likely to reject it, apps with interpreters have been getting in for several years now. And even if Apple were to reject it, there is nothing that prevents people (as in, me, for example) from compiling Emacs myself and loading it onto my iPad (these are common misconceptions, so I'd rather clear them up right away).
I think I might end up funding a bounty, perhaps someone is willing to shave this yak.
i tried a cloud-based editor & dev environment when the ipad pro first came out, and the biggest problem was missing/hard-to-emulate keyboard shortcuts (even with the keyboard cover). after that, the awkwardness of having to use touch in place of a mouse was also difficult to adjust to.
i've mainly used the ipad pro as my companion notebook replacement, using the notes app with a pencil. i had hoped by now that all handwritten text would be OCR'ed and searchable, but alas that's been limited to one mode of the notes app so far.
such a promising machine crippled by the indecision of not knowing what it wants to be when it grows up!
I don't see why it would be: I don't want to share data with other applications, I just want to edit stuff within Emacs. The sandbox doesn't prevent me from doing that.
Steve Jobs' Post PC world analogy was off in that PCs are the cars, trucks, convertibles etc. and tablets are the scooter. Yes you can do all your grocery shopping on the scooter given the groceries fit, the shop isn't too far away, it's not raining, the mileage will be good etc - you making that one successful grocery trip doesn't mean scooter is a car replacement.
The 'many' part is questionable - some sure. But yes scooter analogy works better than the original! (9.5 million scooters and motorcycles sold in 2017 in ASEAN region where they are most popular - vs 80M cars globally.)
Your comment reminds me that (AFAIK) there aren’t really great rental sources for many pieces of gear. I have often wished something like this existed, and not even for computers (considering I am a dev and have a MBP). But, it would be nice to be able to rent a high end tool that you may only need for one small project, or a high end piece of music gear - like a $2,000 microphone, or guitar amp, etc. - from a well-known and trusted supplier with simple shipping techniques and easy return process (ship back in original packaging with included label, etc).
I suppose enough people use Amazon like this, but they will eventually ban you for abusing their return process.
There have been a few companies trying to fill the need you speak of. Two that I'm aware of https://fatllama.com and https://www.beomni.com. I believe the latter is currently only in San Francisco.
Back when I was helping people quite a bit about general computing support, I actually got frustrated by someone making bad judgement in this regard. Essentially, people get frustrated for things that iPad is just not fit for their job, in your analogy, complaining that their scooter won't work well over unpaved roads.
It's one thing if that user choose to make a wrong choice but they can service it themselves, but it becomes a nightmare story if someone's forced to support that.
I'd say your own analogy is a little off too. PCs are more of the commercial vehicles: semi trucks, tractors, and industrial equipment. They're mostly used by professionals doing work in some way (also in education and gaming). Mobile phones are the cars - for the average person, most of their interaction with technology is through their smartphone, and for most people, other computing devices aren't really necessary to do what they want to do. I think it's getting pretty common now for people to forgo desktops and laptops not because they can't afford them, but because they don't need them.
This topic comes up every month or so, and there's always this catch:
> we need to first create a remote workstation which we can start using as our main development machine.
A dumb terminal isn't a development machine. That's like saying "Using my DEC VT100 terminal to develop in Go", let me just hook it up to an actual computer
This is not a very good argument. I do my development work on my company issued macbook, but its not like I'm doing my work locally. My several thousand dollar macbook pro acts as a terminal interface for me for a HUGE proportion of my work. All my code is developed/built/run/tested on remote machines and my laptop is just a fancy interface to them.
Backend developer then? Even in that case I would need IntelliJ idea/visual Studio/ whatever IDE, unless you are just working on “small” projects under 500kloc where vi is maybe enough...
I use C9 which is another web based IDE..
it doesn't have all the power features of a jetbrains ide but it is nifty and should meet the needs of most developers.
Not only code writing, but debugging, compiling, testing, deploying to physical devices via usb, coding thermal printer, barcode scanners or other input hardware support support, and the list goes on...
It all depends on the type of work you do. I work on the latest top of the line macbook pro issued by work as well, and for me it's too slow. Running the company's php app along with all the other dependencies like MySQL/Redis/etc takes a significant amount of resources. All development is done locally on the dev laptops, bugs are reproduced and fixed on local dev laptops. At this point I almost wish that my laptop was a terminal so that I could have access to more resources like RAM (currently at 16 GB).
Exactly the reason why we've started setting up remote (in-house) servers for devs - for the cost of the latest MBP you can buy a server machine with tons of ram that will run all you services super smooth with any old laptop that can run your editor.
The input methods available do matter, and affect the practicality of doing tasks pretty substantially. And a great deal of development involves the building/running of code happening remotely anyway. Although in this case all of the editing seems to be happening on the VM as well, so it's more of a pure dumb terminal.
I came here to say the same thing. This article got me all excited. I made my coffee and sat down for the long read. And the first damn section killed all my excitement.
It drives me god damn bonkers that the iPad is such an unbelievably powerful piece of hardware... that is practically unusable due to arbitrary OS limitations. Unusable for certain types of tasks that is.
Le sigh.
I dream of the day when an iPad can dual boot iOS and OSX.
OP here: Thanks for making the coffee at least :) I also wish iOS wouldn't be limiting and Apple would allows us to develop locally. I think we're getting there slowly and I'm looking forward to that day.
> A dumb terminal isn't a development machine. That's like saying "Using my DEC VT100 terminal to develop in Go", let me just hook it up to an actual compute
And to be clear: The iPad Pro does not even achieve the level of "dumb terminal": It does not pass control sequences intelligently, so even running remote emacs is not possible without major remappings (and the remappings are so major as to reduce functionality.)
That said, the iPadPro is good for what it's good for. I love having a portable library, and note taking with the pen is kinda nice. It just doesn't achieve the level of development machine for any intelligent definition of the word "development".
And if I wanted a dumb terminal I'd much prefer a MacBook Air, with its sturdier keyboard and at least the option of having it not be a dumb terminal sometimes
The device you're developing with is a developer machine. There's even people working on Citrix remote desktop Windows systems who have nothing but a thin client who develop software as their daily business. Who cares if you're building your application locally or somewhere remotely.
Can you not just use a Surface Pro? I've never used one but I thought it had a full-fledged OS so you could use it as a development machine, albeit with smaller HD and RAM than a typical notebook.
Windows 10... a full-fledged OS? Mind you, there are tablets/convertibles that can support a full-fledged OS with relative ease. I just don't think the Surface is one of them, unless you're willing to wait until the hacks that are involved in making it work under Linux are included in the kernel mainline, and thus in distros. The SP 3 is there now, possibly the 4 as well. But what's the point when you can just pick something else and it'll probably work out of the box?
The Surface Pros are full fledged machines and quite powerful if bought with the right spec (not cheap though). Just get the keyboard cover. No idea how they work with Linux though.
On the Surface Pro 1 you can forget using the pen input and sometimes the wifi will just disconnect until you reboot.
Aside from that Linux will run pretty smoothly.
From what I've read so far I get the impression it works better on the newer models though(SP3 and up).
The very newest models seem to have quite a few issues with WiFi/BT and touchscreen support. This is not really acceptable for a development machine, or for that matter a tablet. A lesser issue is that most Surface devices do not support plain old ACPI standby in hardware; rather it's replaced by something called "Connected Standby" where the OS is tasked with minimizing power drain. Support for that is also lacking AIUI, but at least we can expect this to improve in the future.
Many Linux distros don't seem to support display scaling (Ubuntu in particular), so the Surface Pro's high resolution display makes for tiny text. There are some work-arounds like setting custom font sizes, but none that work well.
The Surface line is actually, out of the box, a very good Linux development machine, if one is ok with not having camera and sleep.
The surface line was not Linux-friendly at the beginning, then around Ubuntu 17.04, the mainline kernel and the firmware started to give the required support for working daily.
I've been using my Openmoko Neo Freerunner as a real development machine back in 2008, with no remote desktop tricks - although the screen could have been a bit bigger, it wasn't that bad. Come back when you reach that :P
I could still see something like this as the future of development in some ways -- powerful pro workstation level resources somewhere off in the cloud that you connect to via a super portable client. Maybe even over 5G or some other next generation wireless technology to truly enable an untethered development experience that's not limited by local resources.
But that continues to feel like something many years away.
Everyone is so defensive about laptops here that you’d think they feel threatened by this post. Isn’t it in the spirit of the hacker community to be open to new modes of using computers? This is an experiment, that’s why they documented it and stated clearly that it’s an experiment. It’s something to think about and discuss, not a statement that you should throw your laptop out.
OP here: Thanks for the comment. I thought I was clear that this was an experiment and that I wanted to try out things. Now that I'm using it for couple of months, I have even more things to share that are not covered by my blog post.
Thanks for the article - as a developer with an iPad Pro, it was fun reading your thoughts. I haven't tried coding on it, but I love it as a supplementary machine.
I use my iPad for email (reading and sorting; I write it so rarely anyway), HN-browsing, and as another screen for documentation or whatever. I think that’s about the limit of its capabilities. My biggest complaint is still how limited the interaction between apps is and how walled-off they are from one another: https://news.ycombinator.com/item?id=19207796
b) how would android fare in comparison? I.e. I really like termux project, it seems to have much more installable packages than i.e. blink, and it could alleviate the need to run separate session in a separate box over the internet. Similarly, because android is based on linux, there are projects for running linux distros alongside (mostly in chroot?).
I am currently trying to learn Ocaml on my android phone on my way to work with Termux :)
Termux is awesome. iSH (https://ish.app) is trying to accomplish the same thing for iOS, but it might not be approved by Apple because it may break the current set of App Store policies. Termux also does not have the overhead of running a complete x86 emulator. I’ve never needed to, but the possibility of running Xorg (with a real window manager) on my phone is mind-blowing, even if it’s uncomfortable without a keyboard and mouse.
To be fair, this experiment has been run many many times since the the introduction of the iPad. I even tried it a few years ago because I liked the long battery life and the form factor (and after an HN article about iPad/Linode Dev setup[1]). Turns out lack of proper multitasking and multi-window management, and even lack of mouse support made everything cumbersome. Always needing a remote machine got old really fast too.
Phones have completely replaced the use case of PCs for most people, we've accidentally reached a point where it's normal to grow up without a PC in the house.
A friend of mine is a university tutor and complained about students showing up to work with only their phones. A growing-fraction of people are even writing long essays using only google docs on their phone (without even a bluetooth keyboard).
People who use phones instead of PC are handicapped on ways they may not even notice. People who have PCs notice the plunge in personal productivity when they try to do all their activities with a 5% size screen and typing with 20% of their fingers
Indeed. There will probably "always" be something like personal computers that give you full freedom, but the choices and prices are going to suck compared to now in case we enter a real post-PC world for the masses.
People who work in tech can be surprisingly resistant to change. Anything that threatens to alter someone's workflow will see a huge backlash from people who will always equate "different" with "worse". It's what happens when a cargo cult forms around Zen and the Art of Motorcycle Maintenance.
I disagree. Programmers tend to go overboard when it comes to their dev machines. But if an iPad could really improve development, you can bet programmers would dump their $3k laptop workstations in a heartbeat.
If I'm "defensive", it's about ensuring a market for devices that are controlled by the user rather than a central authority. I'm all for investigating new form factors; personally I'm hoping for an unobtrusive heads-up display that can replicate an HD display anywhere. But I'm strongly opposed to abandoning computing freedom in such a transition.
Using an iPad right now, but not for development. I’ve tried it. It just doesn’t work. I don’t feel threatened, just exasperated by the limits. The hardware is severely constrained by the OS and software.
One thing the iPad Pro is really good for is reading documentation. 13”, portrait mode, retina screen, sitting on the couch or in some quiet corner - it’s the bees knees.
Using apps that support Open In Place has been magical. I now use my iPad 24/7. Terminus is really great and although I was hesitant to spend money at first I just think the app is so well made. Mix that with Working Copy and it’s so easy to edit files on servers and redeploy.
Pythonista (though I’m not python person) is always great to have especially with the new keyboard. Scriptable is also magical.
I still prefer using my Laptop in most cases, connect it to a nice big 4K screen at home and the office. I also love my iPad for the usecases it is great at, like taking notes and casual browsing/reading but i would not want to use one device for all. If you do that, a Surface Pro is arguably the better choice.
A lot of apps offer seamless syncing which makes using multiple devices really easy. I can throw PDFs on my iPad via Airdrop, annotate them with the Pencil in Notability and see the changes synced immediately back to my Macbook with Notabilitys icloud sync.
Apple missed the boat on a tablet running macOS. It's pointless to even try and fill the gap created by their mistake. Because when I boot my device, I want to get to work ASAP rather than configuring 10 things.
I’ve found an iPad Pro to be perfectly acceptable for web development.
Working Copy is an excellent git client, and combining it with Textastic proved a good workflow. Textastic allows you to add any folder, including a Working Copy repo, as a source in the file browser, so no more swapping files between apps.
Using this, I built my personal portfolio site with Jekyll while commuting on the tube.
Other apps are available: DraftCode provides a full PHP/MySQL stack, I got Django running on Pythonista, found iSh could run Bundler and Jekyll and got a long way towards getting Rails working. Also Processing runs, well, Processing. Play.js does react and Node and Continuous does .NET and C#.
There are also Vim and Emacs apps, though I don’t know how good they are.
Thanks for mentioning that you got Django running on Pythonista. I just spent a few minutes web searching and fiddling and now I have a small Flask web app running on my iPad using Pythonista. There is no hot reload, so if I change code I need to restart the Flask app and then refresh the web page on Safari. I had no idea this was possible, or that there was anything like StaSh.
If you frequently use your iPad to access remote servers, check out Fredericco's post[1] at Macstories: there he mentions using FileExplorer[2], which lets you access and copy files to and from remote servers (SCP, SMB, etc) without leaving Apple's Files app.
My iPad Pro has been my only computer for nearly a year, and I miss my Windows Machine and VMs.
Some things that help me make do:
1. a VPS with a VNC server installed: I connect with Screens and, for example, can use Firefox's Dev tools. Performance could be better (I'm a ways from my VPS), but it's much better than nothing.
2. A Google Pixel 2 (or any Android phone) + a USB-C to USB adapter. This lets me put files on a flash drive, or even write Linux ISOs. I've found that, in a pinch, I can often do on my phone what I would have used my desktop to do.
3. Termux[1] was mentioned here recently, and I installed it, then loaded vim and tmux. SSHing into my phone from my iPad, I have lightning fast (low latency) Linux environment. Have just started using Termux, but for those with similar setups (iOS + Android), it may be worth a look.
4. Exploit the iPad's strengths. LiquidText[2] is, as they say on the site, "Better than paper". It's been revolutionary for reading my PDFs and extracting and connecting and cross-referencing information in them.
I know this probably doesn’t add much to the discussion but I did want to say that I love submissions like this, and I love the enthusiasm behind the project.
150 comments
[ 3.4 ms ] story [ 232 ms ] threadI don't imagine ever wanting to give up my laptop for such a development environment but I could see myself using it when traveling to tinker / test out things or maybe making emergency / urgent changes.
I feel like this should be the opening line, not buried in the ending notes.
I really wish I could have native Emacs on the iPad. It is one of the fastest and lightest machines around, phenomenally lightweight and with a great battery life. It has a pretty good keyboard attachment. And Emacs even without a native shell would work pretty well (using Tramp for editing remote files).
And no, Emacs via a shell is not nearly enough. You can't get enough modifiers through the TTY, so it ends up being crippled. And no, Apple is not likely to reject it, apps with interpreters have been getting in for several years now. And even if Apple were to reject it, there is nothing that prevents people (as in, me, for example) from compiling Emacs myself and loading it onto my iPad (these are common misconceptions, so I'd rather clear them up right away).
I think I might end up funding a bounty, perhaps someone is willing to shave this yak.
i've mainly used the ipad pro as my companion notebook replacement, using the notes app with a pencil. i had hoped by now that all handwritten text would be OCR'ed and searchable, but alas that's been limited to one mode of the notes app so far.
such a promising machine crippled by the indecision of not knowing what it wants to be when it grows up!
What if I want to work in areas of little or rubbish connectivity?
Tools such as docker, etc don't exist just to run things on a remote server.
Steve Jobs' Post PC world analogy was off in that PCs are the cars, trucks, convertibles etc. and tablets are the scooter. Yes you can do all your grocery shopping on the scooter given the groceries fit, the shop isn't too far away, it's not raining, the mileage will be good etc - you making that one successful grocery trip doesn't mean scooter is a car replacement.
In general, if you don't have the shops close by, a car is more practical.
I suppose enough people use Amazon like this, but they will eventually ban you for abusing their return process.
It's one thing if that user choose to make a wrong choice but they can service it themselves, but it becomes a nightmare story if someone's forced to support that.
> we need to first create a remote workstation which we can start using as our main development machine.
A dumb terminal isn't a development machine. That's like saying "Using my DEC VT100 terminal to develop in Go", let me just hook it up to an actual computer
"To operate properly, packages (apps and programs) must be built for ARM 64-bit and must comply with Android security policy."
Ubuntu: https://www.linuxondex.com/ "Linux on DeX beta is only supported on Galaxy Note9 and Tab S4"
I'm thinking about getting a Tab S4 so I can play with it.
I use C9 which is another web based IDE.. it doesn't have all the power features of a jetbrains ide but it is nifty and should meet the needs of most developers.
Lots of options outside of vi!
In all seriousness, I use (neo)vim as my full-time editor for several very large projects.
i assumed OP is talking about "development" machine implying some code writing.
Edit: OP said he had the latest top of the line. Latest, top of the line has 32.
https://ish.app/
https://news.ycombinator.com/item?id=18430031
Still doesn't convince me to swap my 8 core ryzen 1700 laptop with 32gb ram and 1.5tb ssd and a RX580 for an ipad pro.
It drives me god damn bonkers that the iPad is such an unbelievably powerful piece of hardware... that is practically unusable due to arbitrary OS limitations. Unusable for certain types of tasks that is.
Le sigh.
I dream of the day when an iPad can dual boot iOS and OSX.
And to be clear: The iPad Pro does not even achieve the level of "dumb terminal": It does not pass control sequences intelligently, so even running remote emacs is not possible without major remappings (and the remappings are so major as to reduce functionality.)
That said, the iPadPro is good for what it's good for. I love having a portable library, and note taking with the pen is kinda nice. It just doesn't achieve the level of development machine for any intelligent definition of the word "development".
Also seems a bit over-engineered, I would just ssh into a server and do everything from there as a normal user.
On the Surface Pro 1 you can forget using the pen input and sometimes the wifi will just disconnect until you reboot. Aside from that Linux will run pretty smoothly.
From what I've read so far I get the impression it works better on the newer models though(SP3 and up).
The surface line was not Linux-friendly at the beginning, then around Ubuntu 17.04, the mainline kernel and the firmware started to give the required support for working daily.
The linux-surface kernel (https://github.com/jakeday/linux-surface) gives extra functionality - mainly the touchpad.
But that continues to feel like something many years away.
a) some IOS-native IDE, i.e. http://continuous.codes/ ?
b) how would android fare in comparison? I.e. I really like termux project, it seems to have much more installable packages than i.e. blink, and it could alleviate the need to run separate session in a separate box over the internet. Similarly, because android is based on linux, there are projects for running linux distros alongside (mostly in chroot?).
I am currently trying to learn Ocaml on my android phone on my way to work with Termux :)
No real benefit over a decent laptop.
[1]http://yieldthought.com/post/12239282034/swapped-my-macbook-...
A friend of mine is a university tutor and complained about students showing up to work with only their phones. A growing-fraction of people are even writing long essays using only google docs on their phone (without even a bluetooth keyboard).
But that's exactly what the current marketing push is all about.
When the first iPad Pro was released, nobody batted an eye because it wasn't pushed as a laptop replacement.
One thing the iPad Pro is really good for is reading documentation. 13”, portrait mode, retina screen, sitting on the couch or in some quiet corner - it’s the bees knees.
Pythonista (though I’m not python person) is always great to have especially with the new keyboard. Scriptable is also magical.
A lot of apps offer seamless syncing which makes using multiple devices really easy. I can throw PDFs on my iPad via Airdrop, annotate them with the Pencil in Notability and see the changes synced immediately back to my Macbook with Notabilitys icloud sync.
Working Copy is an excellent git client, and combining it with Textastic proved a good workflow. Textastic allows you to add any folder, including a Working Copy repo, as a source in the file browser, so no more swapping files between apps.
Using this, I built my personal portfolio site with Jekyll while commuting on the tube.
Other apps are available: DraftCode provides a full PHP/MySQL stack, I got Django running on Pythonista, found iSh could run Bundler and Jekyll and got a long way towards getting Rails working. Also Processing runs, well, Processing. Play.js does react and Node and Continuous does .NET and C#.
There are also Vim and Emacs apps, though I don’t know how good they are.
1: https://www.macstories.net/ipad-diaries/ipad-diaries-using-a... 2: https://itunes.apple.com/us/app/id499470113?at=10l6nh&ct=ms_...
---
My iPad Pro has been my only computer for nearly a year, and I miss my Windows Machine and VMs. Some things that help me make do:
1. a VPS with a VNC server installed: I connect with Screens and, for example, can use Firefox's Dev tools. Performance could be better (I'm a ways from my VPS), but it's much better than nothing.
2. A Google Pixel 2 (or any Android phone) + a USB-C to USB adapter. This lets me put files on a flash drive, or even write Linux ISOs. I've found that, in a pinch, I can often do on my phone what I would have used my desktop to do.
3. Termux[1] was mentioned here recently, and I installed it, then loaded vim and tmux. SSHing into my phone from my iPad, I have lightning fast (low latency) Linux environment. Have just started using Termux, but for those with similar setups (iOS + Android), it may be worth a look.
4. Exploit the iPad's strengths. LiquidText[2] is, as they say on the site, "Better than paper". It's been revolutionary for reading my PDFs and extracting and connecting and cross-referencing information in them.
1: https://termux.com/