Monday, 19 May 2014

Why is there no viable alternative to Windows & OS/X?

I really wish there was a viable operating system alternative to OS/X.  One that runs on the open Intel hardware ecosystem. There's plenty of operating systems there but nothing that approaches the polish, refinement and reliability of OS/X. Unfortunately Windows is the closest alternative.

To qualify, such an operating system needs to be:

  • complete
  • powerful and modern architecture
  • consistent
  • polished
  • reliable
  • works as advertised
  • visually appealing
  • fast


Desktop Linux doesn't qualify. It's frankensteinian in it's inconsistency.  It's ugly and unpolished and lacks visual style. It's arcane and cryptic and keeps showing users messages that are meant only for the bowels of the deepest command line. Which distro am I referring to? All of them.

Windows is inconsistent - every vendor implements drivers in their own way. It's unreliable - a constant source of crashes and problems, applications doesn't work as expected, long unexplained pauses. The registry is the nightmare underpinning much of this hell. It is thoroughly crap at multitasking - OSX at least ALWAYS ensures the user retains control over the user interface. Windows just locks up when an app behaves badly. Good luck trying to sleep/hibernate and awaken. Fuck knows what Windows 8.1 is - it's certainly not a desktop OS, certainly some sort of frankensteinian monster cobbled together from the bastard child of a PC and a tablet.

HaikuOS, ReactOS, every other minor OS - they are all incomplete and unpolished hobbyist projects that will never be anything more than a curiosity.

ChromeOS - it might be nice, but I can't live with only a browser, I have a vast array of other programs I need to get by.

Please don't say "Hackintosh". I'm talking about a real, commercially supported operating system that has a market and a user base and that people pay real money to use.

Sigh.... I really wish I could go and buy some commodity hardware and install an operating system with all the polish, consistency, reliability, visual appeal and power of OS/X.

Isn't the lack of such an operating system a commercial opportunity? Can someone please create a viable OS alternative for the Intel hardware world? Or is this impossible? Maybe one of these newly minted billionaire tech kids? Start with FreeBSD as the base operating system similar to how Steve Jobs built NextStep, then do the hard work of building the desktop and widget toolkit. Polish the fuck out of it.  It wouldn't be easy but hey that's why its an opportunity.

People say the desktop is in decline but I wonder if that's at least partly because they want something better than Windows but there's just nothing good available so they are moving to other platforms.





Sunday, 18 May 2014

The Uncloud - our web application code, your internal database.

Here's a less than half-formed idea - the Uncloud.

Many companies and governments are uncomfortable with the idea of the cloud and prefer to keep their data internal.Currently there is no way to build apps for organisations that have their data stored internally.

But maybe there is room for something called the "Uncloud". The core idea being that our web application code accesses your internal databases directly. In the Uncloud, somehow the web application code might run on machines that are internal to your network but under our control.

In summary, the Uncloud is for building web apps for organisations who want to keep their data  private. Is such a beast possible?

Saturday, 17 May 2014

A nice little machine inside my TV, totally wasted by Sony.

There wasn't much to watch on T.V. last night so I took a closer look at the interface inside my Sony Bravia 55 inch TV, using the TV remote control to force my way around the unintuitive interface.

Inside the Sony Bravia seems to be a pretty capable little computer.  Fairly responsive, graphics are quick enough and it obviously displays in HD resolution which is the resolution of the T.V. Despite digging around on the web I couldn't find exactly what sort of CPU or the specifications. I read somewhere that it has 512Mb RAM. It's probably an ARM CPU I imagine. There are USB ports on the TV which are probably controlled by the same machine.  There's a network port which I guess is 100 megabits. It's obviously running Linux as Sony has a Linux page for its devices https://products.sel.sony.com/opensource/source_tv.shtml and http://www.sony.net/Products/Linux/common/search.html.

Imagine what could have been if this little machine was running an inspired interface that allowed developers to write native apps and provided a really slick and innovative integration between free to air TV and the Internet. Imagine if I could use my mobile device as a keyboard and swipe controller to drive it via the network. Sony could own the lounge room just by having a slick and well thought operating system on that little machine.

So instead of ruling the television world, Sony has built an unimportant, shitty interface that has surprising power including a web browser and various other interesting bits of functionality. Sony seems to have worked pretty hard to make this system ignorable and hidden to the end user. Would you believe I had to register and go to some considerable effort to find there is actually a rental library in there of vast numbers of movies. There must be millions of Sony T.Vs out there and many of them must have similar computers to this one built in to them.

