Categories
Geeky/Programming

Thoughts on the Future of Microsoft Development #pdc2010

The PDC was last week. I have never been (was scheduled once but didn’t end up going), but I try to keep up with everything that they have online, and now even more the blogs and tweets. Here are my thoughts after digesting everything I could.

Strategy

I’m not sure this much of one.. but Microsoft is still trying to figure out and find their development strategy. From back in the 90’s when it was Win32 then MFC and ASP Classic with VBScript + Office/VBA, to then Managed code (.NET C#/VB.NET, and ASP.NET Stacks).. and then WPF/Silverlight, they still and always will keep changing so that developers have to keep learning new things and looking at the next shiny object. There hasn’t been much of a convergence or steady path though. It seems once a developer or team picks up a technology it is already outdated, and I am guessing this will never change.

Anyways, after watching the videos and seeing discussion, this is what I think..

1. HTML5

The web! Ahh, the web. The one place there are no restrictions. Apple is saying, develop under our restrictions, or go out to the web with HTML5, and Microsoft is going to follow suit. If it was ASP Classic, or ASP.NET WebForms, and then MVC, and now HTML5, the web will be around for a while and Microsoft doesn’t want to get left behind. For a while they were touting Silverlight as the “new web” or whatever, but that seems to have changed.

Web applications are good for some things – well, a ton, but not everything. You can’t do some of the richer things you can do on a client on the web, deeper integrations. You can’t really run a web app offline either, no matter what people say, it just won’t be the same as a fat client. Anything I hear from MSFT that says, it does “X” if you use IE9 and I just cringe. Forget IE, let’s make it work for all browsers.

2. Silverlight

If you are developing for the WP7 Phone (who has one? yeah – I thought so), you use Silverlight, other than that, not 100% sure where they are going with this. Use it for video streaming? Games? Flash killer? Basic RIA application that needs a little more integration with the desktop than a standard web app, but less than a fat client. The problem is, what you can and cannot do in Silverlight changes every release – In my opinion they should open it up more, let you do more things with the desktop. Let devs focus on just one set of rules. I have a feeling that Silverlight might just be used as a “glue” technology instead of a “main” technology. The glue between Web and Windows?

3. WPF

Unknown here. Not much at PDC, but some talks. Winforms (like Webforms) is a forgotten technology at MSFT, so to all the people who jumped on those trains, sorry, you need to hurry up and get on the new trains. I have read some places that WPF is the future for desktop/fat client apps at MSFT, and other places where there is no Product Manager, there is barely a team, no support, they are letting it die (ala Winforms), but who knows for sure. What should a developer do? Enterprise and Line of Business applications that need desktop integrations can’t be created in Web or Silverlight, and .NET developers really don’t want to fall back to C++ (although Evernote did – and saw a huge performance gain). Microsoft needs to instill some confidence in developers that a technology they would choose isn’t neglected – to me that is just piss poor business practices. On one hand let’s market the hell out of it (which with WPF really hasn’t been the case, but marketed way more than Win32 or Winforms) and get everyone on the bandwagon, and then let it die, and 2 years later say “X” is the brand new toy you need to focus on. They finally are doing some things at MSFT in WPF, but to what extent? Black magic embedding WPF controls in Winforms or Win32 apps? To me, seeing the pretty awesome data binding stuff with WPF makes it a no brainer. Why not extend the enhanced data binding to Winforms? Why make devs switch?

 

Like I said, more convergence of tools. Use expression blend for front ends? Yes! – but it should be for everything, Windows/Web/RIA, not just Windows/RIA. Language constructs getting to the same level no matter where you code? Yes – sounds like a good thing to me, so why is it so tough?

The new Async framework looks sweet, what else for Windows devs on the .NET side? Can we get some more detailed strategy from Microsoft on where things are going? What to focus on? Companies and developers are stuck making a leap of faith when choosing which technology to use – to make sure they aren’t left in the dust. On the Apple side, it is pretty clear – use Objective C and you can code for Mac, iPhone, iPad, etc. use HTML5 for the web. Should we all be using Java? or C++? Why have .NET devs struggle to figure out what technology to use? So bottom line..

 

1. Web – HTML5/ASP.NET MVC, WCF services, etc

2. Mobile – Silverlight (aside: what ever happened to the .NET CF?)

3. Windows – WPF, WPF, WPF (but don’t forget about console apps and windows services!)

It would be interesting to go to Microsoft dev shops around the globe and do surveys..

“Hey there – what are most of your websites and web services written in?”

    Answer: “Webforms and ASMX services -  we are looking at MVC”

“Hello, what are you doing for mobile development?”

    Answer: “Well, since WP7 phone just came out and who knows if it will take off, we do everything in Objective C for iOS devices or just have a mobile website in ASP.NET webforms, or we have some Java based Android app, and some crappy Blackberry apps or something..”

“Hola, what are you doing for your LOB desktop apps, etc?”

    Answer: “Well we have a few legacy VB6 apps, some Win32 apps, and we have poured tons of time into Winforms over the last 7-8 years, but we want to start looking at WPF”

I bet a majority of the answers would be similar to the ones above. Who the hell is doing anything in Silverlight? Niche apps/markets? What about WPF? A few, and some proof of concepts, but yeah, even the MVC stuff is probably on a slower adoption rate then MSFT would like. Not sure how they solve this problem. One way would be to STOP CHANGING THINGS EVERY TWO YEARS so that dev shops can focus and incrementally move to the new technologies, but I don’t see that happening.

Where do we go from here? Well, I am pretty excited to see what .NET 5 brings. 🙂

Categories
Geeky/Programming Product Reviews

Visual Studio 2010 Productivity Power Tools

One nice thing released for VS2010 recently is the “Productivity Power Tools”. If you are using VS2010 I would recommend installing it.

Once installed, you can see the options under Tools->Options->Productivity Power Tools

 

image

One feature I really like is the “Fix Mixed Tabs” feature.

image

When you open a code file it will analyze and tell you if need to “Tabify” – convert spaces to tabs, the old developers argument of tabs vs spaces solved. BTW, they should be tabs!

Check out the tools and learn the other features, there are some good things in there to help your code and get around in VS2010.

Categories
Geeky/Programming

Continuous Integration and TFS: Team Build Screen

 

If you are running TFS and you want to show the status of your builds on an LCD, check out this sweet app – Team Build Screen – on CodePlex (http://teambuildscreen.codeplex.com/)

 

screen_01b

We just recently set this up outside my office and it is a great addition in letting us know the status of our builds, as they happen, and if anything breaks the build, etc. Great way to get visibility to everyone on the team and everyone walking by.

Categories
Geeky/Programming Product Reviews

Using Beyond Compare for Compares in TFS and SVN

I love Beyond Compare. Why? First off, their parent company Scooter Software is based in Madison, WI – so that is cool. Second, it is the best damn compare tool I have ever used. I use it for comparing every type of file, folders, folders to FTP, whatever. I love it. Best 30 dollars spent on software. I wish it did more, I could make a wish list.. anyways, to use it to do your source control compares for TFS and SVN? pretty easy.

TFS 2010/Visual Studio 2010

Open VS2010, Tools->Options->Source Control->Visual Studio Team Foundation Server… Click the “Configure User Tools” button

SNAGHTML1e2b85f

Click Add, and the settings for Compare.. I do .*, and then choose your Beyond Compare locations, and then the args like below

%1 %2 /title1=%6 /title2=%7

SNAGHTML1e42506

TortoiseSVN:

Right click anywhere in Windows Explorer, TortoiseSVN->Settings->External Programs->Diff Viewer

Choose External and then

"C:Program Files (x86)Beyond Compare 3BComp.exe" %base %mine /title1=%bname /title2=%yname /leftreadonly

 

(remove the x86 if you are on 32 bit, add it for 64 bit)

 

And.. there you go!

Categories
Geeky/Programming

Visual Studio 2010: Console App, Where is my System.Web?

If you create a new Console App in Visual Studio 2010, and you want to reference System.Web, you might start scratching you head. Why?

Looks like Visual Studio 2010 creates new Console Apps targeting the .NET Framework 4 Client Profile instead of the .NET Framework 4. Why? No idea, but you can change it and then reference System.Web

You can change the setting by going to Properties on your project, then the Application tab, and changing the drop down of the Target Framework to .NET Framework 4

image

Categories
Geeky/Programming

Visual Studio 2010: Adding a Web Reference

In previous versions of Visual Studio, you could just right click on a project and choose “Add Web Reference” to add a reference to a asmx web service. In Visual Studio 2010, when you right click, you will see “Add Service Reference”… similar, but not the same. If you reference an asmx you will get some weird objects back in your proxy web service object, each method with Request/Response at the end. You may want this, you may not. If you want to get the legacy web reference back, here is what you need to do.

Right Click on a project, Add Service Reference, then click on Advanced, the Add Web Reference. Then you will be able to add your good old asmx reference like you used to in earlier versions of Visual Studio.

image

Categories
Geeky/Programming Product Reviews

PC vs Mac

Microsoft has published a site, PC vs Mac

There is only one thing you have to know, everything else is fluff.

You will never get a blue screen of death on a Mac. Oh, I got one last night on a Windows machine. With an xlsx half way open and not done yet. Lovely.

done. game over. Mac wins.

And I love Windows, for Development and Business Intelligence. It is the hardware and software that have problems working together. Should Microsoft try to build a PC? Hardware? (ala Xbox?) Would it perform better? Maybe. Would they have more control? Of course, the hardware and software could integrate nicely. I would buy a mythical Microsoft computer before buying a regular PC. Just like I would buy a Mac rather than a Hackintosh 🙂

Categories
Geeky/Programming

The New Hipster: Going Appless

Love the iPhone, really do. But I am pretty hardcode when it comes to apps and loading things and making it “work” hard. Every once in a while some rogue app goes off the wall and starts draining battery like crazy. Usually the only thing to do is restore phone. I have had to do this, and a few other people I know have see it as well. I don’t blame the iPhone, I blame the apps. Just like windows mobile, the apps were the problem 🙂

Anyways, this time, instead of restoring my phone from backup, I just let it stay “clean”. I decided to not install any apps for as long as I can. It has been 24 hours, so that says something 🙂

But what I am doing is going back to the iPhone roots, back to 2007. Web apps. Steve Jobs himself says it is their “other”, open, unrestricted platform they support, so let’s see what it can offer.

Facebook? touch.facebook.com
Twitter? m.twitter.com
Flickr? m.flickr.com
YouTube (the HTML5 version is better than the native app!) m.youtube.com
FourSquare/Gowalla? check.in
Reeder/Google Reader? google’s mobile formatted reader site works.
Other apps? openappmkt.com
IM? meebo has a pretty good web app.

Just like regular hipsters, that drink PBR, and lose the flavor and other added benefits of drinking a less “hip” beer, you have to give some things up.. such as..

Push Notifications – not sure yet if this is a good or bad thing to give up. The current implementation just seems to annoy anyways

Background/Streaming music (Pandora/Last.fm, etc) – I did find dance.fm has a HTML5 version or something that streams directly from a web page, so I could almost say others might follow suit. I also have iPod on the device so not to worried, I don’t listen to a helluva lot of music anyways.

What else? Not sure yet, we will see how long I last. One thing I can say, there are some games that are web apps that are pretty cool, but don’t come close to the native games … yet.

Of course I will probably start installing some apps eventually, and after a while I will be back to my old app going ways 🙂

Categories
Geeky/Programming Product Reviews

Tool of the Day: Sysinternals ProcMon

Funny how you might not EVER use a given tool, and some days you might end up using it twice. Sysinternals Procmon was that tool today.

It is the successor from old utils from Sysinternals – Filemon and Regmon.

What does it do? It monitors all processes and services and watches what they are doing on your system. File, Registry, etc, etc. Open/Close, Read/Write, what user, status, etc. You can filter and pause and find out pretty much anything going on in windows.

So early in the day, running into a website issue, not loading in IIS. No idea what is going on. Fire up Procmon and filter to the website directory on disk. Lo and behold, the site is trying to impersonate a user, and that user doesn’t have permissions. The site still didn’t work, and if I would have dug a bit more with Procmon, would have found that the user impersonating on the site also needed rights to the ASP.NET Temporary files, but after seeing the impersonation and the site still not working, I guessed it didn’t have rights to the temp folder.

Things like the scenario above I have seen people waste a support call with Microsoft with.

Second thing today. Trying to install a extension to SSRS. The installer isn’t even seeing that SSRS is installed, yet it clearly is and functioning correctly on the box. Some how the installer must be reading something or looking somewhere and not finding something. Procmon to the rescue. Fire it up, watch msiexec.exe. Seeing registry reads, it finds the SSRS instance names, then looks to a registry area with that instance name and tries to find more details. Was failing on finding the details because there was no reg keys in the second location (for whatever reason). But there was info in the first location, the same info it was looking for. I exported it out, changed the reg path of the keys, and imported. Re-ran setup and it found the instance this time and I could install the extension.

Without Procmon would have been flying blind or just guessing randomly on what to do. Could have been hours on tech support with a company, or again, a support call with Microsoft.

Procmon saved the day. Check it out and try to use where applicable in your day to day troubleshooting.

Categories
Geeky/Programming

Development Need #1 – Multiple Monitors

What’s one of the first things that developers want/need/can’t live without? Multiple Monitors. In most cases this starts of with 2 or Dual monitors, but this should be a standard. More monitors means more screen real estate which means you can more things up in front of you which means you can get more done. 15-25% more done, easily.

So, something that simple, a 200-400 dollar investment, can make your developers more productive, you should make dang sure every one has dual monitors, same size, for sure. Using a laptop screen and a monitor doesn’t count as dual monitors. Having a 15 inch and 21 inch is a mess. Two 19’s or 21’s or even better, higher inch screens is going to make developers happy, it is going to make them more productive, and it isn’t going to break the bank.

Not even anymore in development, but just all over a company, people should have two monitors. From the receptionist to the CEO. Just makes sense.