.NET developers rejoice! Xamarin has just announced the long awaited release of their .NET/Android tool, Mono for Android 4.0. This release comes on the tails of their iOS product, MonoTouch 5. With these two products updated to the latest platforms from Google and Apple, C# developers can now develop applications for the top three mobile platforms and share code among them.
With the release of Xamarin's new Android tools, .NET developers can now leverage their existing skills and target many of the new devices including tablets like Motorola Xoom, Samsung GALAXY Tab, and Amazon's Kindle Fire. Mono for Android 4.0 is a big jump from the previous release (Mono for Android 1.0) to align its product with Google's premier Android 4.0 operating system, codename "Ice Cream Sandwich".

For more information, please check out the Wall Street Journal article that just released the announcement from Xamarin. To find out more regarding new features, check out this blog.
To download and try it, click here!
Normally when I look into my crystal ball or read the tea leave to see what lies ahead for developers, the images I receive are relatively clear. Developer technologies, for the most part, have been following a fairly narrow path of incremental improvements. But that appears to be changing.
Historically, the big players in technology have been providing developer proprietary tools that operate on the systems they want them to operate. Over the past year or so, there have been battles between Google, Apple, Adobe, Oracle and Microsoft as to who owns the marketplace. For the developer, it has been a constant battle and to support the broadest audience, it means developing multiple applications; one for each platform.
As we roll into 2012, there are signs that things are changing. This change is occurring, in part, because of a growing dependency and acceptance of Web-based application. With the increase in popularity of cloud computing and cloud-based applications like Office365, Google Apps, Box.com, Dropbox.com, iCloud, SkyDrive, users are demanding portability and universal platform support.
Take myself as an example. A couple years ago, I was very satisfied with my Windows 7 laptop and a phone that basically gave me simple IMAP mail support. Today, my laptop sits on my desk and has moved only a couple times in past year. I now have an Android phone and tablet and carry them instead wherever I go. From my company's internal support, we have gone from supporting a handful of laptops to all types of mobile devices.
This push by consumers had translated into a push for standardization. It is becoming increasing clear that HTML5 will rise to meet that demand. Its power is already being seen with questions regarding the future of Flash (here and here) and Silverlight (here and here) and by the clear signs of all major players embracing the new standard; including Microsoft.
It is clear that Microsoft is committed to HTML5. As a developer, it is clear that HTML5 and JavaScript need to be a part of the developer’s tool belt. Building Windows 8 Metro-Style applications will be done in one of two ways: HTML5/JavaScript or XAML/C#. HTML5 is the clear winner when it comes to portability but at this time, XAML still wins in terms of stability and maturity. But as HTML5 matures, it should slowly emerge as the clear choice.

