Friday, May 25, 2012

Addons

I've added a few extensions to Visual Studio that I thought I'd point out. By way of disclosure, I'm using Studio 2010 Professional, so these may or may not work with anything else.

First:
Power Productivity Tools from Microsoft

This is the coolest and most useful plug in I've found. You can follow the link above to see what it does in detail, but it includes things like auto brace completion, a couple improvements to quick find and a really nice improved scroll bar that allows you to see all break points and bookmarks on the scroll bar. Best of all, you can turn each feature on and off individually.So if all you want is to be able to cntr-click to go to the definition (very handy, by the way) you can shut the rest down.

Next:
Power Commands
This one is a bit less useful for me, but still has some nice things. The ability to "open containing folder" so you can get to the Windows Explorer location of the file is, itself, enough of a reason to get this. "Open Command Prompt" also ranks up there, since it will not only open the prompt, but auto-navigate you to your project folder.

Finally:
Indent Guides
This is a must have! It basically draws little colored lines connecting every open brace to its corresponding close brace. So it makes it much easier to debug a nested if inside of a loop inside of a method inside a class inside a name space and actually *understand* it.


Other things:
Keyboard shortcuts
Microsoft has made some of the keyboard shortcuts available as a poster.
Some of my favorite lesser-known ones:
  • F12 on anything will take you directly to its defintion
  • ctrl and the minus sign ( - ) is like a "back" button in a browser and will return to your last location. So if you put a cursor on a method reference, then hit F12, you'll be at the method definition. If you then type ctrl-, you'll be "back" to the place where you originally put your cursor.
  • ctrl+shift+-  () will move you forward -- like a "forward" button in a browser. 
  • Ctrl+shift+b does a build of the current project. 
Hope this all helps you be more productive. I think I deserve a cookie now.
--kevin

Thursday, May 17, 2012

Another Little C# Thing I didn't know


Sometimes I don't think I know much about C# (or anything else for that matter).

I didn't know you could do this:
static void two(string x, int num=1)


in this, the parameter "num" is optional. I didn't know you could optional parameters in C#. I've been looking at C# code since C# has been around -- code reviews, my own code, samples on the internet -- but I can't recall ever seeing anyone use this.

Here's a code sample.
        static void Main(string[] args)
        {
            two("one", 2);
            two("two");
        }
 
        static void two(string x, int num=1)
        {
            Console.WriteLine(x + " " + num);
        }
 
 
You can also used named parameters. So this also works:
        two(num:7, x :"named");
(at least in .Net 2.0 and later).
I remember named and optional parameters in VB4,
but I was completely clueless that you could do it in C#.

Now, we're all a tiny bit less clueless.
--kevin

Wednesday, May 2, 2012


Quick diversion to Skyrim            

OK. Here’s a geek thing: I like to play computer games sometimes. Occasionally, I give into my guilty pleasure until it becomes an obsession. Naturally, I often keep my obsession hidden, like any good addict.

But I have to blog my recent experience with Skyrim, because I think it says a lot about the industry.

When my Skyrim disk arrived from Amazon, I eagerly popped the DVD into the drive and salivated during its loading. Only, you can’t just install a PC game anymore. The only way you can play (well, without a lot of back-door things) is to install Steam. For the non-gamers out there, Steam is an online service that verifies that I really own the copy of Skyrim I’m playing. Now forget the fact that Skyrim sold 3.5 million copies in the first 48 hours after its release and sold something around 10 million copies total, the companies that make this stuff now want to make sure that some poor 14 year old in Iowa isn’t playing illegally and costing them the 10 million and *first* copy they could have sold, so they burden the other 10 million of us with this top-heavy, internet-based nonsense.

(Example of the nonsense : I can’t play Skyrim if my internet connection goes down, even though I paid my $50 for the game and it’s not an online game. It’s kinda like OnStar preventing you from starting your car unless you first tell them your password. If you happened to park in an underground garage, too bad. You’ll have to be towed. Oh and Steam launches at start up every time I boot. There’s no option to turn that off without digging through a bunch of registry keys—which I did, by the way. Without doing that, every time you boot, you have to wait for the dialog to come up and prompt for your password, after it finishes verifying that the Steam service is available on the internet.)

