Category Archives: windows

What happens to the browser market when Google plays the OEM card?

Here’s a bit of speculation. My initial thinking about Google Chrome was that it would mainly take market share from Firefox; and that while IE’s share may continue to erode, Chrome is unlikely to accelerate that much.

I’m beginning to change my mind. One factor is OEM installs. We all know what a huge influence default installs have on users, which is why software vendors are happy to pay the likes of Dell and HP for space on the desktop, or to be the default anti-virus engine, for example. This has often been to the detriment of the user’s experience overall, to the extent that it helped to damage Vista’s reputation, but that is an aside.

Now, one thing I’ve noticed is that Google’s toolbar often turns up by default in OEM installs of Windows. When you start up for the first time (or the first time for real, after all those reboots), IE confronts you with Google’s terms of service. However, I have not yet seen Firefox installed as the default web browser. I’ve presumed that Mozilla doesn’t quite have the financial muscle to do it, or maybe there are other reasons.

Google is a more formidable presence than Mozilla. What if Google buys browser share by being the default browser on machines from the leading OEMs? I suspect that would soon impact IE’s share. Microsoft cannot prevent it because of anti-trust constraints.

Since Chrome is in effect the new Google toolbar, this move strikes me as inevitable.

This would mainly impact the consumer and small business space. IE has some special advantages for enterprises, since it hooks in tightly to Microsoft’s software management tools, and there are further improvements to this aspect in IE8. The consumer/business separation is a leaky one so it could still have a big impact.

Technorati tags: , ,

Vista shell annoyances

CodeGear’s Barry Kelly has a well-explained list of Vista shell annoyances. I don’t dislike Vista as much as Kelly but these things annoy me too, with the exception of the Start menu which I prefer in its Vista guise. Kelly doesn’t like the way Vista constrains it to a scrolling panel, but I find the search box more than compensates, and I dislike the way the XP Start menu expands all over the screen and gives up when it runs out of room.

He includes a handy tip about how to get a direct shortcut to the Network Connections control panel applet.

There’s an interesting point about menus in Vista applets:

It has become fashionable for applications designed for Vista to hide menu bars. Unfortunately, they usually haven’t been replaced by a viable alternative.

In every case I can think of – for example, Internet Explorer, Explorer, Media Player – I’ve enabled the traditional menus, even though they are hidden by default.

Technorati tags: , ,

Microsoft Silverlight: 10 reasons to love it, 10 reasons to hate it

A year or so a go I wrote a post called Adobe AIR: 10 reasons to love it, 10 reasons to hate it. Here’s the same kind of list for Microsoft’s Silverlight, based on the forthcoming Silverlight 2.0 rather than the current version. The items are not in any kind of order; they also reflect my interest in application development rather than design. It is not a definitive list, so there are many more points you could make – by all means comment – and it will be interesting to have another look a year from now when the real thing has been out for a while.

This Silverlight developer chart is available in full on Brad Abrams’ blog here, or in Joe Stegman’s Deep Zoom version here.

The pros…

1. The Silverlight plug-in means developers can target a single, consistent runtime for browser-based applications, rather than dealing with the complexity of multiple browsers in different versions. You also get video and multimedia effects that are hard or impossible with pure HTML and JavaScript; though Adobe’s Flash has the same advantages.

2. Execute .NET code without deploying the .NET runtime. Of course, the Silverlight plug-in does include a cut-down .NET runtime, but instead of dealing with a large download and the complexities of the Windows installer, the user has a small download of about 4MB, all handled within the browser. In my experience so far, installation is smooth and easy.

3. Performance is promising. Silverlight comes out well in this prime number calculator, thanks no doubt to JIT compilation to native code, though it may not compare so well for rendering graphics.

4. Support for Mono (Moonlight) means there will be an official open source implementation of Silverlight, mitigating the proprietary aspect.

5. Silverlight interprets XAML directly, whereas Adobe’s XML GUI language, MXML, gets converted to SWF at compile time. In fact, XAML pages are included as resources in the compiled .XAP binary used for deploying Silverlight applications. A .XAP file is just a ZIP with a different extension. This also means that search engines can potentially index text within a Silverlight application, just as they can with Flash.

6. Third-party component vendors are already well on with Silverlight add-ons. For example, Infragistics, ComponentOne and DevExpress.

