On Code etc.

56 notes

iOS is anti-UNIX and anti-programmer.

When I was first learning about UNIX, and learning to use Linux, the most immediately powerful tool that I found was the shell’s pipe operator, ‘|’. Using the commandline (because at that point, linux GUI’s were not so well developed, and the few distros that tried to allow strictly graphical operation usually failed miserably) was at times difficult, and at times rewarding, but it was the pipe that opened up a whole world for me.

I can remember looking through an online student directory in highschool that had names, email addresses, etc. For student government elections it had become popular (if incredibly time consuming) to copy and paste the hundreds of email addresses and send a message to the every student. For me, with my newfound skills, it amounted to something like:

cat directory.txt | grep @ | awk '{print $3}' | perl -pe 's/\n/,/'

It seemed like magic at the time, and in some ways, it still does. What the shell (and UNIX in general) offered was composability - it gave you simple (but powerful) tools, and a standard way of linking them together - text streams. By combining those together, it offered immeasurable power, much more than any single tool. The mathematics of combinations guarantees this.

The more I use graphical interfaces (or anything that does not operate on text streams - commandline curses programs included), the more I am struck by how profound the loss of composability is - each program has to try to implement all the standard things (searching, sorting, transforming) that you might want to do with the information it has, and in that repetition lies inconsistencies and usually plain lack of power. The better ones share common libraries, and gain common functionality, but this only amounts to their least common denominator - two separate programs can not (easily) expose their higher functionality to each other (at least not it compiled languages) in the way that commandline stream processing programs can.

What I realized the other day, is that iOS is the extreme example of that lack of flexibility, taken almost to the point of caricature - the only interaction that is possible is through single applications that for the most part can have no connection to other applications. People rejoiced when copy and paste was added, but that celebration hides a sad loss of the true power that computers have. The existence of files - the only real way that composability is achieved in GUI systems (ie, do one thing, save the file, open with another program, etc) - has been essentially eliminated, and applications must therefore do everything that a user might want to do with whatever data they have or will get from the user.

I’d noticed before how frustrating it was for me to use iOS, but I wasn’t sure until recently exactly why that was, until I realized that it had effectively taken away the one thing that is so fundamental about computers, and why I am a programmer - the ability to compose. Every day I live and breath abstraction, and building things out of different levels of it, and the idea of not being able to combine various parts to make new things is so antithetical to that type of thinking that I almost can’t imagine that iOS was created by programmers. I remember looking at the technical specifications of the most recent iPhone and thinking - that is a full computer, and it’s small enough to fit in a pocket - that is a profound change in the way the world works. But it’s not a computer, it’s just a glorified palm pilot with a few bells and whistles.

Filed under programming iOS rants

  1. capuccinoproductions reblogged this from dbpatterson and added:
    Muy buen punto. De lectura recomendada. Vía Trivium
  2. binarysounds reblogged this from dbpatterson and added:
    write shell commands.
  3. joshgrobanspants reblogged this from dbpatterson
  4. jizaac reblogged this from dbpatterson
  5. onimoz reblogged this from viadesierto
  6. tunaranch reblogged this from dbpatterson and added:
    it’s a bit sensationalist (but...peg this on iOS. It’s true
  7. mgomezch reblogged this from dbpatterson
  8. viadesierto reblogged this from dbpatterson
  9. tariqk reblogged this from dbpatterson
  10. dubdromic reblogged this from dbpatterson
  11. couldvemovedmountains reblogged this from dbpatterson
  12. jdetails reblogged this from dbpatterson
  13. codefortytwo reblogged this from dbpatterson
  14. shauryashaurya reblogged this from dbpatterson
  15. boldewyn reblogged this from dbpatterson
  16. phobius-nerd reblogged this from dbpatterson
  17. hecticjeff reblogged this from dbpatterson
  18. baggetun reblogged this from dbpatterson
  19. acollectionofbits reblogged this from dbpatterson
  20. dbpatterson posted this