tag:blogger.com,1999:blog-22647653555615798042024-03-29T05:18:59.396-04:00Struggling thru .NET.NET is a huge thing and we have started to use it. We are going to blog about things we find out and things we find online related to everything .NET. This includes .NET, Linq, Silverlight, XAML, and anything else related to .NET.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.comBlogger62125tag:blogger.com,1999:blog-2264765355561579804.post-74513815632173731022013-06-22T14:41:00.002-04:002013-06-22T14:41:29.460-04:00Blog MovingI wanted to let everyone know that I have moved my blog over to a new site to go along with my new job. Please join me on the new site<br />
<br />
<a href="http://42base13.net/">http://42base13.net/</a><br />
<br />
All of the posts from here have been moved over to the new site. Thanks for all of the reads over the years.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com136tag:blogger.com,1999:blog-2264765355561579804.post-52964088561306457852012-11-01T00:10:00.000-04:002012-11-01T00:10:24.666-04:00TFSPreview is Dead - Long Live TFSPreviewAt my day job, we have been using TFS (Team Foundation Server) for years. It does a great job combining work items, process, and source control. Of course the cost of it was a bit more than I could justify for use at home for all of my home projects. My wife would have killed me. One of my friends at Microsoft, Jim O'Neil, invited me to try out tfspreview.com as an Azure backed TFS service. I instantly fell in love with it. It gave me all of the features of TFS and it was offsite for protection and it was FREE. the one thing that the site kept saying is that it would not be free forever and that at some time the service would open up for the public and go live. Today is the day it went live.<br />
<br />
The live service can be found at <a href="http://tfs.visualstudio.com/" target="_blank">Team Foundation Service</a>. There are downloads so that it can hook into Eclipse and a command-line to use with xcode. This provides developers of many different types of apps from iOS, to Android, to WP7/8, or any Windows apps. VS2010 or VS2012 are needed to connect to this service. Some good news is that the site also shows that the free VS2012 Express tools can also use the service. I think this might be the first time that the Express SKUs could access TFS. One concern I had was what were they going to have as a free subscription level and how much was the paid version. So for free, Microsoft is offering:<br />
<br />
<li>Up to 5 users</li>
<li>Unlimited number of projects</li>
<li>Version control</li>
<li>Work item tracking</li>
<li>Agile planning tools</li>
<li>Feedback management</li>
<li>Build (still in preview)</li>
<br />
If you need more than 5 users then in 2013 the paid plans will be announced. But for us little guys, this is a great free service. It definitely beats some of the other TFS hosting services by making this free. Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com2tag:blogger.com,1999:blog-2264765355561579804.post-58277553868818997942012-10-30T13:37:00.000-04:002012-10-30T13:39:18.061-04:00WP8 SDK Finally AvailableYou can now get your WP8 SDK from VS2012. It is available and will take up to 5G of space. Go to the VS2012 project for Windows Phone 8 and it will give you a button to start the downloading. Looks like it will create both WP7.5 and WP8 apps. <br />
<br />
<a href="http://www.microsoft.com/en-us/download/details.aspx?id=35471" target="_blank">WP8 Download</a><br />
<br />Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-13961473836328422262012-10-11T16:52:00.000-04:002012-10-11T16:53:06.975-04:00More App Store DiscussionsFrom my last post, a few people pointed out that the Windows 8 app store is also a tablet store and so it should be compared to the iPad store as well. And since the iPad store is also the iOS store, you should compare the two.<br />
<br />
I beg to differ on this point. Just because an app can run on an iPad because it can run iPhone specific apps, I personally think that those should not count. I agree that any iPad or Universal app should count when you are looking at the two stores. <br />
<br />
Here you can see that the iPad specific store is similar to the Mac store. The launch dates and the number of apps are different.<br />
<br />
iPad App Store<br />
<ol>
<li>Launched April 2010 with 3,000 apps</li>
<li>July 2011 reported to have 100,000 apps (16 months)</li>
<li>Apple takes 30% of sales</li>
<li>$100 a year to be in the store</li>
<li>Does not allow : beta, demo, trial or test versions of software</li>
<li>Does not allow : content that has content or services that expire</li>
<li>Does not allow : software only licensed under GPL</li>
</ol>
Most of what I had talked about previously is still the same. From a developer/OEM side, the Windows store looks a lot better. Many apps in the iPad and iOS stores are a free version and then a paid version of the same basic app. This is a marketing tool that many iOS developers use. They flood the market with similar apps instead of having trial/paids apps because Apple does not support that. I would rather see as a consumer a better choice of quality apps instead of a market filled with 20+ sound effect apps that are all really the same app from the same developer. I give those guys credit for figuring out how to be successful in the iOS store, but this just points out to a flaw in the store itself.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com1tag:blogger.com,1999:blog-2264765355561579804.post-70974603274196076862012-10-04T14:22:00.000-04:002012-10-04T14:23:19.201-04:00App Store Race - MS the winner??I was looking at an article on The Register and they were comparing the Windows 8 App store and Apples iOS App store. Microsoft has over 3,000 apps (which 1 is mine) and iOS store has over 650,000 (11 are mine). This got me to thinking that this is actually bad journalism and that things are not being reported correctly. The true comparison to new Windows Store is actually the Mac App Store, not the iOS one. So here is a comparison of the 2 desktop app stores.<br />
<br />
Mac App Store<br />
<ol>
<li>Launched January 6, 2011 with 1,000 apps</li>
<li>May 2012 reported to have 10,000 apps</li>
<li>Apple takes 30% of sales</li>
<li>$100 a year to be in the store</li>
<li>Does not allow : beta, demo, trial or test versions of software</li>
<li>Does not allow : content that has content or services that expire</li>
<li>Does not allow : software only licensed under GPL</li>
</ol>
Windows Store<br />
<ol>
<li>Launching October 26, 2012 with over 3,000 apps</li>
<li>Microsoft takes 30% of sales, but over $25k in sales it drops to 20%</li>
<li>$100 a year to be in the store, but free if you have an MSDN account</li>
<li>Has a built in trial mode for apps</li>
<li>In-App purchases allow for purchases to expire (think like a magazine subscription)</li>
<li>Allows open source software. Link: <a href="http://www.extremetech.com/computing/108551-windows-8-store-will-allow-open-source-apps-unlike-ios-and-mac" target="_blank">ExtremeTech</a> </li>
</ol>
As a developer I look at both stores, Microsoft is launching with over 3x the number of apps that Apple did. Even after over a year, there are only around 10,000 Mac apps in the store and Microsoft is launching with over 1/3 of that. I can see that the number after a year will be a lot higher than 10,000.<br />
<br />
Also as someone that is developing apps for mobile and tablets, I personally like the idea that I can have a trial app and then people can just purchase it and then they have the full one. Right now I have some iOS apps where I have to maintain a free version and a paid version and rev both of them when a new SDK is out or new things that I want to put in. Having a single app is very appealing to me. I know that some of the iOS developers actually use this to their advantage to put out multiple versions of a single app - this one does animal sounds, this one does English voices, etc and then flood the category with multiple free and paid versions of each. In the Microsoft store, this could be a single app with in-app purchases for each different thing. Easier to maintain and enhance. A friend of mine has close to 80 iOS apps and many of them are very similar like this. But to me, submitting updates for all 80 would be very tedious. <br />
<br />
As far as reporting that Apple has over 650,000 apps compared to Microsoft's 3,000 apps, be careful on how you read stories like that. Are they comparing apples to apples (no pun intended) or are they comparing apples to pumpkins? <br />
<br />
Microsoft will have more apps in the store at launch time than Apple did. Microsoft is making it easier for the app developers to get people to try their apps with the trial/buy method built into the SDK. Microsoft is taking less money after you start making a good amount. Microsoft is supporting the open source movement better than Apple. Microsoft is giving store developer accounts to people with MSDN subscriptions for free, where Apple will make sure that you pay for it.<br />
<br />
<strong><span style="font-size: large;">Desktop App Store Winner -- Microsoft</span></strong><br />
<strong></strong><br />
Now go make some more apps for the store.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com1tag:blogger.com,1999:blog-2264765355561579804.post-72824641904101085992012-08-22T00:47:00.001-04:002012-08-22T00:47:31.817-04:00Windows 8 RTM and the Win8 store - thumbs up??One of the benefits of having an MSDN subscription is that you get access to the latest operating systems and tools before they are released to the general public. I got access to the RTM (Released To Manufacturing) and needed to install it to submit my latest version of <a href="http://thoughtsandprayers.co/">Thoughts and Prayers</a> for the Windows 8 store. I wanted to share a few things about the install and upgrades for Windows 8.<br />
<br />
In the MSDN account, Microsoft generously provides 5 Windows 8 retail and 5 Windows 8 Pro licenses. This is great so that I can put it on my laptop, my tablet and have extras. My youngest son also wanted me to install Windows 8 on his desktop machine. I figured it would be a good test for doing an upgrade from Vista to Win8 and I would not be putting my development system in jeopardy of being DOA. <br />
<br />
<h3>
Windows 8</h3>
Let's start with the upgrade on my son's desktop. This is a custom built machine that I put together years ago. It is an AMD 4400, with 2G of ram and many different hard drives. We first did just a standard upgrade. One of the first things I noticed is that the desktop was missing many of the icons that he had before the upgrade. Then we tested some of the icons that were left and they did not work at all. He uses this system to do video editing, watch videos, and play and host a Minecraft server from it. So I decided to get him a new 2TB drive and just install the OS fresh. This system already had 3 SATA drives and a PATA drive in it. So after the install, which went pretty smoothly, I decided that I wanted to get rid of all of those old drives. I found a utility from SysInternals called <a href="http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx">Disk2VHD.</a> This lets you copy a disk and create a VHD that you can just mount in Windows 8. It took a while to create all of the VHDs but it worked well. Of course when we pulled the drives out we realized that the boot sector of one of the drives we removed was the active partition and we could not boot, so my son decided to just reinstall overtop again. This moved everything from the desktop and Windows folders to be copied into desktop.old and Windows.old folders for safe keeping. I am now connecting to his machine and mounting the drives and cleaning them up so that I can get some data off that I need for other projects.<br />
<br />
For my laptop, I decided that I would get a new SSD to put in because I have 2 bays for drives. This way I can put my 512GB drive as a secondary for storage. I prefer to put a new operating system on a clean drive so that I don't cause issues with projects I am working on. After I ordered and got a drive, the install worked smooth. And the download and install of VS2012 was equally uneventful.<br />
<br />
<h3>
Win8 Store</h3>
I download my source code from <a href="http://tfspreview.com/">TFSPreview</a> and recompile. One issue that I had at first is that the PubCenter Ad system did not have a version for the RTM. It only had the Release Preview. This of course causes a problem. Luckily, the Ad system was updated the next day. <br />
<br />
After testing, everything looked good and I go to submit. I then go to open my store account and my Live Account tells me that the machine has not be trusted on the account so I cannot log in. The only thing I could do is to look at the security info and to see that I needed to log in with my old drive to authorize the new hardware. I switch the drive back and my Live Account does not recognize it as my trusted machine either. It was very frustrating that I could not confirm any security info and I could not trust the new machine. I did not have this issue with the previous versions of Windows 8 at all. The only clue on what to do said that to trust a new machine you had to have Windows Live Essentials installed. I installed it but things did not work. I tried this multiple times and emailed a few people that I know at Microsoft but nothing would work. I finally decided to email the support for my Live Account to see what I could do. After that about an hour later, I was able to actually trust my machine and get things into the store.<br />
<br />
<h3>
Conclusions</h3>
First I want to say that I love using Windows 8. My son's old desktop also runs very well, and actually better than it did before the upgrade. The only issue I have is that Microsoft has stated that the upgrade to Windows 8 will work on machines all the way down to XP. In my experience, this did not work. <br />
<br />
The only other warning that I will give is to make sure that you have all of your security info confirmed and machines trusted before even starting. The issue I had was because the only confirmed issue was the old pc name. If you had an email or cell phone number confirmed you might have been able to use that instead. Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com1tag:blogger.com,1999:blog-2264765355561579804.post-26548395292999349622012-04-25T20:39:00.001-04:002012-04-25T20:39:50.298-04:00Azure Tools<br />
I was reading some things on Azure today and found links to a couple Azure tools. One issue is that the MMC plugin will only install if you have the Azure SDK 1.4 installed. Well, the SDK is up to 1.6 now so it won't install. But you can keep an eye on it for the future.<br />
<br />
Azure PowerShell cmdlets<br />
<a href="http://wappowershell.codeplex.com/">http://wappowershell.codeplex.com/</a><br />
<br />
Azure mmc plugin<br />
<a href="http://wapmmc.codeplex.com/">http://wapmmc.codeplex.com/</a><br />Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com2tag:blogger.com,1999:blog-2264765355561579804.post-72137088721347195352012-04-14T09:00:00.000-04:002012-04-18T00:46:14.504-04:00WP7 Tutorial 1 - Getting StartedGetting started with developing for WP7 is actually pretty simple for a .NET developer or a new programmer. The tools are free, the simulator is terrific, and there are more and more WP7 phones in the market now. Microsoft has done a great job providing a development environment that is easy to use. I want to go over the steps in getting going with WP7 development as well as what the basic project types are.
<br />
<h2>
<span class="Apple-style-span" style="font-size: large;"><b>Tools</b></span></h2>
As I said, the tools are free for starting with WP7 development. You can get the tools from here...
<a href="http://create.msdn.com/">http://create.msdn.com/</a>
On the left hand side you will see the area for downloading the free tools
<br />
<div style="text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGv3K7aGxNEORoxc9Mp6dYK_5KbyhFDeEt1d5UPtDatSb6cLsogHc7Mc6wwUfZNcWQ6cd8v4Om5OqBw3uwe4eHDL1oEjOPex7BGLaMoHfsYBZQxKDGQPUNCeAI5iBoF5e9k5E82aVddo8C/s1600/publicHomeDownloadTools2.png" imageanchor="1"><img alt="" border="0" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGv3K7aGxNEORoxc9Mp6dYK_5KbyhFDeEt1d5UPtDatSb6cLsogHc7Mc6wwUfZNcWQ6cd8v4Om5OqBw3uwe4eHDL1oEjOPex7BGLaMoHfsYBZQxKDGQPUNCeAI5iBoF5e9k5E82aVddo8C/s200/publicHomeDownloadTools2.png" title="Tool Download Link" width="200" /></a></div>
In the Windows Phone SDK 7.1.1 you will get the following:
<br />
<ul style="font-family: 'Segoe UI', Arial, Tahoma, sans-serif; font-size: 12px; list-style-type: disc; margin-bottom: 0px; margin-left: 15px; margin-right: 15px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Microsoft Visual Studio 2010 Express for Windows Phone</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Windows Phone Emulator</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Windows Phone SDK 7.1 Assemblies</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Silverlight 4 SDK and DRT</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Windows Phone SDK 7.1 Extensions for XNA Game Studio 4.0</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Microsoft Expression Blend SDK for Windows Phone 7</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Microsoft Expression Blend SDK for Windows Phone OS 7.1</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">WCF Data Services Client for Window Phone</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Microsoft Advertising SDK for Windows Phone</span></li>
</ul>
<div>
For the SDK you will need a Vista or Win7 PC. This means that you cannot install the phone sdk on an XP system.
<br />
<div style="font-family: 'Segoe UI', Arial, Tahoma, sans-serif; font-size: 12px; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<span class="Apple-style-span" style="color: yellow;"><strong>Supported operating systems:</strong> Windows 7, Windows Vista</span></div>
<div style="font-family: 'Segoe UI', Arial, Tahoma, sans-serif; font-size: 12px; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
</div>
<ul style="font-family: 'Segoe UI', Arial, Tahoma, sans-serif; font-size: 12px; list-style-type: disc; margin-bottom: 0px; margin-left: 15px; margin-right: 15px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Windows® Vista® (x86 and x64) with Service Pack 2 – all editions except Starter Edition</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Windows 7 (x86 and x64) – all editions except Starter Edition</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Installation requires 4 GB of free disk space on the system drive.</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">3 GB RAM</span></li>
<li style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="color: yellow;">Windows Phone Emulator requires a DirectX 10 or above capable graphics card with a WDDM 1.1 driver</span></li>
</ul>
</div>
Keep in mind that if you already have Visual Studio 2010 installed the SDK will tie to that SDK instead of Visual Studio 2010 Express. A word of warning about this however - when I was helping Microsoft at a local university with a WP7 event, we had to make sure that SP1 was installed on all of the Visual Studio 2010 installs. Doing this on 50 machines did take a while and I want to save everyone the time. At the university they also had it setup to reset the machines back to a default VS2010 install on a reboot. This means that the service pack and phone SDK needed to be installed over and over again.
Finish installing the tools like you normally would to let you start making WP7 apps.
<br />
<h2>
<span class="Apple-style-span" style="font-size: large;"><b>AppHub</b></span></h2>
AppHub is the name of the site that you will use to submit apps and keep track of all of them. This is the <a href="http://create.msdn.com/">http://create.msdn.com/</a> site. When you sign up on AppHub you can make WP7 and XBox 360 games. Joining AppHub is not free. It is $99 per year, but Microsoft has deals every now and then to be able to get that fee back.
You can make an unlimited number of paid apps and up to 100 free apps for WP7 and up to 10 games for the Xbox LIVE Indie Games. Apps are certified by Microsoft to make sure that copywritten material is not included and that the apps are appropriate for the region of the world you are releasing them. Another nice thing is that Microsoft will certify who you are. As a developer, this can be a pain in the neck, but from the user point of view it means that you will never get an app that says that it is from Bank of America when it really is from a guy in New Jersey just trying to get your account info and passwords. This actually happened on another phone store.
As a paid member of AppHub, you can have up to three WP7 devices on your account and can developer unlock them.
Of course for some people, like students, a $99 fee is a little steep. Microsoft has a program for students and educators called <a href="https://www.dreamspark.com/">Dreamspark</a>. This program is similar to microsoft's BizSpark program, where the student can get all of the developer tools from Microsoft for free but it also allows the student to tie a single WP7 device to their developer account. Microsoft is actually very generous to students and I know that I have handed out about 60 WP7 phones over two different university events. If you are a student, see if there is a local event for you to get a phone, but you can at least sign up for Dreamspark and get all of the tools first.
<br />
<h2>
<span class="Apple-style-span" style="font-size: large;"><b>No Phone -> No Excuses</b></span></h2>
Some people will say that they can't develop a WP7 app because they don't have a smart phone or they have a different brand of smart phone. Well I want to say that this is not true. The emulator that comes with the tools is extremely good. For many types of applications, you can do most of your development and work with just the emulator. For my first three apps in the store, I did not have a phone to use at all. Obviously if you are making a huge game then you want to test it on a real device, but many apps don't need this.
<br />
<h2>
<span class="Apple-style-span" style="font-size: large;"><b>Projects</b></span></h2>
Finally I am getting to the actual making of an app. When you start up a new project in Visual Studio you get a dialog that looks like this.
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnJUQpvCPYjKNiHA3oub2wVgR7S-UlRgWKzVaGr2yy98gYdSObtKxU7pgGwplJ8NgPYKPtaMxcejZW3P-u7w-u5ja3J_SNdADB1lwxUuvQjDSMlMnj0c8I_mWfRh6HKQTszCKVPzCsLEZc/s1600/projects.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="433" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnJUQpvCPYjKNiHA3oub2wVgR7S-UlRgWKzVaGr2yy98gYdSObtKxU7pgGwplJ8NgPYKPtaMxcejZW3P-u7w-u5ja3J_SNdADB1lwxUuvQjDSMlMnj0c8I_mWfRh6HKQTszCKVPzCsLEZc/s640/projects.png" width="640" /></a></div>
I highlighted the two different types of projects that are available for WP7. The first is <i>Silverlight for Windows Phone</i> and the second is <i>XNA Game Studio 4.0</i>. In this tutorial, I am only going to be going over the Silverlight projects. I will have another tutorial later with XNA.
Under <i>Silverlight for Windows Phone</i>, you will see a lot of different project types. You might now see as many as I have shown here. This does not mean that you are missing something. If you look at the left hand side of this dialog you will see that it has a section for Online Templates. This is a great feature of Visual Studio 2010. You can get other project types from an online gallery of templates. There are other things like online controls, and more that you can also download, but that is another tutorial.
<br />
<h4>
<b>Windows Phone Application</b></h4>
This application type is one of the simplest. It is just a single window. You can then add controls to the window like you would any other Silverlight app. Some of my apps use this type because they are a simple interface for the user.
<br />
<h4>
<b>Windows Phone Databound Application</b></h4>
This application type is a very generic list of data. The data is typically a data bound list from some source, possibly online or entered from the user.
<br />
<h4>
<b>Windows Phone Panorama Application</b></h4>
Panorama applications are a unique app type to WP7. It has a large panorama image in the background that will scroll as you scroll the display left or right. This way the user can have an easy way to move from screen to screen with a simple swipe. My <a href="http://thoughtsandprayers.co/">Thoughts and Prayers</a> app uses this type of project.
<br />
<h4>
<b>Windows Phone Silverlight and XNA Application</b></h4>
This project type is new to the 7.1 Windows Phone SDK. Before the Mango release last yet, you had to pick either a Silverlight project or an XNA project. The issue with an XNA only project is that you have to make your own buttons, text, and sliders and all other controls. This can be time consuming with a Button class just sitting there in the Silverlight that could be used. This allows you to use the Silverlight controls with an XNA project running in the background. This way menus, high score lists, etc can be written with standard Silverlight controls and that makes it easier for developers.
<br />
<h2>
<b>Video Demonstration</b></h2>
I am working on a video of this tutorial with samples of each of these project types. I will put it up on YouTube on my channel and link to it here. I will keep the videos short and sweet since I know that videos that are 30 minutes are both hard to sit thru and hard to edit. ;-)
<br />
<h2>
<b>More to Come</b></h2>
In the coming weeks I am going to be adding many, many posts and demos on WP7 apps. After I get all of the basic Silverlight posts out that I am wanting to get done, I will start on the XNA side of things as well. Keep checking back for updates and for the video tutorials to help you to see each step of the way. I know that some of these have helped me in the past.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-84888467624270125772012-04-12T23:29:00.000-04:002012-04-12T23:29:33.973-04:00Free SQL 2012 EbookMicrosoft Press has an Ebook available in PDF, ePub, and mobi formats introducing the new SQL Server 2012.<br />
<br />
<a href="http://blogs.msdn.com/b/microsoft_press/archive/2012/03/15/free-ebook-introducing-microsoft-sql-server-2012.aspx">Free SQL ebook</a><br />
<br />Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-8286590041167587872012-04-12T02:55:00.001-04:002012-04-12T02:55:30.384-04:00March AppRochester Presentation (WP7)I wanted to share the presentation that I had put together for the March AppRochester meeting. Todd did the tips on iOS, but then I did the tips for WP7.<br />
<br />
<a href="http://ysapps.com/presentations/Tips%20and%20Tricks%20for%20WP7.pptx">Tips and Tricks for WP7</a>Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-26126489354669409862012-04-09T12:00:00.000-04:002012-04-09T12:00:01.357-04:00WP7 Video LessonsI am going to start recording some short video tutorials on programming for WP7. There are many different things that I have done on a WP7 that could be good lessons for others.<br />
<br />
I am also going to look to my group AppRochester to make some videos and blog posts for other platforms such as iOS and Android. I could do those as well using MonoTouch and Mono for Android, but there is a good training section on their website for people to use.<br />
<br />
Depending on how well these go I might also do some around Windows Azure and SQL Azure. If there is something that you want a video or a blog post on about WP7 programming, please let me know.<br />
<br />
The first one coming soon is getting started with WP7. I will be going over how to get started with WP7 programming, including where to download the needed tools and what are the basic project types.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com2tag:blogger.com,1999:blog-2264765355561579804.post-53196980735324626452012-04-04T19:05:00.000-04:002012-04-04T19:05:46.237-04:00Azure Prices Falling AgainI am abit slow in this but I wanted to post that the prices on Azure have dropped again. Microsoft is keeping the rates similar to what Amazon is charging for AWS. <br />
<br />
<a href="http://www.windowsazure.com/en-us/pricing/details/">http://www.windowsazure.com/en-us/pricing/details/</a><br />
<br />
I highlighted the areas below where the prices are dramatically different then before. With this an extra small compute instance is now as low as $15 a month. For databases, it is a flat fee of $5 a month for up to 100M in the database. That s not a bad size. If you compare it to the 1G for $10 it does seem abit high, but overall many databases will only need a few M of size.<br />
<br />
Another big thing is that Microsoft is now making it simpler to do something for longer term. They give you a discount if you sign up for blocks of 6 months at a time. You can get 15% off, so a small compute instance would be $72 instead of $90 a month, but you have to do it in those blocks. One bad thing here is that there is no discount on the extra small instance, it is $15 a month if you are doing month to month or in 6 month blocks.<br />
<br />
<span class="Apple-style-span" style="font-size: large;"><b>Azure Compute Time</b></span><br />
<br />
<span class="Apple-style-span" style="color: #666666; font-family: 'Segoe UI', Helvetica, Garuda, Arial, sans-serif; font-size: 14px; line-height: 21px;"></span><br />
<table border="1" cellpadding="0" cellspacing="0" class="tbl-standard" style="margin-bottom: 14px;"><tbody>
<tr><th style="padding-right: 20px; text-align: left;">Virtual Machine Size</th><th style="padding-right: 20px; text-align: left;">CPU Cores</th><th style="padding-right: 20px; text-align: left;">Memory</th><th style="padding-right: 20px; text-align: left;">Cost Per Hour</th></tr>
<tr><td style="padding-right: 20px; text-align: left;">Extra Small</td><td style="padding-right: 20px; text-align: left;">Shared</td><td style="padding-right: 20px; text-align: left;">768 MB</td><td style="padding-right: 20px; text-align: left;"><span class="Apple-style-span" style="color: red;">$0.02</span></td></tr>
<tr><td style="padding-right: 20px; text-align: left;">Small</td><td style="padding-right: 20px; text-align: left;">1</td><td style="padding-right: 20px; text-align: left;">1.75 GB</td><td style="padding-right: 20px; text-align: left;">$0.12</td></tr>
<tr><td style="padding-right: 20px; text-align: left;">Medium</td><td style="padding-right: 20px; text-align: left;">2</td><td style="padding-right: 20px; text-align: left;">3.5 GB</td><td style="padding-right: 20px; text-align: left;">$0.24</td></tr>
<tr><td style="padding-right: 20px; text-align: left;">Large</td><td style="padding-right: 20px; text-align: left;">4</td><td style="padding-right: 20px; text-align: left;">7 GB</td><td style="padding-right: 20px; text-align: left;">$0.48</td></tr>
<tr><td style="padding-right: 20px; text-align: left;">Extra Large</td><td style="padding-right: 20px; text-align: left;">8</td><td style="padding-right: 20px; text-align: left;">14 GB</td><td style="padding-right: 20px; text-align: left;">$0.96</td></tr>
</tbody></table>
<br />
<b><span class="Apple-style-span" style="font-size: large;">SQL Azure</span></b><br />
<br />
<table border="0" class="tbl-standard" style="color: #666666; font-family: 'Segoe UI', Helvetica, Garuda, Arial, sans-serif; font-size: 14px; line-height: 21px; margin-bottom: 14px;"><tbody>
<tr><th style="padding-right: 20px; text-align: left;">Database Size</th><th style="padding-right: 20px; text-align: left;">Price Per Database Per Month</th></tr>
<tr><td style="padding-right: 20px; text-align: left;">0 to 100 MB</td><td style="padding-right: 20px; text-align: left;"><span class="Apple-style-span" style="color: red;">Flat $4.995</span></td></tr>
<tr><td style="padding-right: 20px; text-align: left;">Greater than 100 MB to 1 GB</td><td style="padding-right: 20px; text-align: left;">Flat $9.99</td></tr>
<tr><td style="padding-right: 20px; text-align: left;">Greater than 1 GB to 10 GB</td><td style="padding-right: 20px; text-align: left;">$9.99 for first GB, $3.996 for each additional GB</td></tr>
<tr><td style="padding-right: 20px; text-align: left;">Greater than 10 GB to 50 GB</td><td style="padding-right: 20px; text-align: left;">$45.954 for first 10 GB, $1.998 for each additional GB</td></tr>
<tr><td style="padding-right: 20px; text-align: left;">Great than 50 GB to 150 GB</td><td style="padding-right: 20px; text-align: left;">$125.874 for first 50 GB, $0.999 for each additional GB</td></tr>
</tbody></table>
<br />
<span class="Apple-style-span" style="font-size: large;"><b>Azure Storage</b></span><br />
<br />
<span class="Apple-style-span" style="color: #666666; font-family: 'Segoe UI', Helvetica, Garuda, Arial, sans-serif; font-size: 14px; line-height: 21px;"></span><br />
<table border="1" cellpadding="0" cellspacing="0" class="tbl-standard" style="margin-bottom: 14px;"><tbody>
<tr><th style="padding-right: 20px; text-align: left;">Standard pay-as-you-go pricing for storage</th></tr>
<tr><td style="padding-right: 20px; text-align: left;">$0.125 per GB stored per month based on the daily average</td></tr>
<tr><td style="padding-right: 20px; text-align: left;">$0.01 per 10,000 storage transactions</td></tr>
</tbody></table>
<br />
<span class="Apple-style-span" style="color: #666666; font-family: 'Segoe UI', Helvetica, Garuda, Arial, sans-serif;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">I definitely like the competition in price that all of the new cloud providers are giving us today. I for one use Azure for my Thoughts and Prayers mobile app for the back end. I use .NET for all of my coding and Azure has made it simple to use .NET in the cloud. Of course Microsoft understand that not everyone wants to use .NET today so they also now are offering support for node.js, java, or php.</span></span>Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com1tag:blogger.com,1999:blog-2264765355561579804.post-32293919334808151932012-04-04T18:47:00.000-04:002012-04-04T18:47:23.636-04:00MVP - but not what you think<b>MVP </b>can stand for many things - <b>M</b>ost <b>V</b>alueable <b>P</b>layer, <b>M</b>ost <b>V</b>aluable <b>P</b>rofessional, etc. but running a mobile device user group, I get people coming to me with idea after idea of app products. Some of them are great, but some of them are not really positioned to do well. So here I will refer to <b>MVP </b>as <b>M</b>inimal <b>V</b>iable <b>P</b>roduct. I will define this as the minimum that a product needs to have to be useful for someone. Notice that I did not say that it is useful to everyone.<br />
<br />
In the development community, many apps get something called feature creep. This means that features keep getting into the application before it gets released. One company I worked for had a medical device and we were almost ready to start selling it. The managers went to a trade show and then came back with a dozen of so new features that needed to be in the first release or "Nobody will buy our product". Needless to say that project was not a run-away success. <br />
<br />
The concept of <b>MVP </b>here is that you don't know the direction that a project will take after the users get their hands on it. And in the mobile app community the needs and wants of users changes quickly. I will use one of my apps as an example. My app is called Poker Hand Rankings. It is a little app that just puts the different poker hands in order and explains them. This makes it easy for a beginning poker player. I could have picked to make an app where people could play poker online against each other or against multiple computer players. I choose to put out a simpler app and get it out faster. I am using the old <i>"Release early. Release often"</i> idea for this app. Of course I have not done that many updates so I am not really releasing often.<br />
<br />
But now, people are asking if the app can have the ability for them to practice playing poker as well. So what I am doing is putting in a section where you can play video poker. This is still easier than an system where you play online with others, so I am keeping it more <b>MVP</b>. <br />
<br />
Another thing that limiting your apps does is to let you add new features pretty quickly. Many mobile stores have a section for updates and put your app back at the top of the list for a short time. This also makes it seem that you are working really hard on improving the app as often as possible - even if it is just you doing everything. <br />
<br />
So I usually recommend to people to put out a mobile app out quicker. Limit the features and get it out the door. Then listen to your customers as you enhance it. Get started instead of waiting for your idea to get done. Get started with a <b>MVP</b>.<br />
<br />Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-90313370986819962672012-04-04T01:23:00.004-04:002012-04-04T01:28:01.959-04:00New CodePlex project releaseI thought that I had release my Kinect voice control demo on CodePlex, but someone posted a message that they were waiting for the release.<br /><br /><a href="http://kinectvoice.codeplex.com/">http://kinectvoice.codeplex.com/</a><br /><br />This is a sample of both a PowerPoint plugin and how to do voice recognition with the Kinect. It was developed for a demo for a couple of user groups that I speak at. Have fun with it.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-45040317087356292672012-01-26T16:04:00.005-05:002012-01-26T16:09:33.544-05:00More postings!!!I know that I have been reglecting posting here for a while, so I want to catch everyone up on what has been going on. I have been very busy with mobile device development. I currently have 11 iOS, 5 WP7 (1 pending), and 2 Andoid apps in the various marketplaces. All of these apps are using .NET either using Monotouch, Mono for Android, or just Visual Studio. I will post about all of the various apps that I have in more detail later. <br /><br />I just published a project up on CodePlex.<br /><br />http://kinectvoice.codeplex.com/<br /><br />This is a small sample on how you can control a PowerPoint presentation using a plugin and the Kinect. Microsoft is releasing a Windows version of the Kinect next week and this will be a good start for voice controls. <br /><br />Lots more happening in the WP7 world and gaming world here in Rochester, NY, but I will post about this later.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-42192867143000248792011-01-27T21:49:00.003-05:002011-01-27T23:10:30.764-05:00A Trip Thru Azure (part1)As a member of BizSpark, I get an Azure account to play with, so I have been trying to figure out what to do with it. So I now have a couple apps in mind for Azure and have begun playing with my account. I started to play with Azure storage and storing blobs.<br /><br />I have the need for some storage for audio files for a website that I have hosted for years. After cleaning up a test file it ended up being about a 56M mp3 file. This would be a good test for Azure Storage and blobs.<br /><br />Looking at the code for Azure, it seemed that I needed to use the API to code the saving of the files. I figured that someone wrote an app for it already and found one named Blobber. In the config file for the app, you had to put in the AccountName, SharedKey, and ContainerName for where you want things stored. So after getting the AccountName and the SharedKey that I setup in the Azure account site. I was not sure what the ContainerName was. The blob storage does not use folders, but uses the ContainerName as a virtual folder to help sort your data. So I created the ContainerName of audio. Running the app, it took a long time to upload the 56M file. <br /><br />Then I started to test the downloading of the file. I created the url that it should have been http://accountname.blob.core.windows.net/audio/blobtest.mp3 put it in a browser and.... nothing. It did not work. I tried one thing after another and came up with nothing.<br /><br />I then found a great little application called CloudBerry Explorer for Azure Blob Storage. This allows you to access your cloud storage just like you would in explorer. You can add/remove files and containers. With a right click, it allows you to get a url to the blob. It also had options to have a time limit for the url using parameters. I got a url with a timelimit until the end of the month. Put that into my browser and it worked great. <br /><br />I was very happy to finally have some success, so I emailed the link to others and went to bed. The next morning I get a reply saying that the link does not work. I did some more research and found out that the link with time limits only lasted one hour. After a couple more emails saying that it did not work, I tried to figure out why. I ended up emailing a friend that works at Microsoft and does alot of talks on Azure, Jim O'Neil. He had the answer for me quickly. Containers get created as private to start. Jim suggested to change the container to public. Once I did this, the url worked great. <br /><br />Ok, this first step into the world of Azure was a success with abit of help. I can store large files and serve them up with a url to let others get at them. The next step for me is to get Azure SQL setup to support a couple of phone apps that I am building.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-32477389252862863082010-08-19T01:31:00.005-04:002010-08-20T13:34:52.769-04:00RIA Services thru Web Services<span xmlns=''><a href="http://ysgard.com/tag/CodeProject" rel="tag" style="display:none">CodeProject</a><h3>Intro<br /></h3><p>I have been using Silverlight 4 and RIA Services on a large project lately and love how easy it is to expose a data layer with it. I was working on a different project with a co-worker using Silverlight 3 and my friend created proxies to get to the database and it was extremely messy code. I look back at it and just wondered what we were thinking about when we did it. Hind-sight is usually 20-20 and this was proving that saying since RIA Service is so much simpler to use. <br /></p><p>I also create other things like iPhone/iPod/iPad apps using MonoTouch and am starting to look at the new MonoDroid for making android apps. One thing that would be very useful for a few of my projects will be a nice Web Service to save data into a SQL Server. I always could manually make a Web Service to get and store data off, but I wanted to see if there was any way to do it with RIA Services creating the data layer for me. It took some digging and searching but I found a way to do it and want to share this on the blog.<br /></p><span class="fullpost"><h3>Machine Setup<br /></h3><p>To get this setup and running I have Win7 running with the following software and toolkits. I did not have the RIA Services Toolkit at first and that was a problem that I will talk about later, but you should be able to run the code samples here using the following.<br /></p><p>Visual Studio 2010<br/>Silverlight 4<br/>RIA Services Toolkit<br/>Silverlight Developer Tools<br /></p><h3>Demo Project<br /></h3><p>I wanted to come up with a nice simple example. I am sick of NorthWind, and I cannot use the database I am using for my Silverlight projects that I am currently working on. So I came up with the idea of doing a task list system. I wanted this to be simple, so I setup the database using the following schema and filled the database with some sample data.<br /></p><p><img alt='' src='http://ysgard.com/images/081910_0531_RIAServices1.png'/><br/>User Data<br /></p><div><table border='0' style='border-collapse:collapse'><colgroup><col style='width:23px'/><col style='width:67px'/></colgroup><tbody valign='top'><tr style='background: #d2eaf1'><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-right: none'><p><span style='color:black'>1</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-right: solid #4bacc6 1.0pt'><p><span style='color:black'>Steve</span></p></td></tr><tr><td style='padding-left: 7px; padding-right: 7px; border-left: solid #4bacc6 1.0pt'><p><span style='color:black'>2</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-right: solid #4bacc6 1.0pt'><p><span style='color:black'>Joel</span></p></td></tr><tr style='background: #d2eaf1'><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-right: none'><p><span style='color:black'>3</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-right: solid #4bacc6 1.0pt'><p><span style='color:black'>Paul</span></p></td></tr><tr><td style='padding-left: 7px; padding-right: 7px; border-left: solid #4bacc6 1.0pt; border-bottom: solid #4bacc6 1.0pt'><p><span style='color:black'>4</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt'><p><span style='color:black'>John</span></p></td></tr></tbody></table></div><p><br/>Task Data<br /></p><div><table border='0' style='border-collapse:collapse'><colgroup><col style='width:22px'/><col style='width:22px'/><col style='width:145px'/><col style='width:22px'/></colgroup><tbody valign='top'><tr style='background: #d2eaf1'><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-right: none'><p><span style='color:black'>1</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-right: none'><p><span style='color:black'>1</span> </p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-right: none'><p><span style='color:black'>Update Blog</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-right: solid #4bacc6 1.0pt'><p><span style='color:black'>1</span> </p></td></tr><tr><td style='padding-left: 7px; padding-right: 7px; border-left: solid #4bacc6 1.0pt'><p><span style='color:black'>2</span> </p></td><td style='padding-left: 7px; padding-right: 7px'><p><span style='color:black'>1</span> </p></td><td style='padding-left: 7px; padding-right: 7px'><p><span style='color:black'>Finish project</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-right: solid #4bacc6 1.0pt'><p><span style='color:black'>4</span> </p></td></tr><tr style='background: #d2eaf1'><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-right: none'><p><span style='color:black'>3</span> </p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-right: none'><p><span style='color:black'>3</span> </p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-right: none'><p><span style='color:black'>Buy coffee</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-right: solid #4bacc6 1.0pt'><p><span style='color:black'>1</span> </p></td></tr><tr><td style='padding-left: 7px; padding-right: 7px; border-left: solid #4bacc6 1.0pt'><p><span style='color:black'>4</span> </p></td><td style='padding-left: 7px; padding-right: 7px'><p><span style='color:black'>4</span> </p></td><td style='padding-left: 7px; padding-right: 7px'><p><span style='color:black'>Unpack from vacation</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-right: solid #4bacc6 1.0pt'><p><span style='color:black'>2</span> </p></td></tr><tr style='background: #d2eaf1'><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-bottom: none; border-right: none'><p><span style='color:black'>5</span> </p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: none; border-right: none'><p><span style='color:black'>4</span> </p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: none; border-right: none'><p><span style='color:black'>Report back to base</span></p></td><td style='padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: none; border-right: solid #4bacc6 1.0pt'><p><span style='color:black'>1</span> </p></td></tr></tbody></table></div><p><br /> </p><h3>Silverlight / RIA Projects<br /></h3><p>I started this project with the Silverlight project that had RIA Services enabled in it. I added a new database to the sample web project and put the schema and data above into it. Then I added the Entity Framework Model to the web project as well and added both tables to it. After this I added a Domain Service to the project to allow the Silverlight app to get to the data. <br /></p><p>In the Silverlight project, I then added a combobox and a listbox to show the data. One of the things about using RIA Services is that calling the queries are done asynchronously. The Load method of the WebContext is used to call the query and provide a method to call with the results.<br /></p><p><pre><code><span style='font-family:Consolas'> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'><summary></span><br/></span> ///<span style='color:green'> Method to handle the loaded event to load up the users for the combobox</span><br/></span> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'></summary></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="sender"></param></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="e"></param></span><br/></span> <span style='color:blue'>void</span> MainPage_Loaded(<span style='color:blue'>object</span> se</span>nder, <span style='color:#2b91af'>RoutedEventArgs</span> e)<br/> {<br/> theContext.Load(theContext.GetUsersQuery(), OnUsersLoaded, <span style='color:blue'>null</span>);<br/> }<br/><br /> <br/> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'><summary></span><br/></span> ///<span style='color:green'> Method called after the users are loaded from the RIA Service query</span><br/></span> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'></summary></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="loadOpp"></param></span><br/></span> <span style='color:blue'>void</span> OnUsersLoaded(<span style='color:#2b91af'>LoadOperation</span><Web.Models.<span style='color:#2b91af'>User</span>> loadOpp)</span><br/> {<br/> comboBox1.Items.Clear();<br/> <span style='color:blue'>foreach</span> (<span style='color:blue'>var</span> item <span style='color:blue'>in</span> loadOpp.AllEntities)<br/> {<br/> <span style='color:#2b91af'>ComboBoxItem</span> cbi = <span style='color:blue'>new</span> <span style='color:#2b91af'>ComboBoxItem</span>();<br/><br /> <br/> cbi.Content = (item <span style='color:blue'>as</span> Web.Models.<span style='color:#2b91af'>User</span>).Name;<br/> cbi.Tag = item;<br/> comboBox1.Items.Add(cbi);<br/> }<br/> }<br /></span></code></pre></p><p><br /> </p><p>Then on the selection change of the combobox, the tasks for the selected user needed to be loaded. Now since the query runs over the connection on the web server, I wanted to limit the data that was coming back. But by default there was no method created to just get the tasks for a user, so I added the following method to the Domain Service.<br /></p><p><pre><code><span style='font-family:Consolas'> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'><summary></span><br/></span> ///<span style='color:green'> Method to get the tasks for a user</span><br/></span> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'></summary></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="userId"><span style='color:green'>UserId for the user that we are getting the tasks for<span style='color:gray'></param></span><br/></span> ///<span style='color:green'> <span style='color:gray'><returns></returns></span><br/></span> </span> <span style='color:blue'>public</span> <span style='color:#2b91af'>IQueryable</span><<span style='color:#2b91af'>Task</span>> GetTasksByUser(<span style='color:blue'>int</span> userId)</span><br/></span> {<br/> <span style='color:blue'>return</span> <span style='color:blue'>this</span>.ObjectContext.Tasks.Where(t => t.UserId == userId);<br/> }<br /></span></code></pre></p><p><br /> </p><p>Now I was able to query the RIA Service for just the tasks for the selected user. This code was then added to the Silverlight project to display the tasks.<br /></p><p><br /> </p><p><pre><code><span style='font-family:Consolas'> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'><summary></span><br/></span> ///<span style='color:green'> Method for handling the selection change on the user combobox </span><br/></span> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'></summary></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="sender"></param></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="e"></param></span><br/></span> <span style='color:blue'>private</span> <span style='color:blue'>void</span> </span>comboBox1_SelectionChanged(<span style='color:blue'>object</span> sender, <span style='color:#2b91af'>SelectionChangedEventArgs</span> e)<br/> {<br/> theContext.Load(theContext.GetTasksByUserQuery(((Web.Models.<span style='color:#2b91af'>User</span>)((<span style='color:#2b91af'>ComboBoxItem</span>)comboBox1.SelectedItem).Tag).UserId), OnTasksLoaded, <span style='color:blue'>null</span>);<br/> }<br/><br /> <br/> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'><summary></span><br/></span> ///<span style='color:green'> Method to handle the return of the tasks from the RIA Service</span><br/></span> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'></summary></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="loadOpp"></param></span><br/></span> <span style='color:blue'>void</span> OnTasksLoaded(<span style='color:#2b91af'>LoadOperation</span><Web.Models.<span style='color:#2b91af'>Task</span>> loadOpp)</span><br/> {<br/> listBox1.Items.Clear();<br/> <span style='color:blue'>foreach</span> (<span style='color:blue'>var</span> item <span style='color:blue'>in</span> loadOpp.AllEntities)<br/> {<br/> listBox1.Items.Add((item <span style='color:blue'>as</span> Web.Models.<span style='color:#2b91af'>Task</span>).Name);<br/> }<br/> }<br /></span></code></pre></p><p><br /> </p><p>Now I had a Silverlight app that got its data from the web server and the database attached to it. It is a small simple sample of a Silverlight/RIA Services project that can be expanded on for more complicated projects.<br /></p><h3>Adding SOAP Endpoint<br /></h3><p>To allow a standard Web Service to be used a SOAP endpoint needs to be added to the web.config. This was a simple thing to add to the web.config from samples that I found online. The highlighted section below was added to make sure that the wsdl is enabled for discovery.<br /></p><p><pre><code><span style='color:blue; font-family:Consolas'> <<span style='color:#a31515'>system.serviceModel<span style='color:blue'>></span><br/><span style='color:blue'> <<span style='color:#a31515'>domainServices<span style='color:blue'>></span><br/><span style='color:blue'> <<span style='color:#a31515'>endpoints<span style='color:blue'>></span><br/><span style='color:blue'> <<span style='color:#a31515'>add<span style='color:blue'> <span style='color:red'>name<span style='color:blue'>=</span>"<span style='color:blue'>OData</span>"<span style='color:blue'> <span style='color:red'>type<span style='color:blue'>=</span>"<span style='color:blue'>System.ServiceModel.DomainServices.Hosting.ODataEndpointFactory, System.ServiceModel.DomainServices.Hosting.OData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</span>"<span style='color:blue'> /></span><br/><span style='color:blue'> <span style='background-color:yellow'><<span style='color:#a31515'>add<span style='color:blue'> <span style='color:red'>name<span style='color:blue'>=</span>"<span style='color:blue'>Soap</span>"<span style='color:blue'> <span style='color:red'>type<span style='color:blue'>=</span>"<span style='color:blue'>Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory, Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</span>"<span style='color:blue'> /></span></span></span></span></span></span></span><br/> </<span style='color:#a31515'>endpoints<span style='color:blue'>></span><br/><span style='color:blue'> </<span style='color:#a31515'>domainServices<span style='color:blue'>></span><br/><span style='color:blue'> <<span style='color:#a31515'>serviceHostingEnvironment<span style='color:blue'> <span style='color:red'>aspNetCompatibilityEnabled<span style='color:blue'>=</span>"<span style='color:blue'>true</span>"<span style='color:blue'> <span style='color:red'>multipleSiteBindingsEnabled<span style='color:blue'>=</span>"<span style='color:blue'>true</span>"<span style='color:blue'> /></span><br/><span style='color:blue'> </<span style='color:#a31515'>system.serviceModel<span style='color:blue'>><br/></span><br /> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre></p><p>Now I also need to add a reference to the Microsoft.ServiceModel.DomainServices.Hosting assembly. But I did not see this at all in the list of assemblies. I did some more searching and found that I needed to have the RIA Services Toolkit installed to have this available. I found this, installed it, and was up and ready to go.<br /></p><p>Adding the reference and the app.config changes was what I thought I needed to do, but I had a small problem when I tried to reference the service. I could not get the name right. It turns out that the service automatically gets put into a virtual folder named ~\Services. All of the websites that have information on this say that the service is named by the namespace-class. One of the things that nobody says is that you need to change all '.' in the namespace or class into a '–'. Without using this type of naming, you will not be able to discover the service. When I ran my sample and tried to add the web service, I had to use the following address.<br /></p><p><pre><code><span style='font-family:Consolas'><span style='color:blue'>http://localhost:49423/Services/RIAasWebService-Web-Services-RiaWSDomainService.svc?wsdl</span><br /> </span></code></pre></p><p> <br /> </p><h3>Client WPF App<br /></h3><p>I decided to use WPF as the client app since I use that the most and I can reuse some of the code from the Silverlight to this project. I made the project the exact same as my Silverlight, with a single combobox and a listbox. <br /></p><p>When I added the web service I used an Advanced setting to add the async methods from the service. This allows you to call just like in the RIA Services call and get a callback when it is complete. I wanted to test out using it the other way, so I did not use the these methods, but I checked them out to see if they were similar to the RIA Service versions and they are close. This simplified the functions to only two.<br /></p><p><pre><code><span style='font-family:Consolas'> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'><summary></span><br/></span> ///<span style='color:green'> Method for loading the users from the Web Service</span><br/></span> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'></summary></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="sender"></param></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="e"></param></span><br/></span> <span style='color:blue'>void</span> MainWindow_Loaded(<span style='color:blue'>object</span> sender, <span style='color:#2b91af'>RoutedEventArgs</span> e)</span><br/> {<br/> <span style='color:blue'>var</span> users = ws.GetUsers();<br/><br /> <br/> <span style='color:blue'>foreach</span> (<span style='color:blue'>var</span> item <span style='color:blue'>in</span> users.RootResults)<br/> {<br/> <span style='color:#2b91af'>ComboBoxItem</span> cbi = <span style='color:blue'>new</span> <span style='color:#2b91af'>ComboBoxItem</span>();<br/><br /> <br/> cbi.Content = (item <span style='color:blue'>as</span> <span style='color:#2b91af'>User</span>).Name;<br/> cbi.Tag = item;<br/> comboBox1.Items.Add(cbi);<br/> }<br/> }<br/><br /> <br/> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'><summary></span><br/></span> ///<span style='color:green'> Method for handling the selection change for the users to load the tasks</span><br/></span> <span style='color:gray'>///<span style='color:green'> <span style='color:gray'></summary></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="sender"></param></span><br/></span> ///<span style='color:green'> <span style='color:gray'><param name="e"></param></span><br/></span> <span style='color:blue'>private</span> <span style='color:blue'>void</span> comboBox1_SelectionChanged(<span style='color:blue'>object</span> sender, <span style='color:#2b91af'>SelectionChangedEventArgs</span> e)</span><br/> {<br/> <span style='color:blue'>var</span> tasks = ws.GetTasksByUser(((<span style='color:#2b91af'>User</span>)((<span style='color:#2b91af'>ComboBoxItem</span>)comboBox1.SelectedItem).Tag).UserId);<br/> listBox1.Items.Clear();<br/> <span style='color:blue'>foreach</span> (<span style='color:blue'>var</span> item <span style='color:blue'>in</span> tasks.RootResults)<br/> {<br/> listBox1.Items.Add((item <span style='color:blue'>as</span> <span style='color:#2b91af'>Task</span>).Name);<br/> }<br/> }<br /></span></code></pre></p><p><br/>There is a bit of a delay in starting the app because it is calling the web service to get the users before it shows up, but this was expected with how I called the services.<br /></p><h3>Issues<br /></h3><p>There were a few issues as I was trying to get this up and running. The first, I already mentioned was the RIA Services Toolkit was needed to get things to work. Then there was the naming issue when I tried to connect to the service.<br /></p><p>Using the ASP.NET Development Server, I could not connect to the service it was hosting from another machine. I would have to put the projects into IIS on my development machine and then expose it to the rest of my network. This would allow me to test it going to an iPhone app. I wish this was simpler, but the tasks to do this are not hard, but I did not get this tested. <br /></p><h3>Conclusion<br /></h3><p>Having a RIA Service exposed so that it can be consumed like a standard Web Service can be a helpful thing. It allows non-Silverlight apps to use the same data and especially since Silverlight cannot run on an iPhone or Android based phone. To make some phone apps that all use the same information this type of technique can be used. One thing to remember when you use this sample code, you may have to refresh the web service with the localhost port that visual Studio sets up for you. Or switch things to get it running in IIS. Good luck with it and I hope the code and article help.<br /></p><p><a href='http://ysgard.com/WebServices/RIAasWebService.zip'>RIA as Web Service demo</a></p></span></span>Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com1tag:blogger.com,1999:blog-2264765355561579804.post-48630956061492314822010-08-19T00:53:00.002-04:002010-08-19T00:57:02.197-04:00SQL Azure Pricing Changes<span xmlns=""> <p>I know I am a bit late with this post, but wanted to spread the news of the changes to the pricing for SQL Azure. I have been looking at this myself lately because I am debating moving hosting companies and might need the extra SQL space.<br /></p><p>SQL Azure had two options to start with. This was a 1G database for $9.99 or a 10G database for $99.99. This is an easy to figure out linear system. It looks like there are people that wanted something else in-between and even larger.<br /></p><div><table style="BORDER-COLLAPSE: collapse" border="0"><colgroup><col style="WIDTH: 101px"><col style="WIDTH: 126px"></colgroup><tbody valign="top"><tr style="BACKGROUND: #95b3d7"><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid" colspan="2"><p>Web Editions</p></td></tr><tr><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p>1G</p></td><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p style="TEXT-ALIGN: center">9.99</p></td></tr><tr><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p>5G</p></td><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p style="TEXT-ALIGN: center">49.99</p></td></tr><tr style="BACKGROUND: #95b3d7"><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid" colspan="2"><p>Enterprise Editions</p></td></tr><tr><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p>10G</p></td><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p style="TEXT-ALIGN: center">99.99</p></td></tr><tr><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p>20G</p></td><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p style="TEXT-ALIGN: center">199.98</p></td></tr><tr><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p>30G</p></td><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p style="TEXT-ALIGN: center">299.97</p></td></tr><tr><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p>40G</p></td><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p style="TEXT-ALIGN: center">399.96</p></td></tr><tr><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p>50G</p></td><td style="BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: 0.5pt solid"><p style="TEXT-ALIGN: center">499.95</p></td></tr></tbody></table></div><p><br /> </p><p>They are setup for the smaller users and then targeting large databases. But you are limited to 50G right now. So if you need a larger one, you will have to split it up to use Azure. I am looking at using this for a project or two that I am working on. It is not a bad price and using SQL Azure should be as simple as normal SQL Server. If/when I get a database setup with this, I will be sure to post about it.</p></span>Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com1tag:blogger.com,1999:blog-2264765355561579804.post-34466221164907902172010-06-22T21:09:00.003-04:002010-08-19T00:56:24.809-04:00RIA Services Updating QueriesI am working on a Silverlight 4 and RIA Services. I needed to take a query from the server and update it every minute or with a button press. I put the code in to clear a local collection and re-call the query. I ran all of my tests using VS2010 on my laptop and everything worked great. I put the Silverlight app up on the server and gave it to someone that was doing a demo. It failed to do any updating.<br /><br />At first, I thought it was an IIS caching issue. I have seen IIS do this with other projects. We tried a few things and it did not work at all. So I did a little bit a research on the RIA call that I was using for the callback. I was using this call...<br /><br />theContext.Load(theContext.GetInfoByPageQuery(page), OnAllInfoLoaded, null);<br /><br />Looking at the Load help, I tried out a different version that adds a LoadBehavior to the parameters.<br /><br />theContext.Load(theContext.GetInfoByPageQuery(page), LoadBehavior.RefreshCurrent, OnAllInfoLoaded, null);<br /><br />When I put this on the server it updated everything perfectly. This is something that alot of the online samples do not have in them so I thought I would share it.<br /><br />I will be posting more about my adventures in Silverlight 4 and RIA services soon.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-79090602599522310962010-03-25T10:38:00.003-04:002010-03-26T15:15:10.066-04:00BizSparkAt the .NET user group meeting that I presented at last night some people were interested in BizSpark. Here is the link for it. You will also need a person to approve you. I suggest using Bob Walsh ( http://47hats.com/ ) He is the largest referrer for the program in the world. When you email Bob make sure to put BizSpark in the title. <br /><br />BizSpark<br />http://www.microsoft.com/BizSpark/Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com3tag:blogger.com,1999:blog-2264765355561579804.post-81306810675402971112009-09-18T10:21:00.007-04:002009-09-18T10:55:49.344-04:00.NET on the iPhoneNovell, who makes Mono - the open source, multi-platform .NET implementation, has not release <a href="http://monotouch.net/">MonoTouch</a>. I was in the beta for this and found it to be extremely exciting.<br /><span class="fullpost"><br />You are able to use C# on the iPhone and iPod Touch. C# is the only .NET language supported right now. It uses MonoDevelop as the IDE for developing but uses the normal Interface Builder that you use from XCode, which is the default development platform for iPhone development. So if you are going ot use MonoTouch, you still need to have a Mac. I purchased a MacMini for my iPhone development. I know, I know, it is not a Microsoft product and I have drank the MS koolaid. I had put off doing this for a while but in reality it is the best way to get an iPhone app developed. It is not the only way but the simplest. Plus normally iPhone apps are written in Object-C. I can safely say that I really dislike Objective-C. C# is so much easier to use for me because I use it all day long and have for years.<br /><p>Now this is the first version of the system. And on the iPhone you cannot have dynamically linked components. Everything is linked into the executable, so MonoTouch had to do that as well. They also provided a way to call a C library so that you can have things built in Objective-C and used in a C# based product.</p><br /><p>Currently they have two versions available, Individual and the Enterprise. This is if you want to do enterprise releases or not. They are talking about an evaluation version soon, but did not get it out when they released. overall it is not a cheap tool for a single person, but if you look at it from the cost of your time, you will easily make it up in the first app that you develop.</p><br /><p>Yes, I know that this is a post on iPhone development and I am actually spending alot of time on this myself right now, but it is also using .NET. It shows that .NET is a popular system that people want to use on many different platforms. And this is the first time it is available for the iPhone.</p></span>Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com6tag:blogger.com,1999:blog-2264765355561579804.post-73855277262405945322009-05-31T16:54:00.001-04:002009-05-31T16:55:16.927-04:00Free Online Training with Microsoft Ramp UpChris Bowen posted a great link to some free online training from Microsoft.<br /><br />Check out <a href="http://www.myrampup.com/">http://www.myrampup.com/</a> for info. It includes training on ASP.NET, changing from PHP to ASP.NET and other topics (including VS2008 and Windows Mobile 6)<br /><br />Get training on things. Hopefully if you are looking for work it might help you out.Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com3tag:blogger.com,1999:blog-2264765355561579804.post-45974156449058066442009-05-29T05:32:00.003-04:002009-05-29T05:59:55.694-04:00Certification PresentationThis week I gave a presentation on Microsoft certifications. I currently have 11 certifications and wanted to share some ideas to help others get their certifications as well. With the job market like it is, we can all use a boost up to help us. Here is the presentation for all to enjoy. If you need it in an older version of Powerpoint, let me know.<br /><br /><a href="http://ysgard.com/presentations/MsCerts.pptx">Microsoft Certifications</a>Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com1tag:blogger.com,1999:blog-2264765355561579804.post-16888305949088416082009-05-13T15:28:00.010-04:002009-05-13T15:56:46.912-04:00WPF Splash ScreenOne thing that many people write for their programs is a small dialog that loads up when you start your application. Sometimes this is just an image file and other times it might show you the progress of the app loading, or even something else. Well now WPF applications can have a simple splash screen for free. This only applies to WPF since I tested it with Forms and it did not work at all. Well on to the coding....<br /><span class="fullpost"><br />Add an image to your project. I added simple.png to my little test app. from there, look at the properties of the image and it will say that the image is a resource. Just change the build action to be SplashScreen and you are done.<br /><br /><br /></span><span class="fullpost"><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgijja8Jy62w8F5hUvzxxO5nzqNNo9gjrJTWSBLv7fUyfQO3skxnVeq8KvdJ8UZGM1_vyStTGXZ0Ztd7XMp9Qfl-RVMjNN18LOfITsSly6mOnbCyH5Xf8upW2nHsX3CPtGdgfU90lIOTKkL/s1600-h/splashpost.png"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 185px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5335396052060696050" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgijja8Jy62w8F5hUvzxxO5nzqNNo9gjrJTWSBLv7fUyfQO3skxnVeq8KvdJ8UZGM1_vyStTGXZ0Ztd7XMp9Qfl-RVMjNN18LOfITsSly6mOnbCyH5Xf8upW2nHsX3CPtGdgfU90lIOTKkL/s320/splashpost.png" /></a><br />There are some down sides with this way of doing a splash screen. You do not get to control it. If you want to have a progress bar or to programatically change the version number, you cannot do it. Ok, I will say that there is no immediate way to do it. I am sure that one of the many smart people out there will be able to do it someday<br /><br />The second thing is that it is setup to fade out in 0.5 seconds by default. There is no property on the image to allow you to change this. To make it more customizable you will have to set the image back to a resource and then in your App class create an instance of a ScreenSaver class. From this you can set the time to do the fading and the image resource to use. This gives you more flexibility, but still no handle to the dialog. </p><p>This should be simple enough for anyone to recreate it. If you want my sample project, just let me know.<br /><br />This is a nice small start for WPF to get this type of feature. I like the new things that keep coming out for WPF and can't wait for VS2010 to be completed and released.</splash></p><br /></span>Anonymoushttp://www.blogger.com/profile/17315391111076555518noreply@blogger.com0tag:blogger.com,1999:blog-2264765355561579804.post-6573164155011385452009-05-07T00:27:00.002-04:002009-05-07T00:33:10.230-04:00Shameless plug for Whiteboards Can't Jump (my new iPhone app)!Apple approved my iPhone application, <span style="font-weight:bold;">Whiteboards Can't Jump</span>, today, and I'm pretty excited about it! It's nothing earth-shattering, but developing it kept me busy for a bunch of nights the past two months.<br /><br />So why am I posting about an iPhone app on a .NET blog? Well, I wrote the app, for one ;-) The biggest reason, though, is because the entire backend service layer of my app is written in C# using WCF. At some point soon I'll outline how it works, but it's a REST API using some of WCF's fun new functionality, hosted on a Windows Server 2008 VPS.<br /><br />More later, but feel free to check it out if you have an iPhone/iPod Touch! US $1.99 at the App Store. You can find a link to it's iTunes page right on the home page of my website, <a href="http://www.chordfusion.com">http://www.chordfusion.com</a>!Robhttp://www.blogger.com/profile/07436739840533959131noreply@blogger.com0