7. Take your .NET code cross-platform. With Macs popping up everywhere, the ability to migrate VB or C# code to a cross-platform, browser-based Silverlight client will be increasingly useful. Clearly this only applies to existing .NET developers: I guess this is the main market for Silverlight, but it is a large one. The same applies to the next point:

8. Uses Visual Studio. Microsoft’s IDE is a mature and well-liked development environment; and since it is also the tool for ASP.NET, you can use it for server-side code as well as for the Silverlight client. For those who don’t get on with Visual Studio, the Silverlight SDK also supports command-line compilation.

9. Choose your language. Support for multiple languages has been part of .NET since its beginning, and having the .NET runtime in Silverlight 2.0 means you can code your client-side logic in C#, Visual Basic, or thanks to the DLR (Dynamic Language Runtime) Iron Ruby or Iron Python.

10. Isolated storage gives Silverlight applications local file access, but only in a protected location specific to the application, providing a relatively secure way to get this benefit.

The cons…

1. If Apple won’t even allow Flash on the iPhone, what chance is there for Silverlight?

2. Silverlight is late to the game. Flash is mature, well trusted and ubiquitous; Silverlight only comes out of beta in the Autumn (we hope) in the version we care about – the one that includes the .NET runtime – and will still lack support on mobile devices, even Windows Mobile, though this is promised at some unspecified later date.

3. The design tools are Expression Blend and Expression Design – but who uses them? The design world uses Adobe PhotoShop.

4. While having solution compatibility between Expression Blend and Visual Studio sounds good, it’s actually a hassle having to use two separate tools, especially when there are niggling incompatibilities, as in the current beta.

5. No support for the popular H.264 video codec. Instead hi-def video for Silverlight must be in VC-1, which is less common.

6. It’s another effort to promote proprietary technology rather than open standards.

7. Yes Linux will be supported via Moonlight, but when? It seems likely that the Linux implementation will always lag behind the Windows and Mac releases.

8. Silverlight supports SOAP web services, or REST provided you don’t use PUT or DELETE, but doesn’t have an optimized binary protocol like Adobe’s AMF (ActionScript Message Format), which likely means slower performance in some scenarios.

9. Silverlight is a browser-only solution, whereas Flash can be deployed for the desktop using AIR (Adobe Integrated Runtime). Having said that, yes I have seen this.

10. You have to develop on Windows. This is particularly a problem for the Expression design tools, since designers have a disproportionately high number of Macs.

More Oslo hints in PDC schedule

Wondering what exactly Microsoft’s “Oslo” is? Here’s a few hints from the PDC 2008 schedule:

A lap around Oslo

"Oslo" is the family of new technologies that enable data-driven development and execution of services and applications. Come and learn how to capture all aspects of an application schematized in the "Oslo" repository and use "Oslo" directly to drive the execution of deployed applications.

Oslo: The language

“Oslo" provides a language for creating schemas, queries, views, and values. Learn the key features of the language, including its type system, instance construction, and query. Understand supporting runtime features such as dynamic construction and compilation, SQL generation, and deployment. Learn to author content for the "Oslo" repository and understand how to programmatically construct and process the content.

Technorati tags: ,

Analysing Mojave: is Vista really that good?

Microsoft’s Mojave Experiment is now online. As I understand it, a group of people with negative perceptions of Windows Vista were shown a forthcoming version of OS code-named Mojave. In the cases Microsoft is choosing to present, they liked it much better – one woman scored Vista 0, and Mojave 10. Finally, it was revealed that Mojave was in fact Vista.

It’s a fun promotion and strikes me as a good effort in persuading people to take another look. Still, a few things puzzle me. The web page is somewhat frustrating, since to get all the content you have to click all of the little boxes – there are 55, but some repeat – but we still never see a complete video of what one of these subjects saw demonstrated.

I’ll describe one of them. Early on in her session (I presume), a woman is asked:

“Have you heard of Windows Vista?”

“Based on all the negative comments and frustrations I’ve seen my husband having to deal with I wouldn’t touch the thing,” she replies.

Now we get a snippet from the end of her session:

“Windows Mojave is actually Windows Vista”

“Oh is it [laughs] … Maybe it has more to do with the user than the application.”