I told myself last time I played a Steam game that I would never do it again. Seems I lied to myself. Well, to be fair, it wasn’t obvious that Skyrim used Steam. I think I’d heard it at one point, but forgot it. So, it is what it is.

Steam added quite a while to the install. It has to connect to the internet and sign you in with your account. Of course, I couldn’t remember my Steam password. I mean, it’s not like I use it all the time or have it tattooed on my arm or anything. So after a half an hour of installing and resetting and such, I was in.

Once I was in, Steam started to advertise to me – because, clearly, 10 million sales isn’t enough. Mostly, they advertise downloadable content, but occasionally, they push new games.
I get that I watch commercial TV and have to watch the ads because I don’t pay for it. And I get that I have to pay for HBO so that I don’t see the commercials. But when I pay for something *then* also have to watch the commercials, it fries my cupcakes.

OK. So I’m in and have seen all the ads. Now the game starts in earnest. The default settings on the game came up with lower-than-acceptable resolution, but I changed that. The game also came up in full screen mode, which I hate. I multi-task. I’m typically playing a game like this while I’m surfing the web, updating facebook, checking email and chatting with a friend. So I re-set the full screen to “windowed” mode – only to discover that the game was obviously written for an Xbox, since the window had no controls on it, and was just about impossible to drag. Oh, and it was on the wrong monitor. It always comes up on my primary, even though I set it for the secondary. Because, of course, Xboxes only have one monitor, I guess.

I figured out a trick to drag the window (had to place another app over it, so that just the outside of the frame was shown, then select the overlay-ed window and slide the mouse up until I just hit the exposed part of the frame. Then I could drag... no, really).

Well, a pain, but functional. So the game comes up and is just about *unplayable* with a mouse and keyboard. Oh, there’s instructions on how to do it, but the interface is completely unmanageable. Because it was made for an Xbox -- with its Xbox gamepad -- not a PC.

I remembered that I had an old Logitec game pad, so I shut down the game and searched for my controller. Got it, plugged it in and re-started the game. Only, Steam (God love them) re-set all my graphics settings and opened the game full-screen on the wrong monitor again, after trying to upsell me, of course. (*sigh*).

Well, OK, fine-- only the game doesn’t see my controller at all. I Google. And find out that the *only* control the game will support is the Xbox controller, because—wait for it -- it was written for the Xbox. I Google some more and find an emulator that will translate my Logictec controller into Xbox-ese, and fake out the game into thinking it’s an Xbox one.  So, I swallow the virus risk (well, I did scan the file), run the emulator and I’m good.

I restart Skyrim, sign into Steam and wait for Steam to respond. Steam re-sets my video again and opens full-screen on the wrong monitor with the low video settings. Then it tries to upsell me. But the emulator works.

So I’m gaming now. Although I spent so much time messing with it that I haven’t actually gotten into the game much. It’s playable now. But, so far, it’s not much fun. Hopefully, after $50 and a few hours of my time, that will change.

But all this speaks to the computer industry. The company that makes Skyrim (Valve, I think?) made something like half a billion dollars from the game. But it isn’t enough money anymore to avoid ads, to allow people to run offline or to actually support the target platform.

I see the same thing in other software I buy. The general quality sucks – I don’t mean functionality, I mean the platform support and such. Windows 8 looks like a kludge (more on that later). We’re told that we need a new interface because the old interface won’t support notepads – even though I don’t have a notepad… because the zillion dollars they make from PCs isn’t enough. The new version of Office (so I hear) will incorporate Office 365’s online support, even though I do a lot of editing offline. My new Dell gets angry when I don’t synch with Dell’s online cloud, even though I have no interest in putting anything on their online portal.

Seems to me, it’s all part of the same deal in computers to drive more review from the products. We’re being pushed into products that we’re told we want because it’s beneficial for the companies that make them. We’re having our personal data sold. We’re getting advertised to on our own computers.

Of course, we’re the ones who keep buying the stuff.
--kevin