(More on this in future articles)
The week has finally come when we get to see the new Windows 8 operating
system in all its glory instead of reading about speculation, leaks, and guesses. The unveiling
happened at the Microsoft Windows Build conference in Anaheim, CA and I
strongly encourage everyone to watch the keynotes: Day 1 and Day 2.
The striking thing about the Windows 8 launch is we now see Microsoft’s long term
strategy for Windows. Just under a decade ago, Microsoft enjoyed a technology
arena where it owned the operating system market. Apple OS and Linux were no real threat. Since then there has been an outright land-grab in the OS
space with Apple (iOS) and Google (Android) taking a lion’s share--both
redefining the concept of a desktop and redesigning it specifically around mobility.
Microsoft had to regroup, reinvent, and come back strong.
Microsoft has since come back and it is clear it has placed all its eggs
into a basket called Metro. As John Gruber quoted it, “Metro .. is Windows Reimagined.”
It is obvious now that Microsoft has gone back to the drawing board and
redesigned Windows for the future. Not only that, it has made it portable across devices—a common
user interface over PC, phone, netbook, and tablet. This is a key aspect
Microsoft is counting on to re-establish its dominance in the OS market.
For the developer, this is the next frontier. This is where Microsoft
development clearly is heading and over the next five years it will require
developers to retool or remain stuck in the past. Current predictions put the
Windows 8 launch in 2nd Quarter 2012 along with the new Visual
Studio 11. There is a preview of Windows 8 available for download here. There is also a preview of Visual Studio 11 available for MSDN subscribers.
Truly an exciting time for Microsoft.
More to come…
Slowly but surely Microsoft is leaking information about the new, up and coming release of its flagship operating system. Rumors as to what and when are all over the net. Mary-Jo Foley has likely the best summary of what are the latest rumors here. Speaking more "on the record", Microsoft's Steven Sinofsky, president of Windows and Windows Live Division, spoke with columnist Walt Mossberg of WSJ about Windows 8 at the D9 Conference in Rancho Palos Verdes. A video of that discussion can be found here.
This video also includes a demo of the tablet version of Windows 8. Another good video demoing Windows 8 and produced by Microsoft can be found here. From this presentation, it is obvious that Microsoft is making yet another major leap in the evolution of Windows; one that will certainly have an impact on how developers building future applications.
Aside from the obvious user-interface changes that developers need to wrap their heads around, another key concern of developer at this pointin time is regarding their tool belt. What is Microsoft's direction in developer tools for the future? Many bloggers are concerned about Microsoft's apparent push for HTML5 and JavaScript (e.g. here and here) and whether that is a change in direction from the WPF/Silverlight focus of the past. Many believe Microsoft is simply keeping Silverlight "under wraps" so as to save Silverlight for presentations later in the year. Others speculate HTML5 and Javascript are targeting a new category of application; ones that are lighter and intended more for tablets and phone use.
Well I'm sure Microsoft is going address many of these questions in the next big developer's conference coming September 13th in Anaheim, CA called Build/Windows. Many are also keeping an eye on the Microsoft Worldwide Partner Conference for new information that may come out.
Either way, should be a fun ride.
Getting into mobile development seemed on the surface to be an easy task. Phones are just small computers, right? Not so fast.
Mobile development is like computers were three decades ago and the Computer Shopper magazine was three inches thick (and yes, I, too, used to love peruse every single page for hours on end). So let's say you want to create a mobile application for your customers. First, there is the phone's OS. There are many available including, of course, the iOS (Apple), Android (Google), Mobile Phone 7 (Microsoft), WebOS (Palm, err, HP), BlackBerry (RIM), and Symbian (Nokia). After that there is the phone itself along with a host of attributes: keyboard or touchscreen?, large screen or small?, Bluetooth or Wifi or GPS or on and on? Clearly this can turn into a daunting task, to say the least.
So let's say you grab the big three: iOS, Android, and WP7. Each has their own development platform: Xcode and Objective-C for the Apple, Eclipse and Java for the Android, and Visual Studio and C# for WP7. I suppose one option is to go commando and because a master in all three. Sounds challenging but who has the time.
Currently I am a C# developer and leveraging what I already know certainly has its advantages. Is it possible to keep my current skill set and still target all these platforms? Thanks to Miguel de Icaza, there is hope. I say "hope", in part, because things in his world have been a bit of a roller coaster of late.
But I digress, let me back up. This story starts in 1999. Miguel was a founding member of Ximian; a company that development many free business tools for Linux including the porting the .NET platform to Linux. Ximian got purchased by Novell in 2003 and shortly after Miguel released Mono 1.0 in the spring of 2004. Miguel continued his quest beyond linux and targeted the iOS. In the fall of 2009, MonoTouch 1.0 was released allowing .NET developers to build application that ran on the iPhone. By the fall of 2010, MonoTouch 3.0 was released supporting iPhone 4 and iPad.
Quick to following MonoTouch's success was Mono for Android. This provided libraries for the Android mobile OS allowing .NET developers to move their applications to Android phones as well. Their first release was April of this year along with an update of MonoTouch to 4.0. Shortly after the launch, Attachmate completed its acquisition of Novell and announced they laid off most of the Mono development team.
That brings us to the present and the future of Mono is still somewhat uncertain. What we do know is Miguel has started another company, Xamarin. This company appears to be picking right where it left off in trying to provide the best tools for .NET developers. The corporate site itself seems to update weekly with new information and the Mono community is on the edge of their seat with anticipation of what's coming next.
As a training company who bring the best training materials to .NET developers, it has been a wild ride for us as well. And as for the .NET developer looking to get into mobile development, the word on the street is that Mono, in some way or another, is likely to pull through all this. As the smoke is clear in the second half of 2011, you can be assured we are going to get a new learning series available on these Mono tools... or will it be on Xamarim Studio... Stay tuned.