I am going to defend her husband. Sure, users can be unpredictable and frustrating to deal with, but consumer software is meant to be “user-friendly” which means that if someone – and in Vista’s case, many people – have a negative and frustrating experience, then something is wrong with the software. That’s not necessarily Microsoft’s software; it could be third-party drivers, or lack of drivers, or the ugly stuff that gets bundled with a new computer.

Personally I moved to Vista back in 2006 and have never wanted to return to Windows XP. Then again, I did my own clean installs. I’ve also had problems including buggy display drivers flashing the screen, Windows Search causing painful delays in Explorer, stuttering sound with supposedly high-end audio cards, hours spent getting a new laptop ready for use,  Explorer wrongly displaying files as music, Media Center corrupting itself, and network weirdness (today) which knocked me off the Internet. Finally, when I compared Vista and XP performance, XP came out noticeably faster.

Few computers operate entirely without problems. Even so, I’ve seen enough to understand why someone might get frustrated; and that’s with clean installs of the OS.

There’s not much wrong with the core of Vista, as demonstrated by the generally solid performance of Server 2008, and now by Mojave. That doesn’t excuse the numerous problems that have spoilt the release. Let’s hope lessons have been learned.

Technorati tags: , , , ,

Vista Network weirdness

My Vista laptop could no longer connect to the Internet, when I plugged it directly into my router (to bypass my ISA firewall, to test some stuff).

Checked the IP settings, all fine – except that I had two Default Gateways, one of which was 0.0.0.0, the other of which was correct. Tried fixed IP with hard-coded default gateway, same result.

Booted into Linux, all fine.

Studied the Network and Sharing center. I had two active networks. One was called Network 5, the other Unidentified. Both were using the same connection – Local Area Connection 6.

Aside: I presume that when I first installed Vista this was Local Area Connection 1. Somehow, over time, Windows decided it should delete it and re-detect it, with a new name, 5 times over.

That didn’t look right. I noticed that if you click Customize, to the right of a network in the Network and Sharing Center, you get an option to “Merge or delete network locations”. Worth a try. Clicking this option gets you an ugly functional dialog that lets you select a network and, umm, merge or delete it. All the networks I have ever joined in hotels, conferences and hotspots round the world were listed.

My first thought was to merge. However, you can’t merge networks that are in use. I disabled the network card (in Manage Network Connections) and tried again. But, “Unidentified” was not listed. Forget that – I selected the lot and clicked Delete.

Re-enabled the card, and I’m back on the Internet. One default gateway. All fine.

I’d be interested to know what went wrong. And the network UI in Vista seems over-complex to me.

Lively attack on Microsoft’s poor marketing – from within

Microsoft employee Kirk Allen Evans has a go at Microsoft’s marketing efforts:

I am so completely and utterly sick, as an employee and a Microsoft shareholder, of seeing empty spending on crap like "People_Ready".  Remember the completely ridiculous Office Dinosaur spots?  C’mon, marketing, grow a pair… let’s see some results.  No, I don’t want to see a retort ad making fun of the "I’m a Mac, I’m a PC" goons.  That ship has long since sailed.  Let’s see what all that Microsoft money and some of the smartest people in the world can come up with.

He’s right. So are the comments to his post, observing that marketing isn’t the only problem, or even the core problem.

Still, Vista is now actually better than its reputation. That’s a marketing issue.

Technorati tags: , ,

Sample code for a very very simple VB database application

I wrote a short piece for Personal Computer World about making a simple Windows Forms database application. I did this because I get a lot of enquiries about it, and search hits to this site looking for samples.

The piece is actually in two parts. Part one shows how to do CRUD without any databinding or datasets.

You can download the code here – but please don’t bother if you can already do this in your sleep. The app is for Visual Basic Express 2008.

Part two is about using the VB wizards to create an app with a typed dataset, TableAdapters and so on. The database is SQL Server CE, which is well suited to this kind of application. It is the default in Visual Studio 2008 even though it turns out not to be fully compatible with the wizards. Typical Microsoft – simple, but with enough gotchas to frustrate beginners and keep experts in business.

I ran into another little puzzle while doing the sample. I needed to populate the listbox with both a string value and the ID that is the primary key in the database table. The way I would do this normally is to create a custom class to represent the record, implement a ToString() that returns the display value, and add instances of this object to the listbox. I wanted an even simpler way though, so I decided to use a ListView. This lets you add items that have both a key and a value. You can do this with one of the overloaded Add methods for a ListViewItemCollection, documented like this:

