Showing posts with label Microsoft. Show all posts
Showing posts with label Microsoft. Show all posts

Another Microsoft UI Fail

...this time in Microsoft Outlook. Could the programmer who was too lazy to write their code properly please go back to school? There is no excuse for this:

You want me to take this string, split it on comma characters, and re-join it with semi-colons instead? Sure, I'll do that you you, with my meat-fingers, because I'm really good at that, and computers are known to be terrible and SIMPLE TEXT MANIPULATION.

Visual Studio Exception Woes

Microsoft, in their infinite wisdom have decided to make programming easier. How? By setting the default behavior for Visual Studio 2010 Ultimate to be to ignore (i.e.- not break on) exceptions thrown from non user-code. Behold the default settings for exceptions in a brand new C# project:
Try as I might, I have not yet discovered a way to change the default for these settings for all projects. How am I supposed to teach students about exception handling when Microsoft are doing their best to get rid of them?

Bah.

On C++ programming IDEs

I've been doing a bit of programming work under Linux for the last few days, and I'm very disappointed with the selection of integrated development environments on offer. Read on for my complaints.

First though, a bit of history. I usually write code under Windows for my job. I use Microsoft's visual studio 6. For those of you who haven't tried it, compiling code with the VS6 C++ compiler is a bit like pulling teeth. For example, Microsoft thinks that the following is perfectly valid code:

for (int i = 0; i < 10; i++);
printf("After loop, i = %d", i);


However, The scope of the variable "i" is limited to the contents of the for loop (in this case it's en empty loop), and so shouldn't be available to the printf line. This becomes even more painful when you want multiple for loops within a function, and you want to be able to use the "i" variable for each loop. Under windows, you can do this:


for (int i = 0; i < 10; i++)
{
// do something
}


for (i = 0; i < 10; i++)
{
// do something else
}


Note that I don't need to re-declare "i" in the second loop, since it already exists? If you try and compile this code under a compiler that observes the C++ standard, you'll get compilation errors. So, how do you turn this into cross-compiler code? AFAIK the only way is to use a second variable inside the second for loop, OR to wrap each for loop in it's own additional scope block, like this:


{
for (int i = 0; i < 10; i++)
{
// do something
}
}

{
for (int i = 0; i < 10; i++)
{
// do something else
}
}


However, I digress from the true subject of this post. For all it's compiler digressions, the user interface actually isn't that bad. Sure, the toolbars seem to move to random positions on your screen every time you debug a project. Sure, you can't use it on a second screen because all the tooltips draw themselves on the first screen, and yes, if you want decent code completion you need to use a plugin like visual assist X, and no, there's no code folding either. But apart from all that, the UI is just right. It's not overcomplicated, it's easy to use.... simple!


So, let's look at KDevelop, KDE development environment. I have several problems with it:

  1. Code completion requires the user to jump through waaaay too many hoops. As far as I'm concerned it should be turned on by default, or, if that ruffles too many feathers, have one checkbox to turn it on. I shouldn't have to root around in the KDevelop settings, and project settings, add the library include directories I want to use for the project, exit KDevelop, install ctags, re-load project, tweak settings, and then find that code completion is actually not that brilliant.
  2. The User interface is way too cluttered. Many of the menus are so full of entries that they cascade off the bottom of my screen. There are so many toolbars and sidebars that I can barely see my work. Many of the sidebars don't even work properly! The documentation sidebar seems particularly useless. I could probably find out what I have to do to get it going, but my point is that it should work out of the box! When I fire up KDevelop, I want to write some code, not mess about with the environment.
The best development environment should be completely transparent to the programmer. OK, so none of the IDEs I've used to date achieve this, but a man can dream, right?


In the mean time, I'm going back to my old IDE: Kate, with the scons build system, activated from the console, and gdb as a debugger. What more could you want?

*buntu rant

I've noticed several negative news stories regarding the latest (7.10) release of the Ubuntu Linux distribution from Canonical. I feel I owe it to the good people working on this fine operating system to defend them on a few points.

First, I want to comment about stories such as this one that complain about the bugs found in Ubuntu after it's release. The article talks about the broken IPv6 / DHCP implementation. To start with, the article seems like it was written on a whim after a single reader wrote in to complain. I quote:

Our reader told us that Gutsy Gibbon's internet access "whether by wireless; ethernet or USB DSL modem is either impossible without some deft work at the CLI [Command Line Interface] or is incredibly slow (mostly from delay in resolving DNS)".

Hmmm... Perhaps in the future they should stick to reporting only what they have personally researched? And the poor journalism doesn't stop there - they then use a quote from Willie Faler's blog completely out of context; to quote the article again:

While blogger Wille Faler, who pointed out that many routers do not support IPv6, has offered a possible "work-around" for a problem he described as being a "big flaw in Linux's handling of DNS-servers".

However, if you actually read the article on his blog, you'll see that he wrote

Ok, I’ll be the first one to admit that my dismissal of Ubuntu as, shall we say “not too good” was a bit premature. I eventually found the cause and fix to my network problem. It is not a fix for what I consider a big flaw in Linux’s handling of DNS-servers, but it is a workaround that should be sufficient for most people, including those that spend considerable time on the go, like me.

What on earth is happening at The Register?

Anyway, regarding the actual release... I have a deep sympathy for anyone working on the Ubuntu project, volunteer or otherwise. I write code for a largish sized application suite, and I know how hard it is to test every possible permutation of software combinations - I can't imagine how hard it must be to test an operating system for a wide variety of hardware. I suggest that the author of the offending article spend a few months fixing bugs for any large software project; perhaps he will gain a better understanding for the issue.

I would like to take this opportunity to remind people that Ubuntu relies, to a certain extent on community support. I encourage anyone who wants to help out to download the beta releases and release candidates and report these bugs as soon as they appear. That way, we can hopefully reduce the number of such incidents along the way.

Incidentally, I stumbled upon this blog entry by Matt Loney - he expresses my thoughts on the Microsoft Vista operating system better than I ever could. He writes:

Why did Microsoft ignore the first rule of usability and ditch all familiar methods of doing stuff that I'd spent 15 years getting used to?

I couldn't agree more! Further, in the XP to Vista upgrade Microsoft deprecated many of it's APIs; this creates a whole lot of work for application authors. I understand that APIs need to be updated as the technology improves, but many of the libraries that were removed were still functioning and widely used. Why remove them? The cynic in me suggests that there must be a monetary motive at play here..

But I digress; this post was supposed to be about Ubuntu! If you haven't tried it already, download the new 7.10 release of one of the Ubuntu projects!