I recently gave a talk at the local .NET User Group in Kingsport, TN on SharePoint 2010, generally what it is (for those that have never used it), and all of the features that are available to developers in this newest version. Right off the bat, the best thing about it is that you can develop for SharePoint 2010 using your Windows 7 machine, which is a huge improvement over 2007 (It forced you to develop on Windows Server! *shudder*).
If you didn’t get a chance to attend, I’ll try to give you in one paragraph why I’m excited about using SharePoint 2010 as a development platform. Basically: it makes my life as a developer not suck as bad. Like Visual Studio 2010 generates code for me that I would have had to write myself 5 years ago, SharePoint 2010 gives me CRUD screens, reports and deep analysis on ALL of an organization’s data, gives me a way to offload tedious one-off requests from uses by empowering them with SharePoint Designer and SharePoint Workspace. Generally SharePoint 2010 makes my life as a developer simpler, so I can focus on writing code that provides direct business value and makes money!
One of the first applications that I write for a new platform to learn the ropes is an RSS reader. That rule holds true for Windows Phone 7. The great thing about the Windows Phone 7 SDK and the .NET 4.0 platform is that everything you need to work with RSS or any other syndication feed is ready for you right out of the box! With Android development, you need to parse the XML and return values yourself. For just reading an RSS feed, it’s a nightmare. The references don’t, however, show up in Visual Studio 2010 automatically, so you’ll need to add them manually. I’ll go over it all in this guide to programming RSS feeds in Windows Phone 7.
When developing SharePoint 2010 Applications, you must have an instance of SharePoint 2010 installed on the same machine to both allow for access to SharePoint .dlls as well as for easy deployment and debugging purposes. One of the problems with this is that SharePoint 2010 has always been solely supported on Windows Server operating systems. With SharePoint 2010 you can now install and develop on Windows 7 (x64 versions only)!
SharePoint is a configuration nightmare. There are so many settings that the more configuration settings you learn, the more you learn there are more settings that you’ve not even discovered yet. For reporting, and specifically for me, running reports under an Issue Tracking site, SessionState must be turned on for the SharePoint 2010 web application. If you don’t, you’ll get the error:
“This report failed to load because session state is not turned on. Contact your SharePoint farm administrator.”
To enable SessionState, follow these steps:
I love CodeRush. When I was looking at a productivity plugin for Visual Studio, I basically had two options: CodeRush+Refactor! Pro or ReSharper. I eventually picked CodeRush for the visualizations, code-from-scratch productivity boosters and templates, and extensibility. As with anything, it takes some getting used to the shortcuts inside CodeRush to really become effective using it. Here’s a link to a downloadable and printable cheat sheet with all of the most-used shortcuts for CR and Refactor!
I recently started doing an evaluation of JetBrains’ ReSharper and DevExpress’ CodeRush. Both are developer productivity tools for Visual Studio that give you code templates (shorthand notation that pumps out full sections of code), refactoring tools, code metrics and analysis, and much more. I had been contemplating getting ReSharper (R#) for a while now as it seems to be by far the most popular. However, recently I attended a presentation at a local user group by Gary Short, a Microsoft MVP from Scotland who actually works at DevExpress and told me about CodeRush. As I looked it up, I saw great reviews of it across the board to the point that many R# devs were making the switch. As I looked more into it, I saw solid community support (headed up by Rory Becker), and that CodeRush was an great platform to write plugins if I so chose later on.
With that said, I’ll be writing my experience and logging helpful sites and tips that I find out as I go along with my evaluation of CodeRush. Is there anything you ReSharper guys want me to look into? Things that I should be aware of?
One of the most annoying things that I had to face when I got my Android phone was the calendars. Android uses Google as the service behind email (gmail) and its calendar. I, like many of you, use Outlook as my primary calendar, since it has all of my meeting requests built-in with it. In Android, the Corporate Calendar app lets you connect to the Exchange calendar, and the regular Calendar app connects to Google’s service. Sure, fine, right? but what happens when you have conflicting appointments across your personal Google calendar and your outlook calendar? What if you want everything all in one place so you can just put up one calendar widget on your Android desktop? Well, the answer my friends is Google Calendar Sync.
Math is important. No, really! I’m not just talking about that 2+2=4 stuff. I’m talking about the big stuff. The Cal III type stuff. The problems that keep you up all night long. The problems where the professor gives you 5 problems on Monday to do in a week and you say “Oh, shoot, 5 problems? That’s it? Pfft. I’ll start next Sunday night at 9PM because Halo 3 just came out!” Then you pull an
all nighter on Sunday and barely get four of the problems done. Yea, I may or may not know about that first hand. But really, I ask, why are you learning all this? Are you really going to need all these crazy formulas for programming and software development? Can’t just pull them out of a math book later? It’s just a formula, right? To be honest, there’s probably a 2% chance you will ever need this kind of math as a software developer. Unless you go into graphics programming or something like that, you’ll likely never need it, and even then you’ll have references in the real world. So why do I still think (really) hard math as absolutely essential to being a great developer? Allow me to explain…
From a broad and practical point of view, math IS software development. Math problems are solved exactly like you have to solve software problems in the real world, and there are direct parallels between math and programming. Let’s go over them:
One of the things I say a lot is the quote “Incentives make the world go round”, and that, my friends, is true. So why do I develop for the Android platform and not the iPhone? The iPhone certainly has that “cool” factor about it. I even own a MacBook pro and have access to an iTouch for testing, so I have everything I would need. When I was looking for a new phone last November, one of the top priorities for me the prospect of developing and releasing new applications for my device of choice. So why then didn’t I pick up an iPhone? Let me explain…
There were three major phone platforms out in the Winter of 2009: iPhone, Windows Phone, and Android. I knew iPhone would currently be the most popular device to release an app for. Second would be Android, since its market share was (extremely) rapidly increasing. Then, there was Windows Phone, which showed great promise with Zune integration (I LOVE my ZuneHD). There were a few different things that I had to consider when I was picking out a phone (and ultimately, a platform), but let’s focus on the ones that matter from a software development and business aspect:
- Current and Future Popularity
- No lie here, iPhone has an amazing interface, partly due to no (and now minimal) multitasking. Android is good, but could use some work, partly because screens are different across devices, so apps have to be built in such a way that all devices have a great experience.
- The SDK for both are great. There are lots of APIs to hook into and lots of functionality to leverage (I wrote a very light iPhone app for version 2). The documentation for iPhone is good, with several videos explaining the development process. However, Android’s developer center is absolutely top-notch. They have videos and in-depth tutorials that are the best I’ve seen in a long, long time. The best part, however, is that Android’s developer forums (used for Q/A) is actually officially integrated as a part of StackOverflow. That community is amazing and very quick to help you understand anything you’re banging your head against.
- Development Language
- If you’ve ever switched from Java to C#, or vice versa, you’ll know they are very, very similar. Windows Phone is C# (.NET) based. Android is Java based. Both are popular, solid languages with tons of support and lots of community involvement. iPhone development uses objective-C, an extremely popul…wait…objective-C? Oh, you didn’t say C? Not even C++? So, wait, wait…is it anything like those? The syntax is totally different you say? Oh…well, looks like you had better start your steep learning curve so you can get that app out the door. Also, you better ask your boss for an extension, because this could take a while. Or, you could always write for the iPhone using a mixture of .NET and the convolutedness of the the way objective-C and development on the iPhone is structured. Good luck with that.
- The marketplace on both are good…once you get and stay there. The iTunes store feels like the cheapest app is $0.99, whereas the norm for Android apps is Free. So, if you’re after making money, iPhone is probably the way to go. Of course, you have to be approved…and stay approved…and Apple has to not change their mind. You see, on Android, Google and the community builds in functionality like tethering, and cool apps like the Google shopping app. Also, you have community options like ShopSavvy. Just because ShopSavvy’s functionality is the same as one of Google’s apps, Google just tries to BUILD A BETTER APP, whereas Apple simply bans you from the marketplace altogether and causes your app to shut down. From Apple’s perspective this reduces competition, provides a more consistent interface, and cleans out duplicate apps (read: anti-capitalism). From an app developer’s business point of view, this increases risk DRAMATICALLY. Would you be willing to invest hundreds of thousands of dollars into an app, only to have Apple steal your idea, integrate it, and then kick you out? Tough luck, chump. Android is the only sure bet that you will 100% have a chance.
So that, in a nutshell, is why I write for Android and not the iPhone. Or, it could just be that I have a Droid and AT&T service is terrible where I live. You know what they say, “Incentives make the world go round”.