Happy Birthday Visual Studio 2010. Somasegar's blog goes through many of the ongoing benefits and new enhancements that has happened over the past year. Some of the most notable include:
- Windows Phone 7 Support
- Launch of Microsoft Visual Studio LightSwitch
- Visual Studio Power Tools
- ADO Entity Framework 4.1
- and the VS 2010 Service Pack 1
Microsoft's MIX 2011 conference is going on this week and the opening keynote was yesterday. It is even more clear to me now that Microsoft is "all in" as far as the HTML 5 standard since a good chunk of the opening presentation was on Internet Explorer 9 and how well it performs with HTML 5 and SVG. They even took it further by comparing it to a browser that is even better than IE 9; you guessed it, IE 10. Not far behind is the next iteration of IE and they announced that IE 10 is already available for testing.
ASP.NET MVC 3 tools update was talked about including jQuery 1.5, Entity Framework 4.1, and Scaffolding. Microsoft's NuGet got a plug along with WebMatrix.
If you got some time to kill, check out a site promoted during the keynote, World's Biggiest Pac-Man. This is a community build Pac-Man (celebrating its 30th birthday) game that is growing as more users add new levels.
I would encourage anyone interested in learning more about Microsoft's direction in Rich Internet Applications (RIA) to watch the keynote.
Enjoy!
NuGet 1.1 was recently announced by Scott Guthrie about a month or so ago. Since then, the NuGet team has released its latest release, NuGet 1.2 announced by Microsoft Senior Program Manager at Microsoft and NuGet coordinator Phil Haack. This developer tool is an extension to Visual Studio 2010 and assists the developer in managing third-party libraries within a project. Normally a developer needs to manage the adding and removing of third-party libraries along with any library dependencies when working on their development projects. If you are experimenting with various add-on libraries or doing testing, this can start becoming a burden and, if not done correctly, can lead to errors or application bloat.
Enter NuGet... This tool automatically copies files to your solution when you add a third-party library and makes all necessary changes to your project; including changes to web.config and/or app.config. Here are some blogs/articles to get you started.
The documentation for NuGet is here and the download is here.
Enjoy!
Microsoft announced this week the release of Visual Studio LightSwitch Beta 2. This release includes a GoLive license meaning that it is production-ready.
Jason Zanders spoke at a VSIP conference this week that I attended and got the skinny on this LightSwitch product. LightSwitch is a product that was designed and built around a gap in Microsoft's offerings--a gap in the tools available to build Windows applications.
Not all applications require a skilled developer, there simply isn't enough time in the day for developers to write every little application a company needs, nor, in many cases, does it makes sense to utilize a skilled developer to build certain applications. Microsoft estimates there are approximately 55 million business information workers and of those 6 million are considered "latent business developers." This means they have the skills and knowledge to write basic applications; and anyone who works in a large company will see hundreds or thousands of applications written by them. These applications range from simple Excel macros to stand-alone Access applications.
Okay, back to the gap. These latent business developers had to gravitate to certain tools that fit their skill level. Often this meant using applications like Microsoft Excel or Microsoft Access. These tools allowed them to build simple application to get there goal accomplished--which is great. Problems came when these applications needed to be extended or handed to the IT department for support and maintenance. Often, these applications had to be rewritten because the tools used to build them didn't allow Visual Studio developers to extend them. The missing piece (aka the gap) is a tool that is easy for the power user to use yet was easy to migrate into a full featured Visual Studio application--enter LightSwitch.

