Sunday, June 11, 2017
Apple's Files App is an admission of imperfection
The need for a Files app is an admission that the iPad experience does not meet those expectations. It raises the hood and allows the user to meddle with some of the innards of the iPhone. One explanation for its existence is that Apps cannot always find the needed files, and the Files App lets you (the user) find those files.
Does anyone see the irony in making the user do the work that the computer should do? Especially a computer from Apple?
To be fair, Android has had File Manager apps for years, so the Android experience does not meet those expectations either. Microsoft's Surface tablets, starting with the first one, have had Windows Explorer built in, so they are failing to provide the new, simpler experience too.
A curmudgeon might declare that the introduction of the Files App shows that even Apple cannot provide the desired user experience, and if Apple can't do it then no one can.
I'm not willing to go that far.
I will say that the original vision of a simple, easy-to-use, reliable computing device still holds. It may be that the major players have not delivered on that vision, but that doesn't mean the vision is unobtainable.
It may be that the iPhone (and Android) are steps in a larger process, one starting with the build-it-yourself microcomputers of the mid 1970s, passing through IBM PCs with DOS and later PC-compatibles with Windows, and currently with iPhones and tablets. Perhaps we will see a new concept in personal computing, one that improves upon the iPhone experience. It may be as different from iPhone and Android as those operating systems are from Windows and MacOS. It may be part of the "internet of things" and expand personal computing to household appliances.
I'm looking forward to it.
Thursday, July 7, 2016
DOS, Windows, sharing, and mobile
IBM PCs (or compatibles, or near-compatibles) running DOS were simple devices. They could run one program at a time; running multiple programs at once was not possible. (Technically, it was possible with a "terminate and stay resident" function call, but such programs were few. For this essay, I'll stick to the "regular" programs.)
Windows brought us an expanded view of computing. Instead of running a single program at a time, Windows allowed for multiple. Windows provided a common way to present text and graphics on the screen, to print to printers, and to share data. Windows was a large step upward from the world of DOS.
Mobile operating systems -- Android and iOS -- provide a different experience. Instead of multiple applications and multiple windows, these operating systems present one application (or "app") at a time. Multiple apps may run, but only one has the screen. Thus, you can listen to music, check e-mail, and get a text message all at the same time. Mobile apps keep the multitasking aspect, but reduce the interaction to one app at a time.
Reducing the number of interactive apps to one is a reduction in capabilities, although it is a simpler experience, and one that makes sense for a phone. (I think it also makes sense for a tablet.)
What I don't see in the mobile operating systems (and what I don't see in Windows, either) is improvements in the ability to share data across applications. DOS had files and pipes (concepts lifted from Unix). Windows added the clipboard, and then Dynamic Data Exchange (DDE) and later, drag-and-drop. The clipboard was popular and is still used today. DDE never got traction, and drag-and-drop is limited to files.
Sharing data across applications is difficult. Each application has its own ideas about data. Word processors hold characters, words, sentences, paragraphs, and documents. Spreadsheets hold numeric values, formulas, cells, rows, columns, and sheets. Databases hold rows and columns -- or "documents" (different from word processor documents) for NoSQL databases. The transfer of data from one application to another is not obvious, and therefore the programming of such transfers is not obvious.
But Windows has had the clipboard for thirty years, and DDE and drag-and-drop for almost as long. Have we had no ideas in that time?
Perhaps our current mobile operating systems are the DOSes of today, waiting for a new, bold operating system to provide new capabilities.
Sunday, December 27, 2015
For the future of Java, look to Google
Oracle is an interesting company, with a number of challenges. Its biggest challenge is the new database technologies that provide alternatives to SQL. Oracle built its fortune on the classic, ACID-based, SQL database, competing with IBM and Microsoft.
Now facing competition not only in the form of other companies but in new technologies, Oracle must perform. How will is use Java?
For the future of Java, I suggest that we look to Google and Android. Java is part of Android -- or at least the Java bytecode. Android apps are written in Java on standard PCs, compiled into Java bytecode, and then delivered to Android devices. The Android devices (phones, tablets, what-have-you) use not the standard JVM interpreter but a custom-made one named "Dalvik".
Oracle and Google have their differences. Oracle sued Google, successfully, for using the Java APIs. (A decision with which I disagree, but that is immaterial.)
Google now faces a decision: stay with Java or move to something else. Staying with Java will most likely paying Oracle a licensing fee. (Given Oracle's business practices, probably an exorbitant licensing fee.)
Moving to a different platform is equally expensive. Google will have to select a new language and make tools for developers. They will also have to assist developers with existing applications, allowing them to migrate to the new platform.
Exactly which platform Google picks isn't critical. Possibly Python; Google supports it in their App Engine. Another candidate is Google Go, which Google also supports in App Engine. (The latter would be a little more complicated, as Go compiles to executables and not bytecode, and I'm not sure that all Android devices have the same processor.)
Google's decision affects more that just Google and Android. It affects the entire market for Java. The two big segments for Java are server applications and Android applications. (Java as a teaching language is probably the third.) If Google were to move Android to another language, a full third of the Java market would disappear.
If you have a large investment in Java applications (or are considering building new Java applications), you may want to keep an eye on Google and Android.
Wednesday, August 12, 2015
Ten percent better is not enough
The contenders are Microsoft's Windows Mobile (or whatever they are calling it now), Mozilla's Firefox OS, Cyanogen's operating system, and Samsung and Intel's Tizen. (One could add Blackberry to the list.)
The challenge that all of these contenders face is one of value. They must deliver a product that is superior to the existing iOS and Android products. Delivering a product of lower value is meaningless, and matching value is a losing proposition due to the cost of switching.
It's not enough to simply be a little bit better than the established leaders. To win the hearts of users (a significant number of users), their product must be clearly better. The benefits of the product must be obvious and large enough to offset the cost of changing from the existing.
Apple did not have this problem. When they introduced the iPhone, there was no competition. The existing phones provided less functionality.
Google did have this problem, as it competed with the (then) existing iPhone. Google's advantage was an open platform -- or so it advertised. (Also, Google was not Apple -- or Microsoft -- which worked to its advantage.
Today's contenders must provide something better than Apple's iOS and Google's Android. The advantage must be clear, and it must be greater than a small increase.
One would think that Microsoft has an advantage, in that they can leverage the existing corporate infrastructure of Windows hardware. Yet this is not the case, as phones and tablets remain personal devices -- corporations have not figured out how to use them. (Some organizations have started using tablets and phones, but their use tends to be limited to specific applications.)
Any mobile OS marketer, to gain ground against the current leaders, will have to provide something much better than the current products, as judged by individuals.
Thursday, January 8, 2015
Hardwiring the operating system
I know that computers are complex objects, and each of these four components has lots of subcomponents. For example, the hardware is a collection of processor, memory, video card, hard drive, ports to external devices, and "glue" circuitry to connect everything. (And even that is omitting some details.)
These top-level divisions, while perhaps not detailed, are useful. They allow me to separate the concerns of a computer. I can think about my data without worrying about the operating system. I can consider application programs without bothering with hardware.
It wasn't always this way. Oh, it was for personal computers, even those from the pre-IBM PC days. Hardware like the Altair was sold as a computing box with no operating system or software. Gary Kildall at Digital Research created CP/M to run on the various hardware available and designed it to have a dedicates unit for interfacing with hardware. (That dedicated unit was the Basic Input-Output System, or 'BIOS'.)
It was the very early days of computers that saw a close relationship between hardware, software, and data. Very early computers had no operating systems (operating systems themselves designed to separate the application program from the hardware). Computers were specialized devices, tailored to the task.
IBM's System/360 is recognized as the first general computer: a single computer that could be programmed for different applications, and used within an organization for multiple purposes. That computer began us on the march to separate hardware and software.
The divisions are not simply for my benefit. Many folks who work to design computers, build applications, and provide technology services find these divisions useful.
The division of computers into these four components allows for any one of the components to be swapped out, or moved to another computer. I can carry my documents and spreadsheets (data) from my PC to another one in the office. (I may 'carry' them by sending them across a network, but you get the idea.)
I can replace a spreadsheet application with a different spreadsheet application. Perhaps I replace Excel 2010 with Excel 2013. Or maybe change from Excel to another PC-based spreadsheet. The new spreadsheet software may or may not read my old data, so the interchangeability is not perfect. But again, you get the idea.
More than half a century later, we are still separating computers into hardware, operating system, application programs, and data.
And that may be changing.
Friday, December 26, 2014
Google, Oracle, and Java
Apple has a cozy walled garden for its technology: Apple devices running Apple operating systems and Apple-approved apps written in Apple-controlled languages (Objective-C and now Swift).
Microsoft is building a walled garden for its technology. Commodity devices with standards set by Microsoft, running Microsoft operating systems and apps written in Microsoft-controlled languages (C#, F#, and possibly VB.NET). Microsoft does not have the same level of control over applications as Apple; desktop PCs allow anyone with administrator privileges to install any app from any source.
Google has a walled garden for its technology (Android), but its control is less than that of Apple or Microsoft. Android runs on commodity hardware, with standards set by Google. Almost anyone can install apps on their Google phone or tablet. And interestingly, the Android platform apps run in Java, a language controlled by... Oracle.
This last aspect must be worrying to Google. Oracle and Google have a less than chummy relationship, with lawsuits about the Java API. Basing a walled garden on someone else's technology is risky.
What to do? If I were Google, I would consider changing the language for the Android platform. That's not a small task, but the benefits may outweigh the costs. Certainly their current apps would have to be re-written for the New language. A run-time engine would have to be included in Android. The biggest task would be convincing the third-party developers to change their development process and their existing apps. (Some apps may never be converted.)
Which language to pick? That's an easy call. It should be a language that Google controls: Dart or Go. Dart is designed as a replacement for JavaScript, yet could be used for general applications. Go is, in my opinion, the better choice. It *is* designed for general applications, and includes support for concurrency.
A third candidate is Python. Google supports Python in their App Engine cloud platform, so they have some familiarity with it. No one company controls it (Java was controlled by Sun prior to Oracle) so it is unlikely to be purchased.
Java was a good choice for launching the Android platform. I think the languages Go and Python are better choices for Android now.
Let's see what Google thinks.
Tuesday, July 8, 2014
The center of the universe is moving
The IT universe does have centers. For decades, the center of the hardware universe has been the desktop PC and the center of the software universe has been Microsoft Windows and applications for Windows.
That is changing. Windows is no longer the software center of the IT universe. The desktop PC is no longer the hardware center of the IT universe.
The center of the IT universe for consumers has shifted to Apple and Google. The popularity of the iPad, the iPhone, and Android phones shows this. Individuals are happy to purchase these devices. PCs, in contrast, are purchased grudgingly. The purchase of a PC does not instill excitement but resentment.
The center of the IT universe for enterprises remains close to PCs and Microsoft Windows, but it too is moving to cloud computing and mobile devices. Microsoft recognizes this; it has been expanding its Azure cloud services and selling tablets and phones. While it has had little success with mobile devices, it does enjoy some with cloud services. Microsoft is supporting multiple operating systems; its Office products now run on Apple iPads and Android devices.
What does this change mean for the rest of us?
Well, for consumers it means that we will see more options. Instead of the old world of "Windows-only applications running on Microsoft Windows on desktops or laptops", we will see services on Azure available on the device of our choosing.
For enterprises, the same options will appear. This fits in with the "Bring Your Own Device" philosophy, which shifts the costs of hardware from employers to employees.
For developers, the picture is more complex. The old method of developing an application (especially an enterprise application) for Windows only (because Windows was the center of the universe) must give way to a process that develops applications for multiple platforms. The new development paradigm must be mobile/cloud with multiple cloud apps and a solid cloud design.
Microsoft is supporting this new paradigm. Azure supports non-Microsoft products such as Linux. Visual Studio supports non-Microsoft products such as Git, and now targets iOS and Android in addition to Windows.
Almost overnight, the modern Windows-only applications have been graduated to the status of legacy systems.
Wednesday, February 19, 2014
The great puzzle of Microsoft Office
Microsoft built an empire with Office. Office was the most powerful word processor and spreadsheet package. It used proprietary formats. It read files from other word processors and spreadsheets but did not write to those formats, making the trip for data one-way: into Microsoft Office. Through marketing, fierce competition, and the network effect, Microsoft convinced most businesses and most home users to use (and buy) Microsoft Office.
Those were the days.
The world is changing.
Large businesses still use Windows for their desktop environment. Small businesses, especially technology start-ups, are using Mac OS or Linux.
Large businesses still use Microsoft Office. Small businesses are looking at LibreOffice (an open source desktop package with word processing and spreadsheets) or Google Apps (an on-line office package with word processing, spreadsheets, e-mail, calendaring, and other things).
The tablet world is dominated by iOS (on iPads) and Android (on just about everything else). Windows holds a tiny share. The same goes for smart phones.
These are the pieces of the great puzzle that Microsoft must solve. What is a software giant to do?
First, some observations.
Microsoft is the latecomer Microsoft is late to the market, but they have been in this position before and succeeded. They were late with C#/.NET after Java. They were late with Internet Explorer after Netscape Navigator. They were late with spreadsheets after Lotus 1-2-3. They were late with word processors after Wordstar and WordPerfect. They were late with databases after dBase and R:Base. Being a latecomer has not doomed Microsoft yet.
The desktop software model doesn't work on mobile devices Microsoft's past technique of selling premium software and obtaining market share through marketing won't work on the mobile platform.
Giving these conditions, Microsoft needs a new approach. Here are some ideas:
Sell services, not software Microsoft will not focus on selling copies of Office for the mobile world. Instead, it will focus on subscribers to its services. The mobile versions of Word and Excel and Outlook will be offered at low prices -- perhaps at no cost -- but they will be useless without the service.
Cloud storage, not local files Microsoft Office will store data in the cloud (Microsoft's cloud).
Not documents and workbooks, but pieces assembled Instead of entire documents and complete spreadsheets, Microsoft services will stitch together fragments of documents and spreadsheets. Think of it as an advanced form of OLE. (Remember OLE and our excitement at embedding a spreadsheet in a document?)
Versioning and tracked changes Microsoft's cloud will keep track of the versions of each document (or document fragment), allowing us to see changes over time and the notes for each change.
Access control (for enterprise users) With all of these fragments floating in the cloud, enterprise users (businesses and their support teams) will want to control access by users.
Promotion and publication (also for enterprise) Users will be able to publish data to other users. Users will also be able to work on new versions of data, reviewing it with other members of their team, revising it, and eventually marking it as "available to everyone". Or maybe "available to selected users".
The idea of Office as a service seems a natural fit for mobile devices. Notice this this vision does not demand Windows tablets -- one can use it with iPads and Android devices. I expect Microsoft to move in this direction.
Wednesday, February 12, 2014
Microsoft's big chance in the mobile world
iPhones, iPads, and Android devices have become popular with consumers (average folks like you and me) and have limited acceptance in the corporate world. I think Microsoft has an opportunity in the corporate market.
I see three reasons:
IT shops tend to be conservative Many IT shops have strong preferences for Microsoft equipment. It works, and changing to another vendor always entails risk.
The role of mobile devices in the corporation is still undefined We know how to use phones and tablets as individuals (play games, read books, and chat on Facebook) but we don't (yet) see how mobile devices help business. Yes, there are a few specialized applications, such as documentation for aircraft pilots or apps for insurance adjusters. The corporate world is an open field.
iOS and Android platforms change frequently The iPhone has seen five generations, and Android has seen almost as many significant versions in its (relatively) short life. Later versions have forced changes to the design of apps, from internals to the UI. Such changes reduce the life of apps and add to the cost, as one revises an app for the new operating system.
With this environment, Microsoft has an opening. Microsoft can offer Windows RT and provide longer support for each version. And I am specifically looking at Windows RT, the variant that does not run Windows classic applications.
Longer support for versions of Windows RT is necessary, but not sufficient. In addition to a stable platform, Microsoft must offer tools for developers. Not just a version of Visual Studio that builds code for Windows RT, but libraries to connect Windows RT apps to Azure and other (non-Microsoft!) cloud services. Not just support forums, but code to handle authentication and payments. Not just UI designers but modules to connect legacy corporate data to Azure (and thereby to mobile devices).
Apple and Android have shown that mobile devices are technically feasible and that there is a demand for them. Now Microsoft has the opportunity to show that they can contribute to business.
Sunday, January 12, 2014
Android PCs will clobber Linux, on the desktop
Android already has a firm beachhead in the phone and tablet market. Now it can expand onto the home PC.
A number of manufacturers have introduced "Android PCs", full-sized computers running Android. I think that they have a bright future, and may supplant Linux on the home desktop PC.
But isn't Android really Linux, configured for phones and tablets?
Linux is at the heart of Android, true. But Android is more than Linux with a smaller user interface. Android handles more device management and software management than Linux.
Android's model is closer to Apple's iOS/iTunes method of managing software. Android (and iOS) let the user purchase and download software quickly and easily from centrally-managed repositories. They are not exactly the same: Apple locks you into their repository; Android lets you add software from other repositories. Yet both have unified updating mechanisms, and both let you move to new devices and keep your apps (and data). Android (and iOS) manage the updates for all of your apps. Buy a new phone, and (once you register) you can quickly re-install your apps without incurring additional charges (Android and iOS remember that you have purchased the apps).
The traditional PC operating systems, in contrast, force you to upgrade your software and (possibly) acquire new licenses. In Windows, the Microsoft update service handles Microsoft products, but products from other vendors need their own systems. Buy a new Windows PC, and you have to install all of your applications, including the Microsoft ones. This arrangement works for the corporate environment, with a support team that assigns, licenses, and installs corporate-approved applications. It offers little for the individual PC owner.
Linux distros come close to Android's functionality, with an update service that handles all software. Yet Android's update system is easier to use and more convenient, especially for the individual user.
Windows will maintain its dominance in the corporate world, and Android will gain in the home market. It is the enthusiast, the computer geek, who wants to tinker with Linux and settings. The average person wants a computing appliance, one that needs as much attention as a toaster. Android delivers a better toaster than Linux (or Windows).
That's for user PCs. Servers will remain unaffected by the rise of Android. The people running servers (the sysadmins) are geeks, and they want (need) the ability to tune those servers.
Android (or some operating system that offers a toaster-like appliance level) for servers may happen in the future, as individuals (non-sysadmins) want servers. But that's some time away.
Saturday, January 7, 2012
Predictions for 2012
Here are my predictions for computing in the coming year:
Monday, July 25, 2011
The incredible shrinking program
Friday, July 1, 2011
Looking out of the Windows
This is an awkward phrase to use to describe success. It's akin to the phrase "we're the best widget producer except for those other guys who produce widgets offshore".
I can think of two reasons for Microsoft to use such a phrase:
1) They want a phrase that shows that they are winning. Their phrasing, with all of the implied conditions, does indeed show that Microsoft is winning. But it is less than the simple "we're number one!".
2) Microsoft views success through Windows 7, or perhaps through currently marketed products. In this view, older products (Windows XP, IE6) don't count. And there may be some sense in that view, since Microsoft is in the business of selling software, and previously sold packages are nice but not part of this month's "P&L" statement.
The former, despite the dripping residue of marketing, is I think the healthier attitude. It is a focussed and specific measurement, sounds good, and pushes us to the line of deception without crossing it.
The latter is the more harmful. It is a self-deception, a measurement of what is selling today with no regard for the damage (or good) done yesterday, a willful ignorance of the effects of the company on the ecosystem.
The bottom line is that Internet Explorer is losing market share. This may not be the doom that it once was, with apps for iPhone and Android phones increasing in popularity. Indeed, the true danger may be in Microsoft's inability to build a market for Windows Phone 7 and their unwillingness to build apps for iOS and Android devices.