In the spirit of "shameless Top-10 year-end articles that you know you'll click on because it has a number in it and you can't help yourself," I herewith present the 10 most popular Visual Studio Magazine articles from 2013. These are the ones you liked best.
10: Modeling Neuron Behavior in C#. This was the debut of Dr. James McCaffrey's "Neural Network Lab" column, a high-level yet accessible tour of complex software design.
9: Building a Chat Web App With Signal R, Part 2. This was the second part of a "C# Corner " column on creating a real-time Web data entry form with ASP.NET MVC, KnockOutJS and SignalR.
8: Handle Many-to-Many Relationships in Entity Framework and ASP.NET MVC. In his "Practical .NET " column, Peter Vogel took a single -- and common -- problem and found ways solve it, from getting the data design correct through handling updates and finishing with a UI built in ASP.NET MVC.
7: The Windows Runtime Media API. The first in a 3-part series in which Eric Vogel showed how to use the Windows Runtime media API to play music and video files in a Windows Store app.
6: Working with the HTML5 Data Attributes Using jQuery. jQuery support for the new HTML5 data attributes may not be everything a developer could want -- but it's very close. And, more important, it's the perfect solution for handling transactional data.
5: iOS Development with Xamarin.iOS and Visual Studio. iOS and Android development is of intense interest to .NET developers right now, and Wally McClure and Greg Shackles are giving it thorough coverage in their "Cross-Platform C#" column, which also debuted in 2013.
4: A Best Practice for Authenticating Users in ASP.NET MVC 4. Proof that developers really do care about security!
3: Building Web Apps with SignalR, Part 1. Gee, do you think .NET developers have an interest in communications? This is the only multi-part series to have both articles make the Top 10.
2: Why You Shouldn't Comment (or Document) Code. Oh my, did this article set off a firestorm. It's the most-commented item ever on visualstudiomagazine.com. It also spawned several sequels.
1: The Observer Pattern in .NET. Readers love the "Pattern" articles that Eric Vogel writes. This one, in which he uses the Observer Pattern to build an email application, topped the list as our most-read article of 2013.
So, those were the most popular articles of the past year. Was one of these your favorite, or did you have another? Let us know in the comments below.
Posted by Keith Ward on 12/24/2013 at 11:15 AM0 comments
Looks like the idea of making CodeLens, by all accounts a killer feature in Visual Studio 2013, available below the Ultimate level is picking up steam.
I wrote about this recently, pleading with Microsoft to make the feature available at the Professional level, since that's the version the vast majority of most developers use. It would appear that the idea of downstreaming CodeLens is gaining a lot steam in the dev community. Visual Studio UserVoice is a feedback site for Microsoft's army of software devs. What happens is that a developer makes a public suggestion on something he or she would like to see. Then the community votes on it. The more votes, the more the community throws its cyber-weight behind a proposal.
One developer, self-identified as "Harold_", suggested moving CodeLens into lower-tier versions, and so far, the idea is one of the most popular on the site, with 1,300 votes in favor.
I really like the UserVoice site. It's obvious Microsoft takes it seriously, too -- they're actively involved in responding to requests, and it's clear that they value the feedback. Whether they always take it is another story, but there aren't many companies out there that show this level of commitment in engaging with its community.
By the way, do you know what the top request on the site is? Allow the .NET Framework to be used to build Xbox One games. Oh, the irony...
Posted by Keith Ward on 12/10/2013 at 9:44 AM0 comments
So, according to IDC's Worldwide Quarterly Mobile Phone Tracker, Android has more than 80 percent of the smartphone market for the first time ever -- 81 percent, to be exact.
I'm not surprised by that, as Android has been a runaway locomotive for years now in this space. And Apple has -- for now -- maintained its hold on second place, with iOS at 12.9 percent market share for the third quarter of 2013. Apple might be a bit uneasy; although it sold more phones than ever, its slice of the market is shrinking. That's not news, either.
Then we come to Microsoft, and things get interesting. Very interesting. Although still in third place, it saw a gigantic year-over-year increase in market share, going from 2 percent to 3.6 percent. Now, 3.6 percent of the market wouldn't normally be something worth trumpeting. But consider that it represents a 156 percent jump in share, and the number becomes a lot more significant. Compare that to a 51.3 percent gain for Android, and a 25.6 percent increase for iOS, and Windows Phone suddenly seems more important.
Of course, Microsoft had a lot, lot, lot (to infinity) of room for growth. But that doesn't mean those gains are trivial. I read it more as Windows Phone is starting to finally carve out a niche, and get on more consumers' radar. I agree with what IDC Research Manager Ramon Llamas said in a press release:
"Android and Windows Phone continued to make significant strides in the third quarter. Despite their differences in market share, they both have one important factor behind their success: price... Both platforms have a selection of devices available at prices low enough to be affordable to the mass market, and it is the mass market that is driving the entire market forward."
For .NET-focused developers, which is the vast majority of those reading this, I think this is fantastic news. Windows is a platform you know well, and has the best tooling in the industry (led, of course, by Visual Studio). If the Windows Phone market becomes viable, many more of you will consider building apps for it, as you'll have more confidence that you can make some money, and will be building for a device with a future. That will lead to the upward cycle of more apps-more buyers-even more apps.
Developers can, and will, still build for Android and iOS, even using Visual Studio to do it with the help of cross-platform tools like Xamarin. But if the gains IDC reported today continue throughout this and next year, Microsoft could even find itself eclipsing iPhone in time, which some have predicted (to derision from other quarters). But these figures show that Windows Phone is no longer a laughing matter.
Posted by Keith Ward on 11/12/2013 at 4:52 PM0 comments
CodeLens is perhaps the best new feature of Visual Studio 2013.
Too bad you'll never get to use it.
That is, unless you have Visual Studio Ultimate. Those of you with Visual Studio Professional -- in other words, most of you -- or even Visual Studio Premium aren't eligible for the awesomeness that is CodeLens.
When we ran an article recently on using CodeLens, the author, Mickey Gousset, said that it's "going to be that "Oh, wow!" feature". Why is it so cool? Mickey explains:
"Before CodeLens, you had to dig through several different windows to retrieve information such as method references, tests associated with a method, the last time a line of code was changed or how many times the code has been changed. Researching and finding this information takes you away from the code editor, and away from writing code. CodeLens changes that by putting this information literally at your fingertips within the code editor."
Cool, indeed. But also a tease, because Visual Studio Ultimate is a very, very expensive product. If you're a fan of MSDN Subscriptions, rather than buying your software piecemeal, it's a the top of the ladder, out of reach of a large percentage of developers. The Visual Studio Ultimate MSDN subscription is $13,299. And the yearly renewal price is $4,249.
Ouch. How many of you have that much scratch lying around? Show of hands? Yeah, I thought so. Certainly, the big shops can afford that, but if you're a lone dev out there building mobile apps, fuggedaboutit. Or if you're a five-person dev shop, it's very likely out of your price range, too.
Here's how one developer, "Sam", responded after our story: "...99% of developers will never use this feature because MS has put it behind a $13,000 paywall."
"John Christman" agrees with him: "It is truly a great developer tool.. I have no clue why (other than greed) that it was bundled in Ultimate. I could see this, perhaps as being a reason to upgrade to Premium, but Ultimate is too much."
"Bob Marshall" says, "Sorry Microsoft, as cool as CodeLens is, it is not a reason for my company to upgrade our MSDN accounts from Premium to Ultimate."
I've asked Microsoft about the possibility of making CodeLens available at a lower tier. I'll let you know what they say (if anything). My take is that Microsoft is making a big mistake by keeping this out of so many developers' hands. The majority of developers I talk to use Visual Studio Professional, and most are still on Visual Studio 2010. That's pretty much the way the world works: developers, just like most admins, don't upgrade to the new version of a product right away (witness, as just one example, the way Windows XP has held on and on and on...). I'd bet that Microsoft could motivate a significant swath of its developer army to upgrade to Visual Studio 2013 right now if it moved CodeLens into the Professional version. Sure, Microsoft would give up the huge margin from Ultimate subscriptions, but it would gain a ton of new Visual Studio 2013 users.
Note that I didn't say it's wrong for Microsoft to keep CodeLens at the Ultimate level; it can do whatever it wants. It spent the time and resources building CodeLens, and it's perfectly justified in letting the market decide whether CodeLens is worth the price hike for enough devs. But Ultimate is more than double the price of Premium, its downstream neighbor. Absolutely, they get a lot more for their money with Ultimate, including more Windows Azure credits. But I do think it's short-sighted: since most developers can't afford it no matter what goodies it has, it's immaterial to them.
Visual Studio 2013 is the most mobile- and cloud-friendly version of the IDE Microsoft has ever released. There could be real benefits to getting developers onto that version so they can build Windows 8 and Windows Phone 8 apps, and build up those ecosystems more quickly. My gut instinct is that the majority of developers will stay with Visual Studio 2010 Professional (or even earlier versions) because they don't see enough compelling reasons to upgrade. CodeLens, at the Professional level, could provide that reason. Why deny them that, Microsoft?
Posted by Keith Ward on 10/29/2013 at 11:20 AM0 comments
I'm excited to announce the refresh of a previous column, which is under new management and a new name. Those of you who still work in the native code world will be delighted to know that today marks the debut of a new C++ column: Modern C++.
Modern C++ replaces the former "New Age C++" column, which ran for a little more than a year, and was written by former Microsoftie Diego Dagum. Diego moved on to new ventures, but he built up a readership that looked forward to his monthly installments on coding in the "old" language of C++.
For those who don't know (and as Diego pointed out often), C++ has been regularly updated and tuned to work better than ever, doing away with much that didn't work, and simplifying the language. The latest version is C++ 11, and it's quite different than than it was even five years ago. To give just one example: memory management has been greatly improved through the use of smart pointers.
When I went looking for a new writer to take over the column, I turned to a former columnist of mine, back in the days when I worked for MSDN Magazine: Kenny Kerr. Kenny's a veteran C++ developer, and a terrific writer. I've been working as an editor in the IT world for many years now, and let me tell you: it's exceptionally difficult to find developers who are also great writers. Writing about development isn't an easy thing, and few have mastered the art. Kenny is one of those few.
That's why I turned to him; I was hoping he'd have some recommendations for me. When he suggested that he might want to tackle the new column himself, I was ecstatic: it's not that often you get your first choice.
Kenny has a passion for using C++ to develop Windows apps, and that's what he'll be doing (for the most part) in this column. His initial offering, for example, covers Windows' native spell-checking API for C++ developers. What, you didn't know that Windows had a spell-checking API for C++? That's why you need to read this column.
Modern C++ will appear monthly, and I think you'll find it a fabulous resource for helping you develop in this new, "old" language. Please join me in wishing Kenny a warm hello.
Posted by Keith Ward on 08/06/2013 at 9:02 AM0 comments
The third update of Visual Studio 2012 has progressed to Release Candidate (RC) stage, and is now available as a "go-live" version, meaning you can put it on a production server.
The first Community Technology Preview (CTP) of VS 2012, Update 3 was released last month. That iteration wasn't for production. This RC version of Update 3 is for both Visual Studio and Team Foundation Server (TFS), Microsoft Technical Fellow Brian Harry wrote on his blog.
Microsoft, Harry said, has put the Update 3 RC into production, and its go-live process "found 8 or 10 TFS bugs for Update 2," and those have been fixed in the RC. Charles Sterling, on Microsoft's TFS blog, said that about 20 user issues and requests were addressed with Update 3.
Sterling added that two frequently-requested features were added: "continuous integration for Team Projects using Git, and the ability to pick the specific branch in the repo you wanted built." This functionality's available via a new source settings dialog in the build definition wizard.
Some of the issues that were fixed include problems with the debugger, the Visual Studio IDE itself, a number of C++ bugs, numerous TFS fixes and upgrades, and a crash issue when developing Web projects. A Knowledgebase article has a full listing of improvements.
Harry noted in his blog that Update 3 is a minor update compared to Updates 1 and 2. You can find it here.
(Note that there are different installation methods between Visual Studio and TFS: the Visual Studio version of Update 3 installs on top of a previous version, while the TFS update replaces whatever's currently installed. Because of that, make sure your databases are fully backed up; if the installation fails and you haven't backed up, you're cooked.)
Posted by Keith Ward on 05/08/2013 at 1:15 PM0 comments
Microsoft has updated its Power Tools, a suite of enhancements for Team Foundation Server (TFS) projects, to work with Visual Studio 2012 Update 2.
Now, those of you paying close attention to the Visual Studio team's constant stream of updates may wonder why Power Tools is now being updated to support Update 2, when Update 3 was just released as a go-live production Release Candidate (RC). Microsoft Technical Fellow Brian Harry, on his blog, chalks it up to taking "longer than we had hoped" to prep the Power Tools.
But Harry goes on to explain that new Power Tools update (officially called TFS 2012.2 Power Tools update) includes a change that should bring it fully in line with the new Visual Studio release method of frequent, incremental updates instead of infrequent, service-pack-level updates every year or two as in the past. Harry writes:
"Our Power Tools setup has traditionally had a block to prevent it from working with the next version of VS (which is why the Power Tools from Update 1 wouldn't work with Update 2). This is a bit of a hold-over from before we started doing the regular update cadence. At that time, it was pretty likely that we'd change something in the 2 years between updates that would break the Power Tools and we'd work hard to have new releases of Power Tools ready before the final release of VS/TFS."
The block has been removed, and Harry says "we fully expect" that this latest revision will work with Update 3. In fact, he's installed it on his version of VS 2012.3 (i.e. Visual Studio 2012, Update 3 -- the RC) and he says it's working well. Of course, your mileage may vary, so tread carefully.
Harry added that there are no significant changes in the new version of Power Tools; just some bug fixes and the removal of the "back/restore" Power Tool. The main reason for the release was because, Harry says, Microsoft heard from "a number" of its TFS customers that they uninstalled VS 2012 Update 2, rather than give up their Power Tools.
This is why it's good to bring your complaints to Microsoft. There remains a perception that large companies don't listen to their customers; or even if they do, that making changes to products in response to those complaints takes forever and a day. This Power Tools update shows that, at least for the Visual Studio/TFS teams, they are listening; also, that the new, agile release methodology is paying dividends.
Posted by Keith Ward on 05/08/2013 at 1:15 PM0 comments
Microsoft has updated the HTML client runtime in LightSwitch, its lightweight Web development tool. "Runtime Update 1", as it's called, is a bug and compatibility fix for the latest versions of jQuery, jQueryMobile and datajs.
The update adds support for jQueryMobile 1.3 and jQuery 1.9, according to this blog posting from the LightSwitch team. "Embracing the mobile-first, instead of mobile-only, approach was the main focus of this release," the team states.
The key upgrade to the runtime, it appears from the blog, is the implementation of responsive design. Responsive design automatically resizes an interface according to the screen size of a particular device. (It's something we did on VisualStudioMagazine.com; we've been writing about some of the challenges.)
For more information on exactly what LightSwitch is and what it does, check out a video Q & A I did with expert Michael Washington at our VSLive! Las Vegas show.
Posted by Keith Ward on 05/07/2013 at 1:15 PM0 comments
Microsoft's released a new .NET Framework managed library to help with debugging and crash dump analysis.
It's a beta release, and is called Microsoft.Diagnostics.Runtime (abbreviated to ClrMD -- MD for "Memory Diagnostics"). It's available through the NuGet package manager. It works similarly to the SOS Debugging Extensions. With it, you can write automated crash analysis and automate common debugger tasks.
According to a blog entry by Lee Culver, a developer on Microsoft's .NET Runtime team, it wasn't the original plan to release the library publicly. It came about because the runtime team "has had so much success automating complex diagnostic tasks with this API" that they decided to make it available.
Culver also noted that the library is a wrapper around CLR internal-only debugging APIs. The internal APIs, he said, are "incredibly difficult to use and tightly coupled with other implementation details of the CLR." Since the CLR is a managed runtime, things like garbage collection and JIT compilation are done for you.
The most basic thing you'd probably to with ClrMD is print out heap stats to the console. But it gets much more granular than that, allowing you to, for example, "walk every managed thread in a process or crash dump and print out a managed callstack," Culver wrote.
The blog also contains a code sample to help you learn by doing.
Posted by Keith Ward on 05/03/2013 at 1:15 PM0 comments
Microsoft has released WebMatrix 3, its lightweight development tool for quickly building Web sites. The key features of the new version are Windows Azure integration, source control with Git and Team Foundation Services (TFS), and remote editing.
Microsoft's Scott Guthrie made the announcement on his blog. There was apparently some confusion on the official release date of WebMatrix 3; a speaker at the VSLive! conference in March said it would debut on April 4, and ZDNet's Mary Jo Foley reported that it was available on April 3 (she had updated that post, listing the release date as April 4 as well). But whatever the cause of the delay, it's available now.
Windows Azure integration is getting the lion's share of the publicity. When logged in to WebMatrix 3 through a Microsoft account, the user gets an option to build up to 10 sites for free, or migrate existing sites to Azure (WebMatrix itself is free as well).
Sites can be built from templates like ASP.NET, Node.js, PHP or HTML5. Another option, provided through the WebMatrix UI, is to use third-party tools like WordPress, DotNetNuke, Drupal and Joomla. Once the Web site's up, it can be edited either on Azure or locally, and with third-party tools or Microsoft tools; for example, IntelliSense support is available for certain types of code.
WebMatrix also provides multiple types of version control. A Web site can be opened from the Git repository, Microsoft's own TFS (the Web-enabled version of Team Foundation Server) or CodePlex. Guthrie said that version control was "one of the most requested features" in WebMatrix 2, and it's been extended in version 3.
In an earlier story on the forthcoming release, Instructor and WebMatrix expert Mark Rosenberg explained the value he sees in the product:
"The idea is to get a Web site up and running as simply as possible ... One of the problems that I always have in Visual Studio is … 'I don't have the prerequisites: I need to install PHP to make it work, I need to do this or that and I install PHP, and then it doesn't work. WebMatrix takes care of all those problems for you. If you don't have PHP installed, and you've picked a PHP-based Web site, it installs PHP. It actually takes care of installing everything you need on your machine."
WebMatrix 3 is available here.
Posted by Keith Ward on 05/02/2013 at 1:15 PM0 comments
Microsoft, which just days ago pushed out a Windows Azure SDK for Ruby developers, has released a substantially upgraded SDK for its army of .NET Framework developers.
Microsoft Corporate Vice President Scott Guthrie dropped the news on his blog today, calling Windows Azure SDK 2.0 for .NET "a major refresh of the Windows Azure SDK with some really great new features and enhancements."
The upgrades are concentrated in five categories, according to Guthrie:
- Web sites
- Cloud services
- Service Bus
Guthrie started with the improved publishing capabilities through Visual Studio. Now, right-clicking on any ASP.NET Web Project or Web Site brings up a dialogue that enables developers to publish to Windows Azure. He pointed out a difference between the 2.0 SDK and previous versions:
"Starting with today's release you can now associate your Windows Azure Subscription within Visual Studio – at which point you can browse the list of sites in Windows Azure associated with your subscription in real-time, and simply select the one you want to publish to (with no need to manually download anything). Then just select the Web Site on Windows Azure that you want to deploy your app to, hit ok, and your app will be live on Windows Azure in seconds. You can then quickly republish again (also in seconds) without having to configure anything (all of the publish profile settings are persisted for later use)."
Web site management is also improved through Visual Studio Server Explorer. One new tool, for instance, allows streaming of an Azure-based Web site's application logs directly into Visual Studio. This is handy for debugging issues that can only be discovered in a live Azure setting.
On the cloud side, the main change was a big increase in the size of the virtual machines (VMs) that Azure now supports. VMs as large as 8 cores and 56 GB of RAM can be utilized for cloud services.
The new SDK also adds more storage management within Visual Studio, including the ability to create and delete Windows Azure Tables, and add/edit/delete table entities in them from the Visual Studio Server Explorer.
The big news for the Service Bus is an updated client library that adds message browse support and a new message pump programming model that moves to an event-driven processing style.
The PowerShell updates are focused on new automation commands for things like streaming logs, cloud services, VMs, the Windows Azure Store and storage.
Similar to all the Windows Azure SDKs (including those for Ruby, Java, Python and PHP), the .NET 2.0 SDK is completely open source and hosted on GitHub.
Posted by Keith Ward on 04/30/2013 at 9:03 AM0 comments
So, as programmers age, do they get set in their ways? Are they more afraid to learn new things? Are they old dogs that can't learn new tricks?
Nope. In fact, just the opposite, according to some intriguing new research from North Carolina State University. The study examined the profiles of more than 80,000 developers on StackOverflow. Their number-crunching revealed that as coders get older, their interests widen -- in fact, according to the press release, "the researchers found that there is a sharp decline in the number of subjects users weighed in on between the ages of 15 and 30 – but that the range of subjects increased steadily through the programmers' 30s and into their early 50s."
That extends even to the realm of the hottest programming area today -- mobile devices. Again, from the report:
"For two smartphone operating systems, iOS and Windows Phone 7, the veteran programmers had a significant edge in knowledge over their younger counterparts. For every other technology, from Django to Silverlight, there was no statistically significant difference between older and younger programmers."
This is an interesting phenomenon. I'm not sure how much weight I'd give to a one-source (StackOverflow) study, but it might at least help debunk the perception that older programmers are only interested in COBOL and Fortran.
Posted by Keith Ward on 04/30/2013 at 1:15 PM0 comments