Creates an item with the specified key, text, and image and adds an item to the collection.

The strange thing is, the ListViewItem has no key property. So how do you retrieve the value of the key?

The answer is that the ListViewItem.Name property returns the value of the key. So the key is the name. Why not call it the name in both places? Or the key?

I guess that would be too easy.

What’s new in Subversion 1.5

The team behind the open source SCM (Software Configuration Management) tool Subversion released version 1.50 last month. Karl Fogel, president of the Subversion Corporation, says:

Measuring by new features alone, Subversion 1.5 is our biggest release since version 1.0 became available in February 2004.

I am a contented Subversion user, so took a look at the changes. Top of the list is “merge tracking”, though it is described as “foundational” which means that although the basic support is there, there is performance and feature work which remains to be done. From the user’s perspective, the difference is that branching and merging is just easier than before, as explained by Ben Sussman:

Notice how I never had to type a single revision number in my example: Subversion 1.5 knows when the branch was created, which changes need to be synced from branch to trunk, and which changes need to be merged back into the trunk when I’m done. It’s all magic now. This is how it should have been in the first place.

Other changes include sparse checkouts (when you only want to grab a small part of a repository), and changelists, a client feature which lets you tag a set of files under a changelist name and work on them as a group. There are also improvements aimed at making Subversion better suited to large-scale deployments using multiple servers. Subversion is still a centralized rather than a distributed SCM system, but 1.5 is better suited for use in a distributed manner. No doubt the Subversion team is aware of the increasing interest in Git, a distributed system. There are also numerous bug-fixes and performance tweaks. The changes are described here.

I want to move to Subversion 1.5 but it is not that easy. Compatibility is good, in that older clients work with 1.5 servers and vice versa, the main proviso being that you cannot mix several versions of the Subversion client with the same working copy. That is not likely to be a problem for most users.

The difficulty I encountered is that mainstream Linux distributions still have older versions of Subversion in their stable repositories. Ubuntu, for example, has version 1.4.4. My most-used Subversion repositories are on a Debian server, which also has an old version. I don’t want to switch the server to sid, Debian’s development distribution, and mixing packages is often problematic. I could do a manual installation I guess; but instead I will be patient.

I did install 1.50 on Windows, for an intranet repository. I used the Collabnet download. All I needed to do was to inform the installer of the location of my existing repository, and then copy a few lines from the old Apache 2.0 configuration file to the new Apache 2.2 configuration file. Everything works fine. I also updated TortoiseSVN on the Windows clients.

One of the advantages of Subversion (or any SCM) repositories over synched folders like those in Microsoft’s Live Mesh or Apple’s MobileMe (as I understand it) is that you get version history. I regard this as a key feature. The problem with synchronization is that you might overwrite a good copy with a bad one. It is easy to do; it might be caused by user error, or a bug in your word processor, or a failing hard drive. Automatic synch (un)helpfully replicates the bad copy all over. Versioning means you can just rollback to the good one.

Windows 3.1 in a Virtual Machine – Virtual PC wins this one

Andrew Brown asked about how to run Windows 3.1.

It is not too difficult, provided you have access to the install disks for DOS and Windows. An MSDN subscription will do. I tried Virtual Box with MSDOS 6.22 and Windows for Workgroups 3.11. Although it installed OK, it freezes if you use the mouse. Known bug apparently.

I tried Virtual PC instead. Microsoft wins this one: everything was fine.

I used the same procedure both times. It is slightly fiddly. I downloaded MSDOS 6.22 and WFW 3.11 from MSDN (subscription required). For some reason, the MSDOS you can download is an upgrade version. Therefore, I also downloaded a floppy image for 6.22 from bootdisk.com. This one is handy because it has a CD ROM driver. Note that my PC does not have a floppy drive. Here are the steps I used:

1. Make an ISO CD image including the WFW and MSDOS 6.22 files.

2. Boot a new VPC from the bootdisk floppy. FDISK and FORMAT /S to setup up drive C.

3. Mount the MSDOS 6.22 CD. Boot again from the bootdisk floppy. Copy setup files from MSDOS and WFW to C.

4. Boot from C. Run setup for MSDOS. Run setup for WFW.

5. Copy the CD driver and configuration from the bootdisk.

Since there is knowledge locked up in old, obsolete executables, the ability to run this stuff in VMs is reassuring.

Technorati tags: ,