I wish I had the time and the smarts to develop that exciting and innovative OS that would turn this TV into an exciting end user experience. The cute little computers inside Sony TV's will never do anything exciting and compelling, probably firstly cause Sony doesn't know how to build anything that innovative, and even if they did, there would be some internal political conflict that sinks such a project.

Still it's nice to dream about making use of that little machine.....


Saturday, 6 December 2008

Cuckoos - Cloud Users Client Open Operating System

How about an operating system that literally gets rid of ALL functionality except the web browser? This operating system provides only the absolute minimal functionality required to implement the browser.

After all, people keep telling us about how the browser is now the platform and the OS is becoming irrelevant.

Wouldn't an operating system that is designed only to support the browser be simple, fast, efficient and reliable? Less software means less complexity. All that general purpose functionality just gets in the way and makes the OS bloated.

Such an operating system would probably boot very fast too. I call this operating system the Cuckoos, which stands for - Cloud Users Client Open Operating System (it's a silent 'K').

Saturday, 29 November 2008

Adobe Flex datagrids are falling behind Silverlight

Microsoft has a reputation for entering a market late, starting out with a poor version 1 and then relentlessly improving their software until they have a highly competitive product.

The same seems to be starting to happen with Silverlight, specifically with the datagrid.

I've been working extensively with the Adobe Flex datagrid and advanced datagrid. At first I was overjoyed just to have any sort of datagrid. Now, over time the elation has faded somewhat as I've come to understand the strengths and weaknesses of the Flex datagrids. Here are some of the things that have become apparent:

  • the Flex datagrids have had a number of memory leaks (at least some of which have been fixed)
  • the Flex datagrids seem to use a large amount of memory, even without memory leaks
  • the Flex datagrids are very slow to initialise - this becomes a huge problem when you application needs to constantly initialize and re-initialize grids, as ours does
  • the Flex datagrids are very slow to handle changes in the column structure (i.e. adding, deleting and changing displayed columns) - again a huge problem when your app is built around the idea of constant column changes
  • the Flex datagrids often don't repaint cells/rows properly - to get them to repaint properly you have to scroll those rows out of and back into view
  • the Flex datagrids don't resize well according to their contents - for example changing the font or font size requires lots of careful fiddling with CSS properties to avoid text being cut off - this makes it hard to give the end user the option to change the font to one that suits their eyes/display resolution
  • the Flex datagrids sometimes don't shift focus to a row when I click on it
  • the Flex datagrids sometimes don't execute drag and drop operations and I have to keep doing the same drag and drop action until for some reason it works
  • the Flex datagrids lack a sense of "precision". This is a bit hard to explain, but if you have a look at an application built with a datagrid in Borland Delphi for example, the datagrid feels responsive, tight and accurate. I know this is not an adequate explanation of a problem but it "just doesn't feel tight" is the only way I can explain it

I have started to look over the fence at other datagrids out there to see if there are any choices. There are no third party datagrids for the Adobe Flex (Microsoft seems to have a thriving market of third party components for it's products - I wonder why this is not the case for Flex?).

There is one interesting alternative though, which is the Silverlight datagrid.

This post lists some exciting features in the Silverlight 2 datagrid:

I've copied, pasted and hacked some of the above post to identify some of the most interesting and exciting things about the Silverlight Grid:

  • Support for the Visual State Manager (VSM) a tool that allows designers to customize how a control looks in various states, and the animations used to switch between these states.
  • Performance, Performance, Performance: We have done a lot in this area to try to get the DataGrid running as fast as possible.
  • Auto-sizing: Everything in the DataGrid can be auto-sized. That includes the DataGrid itself, Columns, Rows, Headers, and Row Details meaning that you do not have to worry about the size of what you are putting into the DataGrid, it will grow to accommodate it.
  • Frozen Columns: A frozen column does not scroll horizontally but rather is "frozen" in place. This is the same as the Freeze Column feature in Excel.
  • Row Details: In short, it is an area in each row that allows you to put any UI you want that spans all columns. This could be anything from form-based entry to the contents of a column that would do better if given more space.
  • Scrollable: Another benefit that the DataGrid provides is the ability to scroll through long lists of data. The DataGrid does a lot behind the scenes to make this experience as smooth as possible for your users even when you have a large number of rows. You can also scroll columns and items into view to make sure that an item you want to highlight to your user is visible on screen.
  • Template Column: The template column gives you complete control of what to show during display and edit modes.

The features listed above are exciting - the most exciting is the suggestion that they have worked hard on the performance of the grid - hopefully that means extremely fast initialization of the grid.

But really all the above features are exciting. Row details, frozen columns and especially auto sizing.

I'm hoping that Adobe does not think that it has "finished" development of its datagrids. I haven't read anything to indicate that the datagrids continue to be improved and enhanced.

It would be great to think that Adobe is commited to ongoing development of its datagrids, and commited to competing with the Microsoft Silverlight datagrid.

We need an extremely fast datagrid that feels tight and responsive and has a rich feature set. I really don't want to have to switch client platforms just to get access to a better datagrid.

Saturday, 8 November 2008

Adobe Flex - some thoughts after years of development

I've been architecting Flex applications since the first alpha and beta versions of Flex 2.

Back then I found it one of the most exciting technologies to have ever come along.

Now, having architected software for Flex over the past couple of years I can say a few things about it:

Largely Flex fulfils the promise that I found so exciting all those years ago. This is what web application development should be - using web standards for server communication (SOAP/REST/Json), programmed using a well known and simple language (Actionscript/Javascript), truly cross platform (Mac/Win/Lin), with a powerful set of user interface widgets for building business apps, on top of a vector and bitmap graphics engine. In many ways it's the ultimate in web application development.

But the shine has come off somewhat. My wild eyed enthusiasm has waned and when I think about Flex my immediate feeling is "if only it was....". There's two key reasons.

1: Speed of Actionscript.
Adobe constantly harps on about how Actionscript is now 10 times faster than previous versions. Perhaps that's true. The previous version must have been very slow indeed. My experience is that Flex feels slow. Out in the browser world Javascript engines having been taking massive performance leaps, driven by Google and Firefox fighting it out for the performance crown. There is no sign Adobe is doing anything to push the Actionscript engine to run faster.

2: Speed of the Flex framework components.
Modern development is heavily dependent on frameworks. The quality and speed of your application to a large extent is defined by the quality and speed of the underlying framework that it is built with. The Flex framework feels sluggish - in particular the datagrids, which need to do lots of work, feel like they have been build to meet their original design requirements, but haven't been optimised, analysed or refactored to make them crisp, fast and snappy. Much of the development we have done is centred around the datagrids. Slow datagrids means slow application.

End users want (NEED) applications to be lightning fast. I believe that if software runs fast then the end user is far more likely to enjoy using it. Slow software is far more likely to make for a poor user experience.

I've been looking back at native code development environments with nostalgia - the speed of the apps built with these systems is incredible compared to Flex. But the days of native code business and web applications have passed. There's no value in wishing for technology that has seen its day.

It seems inexcusable to me that my Flex applications are slow when running on my modern dual CPU Intel core 2. That's just wrong.

So both of the key problems with Flex relate to speed. And there's no evidence that Adobe is doing anything to go back and optimise what they have already built. As with much software development the focus remains squarely on adding new features. That's a pity, because Actionscript and Flex need to be much faster.

There's no evidence at all that Adobe understands that Flex framework performance is just as important as the performance of the underlying Actionscript interpreter. I don't think they understand this. Any discussion around performance and Adobe's comment is: "it's 10 times faster!". Adobe is out of touch on this topic and feels that it has already made Flex fast.

Adobe needs to take a leaf from the Apple book. The upcoming release of Mac OS X v10.6 (Snow Leopard) "will focus on stability and performance improvements" according to wikipedia. Adobe should stop with the new features and go back and spend whatever time it takes to optimise the Actionscript and the Flex framework. Imagine that - quitting the obsessive features arms race for a year and focusing on speed. We need it, but I can't imagine it happening.

We need the speed.

Monday, 23 June 2008

Playing old games

I'm playing old games, for now. Age Of Empires II is the game I am currently playing, and I recently dug Aliens Versus Predator II out of the old software box and gave it a second run through.

The main reason that I am playing old games is that the modern crop of games leave me somewhat cold. A key problem with the most sophisticated of the modern games is that the player often seems incidental to the gameplay. In some cases it feels like the game would be better off without a player in it ruining all the carefully planned scripted sequences and battles that are fought mainly bot versus bot.

A case in point is Call Of Duty 4. A truly amazing game in terms of its production values, but in many cases it seemed to me that the computer players that were "on my side" were playing more of the game than I was. I'd get into what seemed like a huge battle but before too long the battle was over - my team had killed the enemies and I'd mostly kept my head down. The game moved on to the next scene, despite the fact that I felt I really hadn't fought the battle through. It was at this stage that I put Call Of Duty 4 down and started ratting around amongst my old games for a gaming experience that I would find truly satisfying.

Great games are about great gameplay. Great graphics certainly help the experience but I'm far from convinced that it makes sense to have games that play themselves.

There are plenty of classic games that are available at extremely low budget prices. The graphics aren't great but the gameplay is highly entertaining.

I'll take great gameplay over a cinematic experience any day. If I want to see a move then I'll go to the cinema or get a DVD.