News for hackers. Stuff that matters.
Re:Fertile Ground by tolmasky on Tuesday June 11, 2013 @09:27PM (#5865870)
Yay change for change's sake.

This is exactly the wrong attitude in my opinion. How does it help users to all of a sudden have most apps feel ancient? Is it really something to be proud of? That for the next year we'll be working on replacing existing utilities so that they feel "right" and "fresh" instead of doing what we should be doing: thinking of actual new software that is worthwhile to write.

I've been saying this for a while but I think what is happening, and what many developers haven't noticed yet, is that we have exhausted the utility of software for software's sake. The interesting stuff happening in mobile now has nothing to do with "design" in the traditional sense any more. Its not enough to just have a coder and a designer on the team. The really cool stuff is all about what your phone actually allows you to do in the real world. Look at apps like uber, postmates, spotify, and twitch.tv. Most of these have terrible UI's, but that's not the point. The point is that they allow you to do things. I can have a car on my doorstep! I can listen to almost any song I want. They're not just another calculator app or news reader, so who cares if its not the prettiest or easiest thing to use in the world. They are an interface to actually useful services. Software was interesting on its own a decade ago, but the industry has grown up, its time to do things now. That doesn't mean that "UI and UX" don't matter, it just means their definition changes and grows beyond just how you tap things on glass and what pixels you choose to animate.

The reason that iOS 7 seems comforting in the way its described in this article is because it gives developers who haven't realized this something to do again. Marco is absolutely right, for a long time it has felt like all the major categories have been covered on the app store. That's a good thing! It means we've solved lots of problems. We shouldn't daydream of a day when those problems get artificially unsolved so we can have another shot at them. We should move on.

Re:Fertile Ground by LowKarmaAccount on Tuesday June 11, 2013 @10:46PM (#5866204)
> I've been saying this for a while but I think what is happening, and what many developers haven't noticed yet, is that we have exhausted the utility of software for software's sake...

> Software was interesting on its own a decade ago, but the industry has grown up, its time to do things now.

Smartphones are important because they allow people to use computers in a manner that wasn't feasible in the past because of the size of computing devices.

However, smartphones have not produced any important innovations from a software point of view. They are not innovative because they don't need to be; they are simply the logical consequent of the advances in the miniaturization of hardware.

The market saturation you describe is not the result of a glut of innovation, but rather is just a consequence of developers porting existing desktop functionality onto a smartphone. You can take pictures and use voice recognition software to ask where nearby restaurants if you carry around a desktop or a laptop; you just probably wouldn't want to.

Actually, smartphones are a good example of how non-innovative and illogical the computing world can be. Underneath the touch-based interfaces, they run on a kernel written in a memory-unsafe, non-garbage collected, insecure, and inexpressive language that was designed to target the PDP-11. Because the operating system is so flawed and incompetent that it can't be trusted to prevent rogue processes from stepping on others, you end up with a lack of a useable file system and awful communication between apps. Of course, the joke is that these restrictions are almost worthless because you can almost always bypass the system security and jailbreak the device; then maybe you can do something useful with your phone without.

Its part of a larger trend in the computing world to ignore history and reinvent wheels, and call it innovation. Case in point: web apps, which, unless you are replacing a legacy application, are a terrible idea. Not only will they always face latency issues, but they also use awful languages designed to serve and manipulate text and are at least twice as slow as native code. Software on smartphones is interesting in the same way that a "Hello world!" program is interesting to C programmer; the programmer is so surprised that he has fought an unfriendly, unintuitive system full of kludges and managed to output text to the screen without the program crashing and dumping core that he doesn't notice how trivial the output is.

Of course, what we have today is better than nothing. In a way, the massive and unnecessarily resource intensive process that we have now is uplifting because it shows the determination of the human spirit; just imagine what we could accomplish if we invested in the right things.

Re:Fertile Ground by ghshephard on Tuesday June 11, 2013 @11:24PM (#5866351)
This is similar to suggesting that a Desktop computer isn't innovative because it's just a few peripherals connected to a very fast turing machine.

Some examples of Smartphone innovation (in my opinion):

At 2:00 AM in bed, when I'm exhausted, and realize I have to wake up at 7:00 AM, but I'm tired enough that I might not be able to reach my alarm clock, and I can just flex my thumb and say, "Wake me up at 6:00 AM" before drifting off to sleep - I call that innovation. I don't know if you recall, there was a time that the big "thing" at Hotels was having them give you a wakeup call, so you wouldn't have to figure out how the alarm clock in the room worked (if they had one). I haven't done that in 5+ years. Used to do it every night when I was in a hotel.

I'm out walking at night in Redwood City, and Dark Sky pops up and tells me it's going to start raining in my neighborhood in about 15 minutes - so I turn around and grab an umbrella.

I'm out at a customer luncheon in Singapore, and they ask me about a presentation I did awhile ago, on my laptop, and I know backblaze has backed it up, so I'm able to grab it while standing there from my iPhone and mail it to them - that real time delivery makes a positive impression. (Replace Backblaze with Dropbox/iCloud/SkyDrive/favorite cloud mechanism that you can connect to from your mobile device)

Listening to a great german song in a Taxi in Aschaffenburg, and I pull up Shazam - and 90 seconds later I have it on my iPhone (and it's now been synced with iTunes match and is on my iPad and Laptop)

Late at night in PaloAlto, and I need a ride home - and Uber tells me there will be a driver at the restaurant in 4 minutes, and shows them driving towards me, and makes sure they show up - As somebody who had spent hours waiting for cabs in the middle of the night - I call that innovation.

Walking down the Stairs at Southwark in London, and getting the real-time update from TubeMap, that the London Bridge station is closed due to a station fire - turning right around and grabbing a cab to an important symposium.

I could obviously go on - but I find it so hard to believe you don't recognize all of this as, "innovation"

Re:Fertile Ground by droopyEyelids on Tuesday June 11, 2013 @11:32PM (#5866379)
You're just talking past each other. He's talking about computer science "software" innovation.
Re:Fertile Ground by potatolicious on Wednesday June 12, 2013 @01:44AM (#5866705)
I think he knows. The disagreement here is that characterizing pure-CS-stuff as "innovation" and the other stuff as not is an incredibly narrow way to define innovation.

It feels like LowKarmaAccount really defines innovation as how far down the stack it is, which is a wholly arbitrary (and IMO nonsensical) criteria.

By that criteria a helicopter is not innovative because it's just a slight rearrangement of fixed wing aircraft, an "evolutionary" progression. By that criteria the Internet is not innovative because it was just the natural evolution and consequence of radio and telephony.

Re:Fertile Ground by LowKarmaAccount on Wednesday June 12, 2013 @02:14AM (#5866778)
droopyEyelids was correct in saying that I was talking about software innovation from a CS standpoint, so I didn't respond to the first reply to my comment. After reading your comment, I realized that I should make it clear that I'm using David A. Wheeler's definition of software innovation [1]. It was linked to on HN a few years ago[2]; it has an excellent listing of important innovations. The list was made to show that the most important computer innovations weren't patented.

Wheeler does include the Internet (internetworking using diagrams, leading up to the Internet's TCP/IP)as an important innovation.

On the page I linked to [1], Section 6 is called "What is not an important software innovation?", which inspired my post in part. I'll quote a portion of it below:

" As I noted earlier, many important events in computing aren’t software innovations, such as the announcements of new hardware platforms. Indeed, sometimes the importance isn’t in the technology at all; when IBM announced their first IBM PC, neither the hardware nor software was innovative - the announcement was important primarily because IBM’s imprimateur made many people feel confident that it was “safe” to buy a personal computer.

"An obvious example is that smartphones are not a software innovation. In the mid-2000s, smartphones rapidly became more common. By "smartphone" I mean a phone that can stay connected to the Internet, access the internet with a web browser capable of running programs (e.g., in Javascript), and install local applications. There's no doubt that widespread smartphone availability has had a profound impact on society. But while smartphones have had an important social impact, smartphones do not represent any siginificant software innovation. Smartphones typically run operating systems and middleware that are merely minor variants of software that was already running on other systems, and their software is developed in traditional ways.

"Note that there are few software innovation identified in recent times. I believe that part of the reason is that over the last number of years some key software markets have been controlled by monopolies. Monopolies typically inhibit innovation; a monopoly has a strong financial incentive to keep things more or less the way they are. Also, it’s difficult to identify the “most important” innovations within the last few years. Usually what is most important is not clear until years after its development. Software technology, like many other areas, is subject to fads. Most “exciting new technologies” are simply fashions that will turn out to be impractical (or only useful in a narrow niche), or are simply rehashes of old ideas with new names."

[1]: http://www.dwheeler.com/innovation/innovation.html

[2]: https://news.ycombinator.com/item?id=813110

Re:Fertile Ground by comex on Wednesday June 12, 2013 @04:16AM (#5867076)
To respond to the quote about "few software innovations identified in recent times", there's been plenty of innovation in the last decade or so. It might not be quite as fundamental as the innovations of the 20th century - perhaps because all those fundamental things needed to be invented but now have been - but it's there. These are not directly smartphone related, because I agree that most of the innovation of smartphones in particular has been in areas other than computer science, but your posts and the page you linked to are more broadly critical of progress in computer science, and most of them are present in or related to smartphones. Anyway:

SMP - parallelism not among separate, isolated computers whose fastest connection is probably an Ethernet port, but among multiple cores in the same die, accessing the same core RAM. Of course someone had a SMP system decades ago, it's not that complicated an idea, but only recently has it become ubiquitous and critical to taking continued advantage of Moore's Law. Although it's fundamentally a hardware innovation, the ways we write multithreaded programs have evolved to take advantage of it - it's only recently that the sort of software used on millions of systems has had to focus on fine-grained locking and lock-free algorithms, rather than slapping big locks on everything with the only downside being latency. And more unorthodox approaches are gaining traction: CSP, though invented 35 years ago, is being rediscovered with Go, various languages have experimented with software transactional memory (e.g. PyPy, Clojure), and Intel's new processors will finally bring hardware transactional memory mainstream, which might finally realize the dream of fast transactional memory.

GPUs - massive parallelism of relatively small, minimally branching algorithms, again on a single chip found in millions of devices; again, a hardware innovation that requires new ways to write software. Yes, I know how old the transputer is, but now it's mainstream.

Virtual machines - a new consummation of the idea of time sharing, innovative in practice if not theory. It's my personal opinion that they're a massive hack, a poor man's multi-user system that accomplishes no more than a traditional kernel could have, with the right operating system design, with all the kludginess you'd expect from a system based on hacking kernels designed to run directly on the hardware into running side-by-side - but when disk space and RAM became cheap enough that it became obvious that each user of a server should have their own isolated copy of all software, allowing them to install and maintain whatever versions of whatever packages they need, Unix had developed so much around the idea of a central administrator that the new paradigm had to evolve rather than being designed. But who cares? Worse is better, the heritage of Unix and perhaps its conqueror - however it came about, ordinary users of multi-user systems now have more power on average than ever before. Consider the difference between a PHP script hosted on shared hosting and a modern webapp stack. And maybe a new design will come around to replace it all, one of these days.

Closely related, cloud computing - I suppose driven by the decreasing price of hardware. The idea of computing as a commodity is hardly new, but in the last few years it has become a reality: virtual servers can now be spun up and down in minutes, as part of massive server farms provided as a service to a huge number of users, for low cost. This is fundamentally changing the way software is designed: scalability is easier than ever, but it has become more and more useful to write distributed systems that can tolerate internal failure.

HTML5. You can enter a URL and instantly and safely run fast code. Yes, it's just a another VM; yes, Java had this a long time ago. But we avoided some of Java's mistakes and CPUs are faster, so who knows, write-once-run-anywhere might become a reality this time.

Sandboxing. We might still be stuck with C and unsafe code, but sandboxing is starting to make software a lot harder to exploit anyway. Software security in general is receiving a lot of attention these days.

Functional programming and other languages with strong static type systems have had a resurgence lately. Going back a bit farther, you could say the same about dynamic programming languages such as Python, Ruby, and JavaScript. There are so many different languages which have taken different paths that it's hard to identify a single clear direction that programming languages have gone in, but there are some commonalities, and they add up to a significant amount of incremental innovation. There is a lot more to say about this, but I'm getting tired and it would take a lot to do it justice.

Ways to write software: test driven development, agile, etc.

Re:Fertile Ground by ghshephard on Wednesday June 12, 2013 @05:49AM (#5867302)
I wonder, if even with this incredibly strict definition of "Software Innovation" whether anything on a smartphone might still rise to the level of innovation?

I'm thinking of the GeoLocation Applications - that just never existed before, ever, like runkeeper. Or the BodyTelemtry apps, like FitBit. I'm still trying to think if it's possible to categorize Dark Sky as innovation. Or the always-available voice-recognition of Siri.

None of it rises to the level of "Software innovation from a CS standpoint" if we look carefully? Honestly asking now.

Re:Fertile Ground by resu_nimda on Wednesday June 12, 2013 @02:40PM (#5869774)
By LowKarmaAccount/David Wheeler's definition, no. If you browse the list in Wheeler's article, the only things that jump out at the "application feature" level are word processing and the spreadsheet. Clearly, Runkeeper, Dark Sky, and the like are not going to make that list. It really is focused on the "pure CS/EE" side of things, and since smartphone app development is mostly business as usual with a few different quirks, none of it is likely to qualify.

I'm thinking that something like "robust speech recognition and parsing" might fit on there (though it's tough to determine when such a system would be considered mature enough, and simultaneously differentiated from full strong AI). But that's not a smartphone innovation, it just happens to be a good use case.

It really comes down to the definition/interpretation of "innovation," and I think many people (myself included) would feel a slight when certain things are excluded, but I can see how "taking things that already exist and putting them together in new ways or usefully extrapolating on them" (which is what any "innovative" app has done) doesn't really fit. As he explained about the smartphone, something can be world-changing in a very real way, without necessarily being innovative.

Re:Fertile Ground by ben336 on Tuesday June 11, 2013 @10:30PM (#5866132)
I think Marco is saying this is good from an independent ios developers perspective, not necessarily from a users perspective. As somebody who makes his living as an independent app developer, I'm sure he's thrilled about this. Its undeniably an opportunity for independent developers who don't have to maintain an existing app. Whether its good for users or the ecosystem in general is a totally different discussion.
Re:Fertile Ground by fpgeek on Tuesday June 11, 2013 @11:27PM (#5866364)
Indeed. One of the things Marco is glossing over is how the iOS 7 overhaul makes iOS development riskier:

  - Will I (and the apps I'm planning) be able to adapt to the UI changes smoothly or not?
  - How are these changes going to play out on the iPad?
  - Does Apple have any other foundation-shifting changes planned before iOS 7 comes out?
  - Will these changes impact user behavior?
  - And so on.
From the perspective of an independent developer starting out, none of this matters. Their risk is already off-the-charts (and the downside limited by time and effort, for the most part), so all they care about is the increased reward potential. They don't even really care if that increased reward potential is coming from changes in absolute rewards and/or relative rewards vs other developers.

For everyone else, the risk vs reward calculation might look quite different.

Re:Fertile Ground by jakobe on Wednesday June 12, 2013 @03:05AM (#5866907)
Who is everyone else?
Re:Fertile Ground by jaredsohn on Wednesday June 12, 2013 @03:09AM (#5866918)
Anyone who isn't an independent developer starting out (i.e. those with existing apps and larger organizations who perhaps have other apps that will require additional work just to maintain their current state.)
Re:Fertile Ground by lloeki on Wednesday June 12, 2013 @11:32AM (#5868600)
> How does it help users to all of a sudden have most apps feel ancient?

It helps users in that the "new design" is an improvement over the "old design".

A case study, the Windows file picker dialog:

Win3.1 dialogs felt foreign to 95, while XP-style apps feel foreign to Vista-style apps. There is no debate that from win3 to win7 the file picker dialog got improved each time. Easier item selection, easier reading, easier tree traversal, quicker arrival to favorites...

What is true for this dialog is true for the whole system. rundll32 tabbed preference panes survive in Win8 to this day. They felt like they came from the future back then on win95, while today they're old and crufty, alien and inscrutable.

This is not change for the sake of change. Design is how it works. Good design is thorough and holistic. If you only improve part of the system, you end up with a hodgepodge of UI versions with no conventions across the board and only results in an overall bad usability and maintainability.

Re:Fertile Ground by mchanson on Tuesday June 11, 2013 @10:21PM (#5866096)
Cause, like, I still use Visicalc and it works great.
Re:Fertile Ground by rustydoorknobs on Tuesday June 11, 2013 @10:34PM (#5866146)
I agree with you, but I think that an occasional design shakeup hits people on a different level, subconsciously. A new look affects the feel of an application, which can actually affect how people view the substantial portions of an app.
Re:Fertile Ground by Skywing on Tuesday June 11, 2013 @11:53PM (#5866451)
That's a valid point, but isn't this a forum of mostly developers and tech-savvy people? While your point stands, I have a feeling that a lot of readers of HN will be looking at this from the OP's point of view.
Re:Fertile Ground by huhtenberg on Wednesday June 12, 2013 @02:47AM (#5866863)
"Why be you, when you can be new."