Microsoft has released the latest in its Visual Studio series – Visual Studio 11 aka Visual Studio 2012. While there are lots of new things in it, there’s no one unifying theme in this release, apart possibly for Windows 8 support and Windows App Store. There is, though, improved ASP .NET and .NET 4.5 framework support and there are a lot of minor improvements and new features.
But – there is a problem. Visual Studio 2012 doesn’t look good. In fact, it looks horrible. Now this initial feeling of ‘yuk’ happens quite a bit to me when I come across a new interface to a product I’ve used for some time and with which I’m very familiar. Mostly, I get used to it and move on. The initial dislike is simply due to unfamiliarity. However, with Visual Studio 2012 this hasn’t happened. As I’ve used it over the last few months, I haven’t grown to love it or like the look and feel – quite the reverse. So much so, that I now prefer to use Visual Studio 2010, but more of that later.
The first thing that hits you when you open Visual Studio 2012 is the color: grey, monotonous, dull. The second is the menus across the top WHICH ARE ALL IN CAPITALS AND SHOUT AT YOU LIKE THIS. Well, you can fix the capitals easily via a registry setting, but the colors are bit more problematic. There are two ’themes’ you can select - ’Light’ and ’Dark’. The ’Light’ theme really should be renamed ’Boring’ and all I’ll say about ‘Dark’ is that it shows that Microsoft has a sense of humour. It’s interesting here to compare Apple’s Xcode IDE with Visual Studio. Xcode looks nice but is a nightmare to work with – I personally prefer to use a text editor on the Mac. On other hand Visual Studio actually does what it says on the tin: it works. Maybe Microsoft and Apple should swap some engineers. Apple certainly know how to create great visual designs, while Microsoft know how to create a usable IDE.
’Dark’ is not to my taste!
There are many new features in Visual Studio, and depending on your work (web engineer, C# coder or whatever), you’ll probably find something of interest to you. But for me, the two things that stand out (apart from the look) are the Visual Studio 2010 integration and the loss of the setup project deployment.
Previously, say when up grading from Visual Studio 2008 to Visual Studio 2010, it has been impossible to use an earlier version of a Visual studio project file with the new version. If you have to support more than one version of a Visual Studio product, as I do, or if you want to mix different versions of Visual Studio within a team, this has been a real problem. But with Visual Studio 2012 you can, with a bit of care, use identical project files for both Visual Studio 2012 and Visual Studio 2010. For me, this is great! It means that I can support both of our products on both versions of Visual Studio without repeatedly editing the project files. It also means that – again with some careful design on my part – that users of our products can seamlessly switch between Visual Studio 2010 and Visual Studio 2012.
The magic $(VisualStudioVersion) macro allows you to configure projects for both Visual Studio 2010 and Visual Studio 2012.
The other thing that hit me was the loss of the set up and deployment system (vdproj). Microsoft had been advertising this fact for some time – but I must have missed it. Anyway, Microsoft do include a free lightweight version of InstallShield – a similar sort of thing to the established Dotfuscator Community Edition. However, InstallShield Express proved too limited for my purposes (it won’t handle installing services for example) and so I had to find another solution: enter WiX.
It took me about a week to convert my vdproj based deployment system into WiX (I’ve written more on this HERE). WiX isn’t a trivial product and has a learning curve associated with it. But once you’ve got it configured, it’s simply superb. I love the XML based configuration since it means I can see exactly what’s going on and the installation debugging on the target machine is also very good. Overall, WiX is a vast improvement on the old vdproj system – its more flexible and a lot easier to manage. I can’t say that I’m sorry to see the last of vdproj. Now the curious thing here is that if it took me a week to build an ANTLR system that converted a pretty complicated vdproj to a WiX project, why couldn’t Microsoft do the same? It surely wouldn’t have been beyond the capability of even a raw Microsoft intern to do the job properly and we would have got a WiX system nicely integrated into Visual Studio. Instead, there’s a lightweight replacement for vdproj which requires a paid upgrade for a commercial version of InstallShield to do serious installation. Curious.
I can’t say that I mourn the passing of vdproj - but WiX is wonderful!
Microsoft claims to have improved the IntelliSense in Visual Studio 2012. If it has been improved, I can’t see it. The IntelliSense for C# seems to me to be exactly the same as before – it just works. But for C/C++, it still seems, shall we say, not very good. In Visual Studio 2010, Find All References gets references to variables in other projects, tokens in comments and so on. But in Visual Studio 2012 it seems to have got worse. It’s now so bad that I’ve now turned IntelliSense off for my C projects. In Visual Studio 2010 it works reasonably well – not great, but better than in Visual Studio 2012. I don’t know whether it’s a bug, some setting I’ve not configured correctly or just an act of God – but for me, on my projects, C IntelliSense is not properly functional in Visual Studio 2012. The thing here is that I can compare Visual Studio 2010 and Visual Studio 2012 directly because I can use the exact same project file for both. In VS 2010 it works (up to a point), in Visual Studio 2012 it really doesn’t, at least for me.
Onto the user interface: the main thing here is that the Solution Explorer has been improved. You can now filter the files displayed by, say, all open files, or by modified files – possibly very useful. In C# (and probably VB, though I haven’t tried it) you can also expand a file to show the functions within the file, which is really a duplication of the methods drop down box, just above the code window. If you’ve used Eclipse, this will be familiar. Personally, I’m not a great fan of this because if clutters the Solution Explorer too much. Having using it a bit, I just went back to using the dropdown for navigation. And to be honest, I don’t use that very often.
The Solution Explorer has been improved - but I can’t say that I’ve ever used any of the new features in anger.
One other thing that I thought might be of interest was the bitmap and icon editor. Previously, in Visual Studio 2010 32-bit bitmaps were not fully supported – you could display them, but not do much with them. The bitmap editor is much improved in Visual Studio 2012 and you can now edit 32 bit bitmaps, but not to the point where I would want to use it to do serious work. I’m certainly not going to give up the Axalis IconWorkshop.
Overall, there are many improvements and new features in Visual Studio 2012. But whether these are of any use depends very much on what you do. If you are developing Windows 8 apps, say, then Visual Studio 2012 is worth getting. But if, like me, you have zero interest in Windows 8, don’t do much web or database development, and the term ‘application lifecycle management’ has as much intrinsic meaning as the poetry of Edward Lear then you might want to consider carefully if the upgrade cost is justified. The problem for me is that Visual Studio 2010 just does what I want: it simply works. However, because I can now run both Visual Studio 2010 and Visual Studio 2012 on the same projects (and I do on a daily basis) I can compare the two products, running them side by side. Previously, I couldn’t do this - the upgrade process always used to be one way only. When you can compare the two versions like this, you can clearly see what you are getting for your upgrade money. Personally - and this is just for the way that I work - it doesn’t seem a lot.
Visual Studio 2012 is an evolution of the Visual Studio product rather than a revolution, and no doubt over time, as Visual Studio 2010 is no longer updated, it will become necessary to migrate to access new features of Windows and .NET. But as of now, I suspect that there are many like me who will look at Visual Studio 2012, compare it to Visual Studio 2010 and think “why bother upgrading?”
Dermot Hogan is chief architect of the Visual Studio IDEs, Ruby In Steel and Amethyst, made by SapphireSteel Software.
Writing an installer for Visual Studio is not simple task - especially if you want to support more than one version of VS...
One of the consequences of the release of Visual Studio 2012 has been the demise of the Visual Studio Setup and Deployment project (vdproj). To be honest vdproj was never that great and I can’t say that I mourn its passing. But something has to replace it and the free InstallShield Express wasn’t capable of building the installations that I require.
I’ve been working on the next versions of Amethyst and Sapphire (Ruby in Steel) - the two Visual Studio IDEs made by my company, SapphireSteel Software. One of the jobs was to make sure that both worked with the new version of Visual Studio 2012. Mostly this has been straightforward with none of the labour required when moving from Visual Studio 2008 to Visual Studio 2010, when Microsoft introduced a new core text editor (that was hard work!). The main problem has been the requirement to find a replacement for vdproj that works with both Visual studio 2010 and Visual Studo 2012.
I’ve just written a fairly in-depth account of how we solved this problem using the WiX installer. Read more on the SapphireSteel Software site...
First the good news – the internals of Visual Studio haven’t been futzed with. Not much as far as I can see anyway – there’s no new WPF Editor implementation or anything like that, thank goodness. The other good news is a new image editor that allows (gasp) transparency or alpha channel editing. If you’ve ever had the misfortune to use the old Visual Studio image editor, you’ll raise a cheer (as did the audience at BUILD when this was announced, apparently).
The other two major areas that I can see from a quick inspection are, first, extra tools to help parallel processing development and debugging. Secondly, improved C++ support particularly for IntelliSense and C++ 11.
Now, the C++ thing is odd, because for years Microsoft has neglected C++, concentrating on managed .NET languages like C#, VB and lately F#. So why C++? It must be for performance reasons. The only two places where performance matters that I can think of are mobile and games. For mobiles, the reason is battery life. Faster doesn’t mean zippier swipes (though it does help of course) – but it does mean less cycles and so better battery life.
For games, C++ now supports passively parallel systems for GPUs. And another consideration might be that processor speeds on desktops have maxed out at around 3GHz for the last few years and it doesn’t seem to be increasing any time soon.
And the bad news? There isn’t any as far as I can see. Visual Studio keeps getting bigger with more features and technologies being supported. From my initial kicking of the tyres it’s still the same absolutely solid industrial strength IDE: I still think it’s the only IDE that’s in this category.
At last - a decent image Editor!
Trusteered! Visual Studio, SEHException and Me
Or how I was saved from a reinstallation
Thursday 4 August 2011.
I (along with a good few others, I think) had a most peculiar problem yesterday. Visual Studio refused to debug. To be precise, it crashed with a SEHException whenever it tried to open a file while debugging. Initially, I assumed it was my fat fingers that had caused the problem, so I deleted everything in the project’s object folders and tried again: no go. Next, I reset the experimental hive in the registry: no go. Then reboot: no go.
I this point I was contemplating a complete reinstall of Visual Studio and beginning to get a bit panicky. I had bugs to fix and a business to run and re-installing Visual Studio is usually a couple of hours work and not something I wanted to do.
Fortunately, I did a Google search for SEHException and Visual Studio - and found that not a few had been there before me. It turns out that the problem was caused by Trusteer Rapport – a normally docile security program for protecting banking passwords. I uninstalled Rapport and all was well.
Now I’m extremely careful about installing any software on my production systems – I’ve been bitten too often by beta software which has unexpected results. He who installs beta software on a production system gets what he deserves, in my view. I’m also careful about installing bling – if it isn’t needed, I don’t install it. But this one – a previously perfectly functioning program that suddenly zaps a debug session in a totally unrelated piece of software - is new to me. God only knows how the person who came up with the fix of removing Rapport did it, but he has saved me - and others - a good deal of time and trouble.
I suspect that the only way round this sort of thing is to have a really efficient “bare-metal” virtualization system such as Hyper V or VMware. I’m no expert concerning virtual machines, but I’ve used both Microsoft’s Virtual PC and VMware Workstation with good effect. There are rumours that Windows 8 will have Hyper V and if so, and it’s efficient with the graphics, I’d be first to upgrade. The connections between software components is getting so complicated and involved that it’s becoming impossible to disentangle the parts. I suspect it’s going to get a good deal worse.
“It’s better to have known bugs rather than unknown fixes”. It’s a motto that’s served me well over the years, and it applies particularly to software ‘fix packs’ or ‘service packs’. Well, I broke the rule yesterday and installed Visual Studio SP1. And I’m now re-installing Visual Studio from scratch as I write this. It’s nobody’s fault but mine, and, yes, Microsoft’s.
The problem I’ve got is that the debugger no longer functions as it once did. I used to be able to hover over a variable and ‘drill down’ into it. Now I get the message “Function evaluation disabled because a previous function evaluation timed out” all over the place and once I step with F10, Visual Studio disappears into a black hole, from which I can’t recover. Whatever the cause (these are pretty complicated variables: generic lists of dictionaries of sorted lists – that sort of thing), this did NOT happen with the original Visual Studio installation. Unfortunately, this is vital for my debugging and I can’t really live without it. So bye-bye SP1.
That’s not the only problem with SP1. I started installing it at lunchtime yesterday. I was still at it in the evening. Not only is SP1 vast – over 440MB – its installation is primitive. I was asked three times if I wanted to install a particular product at different stages in the installation. Of course, I’d gone out for a walk, painted the house, watched the paint dry in the meantime and not realised that SP1 was waiting for an answer. I’d have thought that it might have been an idea to present a summary screen at the start of the process and go from there. Apparently not. Even so, each stage seems to count the bits on your hard disk and then cross-checks the result. What on earth was it doing? Beats me.
Further, the SP1 installation process lies. It has a cheery little progress bar giving the expected time to complete the installation. I happily sat and watched it report zero minutes to completion. For over half-an-hour. More than once, more fool me.
I’m reluctant to throw rocks at Microsoft’s Visual Studio developers. I’ll be in a similar situation shortly – we’re releasing a Ruby IDE Ruby In Steel soon and I’m pretty sure I’ll have let some bloopers out of the door in the process. It’s just the nature of software.
Still, it doesn’t stop me feeling annoyed with Microsoft. At the end of this little saga, I’ll have wasted the best part of a day from my precious release schedule with nothing to show for it.
But the person I’m most annoyed with is myself. For breaking the golden rule: “if it ain’t broke – don’t fix it”.
Bah. Humbug. Merry Christmas to one and all.
There’s an interesting take on Google from long time Microsoft watcher Mary Jo Foley. Google seems to be in the process of heading from being everyone’s favourite software company to a basket case.
Google has 45-46 separate products at the last count - but only one of them makes any money. The rest of them are way under water - fairly characteristic of a company with too much money to spend. Google Earth might be a fine and wonderful thing. But does it add a cent to the bottom line? I think not.
I’m not in favour of large hierarchical corporations - I worked in a couple and I don’t want to do it again, thanks. But beyond a certain size, you just have to have management. Sooner or later, Google is going to understand that. The only variable is how much shareholders’ cash they will blow before realising it.
Smarter cats are not the answer.
Well, the pigs have started to fly. Microsoft has introduced a tool that makes it easier for the poor, ignorant, un-enlightened VB 6 user to use .NET forms – in a VB6 application. Woo-hoo!!
Let’s see now: VB6 was released about eight years ago, and .NET about 5 years ago. And it’s taken this long for Microsoft to twig that there is a whole raft of VB 6 users out there who are perfectly content to sit on their wallets and not fork out good cash for VB .Net.
The tool in question is the Interop Forms Toolkit 1.0 and it looks to be part of what the doctor ordered for VB6 users beached by Microsoft’s insane decision to dump VB6 in favour of VB .NET. Not to put too fine a point on it, the market has rejected VB.NET in its current form. I’m not going to go over the arguments as to why the last language you should chose to upgrade to from VB6 is VB .NET: to my mind it’s a no-brainer choice to go with C#. If you’re going to have to re-write your application, you might as well write it in something that’s certainly going to stay around.
I’ve some experience here having previously written a reasonably sized application in VB .NET and one I’m now working on in C#. You can write perfectly good applications in both, but I have absolutely no regrets whatsoever in switching to C#. It’s better supported, with far more examples of how to do things out there on the web and its obviously Microsoft’s favoured language child. Put it another way, where do you think Microsoft’s language A Team (headed up by Anders Hejlsberg) work? It’s not VB .NET, I can tell you that.
There’s a saying in the music industry: “where there’s a hit there’s a writ”. Meaning, if you have a nice tune and make some nice money from it, someone, somewhere will try to get a slice. The usual claim in the music industry is that the whole or part of the tune was ‘borrowed’ from an existing piece of music, which, naturally, the party to the writ claims to have written, so to speak.
Normally, if you have a great idea, you can try to prevent others from cashing in on your invention by patenting it. The pharmaceuticals industry is the major one these days. Drugs take such a long time to get to market and have to go through so many tests and regulatory hurdles that the standard 20 or 25 year patent really doesn’t seem to give the pharma companies long enough time, even with a patent monopoly, to get their money back. Still, they don’t seem to be going bust.
But what about software? Can you patent a software program? Should you be able to? Now this is a legal minefield, and I have to say I’m not a lawyer (if I was, I’d be a good deal richer than I am now). But it seems to me that, in most cases, software copyright should be sufficient to protect the author of a program: you don’t need to go to further. There are some cases where an algorithm is sufficiently original to be patentable – the RSA one that encrypts transactions over the internet for example, or the Unisys LZW patent covering the GIF format (both expired now, incidentally). That seems ok to me, but the Amazon ‘One Click Shopping’ patent is just ludicrous.
The outcome of companies like Amazon and the like patenting everything under the sun is the emergence of ‘patent trolls’ – companies and individuals who exist solely to patent software (or purchase existing patents) and then attempt to extract money from users of the patents. If you don’t patent your ‘Little Pinkie Typing’ technique, then someone else will – and then proceed to charge you for the privilege. It’s sort of like an escalating patent ‘pre-emption’ war, with everyone patenting even the most obvious ideas before a rival gets there and does the same.
On the other hand, software patents do serve to put the brakes on the more outlandish activities of companies like Microsoft, who seem to think that if they haven’t invented it, it’s theirs anyway. Microsoft has settled a $60m suit with Burst over some media player software and is currently appealing a $525m suit with the University of California.
But the most famous recent case is the one with the mighty eBay pitted against the tiny MercExchange over the patents that MercExchange holds over internet trading. This one went all the way to the Supreme Court, with the final decision being that MercExchange could not shut down eBay even though it did hold a valid patent. I don’t know the merits or otherwise of MercExchange’s patent claims, but I do know that MercExchange didn’t build an eBay out of them. Why then should MercExchange be entitled to shut down eBay – effectively holding it to an unlimited ransom – over a fairly trivial (to my mind at any rate) ‘invention’?
This is getting crazy. If everything is patented then it really will put a brake on innovation. Why build an IDE for Ruby - to take an example close at hand - if some parasite who hasn’t done any of the work comes along after the event and demands a slice of the action (can someone really patent the very idea of doing a Ruby IDE? - stranger things have happened)? Personally, I take a robust capitalist viewpoint over this: if you want some of the Ruby IDE market, do the hard (very hard, btw – it really is not easy) work and build a better one.
And may the best IDE, not the best lawyers, win.
So Bill is going. Well, not until 2008. OK, he’ll still be chairman. For life, of course. It reminds me of the Cheshire Cat, except that Bill doesn’t smile, he has a Vision. I suppose this ‘retirement’ is as good a point as any to look at Bill’s ‘vision’ and see where it’s got us. Before Bill and his Vision, the only people that had visions were old testament prophets and those wired to the moon. Unfortunately for Microsoft’s competitors, Bill was (and is) neither.
Bill’s Vision can be roughly translated as cheap processing power everywhere (running Windows, naturally). The Vision has changed a little over time as technology has moved forward; I wouldn’t have thought that the original Vision included the XBox, but still, Bill has kept Microsoft moving forward, brushing aside every competitor from Netscape to the mighty US Department of Justice itself. Where are Marc Andersson and Judge Thomas Penfield Jackson now? Who cares and judging parking offences, respectively. But Bill? Bill is moving towards replacing Mother Teresa. Amazing.
For better or worse, Microsoft has transformed the way we live and work. There have been a few assistants, of course. Moore’s Law doubling the power of a chip every 18 months was essential. The incompetence of IBM was pretty important too. As was Apple. While Steve Jobs didn’t invent the graphical user interface (he stole it from Xerox), Apple popularised the idea but then failed to follow through. I still don’t really understand how Apple managed to screw up. I do remember in 1986 designing software on a tiny (a 9-inch screen – I had better eyesight then!) Mac while typing the design documents on Windows 2. I can tell you which was the better experience, and it wasn’t Bill’s Vision.
The Great Extinction
Microsoft really took off in 1990 with Windows 3. I still remember the ‘wow!’ feeling when I first saw it. But the practical effect was more interesting. For example, before Windows 3, there were little things called ‘printer drivers’. A word processing program had to interface to a printer using one of these. WordPerfect had a collection, as did WordStar. They were all different and all had different bugs. But after Windows 3.0, they were as dead as the dodo. As WordPerfect and WordStar were soon to become.
The point is that Windows 3 standardised the PC world. It defined the size of the rail tracks that the software rolling stock moved on. Even IBM with all its money and resources couldn’t stand against that and after a few years of pouring money down a bottomless pit of OS/2, it gave up.
But Bill’s Vision kept moving forward. Bill not only had the Vision, he had the smarts to hire really good people to implement it. One of the best of these was Dave Cutler, architect of DEC’s RSX11 and VMS operating systems. Cutler designed Windows NT, the basis of Microsoft’s ‘industrial strength’ current systems. Whatever Windows 3 and its 9x successors were, ‘industrial strength’ they were not. The successor to NT, Windows XP and friends are all pretty reliable, irrespective of the juvenile rantings of the SlashDot bunch. Interestingly, another of Bill’s better hires is Anders Hejlsberg. More on him and LINQ in a future column.
But there’s a downside to both Bill and his Vision. Microsoft is, in some ways, a seriously dysfunctional company. You just have to look at the Mini-Microsoft blog to see what’s wrong. I’ve been through review processes like that (at both ends, by the way) and I suspect that most people subject to review processes in a large company will see more than superficial resemblances. How on earth anyone can produce anything that’s good when you have to go through that junk beats me. It’s one of the reasons that I left working in large companies – they are all like that to a lesser or greater extent.
But where Bill’s Vision seems to have misfired is the Internet. Microsoft has simply had very little impact. Yes, 80 percent of us use Microsoft Explorer to surf (I use Opera myself, far better than FireFox), but the Internet is dominated by Linux, Apache, MySQL and PHP (LAMP). Microsoft’s Internet Information Server? Never heard of it. The interesting thing here is that while Microsoft may not have had much impact, neither has any other single company. Take Sun “the network is the computer ™”. Ha! Java was supposed to nix Microsoft and dominate the Net. It’s done neither: Java is firmly and irreversibly stuck between databases of various types (Oracle 48%, DB2 22%, SQL Server 16%). And Sun is irreversibly heading towards extinction.
I Want To Break Free
The point is though, that none of this has been directed by a Vision: it’s happened naturally. Or not so naturally, really. The LAMP stuff is used because its free. Incidentally, I don’t buy this guff about open source: if I have a choice between something that’s going to cost me a $1000 and something that’s free (and they do the same thing), I don’t give a toss which is ‘open source’: I’ll take the free one. It’s called economics, stupid.
And it’s the economics of the Net that is far more powerful than any Vision. Adam Smith’s ‘invisible hand’ is vastly mightier than Microsoft, IBM and Oracle put together. What the Net provides is an essentially zero-cost distribution system for software. It’s global too. People do make money from free software: not from the software itself, but from supporting it. If you have a global market, with zero distribution cost, then you have a very wide and deep ocean of potential customers. All you need is a few of those to convert to a commercial license. MySQL is a good example – about 1 in 1000 downloads convert. True, MySQL is ‘open source’ – but as I’ve said, this is irrelevant. Don’t think that MySQL software is intrinsically good due to the myriads of dedicated ‘hackers’ beavering away for the benefit of mankind. It’s good because there is a small team of dedicated experts (who are paid, by the way, from the company profits) working on it. MySQL makes its money on supporting commercial users.
But just because something is free doesn’t mean it’s the best for a specific job. Microsoft has built a 10 billion dollar server business on Windows. That’s a lot of cash and generally people (governments are different) don’t throw that amount of cash at something unless there’s a good reason. Equally, take IBM. IBM’s ‘big iron’ still runs the vast majority of the world’s banking and airline reservation systems. I might be slightly annoyed if I can’t connect to my ISP running free Linux on some cheap hardware. I would be more than annoyed if my bank couldn’t transact my business.
It seems to me that Bill’s Vision has run it’s course. There are cheap microprocessors everywhere. Some will run Windows, most won’t. But the economic forces that are now arising (why employ an expensive European graduate when you can use a cheap one in India?) will make any single Vision redundant.
It’s a good time to move on, Bill.