LightSwitch is a powerful application development tool that gives both power users and skilled developers the ability to make simple, yet feature-rich applications without the overhead of Visual Studio. For more information, check out the Microsoft Visual Studio LightSwitch Web site or stay tuned for future AppDev learning courses where we will soon be tackling this new developer tool.
Scott Guthrie and the ASP.NET group have been busy this week with many new releases. The most anticipated release is ASP.NET MVC 3 which is a framework built on top of ASP.NET that provides the developer features that can simply their code and provide deeper extensibility. One exciting new feature is a new view-engine option called Razor giving developers a more code-focused way of building templates used in HTML generation.
Microsoft also released IIS Express 7.5, a free version of IIS 7.5 that is optimized for developer scenarios. More about it here.
Personally, the one I am interested in diving into is WebMatrix 1.0. This new development tool is free and provides an easy ramp-up to individuals new to Web development. This tool takes care of many of the common tasks and procedures allowing Web sites to be build quickly and easily but without restricting the more advanced developer's ability to extend the built-in functionality. For more, see here and here.
Hanselman has a great blog posting on these new tools as well.
Download and Enjoy!
Anything that makes my life easier is a welcome thing. Jesse Liberty, who we were privileged to have develop our inaugural Visual C# course before he went off to Microsoft, came up with a list that in my opinion is as about as good as it gets. The only comparable tools list would be Scott Hanselman's Ultimate Tool List.
Check them out!
12 Absolutely and Insanely Essential Utilities For Programmers
12 MORE Insanely Essential Utilities For Programmers
Enjoy!
New technologies that developers can take advantage of is emerging at the speed of a fire hose and developers are constantly having to reanalyze and retool year after year. But what technology vehicles do you jump on and commit to? What technologies are in it for the long haul? And what is just a fad and will quickly be replaced?
One technology that Microsoft is getting injected into nearly everything is WPF and XAML. What started out more as a cool, new user interface technology that let you push the limits of how application interact with users (or as some people put it; giving the developer more rope to hang themselves with), has become more and more a requirement for developers. To wear the cap of an official Microsoft developer today, you now need to know how to develop in WPF/Silverlight. Take a look at where Microsoft is going--mobile development, Cloud computing, Surface 2.0, Windows 8--and you see how these skills are quickly becoming the way of the land.
AppDev is keeping up with the curve. Those that have been with us for many years have witnessed our AppDev Learning Engine (ALE) go through a transformation into Silverlight where our student user interface is now 100% XAML-based. We have already enjoyed the freedom we get with XAML allowing us to create new user controls that greatly enhance the usability of our learning tools. But there is much more to be done and we are constantly trying out new features and enhancements to make your learning experience better.
How are you using WPF?
When dealing with security in software, it easy to get comfortable thinking that by simply adding another deadbolt to the front door you are more protected. This model works if you assume the only way in is the front door. In software, you have to stay on your toes because the types of threats you need to be concerned with are constantly changing.
For example, take the task of building a simple login dialog box with a basic user name and password field. How do you approach it? Well you want to prevent basic password like "Cat" and "Password" so you add constraints to prevent them. Let's say you decide to require your users to have passwords of at least 8 characters along with some special characters. But is the adequate? An Engadget article suggests that anything less than 12 character is real risk. So you increase your requirements to 12 characters. Are you safe now?
Well that depends. Computers are constantly getting faster and faster and by requiring your users to remember longer and longer passwords is only going to lead to passwords on yellow sticky notes posted next to monitors. A good article on making long passwords stick recommends conditioning your users to think of passwords as pass-phrases. Why use "F5t&Pol23" which no one can remember when a password of "Wow! This is a Good Password" is far more secure and yet easier to remember.
But is make longer passwords the only way? A great way to combat brute force attacks is with some type of ban after so many incorrect attempts. Many sites use 3-5 bad attempts as a trigger to lock out the account regardless if the correct password is entered afterwords. By putting a simple 30-min lock on an account after, say, four failed attempts can easy thwart brute force attacks; even with eight character passwords. If you then impose a requirement on your users to change their passwords every 90 days, the chances that the brute force attack works by the time they are required to change it becomes extremely slim.
So you have your login box built, what about storing the password? Don't even think about storing it in a database in plain text. It is still amazing that many major companies struggle with storing passwords. OK, so now you decide store it encrypted; don't forget the salt! Don't re-invent the wheel here with choosing encryption algorithms. Keep in mind there are many classes in the .NET Framework that can assist you in this coding (example1, example2) and are more than likely far better than what you can home grow.
Are there alternatives to all this madness? Tired of constantly trying to stay one step ahead of the hackers? A good alternative to consider is subscribing to one of the sites often referred to as providing "Internet Driver's Licenses". Why not let a company that has the resources to stay one step ahead of the bad guys manage this very integral part of your application. It also benefits your users because they can manage a smaller set of accounts. Check out OpenID (with a good .NET API), OAuth 2, or even Facebook.
Phew... Ok, did I miss anything? Let me know.
I have often said that I have stopped being surprised about what happens over in Redmond, WA. Clearly Microsoft continues to build the best tools for developers but every once in a while Microsoft does something that makes me go, Hmmmmmmmm.
Today's hmmmmm moment is sponsored by the SUO file. What is the SUO file you ask? It stands for Solution User Options and if you look in the project folder of one of your projects, you're not going to find one. These particular files are marked as hidden and you will need to go into your Windows Explorer settings to allow your Explorer window to show them.
So what is this file? This file is used by Visual Studio to persist any IDE configuration changes associated with that project. Things like the dimensions of the Visual Studio IDE window, breakpoints, start-up project, etc. The purpose of the file is to store configuration options unique to your instance of Visual Studio. Checking the Blog-o-Sphere, the public opinion is that these files are not intended to be stored in VSS or SourceSafe and should not be copied from PC to PC. Some articles say that copying a project folder with the SUO file from one PC to another could cause unexpected behavior.
Ok, so what's the concern you ask? My concern is regarding the sample projects with ship with our learning courses. Should I include the SUO file or shouldn't I? Public opinion (and common sense) seem to suggest that these files are superfluous and aren't required--arguable they could even pose problems for the recipients. So I remove them... and for many years, everything appears status-quo.
Until recently.
Out of the blue we begin to receive support requests regarding the Silverlight sample files and they aren't loading properly. We go back to our test machines, test the solutions, everything looks fine and we re-post them. Same problems are reported. After further investigation it is discovered that by deleting the SUO file the Silverlight projects stop working. Hmmmmmmmmm.
Well, Visual Studio defaults the startup project to the first project when it doesn't have the SUO file. This, in our Silverlight projects, will generate errors until the user sets the startup project to the Web project. Looks like a Catch-22. Although we are encouraged to remove the SUO when transporting projects, this cannot guarantee that the receiving PC will be able to run it; at least not with an understanding of the possible issues.
Looks like I will be looking into this further to see if there is a way to get our projects to force a different order; hoping to get the first project to be the one I want. Do you have a better solution?
What is your policy regarding the SUO files?
Occasionally, in my line of work, I am often asked by customers and clients whether our AppDev learning series cover “Best Practices”. Don’t get me wrong, I’m well aware of Microsoft’s use of the term “Best Practices” which has been written on around every product it sells. But think about it… to me, it seems a loaded question. It is like the classic, “have you stopped beating your wife/husband?” I mean, really… What is the alternative to teaching “Best Practices?”… “Worst Practices?”
Ok, this leads me to question the whole purpose of the “Best Practices” movement; and I'm not alone here (Ted Neward, Tim Berry, Dan North). It seems to me this term implies there are cookie cutter solutions to all developers’ problems. It is equating programming to a cooking recipe; follow these simple steps and your application will be totally secure… or super-efficient… or crash proof… or waterproof. I don’t believe that this Nirvana exists. Compared to other IT disciplines like networking infrastructure, programming clearly provides the widest range of possible solutions to any one problem. How many ways are there to add a user to Active Directory? How many ways are there to sort an array?
Being a programmer is more about having the right tool belt. It's about having the knowledge of many different ways to solve a given problem. Solving issues from the macro level, “Is this something that requires Web Services?”, “Is this something that requires C# or C++?” and the micro level, “Is this better solved by using collections, linked lists or arrays?”, “Should I use a local variable or should I use a global?” If a developer is restricted or bound to one set of solutions and cannot (or does not) take into account the many unique variables that surround the current project, that developer (or perhaps the company that hired the developer) is in trouble.
A quote I like from Alvin Toffler goes, “The illiterate of the 21st century will not be those who cannot read or write, but those who cannot learn, unlearn, and relearn.” Developers must constantly evolve and increase the size of their developer’s belt. Each problem should be analyzed and provided its own unique solution—and keep in mind, solutions today may not be good solutions of tomorrow.
Learn… and relearn my friend…
More than ever, technology is advancing and changing at a neck-breaking speed. Developers are constantly struggling to keep their skills up-to-date and a recent developer survey by Embarcadero shows it. Get a copy of it here.
Buried among the many survey questions relating to Windows 7 development and general developer trends are two that stuck out for me:
- What are the biggest challenges you have as a developer?
- What type of developer activities do you wish you had more time to do?
The number one answer (at 51%) for the first question was "not enough time to accomplish work tasks". The number one answer (at 60%) for the second question was "learn new programming languages and technologies." The second top answer (at 58.6%) for the second question was "keep current skills up to date."
It illustrates the key challenge developers have. They need to get more done with less time and yet, to do that, they need to allocate time to update their skills. New technology keeps coming out that provide developers better tools and techniques that make them more efficient. Developers are contantly looking for ways to maximize their learning time in order to keep their edge.
Are you able to hold onto your edge?
More Posts
Next page »