Is there a reason no one has built a Cygwin-like environment for iOS yet? As in, is it because (1) it's time-consuming, (2) it's tricky, or (3) Apple won't allow it on their App Store?
> What's wrong with trying something out to see if it's ready yet?
It will never be ready, it's the wrong tool for the job. Trying to use the wrong tool for the job is stupid, do you routinely try to hammer nails with a screwdriver to see if it's ready yet?
If anything it feels like it's becoming clear that iOS is not going to be a viable OSX replacement for most professional use cases without a huge bump up in complexity. At which point you have to wonder why bother with it at all?
Microsoft seems to have a much clearer vision here and anecdotally I know quite a few people that have been Mac users for ages that have given up on iPads and bought Surface devices because they can use them to do real work.
I actually agree with you and others pitching Microsoft products as a better replacement for this sort of thing, for sure. I use the iPad Pro because I already had it, having purchased it for a different reason entirely. My only gripe with a Surface product would be the Windows part of it, which isn't THAT bad and like you said, they have a pretty clear vision for the future of it.
I switched from a MacBook to a Surface Pro (i5) maybe a year ago and just finished switching back to the same MacBook. I agree that Microsoft's vision for pro users is much clearer than Apple's, which is why I switched in the first place. The Surface hardware is solid for the most part, the Surface Dock is great, the pen is occasionally useful, and I really like being able to rip off the keyboard and use it as a tablet for reading instead of carrying another device. But between missing the craftsmanship of indie Mac apps and putting up with the general flakiness of Windows, I finally gave up on the Surface. Now maybe it would've helped if I got the i7 Surface (& 16 gb RAM) and just put up with the resulting fan noise (or went with the Surface Book instead), but I think it says something about the state of Windows that my 1.3 GHz Core M MacBook is smoother and more reliable than a Surface Pro that's 3 years newer and has double the clock speed.
Apple, too, though. Apple needs to show via their hardware choices that they're still committed to developers and other pros, and Microsoft needs to keep cleaning up Windows.
I think it's very easy to take a narrow view of "professional" here. iOS may never be a viable macOS replacement for programmers (although I don't think I'd place money on that), but there are professionals out there right now editing podcasts with Ferrite, editing videos with LumaFusion, doing multitrack music sequencing with Beat Maker, editing photos with Lightroom (and a host of other apps), writing Hollywood screenplays with Slugline or novels with Scrivener -- and doing a lot of more "mundane" work that is nonetheless absolutely professional level with Microsoft Office, Keynote, OmniGraffle, and others.
What an iPad will absolutely never do is mimic an existing workflow. People who try to do that are going to hit brick walls fast. I wouldn't be surprised to see full-fledged programming environments on iOS in the next few years (and to see iOS itself open up in possibly surprising ways), but I suspect they aren't going to look much like the programming environments we're used to.
I'm glad people love their Surfaces. They look like great devices. And, yeah, I wish I could do web development more easily on my iPad. But I'm a technical writer and a fiction writer, do both professionally, and have used the iPad to do (gasp) real work in both fields.
It's clear that some "professional" work can be done on an iPad. Depending on your use case it might even have some advantages compared to a desktop or laptop. But for the vast majority of cases the iPad equivalent, if it exists at all, is seriously underpowered compared to the desktop options.
And there are some fundamental reasons why I expect it to stay this way. Mainly that touch is a very low resolution input mechanism but also that Apple has utterly failed to create a healthy market for sustainable professional software businesses.
Laptops, tablets, code and keyboards are pretty much set, they're not changing regularly. To code comfortably you need a keyboard, that's the tool for the job and one that tablets do not have. Sure you can add an external one, but then you've basically got a locked down laptop.
Just look at the the comments here, at best the iPad seems to be capable of acting as a dumb terminal to interact with a keyboard for a remote server, I wouldn't consider that coding on an iPad.
Looks like you're intentionally missing the point. The iPad is a tablet, and yes, it's functionality is changing every iteration - slightly with hardware, more so with the OS.
Currently the iPad might not seem capable of much wrt programming, but it is changing. Therefore someone tests it out periodically. And you don't have to like it. It doesn't have to be you testing the thing out. You're completely free to live an iPad-free life.
As a long time iPhone and iPad owner, I find iOS intolerable and it gets worse with every release.
Coding on an iPad would be like trying to prepare a 5 course dinner on a kid's Fisher Price kitchen or building an intricate model with Duplo Lego bricks. Maybe possible, but a terrible experience.
I am genuinely baffled by "iOS gets worse with every release." If you wanted to argue that iOS's approach to multi-pane displays, application switching, and file management, should be better than it is now, sure, absolutely. But when I consider the improvements in the past few years -- the dock, split view, drag and drop, file providers, Shortcuts -- I confess I'm not thinking, "Man, I long for all the power and utility we had in iOS 6 that's lost to us now."
I mean, yes, iOS is still by and large a terrible coding environment, there are a host of long-standing complaints I have with other things both large and small, and I don't doubt I could find a few weird little annoying regressions, but I absolutely wouldn't want to run an earlier version of iOS on my iPad.
I don't write mobile apps, so I have no idea about the coding environment, but the last several upgrades have consistently annoyed me. It seems there's a lot of change for the sake of change; more things tied into iCloud and other Apple services; upgrade prompts that prompt over and over and over and over again; etc..
And then there are several annoying bugs they don't fix, like having to reboot my phone after tethering my laptop (a Macbook) before I can tether again.
personally, i hate having to drag an ipad and mbp along everywhere i go, ideally if i could carry just my ipad, that would perfect.
from all the marketing for the latest ipad, i think they’re moving more towards this vision, from the ipad page:
“Like a computer...”
“A12X Bionic is the smartest, most powerful chip we’ve ever made. It has the Neural Engine, which runs five trillion operations per second and enables advanced machine learning.
Translation: It’s faster
than most PC laptops.“
“It’s all new, all screen, and all powerful. Completely redesigned and packed with our most advanced technology, it will make you rethink what iPad is capable of.
And what a computer
is capable of.”
either their marketing team doesnt know about this breed of developers that need to compile software and are just trying to get the masses to replace their laptops or they know about us and are looking to truly replace the macbook pro with ipad.
Since the best options currently rely on remote programming and browser-accessed IDEs, has anyone tried using a remote desktop tool, Parallels Access, TeamViewer, or VM software to simply remotely program? I can't imagine it'd be great still…
I was really surprised that many of the web IDEs don't support the external keyboard in iOS.
I haven't tried repl.it, but the ace editor (which cloud9 uses) doesn't support the arrow keys on the external keyboard for iOS which is a deal breaker for me.[1]
Code Sandbox [2] however allows you to select which editor (Monaco or CodeMirror) and CodeMirror has a fix for handling the arrow keys. I've found Code Sandbox works pretty well on my iPad - it has a nice Github integration so I can commit directly or open pull requests from the web IDE.
I tried using a chromebook to develop about 12-18 months ago and tried both cloud9 and repl.it.
I found cloud9 a bit annoying to use. It basically spins up an EC2 instance for you that you are then connecting to, so you have pretty much a full file system which was cool, but it felt like they were really pushing Lambda as the way to go. Trying to run a bunch of dockerized microservices on a single instance (which is what our infrastructure is) was possible, but it just felt like an uphill battle, so I abandoned it.
Repl.it was much easier to work with, IMO. The problem I ran into was that it worked well for small projects or prototyping, but became a pain if I had to switch between multiple projects regularly.
IMO, both were cool and overall fairly solid, but there were just too many little annoyances that piled up that I don't get with my current local development set up. It just felt like I spent a lot of my time configuring things or trying to hack things to fit my workflow.
That all being said, I'm not the most patient person with new tools and this was a while ago, things might have changed or may fit your development style better. I'd say they are worth at least looking into.
Repl.it ceo here. We've evolved a lot in the past 18 months, most importantly we added priper file and filetree support! Give it another shot and email me with feedback so we can get better.
Oh, and we have a big sprint coming up for better support for tablets and touch in general.
I haven’t looked into it beyond typing a couple of lines into the terminal but I’m wondering how useful iSh will be for people trying to go down this road.
From https://ish.app - “iSH is a project to get a Linux shell environment running locally on your iOS device, using a usermode x86 emulator.”
I’ve been using this for the past few days on an iPad, and so far, it’s been great. There are plenty of syscalls that aren’t working, but it’s far more functional that I anticipated. In fact, playing with iSH on my phone for a month or so is what convinced me to get the iPad at all.
I haven’t been able to try too much coding in iSH as opposed to SSHing out to a server, but that’s one use-case that’s on their radar.
Codea [0] provides a nice Lua development sandbox and will export projects that can be turned into standalone apps via Xcode.
It is geared towards game development and is currently somewhat locked down with respect to importing/exporting, compared to Pythonista. It does play well with Working Copy [1] though.
Codea is awesome. It has so many features and a ton of great examples. You can build the app entirely using an iPad and then export it as an Xcode project when you’re ready to distribute it.
I've had some luck using http://continuous.codes to write small C# and F# apps/games. I wish it were more actively developed because there is so much potential there.
I'm struggling to work out why anyone would want to do this. Leaving aside the other concerns, I personally find input via touchscreen pretty painful and can't imagine being able to program at any real speed. It's entirely possible I'm missing something though!
I'd say coding using just a touchscreen would be terrible, but keep in mind that tablets aren't limited to just the touchscreen. In fact, you can plug a full-sized mechanical keyboard into an iPad (though the more common keyboard is likely the smartcover.
> I'd say coding using just a touchscreen would be terrible
Text-based coding, sure. But the jury is still out for visual programming systems, of either the Scratch (syntax expressed via custom "puzzle pieces") or the LabVIEW (flow-based semantics) kind.
Agreed. Basically all my programming is backend / CLI projects. I'd almost certainly have had a different result if I'd tried writing frontend (especially native) apps from an iPad
How is the jury still out given that nobody uses anything like this for anything real beyond learning and labview dates back to 1983 and scratch to the early 2000s.
Language is the means by which human beings describe abstract data in a dense concise easy to encode and decode fashion. This is true whether its spoken or written. That it is the means we express code is unsurprising.
Lets put it another way. I'm typing this response to you on a keyboard. Can you imagine a way via drawing a picture that I could have in moments conveyed these thoughts by drawing you a picture?
I have the attachable keyboard stand that sits comfortably on my knee when I'm on the train. I can type as fast on that as I can a laptop. Honestly with a half decent IDE/dev toolchain it would be a fantastic little lightweight setup for coding.
I’m able to get an absurd amount banged out with just my thumbs. I’ve taken comprehensive meeting notes this way. Possibly the reason to do it for coding would be the ability to code from anywhere for quite a while on battery/cell. Mosh does not take up much bandwidth or power.
As an example, I worked on some professional projects over mosh on my iPhone to my home network from work. My job at the time made a lot of time demands on me, but I had already mastered whatever professional growth I could in that position - so I took to setting up and learning tech that way.
This is fascinating - thank you so much for replying. I used to have input speed back when we had physical buttons on phones but with the advent of touch-screens, that has deteriorated for me. I hadn't considered how useful it would be to have when a small laptop isn't available. Another commenter mentioned working on a train; I can certainly see the use-case. Thanks for the insight!
Echoing others, I use a physical keyboard. Unfortunately I'm limited to the smart keyboard cover Apple sells, mostly because I'm too cheap or lazy to buy a better one, but much better ones do exist.
Since the new iPads Pro have USB-C connections, one can just plug any old keyboard in and it works fine.
I've done this on occasion with my Ergodox, it's quite comfortable. Granted, I mostly use the iPad for tasks which are more suited to the Pencil, but it's there if one wants it.
> I personally find input via touchscreen pretty painful and can't imagine being able to program at any real speed
With Logitech Create Pro keyboard on iPad 12.9, it is comparable to a laptop. 4:3 HiDPI screen has more vertical space than 16:9 laptops. Arm processor means instant on, long battery life, fanless/silent, fast charging and never gets hot in your lap. The web browser is faster (by feel and benchmark) than some x86 devices.
Git is available locally (Working Copy) and some apps support in-place editing across apps.
Hopefully Apple makes it possible to run Jekyll and other static web servers on iOS.
I think the parent means that x86 devices, specifically a favorite of mine, the Surface Pro, can provide mostly all of that and then some, but without the hassle of iOS:
* 3:2 screen ratio, 267 PPI
* Despite an i5 it has instant on, connected standby, LTE built in
I carry all 3 (iPad Pro, MacBook Pro, Surface Pro) with me (work reasons), but the Surface hardly gets used as it is inferior to the iPad as a tablet and as a computer to the MacBook. I'm interested in moving to VDI based on the iPad when roaming, but I want to move to the 12" first since my Horizon View desktop feels a bit tight on the smaller one.
> You Probably Can’t Run Your Code on iOS Unless It’s Python
What about JavaScript? IIRC React Native uses the JavaScriptCore engine, which Apple offers to "provide the ability to evaluate JavaScript programs from within Swift, Objective-C, and C-based apps". [1]
I actually just recently tried to use an iPad Pro for coding (more specifically, I tried to not use my laptop at all for several days, fully replacing it with an iPad).
My experience was that coding was definitely not as smooth as on my laptop, but I took an approach several folks here have called out: using a cloud-based VM and connecting to it remotely. I used the Termius app, which was pretty solid.
I did/do the exact same thing. I have an AWS nano server purely for coding on, and I use tmux/vim on it via Termius. I hadn't consulted the internet for resources, just kinda stumbled my way through it, so good to know I'm not very much alone. It works quite well for what I need it for (systems programming) and there are even better options for web app programming. I haven't explored doing native GUI applications but it can be likely overcome.
Termius is probably one of the best apps I've ever used, period. It's very well-made and well-designed and I had no qualms shelling out for the full version even though I hardly needed the extra features.
I still prefer a Linux/Mac/Windows OS but this is pretty handy once you get the hang of it.
It seems like in this case you're not really coding "on" an iPad and it's really just more of a dumb terminal. Wouldn't any device with a browser be just as good in this case?
It’s a very lightweight device with an excellent screen, impressive battery life, and the option for built-in LTE. But yeah, in terms of functional capability to connect to a server and type stuff, other devices would work as well.
Also an excellent tablet when you’re doing non-coding stuff.
Yeah I get the upsides but if the debate is really around whether or not an iOS device can be used for real work I'm not sure this really makes the case. It's also massive overkill to use such a powerful device as a web terminal.
I guess another way to state what I'm saying is that when the iPad first launched there was a lot of speculation about what new kinds of productivity apps would be enabled by a big, fast touchscreen device like this. So far the answer seems to be "not many".
I don't know that I can agree here. I use an SSH app to do programming, which is largely "I type a bunch and run shell commands". I never expected that touchscreens would take over my coding workflows.
By contrast, the iPad has been pure joy for basically everything else. They've finally gotten multitasking support to what (for me) is an excellent balance between allowing multitasking and helping me avoid context-switching that was killing my productivity with my laptop. The support for diagramming / note-taking is amazing, which is a big part of my daily computer usage.
I suspect it mostly comes from the iPad being a great all around device and a desire to consolidate. Given the choice I’d rather give up my laptop than my iPad.
A powerful desktop if I need that performance is a lot cheaper to keep around than a powerful laptop (or both).
I don't think I disagree with you about what role the tablet plays in my setup.
The other features of the iPad made it desirable for me, over carrying a laptop, and the remote VM solved the "how can I write code while only carrying around an iPad" problem. The fact that I'm doing it by using the iPad as a thin client for a remote VM is mostly transparent for me, given my use case.
This is fairly easily worked around for sites that look at the user agent — just build a browser app around WKWebView and set its user agent to that of desktop Safari, and boom, you’ve got desktop versions of most sites. There are a few that judge which version to deliver based on screen resolution + OS, but this can sometimes be worked around by injecting some JS to force use of desktop stylesheets. There’s probably some kind of trickery you could use to spoof screen resolution if needed, too.
The problem is, safari is better for a lot of things, and also has native adblocker integration. Would be better to be able to designate a desktop user agent in safari as well.
WKWebViews support the same JSON content blocking lists that Safari uses for its content blocking extensions, so while you can’t support the same extensions as Safari you could at least bundle block lists with the app.
I attempted to use an iPad pro as a primary device for a few weeks. It seemed to be more than just the user agent. Things were rendered wrong, it seems some browser defaults we're also different so if the site developers assumed they were there, it looked funny. Switching to "request desktop site" wasn't always a solution
I hope I'm wrong, but it sounds like you're arguing against responsive webdesign.
Any decent website should look exactly the same on the iPad and a desktop window of equal size. If it doesn't, the developer rather than the browser is to blame.
the problem is that most websites want things to look "exactly" a certain way and use responsive to hit you with this jackboot. it is genuinely painful to use some sites like reddit nowadays coz of the wasted space
There will always be different user expectations and, unfortunately, plain bad design decisions. Reddit's new design probably belongs in that category.
I don't see how that is Safari's problem to solve. The original claim was that Safari on iOS isn't a "full" browser, which I can't agree with.
Cloud9 shuttered once they got bought by AWS and now they're built into the AWS console/ecosystem. I tried it but found it pretty terrible given a couple shots at it. I found Termius + a development server (EC2 instance, much like Cloud9 sets up for you anyway) much more reliable and easy to use.
I use it on the job when working in AWS with no problem, but it definitely doesn't seem to have been developed with mobile strongly in mind. The experience is stark.
If Node-red wasn't such a mess, had a better UI (less mouse/typing required, touchscreen-friendly) and a proper native runtime on ios, I'd fancy using it...
Blink (mentioned in the post) is a fantastic app. It's open source [1], or you can buy it from the App Store.
Not mentioned in the post, Blink can do port forwarding with the usual ssh tool (ssh -L 5000:localhost:5000 myhost.com). It also provides a shell-like mode of interaction with the local file system and iCloud, so you can `scp` files around between the iPad and your server.
Programming is not just about programming tools, it is about the OS environment.
I prefer being able to arrange things anywhere, and the iPad has always bugged me by rationing shared-app screen space as if I’m a child (you get up to this fraction of the screen but it must be arranged only “here”; or, you can picture-in-picture but only the specified way; etc.). My first iPad was wonderful for web browsing until web sites started doing exactly the same rationing, “locking in” some arrangement that they deemed appropriate, to hell with my preferences. Even the iOS launch screen is irritating, with icons wastefully arranged in a specific way that looks like no desktop I have ever had; and the Files app is not much more useful for navigating. The OS is about 5 years overdue for a “put stuff wherever the hell I want” capability.
And unfortunately, basic editing is also nowhere near where it needs to be on iOS. No matter how many hacks they add, cursor movement is still simply bad: it is way too hard to do the kind of precise changes I need to do. Pop-up menus are overloaded. The keyboard layout is asinine: unlike a physical keyboard, there is no room between the Delete and Return keys so I am constantly committing things early that I am still editing. (In cloud-sync apps like Notes, I occasionally permanently destroy text because I accidentally do something that is then screwed up on all other devices instantaneously for my convenience. When entering something like a URL, I regularly start “loading” an incompletely-typed address accidentally because the keyboard thinks I said Go.)
Therefore, there is no way I would use a tablet until they essentially recreate proper window, file and cursor management with full arbitrary resize and effortless dragging and plenty of keyboard short-cuts. This feels like a consequence of Apple perhaps splitting up the iOS and Mac teams too much: the Mac did have quite a bit and it’s almost like they’re being told to consider none of it and just invent everything anew, no matter how long that takes.
That way is fine, just like the cursor movement, but unfortunately only works on editable text. Copying text from web pages is where it gets really bad.
Some blame for this may belong to websites playing layout games with strange arrangements of nested tags, but when it comes down to it the browser needs to deal with that.
Oh right. Yes, text selection in safari is excruciatingly bad. I have no idea how apple hasn't fixed this. Especially since the apple pencil, a precise pointing device, should be able to make precise selections.
apple devices optimise for a mobile experience even on devices that have laptop like capabilities. looking at iOS on the latest iPad genuinely feels painful. if only Apple would consider the idea of porting macOS apps to iOS instead of the other way around
Why not use a Surface? It's built with a physical keyboard as a first class experience, and you're not limited in what you can run. The only limitation is the lack of a polished POSIX environment, but that will of course be missing on iOS too.
i develop typically 3 types of things, backend rest services, web apps, and mobile apps. for me to truly rid myself of my macbook pro, i would need the following, or equivalents:
1. the ability to start vm’s, preferably locally, i use these to run persistent services like redis, rabbitmq, databases, etc. i have this philosophy where my dev env needs to get as close as possible to the production env (at least from a software stack perspective) which means linux, yet it cant cost me as much as a production env. homebrew is great, but i try to stay away as much as possible because it’s a little different from my production env. accessing an ec2 instance or rds instance to access my postgres database is a bit overkill, i want things fast during development, ie local. sometimes i’m in places with no wifi or 4g coverage is spotty, this would be a nightmare.
2. i use visual code for all development, sometimes vi if i dont have a gui env, visual code is lightweight and pretty solid. i’m not 100% stuck on visual code, so if there’s some browser based derivative of it or wsywig for coding then i’m good. visual code is written in electron so nodejs, so i dont think it’s impossible. web development, html, js, css, this can all be done on an ipad relatively well, all the browsers i need to support are available. there’s typically no compilation that needs to happen, unless you’re using nodejs modules on your frontend. i seem to remember some company providing a cloud service that allows you to develop remotely, i think they were bought by github/msft or someone. kind of an interesting area.
3. backend dev, typically i use golang, this becomes a bigger problem, surely i could ssh somewhere and compile, or use some x11/vnc-like tool since i prefer a graphical ide, but that defeats the purpose of my 1000 usd ipad. it’s not really a dumb terminal or thin client per se, i have enough compute power, i want to leverage it. plus i’d need to be spending all this money on ec2 like instances.
4. xcode, this is another major issue, i’m stuck on xcode, sure i could use xamarin, but i dont think that runs on ios yet either. if this were resolved, i could strongly consider scraping my macbook pro.
sounds kind of interesting if there could be a monthly service that could be purchased that provides you with remote dev envs without all the fuss of installing, managing any of it. e.g. i write code in a browser ide, it gets compiled in the cloud somewhere, deployed, and i can access it. i can connect different services to it, and testing is fully automated. i think i’d consider paying for something like this, but it’d have to be relatively cheap because otherwise i might as well do everything myself locally. i’m thinking 5 usd a month max.
i havent used chromebook, but i think it’s closer to a dev env than ipad pro at the moment, i think you can even start containers and such on it.
many tried, many failed. even apple themselves couldn't get users to adopt 3D touch after multiple years of very expensive engineering. probably going to be removed from iOS devices next year.
your finger has 3 articulation points, your hand has 5 fingers. the touch interface uses maybe two points out of all this complicated mechanism - it's fundamentally frustrating to use. it's fine for when a phone is cradled precariously on your palm/little finger but an iPad instantly makes you think "why can't i have a mouse or something"
For those of us married to emacs: I would love to know if anyone has succeeded in using SSH on an iPadPro with a sensible mapping of the keyboard. Every SSH I tried had some intercept of control sequences, which was fatal as far as I was concerned. This was at least couple of years ago, so perhaps there's been progress.
So far, the only usable iPadPro emacs is via uVNC to a graphical remote machine, which does seem to provide unhindered transmission of control/meta combination key events when using an external keyboard.
Pointers/corrections/tips/advice welcome.
Edit: Any reviews on ssh with Blink to a remote machine to run emacs?
To give an example and add some context: just last week I thought of a possible bug and gap in the test coverage for a personal project. Within a Zsh prompt, I pulled the latest revision from Bitbucket using Mercurial, used Emacs (via the Hacker's Keyboard [1] soft keyboard) to edit the test suite and add a couple of lines, then used CMake to generate a makefile for GNU Make to build the project using Clang, and finally ran the test suite and confirmed the expected segfault.
All of this was done locally (except for the pull, obviously) from within a Termux [2] session on a sub-$300 Android phone. Granted, the full test suite takes about 14x longer to run on my phone compared to my aging desktop and it's tedious to type very much, but as the old saying goes: "The marvel is not that the bear dances well, but that the bear dances at all."
I love Blink, it’s perfect for a remote emacs session. I use esc for alt, capture CTRL-space. You may have to rebind some control sequences, I don’t have that handy, but almost everything gets passed through. Only thing I can think of that doesn’t is F key sequences, and that’s probably for lack of trying.
Edit: this is with an external keyboard. YMMV with the on screen keyboard, but I haven’t noticed any issues the few times I’ve done quick edits with it.
This is the reason I ditched the iPad for a Surface. Windows isn't my preferred environment but the ability to run my normal tools (IDEs, command line tools, etc) really was a game changer.
iPad Pro is great for creative workflows, but it's a shame it leaves programmers in the dust. It would be really great even to see something like XCode come to iOS
I own a Surface device, an iPad Pro, and a Macbook Pro. While I write code on all of them, macOS is still the king of development environments.
On macOS, you can just work. That's what the end goal should be in other platforms. I doubt iOS will ever get there. I mean, how are you supposed to copy and paste code from Vim running in tmux inside of Blink? With your finger? Hell's bells!
Windows is just too weird. If you compare them strictly from the perspective of using Vim, Windows is better than iOS. You can use Vim from WSL or a VM in a nice Linux terminal like Tilix running on a Windows-native X server. Boom, Vim is running right alongside your Python interpreter, $GOPATH, etc., and copy and paste works. (Let's set aside the fact that WSL is crawling with problems.) But if you use Windows, you'd kind of expect to be able to use more than Vim, right?
That ends up being a pit of snakes... multiple Windows-native X servers I've tried have problems rendering Intellij, and I've tried to get native Windows editors like VS Code to work smoothly with interpreters hosted in WSL or VMs. Only Intellij can really do it properly, and even then it depends on the language. It ends up being just another distraction.
Then there's running Linux desktop on a VM in Windows 10. I don't know how other people do this. Even with a beefy machine with two GPUs, no modern Linux window manager is performant enough to use. If you can find one like xfce that is fast enough, you end up having to manage the scaling on individual programs when you switch between high DPI and lower DPI displays. It's bananas!
So purely from the perspective of access to any tool you want to use and limiting distractions, macOS is still the best. I'm rooting for Windows, but only because I have a 2017 MBP and the new keyboards are painful to type on.
I don’t find OS X any easier than windows or linux. It all just works. And never had any issue running linux in a vm on windows.
I think at the end of the day it’s all personal preference. I prefer windows. But have no problems in linux or OS X. Granted I won’t be buying another MacBook anytime soon. Just switched to Lenovo.
Maybe the fault is due to the user. Windows just works for me and is only desktop OS that allows you to be productive without spending countless hours debugging compatibility issues. And no real development happens with Python anyhow.
For python and go why use WSL or a VM or an Xserver at all? Install the mingw tools and use native builds of everything with the native window manager. You can use a VM to test cross OS compatibility at the end.
When you run whatever OS inside a VM, chances are that they are not using any GPU you have available in the host (unless you spent your time with making vfio work). Instead, they are using emulated graphics, which isn't exactly high performance with any guest os.
Anyway, the important thing to achieve performance inside VM is storage, not graphics. If your VM is stored inside a file on the host filesystem, it is going to be way slower compared to VM using dedicated partition, lv or physical disk passed through. The effect is the same, as using classic HDD vs SSD in your host.
Surface supports Ubuntu 18 out of the box pretty well for regular use. The caveats are the touch screen doesn't work, I had to make a one line fix to get WiFi to stop failing randomly, and setting up luks at install time can't be done without an external keyboard because the type cover isn't recognized at boot until a one line fix is made, but that's it! I've used it as my daily setup for several months without issue. As a backup I have a Windows to go instance on an external SSD that I can fire up.
195 comments
[ 1.4 ms ] story [ 236 ms ] thread[0] https://news.ycombinator.com/item?id=18430031 [1] https://github.com/tbodt/ish
It will never be ready, it's the wrong tool for the job. Trying to use the wrong tool for the job is stupid, do you routinely try to hammer nails with a screwdriver to see if it's ready yet?
An iPad becoming a laptop-replacement is happening - its progress is debatable, but it's definitely changing on each iteration.
Microsoft seems to have a much clearer vision here and anecdotally I know quite a few people that have been Mac users for ages that have given up on iPads and bought Surface devices because they can use them to do real work.
What an iPad will absolutely never do is mimic an existing workflow. People who try to do that are going to hit brick walls fast. I wouldn't be surprised to see full-fledged programming environments on iOS in the next few years (and to see iOS itself open up in possibly surprising ways), but I suspect they aren't going to look much like the programming environments we're used to.
I'm glad people love their Surfaces. They look like great devices. And, yeah, I wish I could do web development more easily on my iPad. But I'm a technical writer and a fiction writer, do both professionally, and have used the iPad to do (gasp) real work in both fields.
And there are some fundamental reasons why I expect it to stay this way. Mainly that touch is a very low resolution input mechanism but also that Apple has utterly failed to create a healthy market for sustainable professional software businesses.
What’s real work?
Laptops, tablets, code and keyboards are pretty much set, they're not changing regularly. To code comfortably you need a keyboard, that's the tool for the job and one that tablets do not have. Sure you can add an external one, but then you've basically got a locked down laptop.
Just look at the the comments here, at best the iPad seems to be capable of acting as a dumb terminal to interact with a keyboard for a remote server, I wouldn't consider that coding on an iPad.
Currently the iPad might not seem capable of much wrt programming, but it is changing. Therefore someone tests it out periodically. And you don't have to like it. It doesn't have to be you testing the thing out. You're completely free to live an iPad-free life.
I think that’s exactly why apple doesn’t allow this at all...
As a long time iPhone and iPad owner, I find iOS intolerable and it gets worse with every release.
Coding on an iPad would be like trying to prepare a 5 course dinner on a kid's Fisher Price kitchen or building an intricate model with Duplo Lego bricks. Maybe possible, but a terrible experience.
So what am I missing?
I mean, yes, iOS is still by and large a terrible coding environment, there are a host of long-standing complaints I have with other things both large and small, and I don't doubt I could find a few weird little annoying regressions, but I absolutely wouldn't want to run an earlier version of iOS on my iPad.
And then there are several annoying bugs they don't fix, like having to reboot my phone after tethering my laptop (a Macbook) before I can tether again.
Same look feel etc. maybe with some touch gestures if it works well
from all the marketing for the latest ipad, i think they’re moving more towards this vision, from the ipad page:
“Like a computer...” “A12X Bionic is the smartest, most powerful chip we’ve ever made. It has the Neural Engine, which runs five trillion operations per second and enables advanced machine learning. Translation: It’s faster than most PC laptops.“ “It’s all new, all screen, and all powerful. Completely redesigned and packed with our most advanced technology, it will make you rethink what iPad is capable of. And what a computer is capable of.”
either their marketing team doesnt know about this breed of developers that need to compile software and are just trying to get the masses to replace their laptops or they know about us and are looking to truly replace the macbook pro with ipad.
I haven't tried repl.it, but the ace editor (which cloud9 uses) doesn't support the arrow keys on the external keyboard for iOS which is a deal breaker for me.[1]
Code Sandbox [2] however allows you to select which editor (Monaco or CodeMirror) and CodeMirror has a fix for handling the arrow keys. I've found Code Sandbox works pretty well on my iPad - it has a nice Github integration so I can commit directly or open pull requests from the web IDE.
[1]: https://github.com/ajaxorg/ace/pull/3172 [2]: https://codesandbox.io
I found cloud9 a bit annoying to use. It basically spins up an EC2 instance for you that you are then connecting to, so you have pretty much a full file system which was cool, but it felt like they were really pushing Lambda as the way to go. Trying to run a bunch of dockerized microservices on a single instance (which is what our infrastructure is) was possible, but it just felt like an uphill battle, so I abandoned it.
Repl.it was much easier to work with, IMO. The problem I ran into was that it worked well for small projects or prototyping, but became a pain if I had to switch between multiple projects regularly.
IMO, both were cool and overall fairly solid, but there were just too many little annoyances that piled up that I don't get with my current local development set up. It just felt like I spent a lot of my time configuring things or trying to hack things to fit my workflow.
That all being said, I'm not the most patient person with new tools and this was a while ago, things might have changed or may fit your development style better. I'd say they are worth at least looking into.
Isn't this the same infrastructure your microservice will run on in the end?
Oh, and we have a big sprint coming up for better support for tablets and touch in general.
From https://ish.app - “iSH is a project to get a Linux shell environment running locally on your iOS device, using a usermode x86 emulator.”
I haven’t been able to try too much coding in iSH as opposed to SSHing out to a server, but that’s one use-case that’s on their radar.
It is geared towards game development and is currently somewhat locked down with respect to importing/exporting, compared to Pythonista. It does play well with Working Copy [1] though.
[0] https://codea.io
[1] https://workingcopyapp.com
Text-based coding, sure. But the jury is still out for visual programming systems, of either the Scratch (syntax expressed via custom "puzzle pieces") or the LabVIEW (flow-based semantics) kind.
How many more decades of failure do we need before we decide the jury is in and visual programming is a dead end?
https://www.alteryx.com/products/alteryx-platform/alteryx-de...
Language is the means by which human beings describe abstract data in a dense concise easy to encode and decode fashion. This is true whether its spoken or written. That it is the means we express code is unsurprising.
Lets put it another way. I'm typing this response to you on a keyboard. Can you imagine a way via drawing a picture that I could have in moments conveyed these thoughts by drawing you a picture?
As an example, I worked on some professional projects over mosh on my iPhone to my home network from work. My job at the time made a lot of time demands on me, but I had already mastered whatever professional growth I could in that position - so I took to setting up and learning tech that way.
I've done this on occasion with my Ergodox, it's quite comfortable. Granted, I mostly use the iPad for tasks which are more suited to the Pencil, but it's there if one wants it.
The same reasons why ipads are always shoe horned into a role beyond content consumption.
* Laptops go to sleep when not plugged in or being interacted with. The iPad can provide sound notifications all day on battery power.
* LTE means that the communication lines are always open
* Almost everyone treats iOS apps as first class citizens. Skype on macOS is often buggy. Linux often has outdated clients.
* Instant power on
* Longer battery life
* Notifications appear even when the app is not running.
* A really sane operating system update schedule and procedure.
* A really sane app update procedure.
With Logitech Create Pro keyboard on iPad 12.9, it is comparable to a laptop. 4:3 HiDPI screen has more vertical space than 16:9 laptops. Arm processor means instant on, long battery life, fanless/silent, fast charging and never gets hot in your lap. The web browser is faster (by feel and benchmark) than some x86 devices.
Git is available locally (Working Copy) and some apps support in-place editing across apps.
Hopefully Apple makes it possible to run Jekyll and other static web servers on iOS.
* 3:2 screen ratio, 267 PPI
* Despite an i5 it has instant on, connected standby, LTE built in
* 9h of web browsing on battery: https://www.anandtech.com/show/13471/the-microsoft-surface-p...
* Fanless
* Charges in 2h40m
* Does not get hot
* Can run everything from games to servers to IDEs to scripts
* Not a walled garden
What about JavaScript? IIRC React Native uses the JavaScriptCore engine, which Apple offers to "provide the ability to evaluate JavaScript programs from within Swift, Objective-C, and C-based apps". [1]
[1]: https://developer.apple.com/documentation/javascriptcore
My experience was that coding was definitely not as smooth as on my laptop, but I took an approach several folks here have called out: using a cloud-based VM and connecting to it remotely. I used the Termius app, which was pretty solid.
I got my initial inspiration from http://yieldthought.com/post/12239282034/swapped-my-macbook-... (and the followup http://yieldthought.com/post/31857050698/ipad-linode-1-year-... )
Termius is probably one of the best apps I've ever used, period. It's very well-made and well-designed and I had no qualms shelling out for the full version even though I hardly needed the extra features.
I still prefer a Linux/Mac/Windows OS but this is pretty handy once you get the hang of it.
Also an excellent tablet when you’re doing non-coding stuff.
I guess another way to state what I'm saying is that when the iPad first launched there was a lot of speculation about what new kinds of productivity apps would be enabled by a big, fast touchscreen device like this. So far the answer seems to be "not many".
By contrast, the iPad has been pure joy for basically everything else. They've finally gotten multitasking support to what (for me) is an excellent balance between allowing multitasking and helping me avoid context-switching that was killing my productivity with my laptop. The support for diagramming / note-taking is amazing, which is a big part of my daily computer usage.
A powerful desktop if I need that performance is a lot cheaper to keep around than a powerful laptop (or both).
The other features of the iPad made it desirable for me, over carrying a laptop, and the remote VM solved the "how can I write code while only carrying around an iPad" problem. The fact that I'm doing it by using the iPad as a thin client for a remote VM is mostly transparent for me, given my use case.
Edit: and of course mouse/trackpad support
The problem is, safari is better for a lot of things, and also has native adblocker integration. Would be better to be able to designate a desktop user agent in safari as well.
Firefox focus is the only third party browser I know of that has a native content blocker.
So really it's a site's use of user agent rather than media queries which is breaking things for you?
Any decent website should look exactly the same on the iPad and a desktop window of equal size. If it doesn't, the developer rather than the browser is to blame.
I don't see how that is Safari's problem to solve. The original claim was that Safari on iOS isn't a "full" browser, which I can't agree with.
Pros:
- hardware: the keyboard is good, no connection issues, fast NVMe if you get the 128Gb model, LTE option to be always on
- windows: WSL, stable, good experience
- linux: great support if you are using the linux-surface kernel branch (only the webcams are not working - everything else works)
Meh, whatever. Is there any ETA for hardware support when using the Linux mainline kernel?
https://www.reddit.com/r/SurfaceLinux/comments/94hjxv/surfac...
Always feel there is heavy grading on a curve whenever the iPad is involved.
Not mentioned in the post, Blink can do port forwarding with the usual ssh tool (ssh -L 5000:localhost:5000 myhost.com). It also provides a shell-like mode of interaction with the local file system and iCloud, so you can `scp` files around between the iPad and your server.
[1]: https://github.com/blinksh/blink
I prefer being able to arrange things anywhere, and the iPad has always bugged me by rationing shared-app screen space as if I’m a child (you get up to this fraction of the screen but it must be arranged only “here”; or, you can picture-in-picture but only the specified way; etc.). My first iPad was wonderful for web browsing until web sites started doing exactly the same rationing, “locking in” some arrangement that they deemed appropriate, to hell with my preferences. Even the iOS launch screen is irritating, with icons wastefully arranged in a specific way that looks like no desktop I have ever had; and the Files app is not much more useful for navigating. The OS is about 5 years overdue for a “put stuff wherever the hell I want” capability.
And unfortunately, basic editing is also nowhere near where it needs to be on iOS. No matter how many hacks they add, cursor movement is still simply bad: it is way too hard to do the kind of precise changes I need to do. Pop-up menus are overloaded. The keyboard layout is asinine: unlike a physical keyboard, there is no room between the Delete and Return keys so I am constantly committing things early that I am still editing. (In cloud-sync apps like Notes, I occasionally permanently destroy text because I accidentally do something that is then screwed up on all other devices instantaneously for my convenience. When entering something like a URL, I regularly start “loading” an incompletely-typed address accidentally because the keyboard thinks I said Go.)
Therefore, there is no way I would use a tablet until they essentially recreate proper window, file and cursor management with full arbitrary resize and effortless dragging and plenty of keyboard short-cuts. This feels like a consequence of Apple perhaps splitting up the iOS and Mac teams too much: the Mac did have quite a bit and it’s almost like they’re being told to consider none of it and just invent everything anew, no matter how long that takes.
https://mobile.twitter.com/stroughtonsmith/status/1061198300...
I find apple has gotten bad at ui discoverability. There's a ton of ios features I learned only through forums.
Some blame for this may belong to websites playing layout games with strange arrangements of nested tags, but when it comes down to it the browser needs to deal with that.
1. the ability to start vm’s, preferably locally, i use these to run persistent services like redis, rabbitmq, databases, etc. i have this philosophy where my dev env needs to get as close as possible to the production env (at least from a software stack perspective) which means linux, yet it cant cost me as much as a production env. homebrew is great, but i try to stay away as much as possible because it’s a little different from my production env. accessing an ec2 instance or rds instance to access my postgres database is a bit overkill, i want things fast during development, ie local. sometimes i’m in places with no wifi or 4g coverage is spotty, this would be a nightmare.
2. i use visual code for all development, sometimes vi if i dont have a gui env, visual code is lightweight and pretty solid. i’m not 100% stuck on visual code, so if there’s some browser based derivative of it or wsywig for coding then i’m good. visual code is written in electron so nodejs, so i dont think it’s impossible. web development, html, js, css, this can all be done on an ipad relatively well, all the browsers i need to support are available. there’s typically no compilation that needs to happen, unless you’re using nodejs modules on your frontend. i seem to remember some company providing a cloud service that allows you to develop remotely, i think they were bought by github/msft or someone. kind of an interesting area.
3. backend dev, typically i use golang, this becomes a bigger problem, surely i could ssh somewhere and compile, or use some x11/vnc-like tool since i prefer a graphical ide, but that defeats the purpose of my 1000 usd ipad. it’s not really a dumb terminal or thin client per se, i have enough compute power, i want to leverage it. plus i’d need to be spending all this money on ec2 like instances.
4. xcode, this is another major issue, i’m stuck on xcode, sure i could use xamarin, but i dont think that runs on ios yet either. if this were resolved, i could strongly consider scraping my macbook pro.
sounds kind of interesting if there could be a monthly service that could be purchased that provides you with remote dev envs without all the fuss of installing, managing any of it. e.g. i write code in a browser ide, it gets compiled in the cloud somewhere, deployed, and i can access it. i can connect different services to it, and testing is fully automated. i think i’d consider paying for something like this, but it’d have to be relatively cheap because otherwise i might as well do everything myself locally. i’m thinking 5 usd a month max.
i havent used chromebook, but i think it’s closer to a dev env than ipad pro at the moment, i think you can even start containers and such on it.
That's not to say it cannot be done, or won't work in a pinch. It's just not the right tool to use in practice.
your finger has 3 articulation points, your hand has 5 fingers. the touch interface uses maybe two points out of all this complicated mechanism - it's fundamentally frustrating to use. it's fine for when a phone is cradled precariously on your palm/little finger but an iPad instantly makes you think "why can't i have a mouse or something"
So far, the only usable iPadPro emacs is via uVNC to a graphical remote machine, which does seem to provide unhindered transmission of control/meta combination key events when using an external keyboard.
Pointers/corrections/tips/advice welcome.
Edit: Any reviews on ssh with Blink to a remote machine to run emacs?
https://github.com/tbodt/ish
To give an example and add some context: just last week I thought of a possible bug and gap in the test coverage for a personal project. Within a Zsh prompt, I pulled the latest revision from Bitbucket using Mercurial, used Emacs (via the Hacker's Keyboard [1] soft keyboard) to edit the test suite and add a couple of lines, then used CMake to generate a makefile for GNU Make to build the project using Clang, and finally ran the test suite and confirmed the expected segfault.
All of this was done locally (except for the pull, obviously) from within a Termux [2] session on a sub-$300 Android phone. Granted, the full test suite takes about 14x longer to run on my phone compared to my aging desktop and it's tedious to type very much, but as the old saying goes: "The marvel is not that the bear dances well, but that the bear dances at all."
[1] https://github.com/klausw/hackerskeyboard
[2] https://wiki.termux.com/wiki/Main_Page, http://termux.net/dists/stable/main/binary-arm/
Edit: this is with an external keyboard. YMMV with the on screen keyboard, but I haven’t noticed any issues the few times I’ve done quick edits with it.
iPad Pro is great for creative workflows, but it's a shame it leaves programmers in the dust. It would be really great even to see something like XCode come to iOS
On macOS, you can just work. That's what the end goal should be in other platforms. I doubt iOS will ever get there. I mean, how are you supposed to copy and paste code from Vim running in tmux inside of Blink? With your finger? Hell's bells!
Windows is just too weird. If you compare them strictly from the perspective of using Vim, Windows is better than iOS. You can use Vim from WSL or a VM in a nice Linux terminal like Tilix running on a Windows-native X server. Boom, Vim is running right alongside your Python interpreter, $GOPATH, etc., and copy and paste works. (Let's set aside the fact that WSL is crawling with problems.) But if you use Windows, you'd kind of expect to be able to use more than Vim, right?
That ends up being a pit of snakes... multiple Windows-native X servers I've tried have problems rendering Intellij, and I've tried to get native Windows editors like VS Code to work smoothly with interpreters hosted in WSL or VMs. Only Intellij can really do it properly, and even then it depends on the language. It ends up being just another distraction.
Then there's running Linux desktop on a VM in Windows 10. I don't know how other people do this. Even with a beefy machine with two GPUs, no modern Linux window manager is performant enough to use. If you can find one like xfce that is fast enough, you end up having to manage the scaling on individual programs when you switch between high DPI and lower DPI displays. It's bananas!
So purely from the perspective of access to any tool you want to use and limiting distractions, macOS is still the best. I'm rooting for Windows, but only because I have a 2017 MBP and the new keyboards are painful to type on.
I think at the end of the day it’s all personal preference. I prefer windows. But have no problems in linux or OS X. Granted I won’t be buying another MacBook anytime soon. Just switched to Lenovo.
Anyway, the important thing to achieve performance inside VM is storage, not graphics. If your VM is stored inside a file on the host filesystem, it is going to be way slower compared to VM using dedicated partition, lv or physical disk passed through. The effect is the same, as using classic HDD vs SSD in your host.
I haven't tried personally but I've looked into it before.