Saturday, November 13, 2010

Another of those "I'm still here" blog titles

Wow, almost two months since I last posted here...

Windows Phone 7 has released in Europe and Asia, then in the US... but not Canada! I had such hopes to have my hands on a Windows Phone the day the North American release happened, especially because my carrier (only) carries the Samsung Focus, which seems to be the popular one, but all we Canadians have been told is "the end of the month". Apart from it just being fantastic to have a Windows Phone, I had also wanted one in my hands as a way to spur me further, faster -- something -- to get an app finished.

It's not that I haven't been working on it; my spare time is devoted only to that, at the expense of everything else: my Wii and PS3 scowl as I enter the room. Still, my spare time is at a minimum lately, with wife and kids, baby on the way, new house being built, work and teaching (I wisely resisted taking any classes this semester), but it's going slowly forward.

Part of the problem, as I've mentioned before, is that I'm new to .NET, to C#, to Silverlight (haven't touched XNA for months, which is unfortunate). This means I'm wasting a lot of time fighting with things that experienced programmers in these areas would breeze through. Still, I'm learning my way around them all, feeling more comfortable with them, and with luck, once this first app is finished, future apps will be a relative breeze.


This is still the GEDCOM viewer app I mentioned last time; it fetches a GEDCOM file from the web, parses it out and gives an index of the individuals within, using the fancy LongListSelector that the Silverlight Toolkit for WP7 (link on the sidebar) added to the regular set of controls. Individuals are represented with a Pivot control, breaking up the most important information, secondary information, and perhaps source information into separate pages. Each individual also adds buttons to their families, ones in which they're a child, and ones in which they're the parent, if these exist. The family view shows the parents and children on one page, and secondary information (such as marriage details, census details, etc.) on another. Except for the ugly layout (that design skill I've yet to learn), it has the basic functionality going.

Still to go, in no particular order: support to save/delete GEDCOM files in isolated storage; ability to switch between bookmarked GEDCOMs (whether in storage or bookmarked online); saving browsing potition, both for tombstoning and even on complete exit (if desired by the user); support for multiple values of data (multiple sets/versions of Birth information, Marriage information; multiple marriages).

This version is just a viewer, not meant to provide any data editing ability. Maybe version 2.0. Before that, though, I'm considering features other genealogy packages provide, such as calendars of living persons' events (birthdays, anniversaries), Bing map overlays with the locations of birth/marriage/death/etc. events, graphical family tree representations (ancestor/pedigree trees, descendant trees, hourglass trees, etc.). All of these would expand my Silverlight experience, strengthen my C# skills, and further my .NET knowledge. I'll likely start a second app before adding this next set of features, hopefully moving forward with some of the ideas that @bytemybits and I have been talking about.


So, no one has been blessed with my amazing app yet, but on the other hand, I couldn't be using it myself, either, since I can't get a phone yet. The numerous blogs I follow have been a tremendous source of information (and I'm only 50 articles behind at the moment!), and the Twitter community for #wp7 and #wp7dev is great; I just wish I was able to participate more in the community.

As for the whole developer process, I've gone through the whole GeoTrust thing, so I believe I could submit an app for approval to the Marketplace today, if I had one. Being Canadian, I don't have the easy route of submitting my SSN and bank account info to get paid, but instead have to go through hoops to get an ITIN, all so I don't get overly taxed by both the US and Canadian governments. One thing I wonder about is whether they'd just hold any earnings if I was to have an approved app on the marketplace before getting any banking information to Microsoft, or if they'd not allow me to post until it was done. Depending on how long the IRS takes to get me my number, I might be able to find out!

Friday, September 17, 2010

I'm Still Here

Unlike Joaquin Phoenix's stunts regarding the film of the same name, this isn't a hoax -- I really am still here, even if I haven't been posting.

The final RTW (Release To Web? Release To World?) of the Developer Tools was released yesterday to much fanfare (at least, amongst the Windows Phone 7 developers). The uninstall of the Beta version and re-install of this final version went painlessly, unlike my previous experiences. I won't go into the features added/changed - they can be found on the main Windows Phone 7 site or on many of the main developers' blogs, all linked on the side.

The WP7 community is growing and very active, keeping my RSS feed very busy, and thus me busy reading about the latest tricks people have found and the latest projects people have been working on. There is so much good material coming out, it all feels like required reading, and thus take a not-insignificant amount of my time to keep up on. At one point I was over 300 posts behind in my reader... after a reading blitz over the last few nights, I'm now only a respectable 17 behind. All this reading and learning has definitely affected any progress in developing *my own* apps.

As for my progress... I finished reading Learning XNA 3.0 by Aaron Reed. I had a few issues with the writing style and some of the content, but overall it was a good way to learn XNA; it ramped up from the basics in 2d to some fancier tricks in 3d and interesting material on HLSL. I haven't put any of it to use yet, but from it I've learned nearly everything I need to implement my first game idea.

On the Silverlight front, I'm a little more behind. I've got three or four ideas that I want to put in place, but don't have the skill/talent for design nor the Silverlight know-how to implement it, if I did. My first app is going to be a GEDCOM viewer, figuring that a viewer (versus an editor) would be an easy first step, that I have lots of data available, and it's the kind of app that will give me experience with multiple views and will utilize lots of different Silverlight items, from columnal layouts to listboxes to the newer pivot/panorama devices for Windows Phone. The backend code is nearly complete - reading and parsing the data - but I now have to figure out the design portion (how I want it to look) and then the implementation of that (the Silverlight portion). Unfortunately, it's possible to learn Silverlight (a skill) but it might not be possible to learn the design (an art). I'll see how well I do in the next week or so.

Monday, August 16, 2010

Competition(?) on the Windows Phone Marketplace

Last week or so, I started hearing around the blogosphere that Microsoft itself was going to be putting games out for Windows Phone 7. At first I was a bit miffed about this, because it meant that right out of the gate, this market for indie developers -- which is how I see this field -- was going to be crowded by the "big guy". I knew, of course, that there were small game studios out there, currently developing for iPhone and/or Android, that were going to be getting into the Windows Phone market, but they were "acceptable competition" in my mind.

After thinking about it, though, I decided that the game industry itself has done fine with the AAA developers and the indies alike (as has been the general theme over at Game Theory Online and The Escapist's Extra Credit feature), room for both. Yay!


But then I read tonight about Microsoft's continued focus on games for Windows Phone 7 and their support for many other existing XBox Live developers, and my heart sank again. It's not clear that they'll all be there on day one, or if they're all just in-development, but even though I've never seen any of these games (not being an Xbox 360 owner), you know that they can't suck if they're mentioned in this article.

Is there room for someone like me to even try? I've never published a game before, I'm new to XNA, and while I like to think I've got lots of game ideas, I have no idea what they'll be like if/when they materialize. Obviously there will be opportunity for many indie developers to make their mark in the Windows Phone marketplace, perhaps because of that next novel game concept, or perhaps because the price point on these "professional" games will leave a second price tier - the $0.99/$1.99 level? This is probably where I was going to end up anyway, so am I again worrying for no reason?

Should I just consider the app market instead of the game market?


Of course, at the rate that I'm accomplishing anything in Silverlight *or* XNA, this might be a non-issue. All these rumours of November release, then October... I had wanted to have made *something*, no matter how trivial, before the phone was available. That time sure seems to be approaching fast, and I'm still in learning mode.

Sunday, August 8, 2010

Silverlight progress

I've put the XNA programming aside for now, moving on from samples and examples to trying to get an honest-to-goodness app finished and running. To do this, I'm leveraging libraries written by others, something that I find hard to do because I rather enjoy the process of implementing the same code myself.

But, time is of the essence, since I don't have many hours a week that's mine for WP7 projects, and thus it makes sense to not re-invent an internet-available wheel. Of course, I'm completely new to Silverlight, having at most run downloaded WP7 samples and read a few book excerpts. This means I really have no idea how to use other Silverlight controls in my own or how to include other C# projects in a Silverlight project.

I thought the first was easy enough to figure out -- even though I'm pretty new to Visual Studio (again), I know how to include references to other projects, and Silverlight does it the same way. But no, not really. And including an existing C# library in Silverlight doesn't work the same way. Only certain project types are able to be included in this way, and this one library isn't one. So as not to waste time (YET AGAIN) fighting with tools instead of developing, I've just copied the code from these downloaded libraries and controls into my own project, and am now fighting with dependencies that are expected from "full" environments but aren't available in the Windows Phone restricted set of APIs.

At this rate, I might end up coding these libraries myself, after all.

Friday, July 30, 2010

Learning and more learning

Last week the Windows Phone team hosted a series of Jump Start courses, which I "attended" for the most part. Unfortunately, my children were accommodating during the parts that I knew, but not the parts that I wanted most to see, but that's what reruns are for, right? It was a good overview of what the platform could do and how to do some interesting introductory things in both Silverlight and XNA. Alas, I did not win a T-shirt nor the private jet that they gave away.

I also "attended" the unboxing of a Windows Phone 7 by Tim Heuer. It may sound a bit lame, watching a guy open a package and play with the device, but it certainly makes things more real when you see a live device in someone's hands, being loaded fresh with apps and working. It was a decent group of people also watching, chatting on the side of the video. And, we learned not to stick a microSIM card into a SIM slot (but that it can be successfully removed).

This week I also moved from XNA experimentation to learning more Silverlight. Well, I haven't gotten to the Silverlight per se, but have started writing some background code (for Yet Another Twitter App) that will support the data-driven aspects of Silverlight. If you're so inclined, you can watch the Back|Start|Search twitter account for lots of noisy tweets while testing the app over the next while. After that, we might actually start using that account to tweet things of import!

Monday, July 12, 2010

Windows Phone Developer Tools Beta

The Beta of the Windows Phone 7 Developer tools has just been released. Many of the changes from the CTP we've been using seem to be geared to allowing those who have actual devices to use them. Unfortunately that doesn't include me.

Other changes include controls and control templates, both of which I've got no real understanding of yet, since that's all Silverlight and I'm still a Silverlight newbie, still focusing on learning some XNA.


The scary part about this, if you've read my previous posts on the matter, is that I have to uninstall the CTP versions of things and reinstall this version. Wish me luck!

Wednesday, July 7, 2010

XNA progress

One of the good and bad things about Windows Phone 7 is that it has two development APIs to choose from -- Silverlight and XNA. This is good because it allows for flexibility to choose the right tool for the job, but bad because I know neither of them, and thus have to learn both of them to have the understanding of the platform that I want.

Silverlight frightens me, though, because it's heavily about layout, which I've never been good at. My blogs are only tolerable because they come with templates, and anything else I design hasn't a whiff of design, layout or interface. This is a problem I'm going to have to overcome, in time, but for now, I'm learning some XNA, which lets me ignore such things and just draw pretty graphics all over the screen -- art being something else I'm hopeless at, so will be using liberated assets from the internet and elsewhere.


To learn XNA, I've been reading the O'Reilly Learning XNA 3.0 book, wishing that there was a 4.0 version out already. There are a few blogs out there that are trying to help developers make the transition, and a few others that are trying to point out the Windows Phone-specific differences for XNA development. But for now, I'm going through the examples in the book as Windows Phone 7 targets and dealing with any discrepancies as I find them.

One of the first examples (that does anything interesting anyway) is putting an animated sprite on the screen, and then using various input devices to move it about. While they provide animation spritesheets with the downloadable content for the book, I have other assets that I prefer to use. After a little bit of customizing of the example code (which I've now noticed I'll be changing in the next chapter), I ended up with something that I'm pleased with.



Now really, this is not much of an accomplishment -- this is chapter 3 of the book, and all it lets you do is move the ogre (his colours look fine on my screen; I haven't figured out why FRAPS doesn't capture it properly) around with mouse and keyboard. Well, it would if it was a regular XNA app, but the XNA KeyboardState doesn't translate well to the phone emulator, and the mouse interaction on the phone requires your finger on the screen, thus clicking-and-holding the mouse button, instead of just moving it. But even though this is currently a trivial result, it definitely helps drive me to learn more, especially because seeing this with the alternate graphics helps to drive my other project as well.

Up next: collision detection. But instead of some spinning ball from the book, perhaps I need... fire!

Thursday, May 6, 2010

Slow Progression

I'm definitely not whipping out any Twitter apps or 3D games, but I'm finally getting my feet wet with Windows Phone 7 development.

I finished the Windows Phone 7 Training Kit "Hello Windows Phone" lab the other day (link at the right) only to have them release three more labs as part of the April release update. It rushes you through a lot of the Expression Blend and Silverlight stuff, which is the material I know absolutely nothing about, but I can always go back and tinker. For now, it's all magic.

I got my new DirectX 10-capable video card yesterday, which meant I was able to continue going through Charles Petzold's preview of his Programming Windows Phone Series book (link at right) at the XNA portion where I stopped. I then spent the rest of the evening trying to figure out why the project wasn't doing what it should; it wasn't failing with an error about my lack of video card support, as it did before... near the end of the evening I remembered seeing something flash by my RSS feed about an update on Petzold's blog, and sure enough, he had updates to the sourcecode that included fixes for changes to the April CTP release. This will teach me not to a) not read the release notes for the CTP; and b) not read my Windows Phone 7 RSS feed before coding. If you're wondering: XNA apps now require setting the back buffer size, which was missing in the original code.

I've (re-)started reading the two preview chapters of O'Reilly's Learning Windows Phone (link at right) as well, now that I have a working system. It's very introductory, and will likely have me do similar things as the Training Kit's first lab did, but since I'm still just ramping up my development here, repetition is probably good. It's unfortunate that that book isn't slated for publication until November 2010 -- I expect/hope that I'll be well-versed enough in WP7 development that the book will be useless to me by that time.

If you're just getting started with Windows Phone 7, the Windows Phone 7 in 7 series of tutorials (link at right) is a good way to get a glimpse at the layout, design and environment of WP7 development. As the name hints, each video is seven minutes long, so it won't kill you to watch them all.


Did you get the hint that this post was largely about the sets of links on the side of the blog? I'm aiming to keep those as current as possible with any information that gets published about WP7, whether design or development. If this interests you, please return often, and if you have links that you think I'm missing, please let me know.

Friday, April 30, 2010

Visual Studio 2010 RTM + Windows Phone 7 CTP April Refresh

Success!

A week after complaining about the fight with VS2010 and WP7CTP, they released an April refresh of the Windows Phone 7 Development Kit CTP that works with the full release of Visual Studio 2010.

I started on my home machine, where I had only ever installed the WP7 CTP with its Visual Studio 2010 Express version. That install had always worked. After an uninstall of that, including the leftover packages listed in the Programs and Features list, I was able to install the following, in this order (I can't say how much the order matters, but this worked for me):

Visual Studio 2010 Professional
Microsoft Windows Phone Developer Tools CTP - ENU
Microsoft Expression Blend Add-in Preview 2 for Windows Phone
Microsoft Expression Blend SDK Preview 2 for Windows Phone
Microsoft Silverlight 4 Tools RC2 for Visual Studio 2010
Microsoft Expression Blend 4 RC
WCF RIA Services Toolkit April 2010

Of course, you might not need all of this -- I'm aiming for a complete development environment -- but all of the above does seem to work together fine.

There are a few issues mentioned in the release notes, one of which doesn't affect me but might affect others: any assemblies signed with Authenticode will fail to load (a workaround is available until a next release of the CTP can be made); and the fact that existing projects, made with the previous release of CTP, will not work correctly because of a new section required in the manifest file. While the release notes spell this out, and Visual Studio will pop up a dialog to this effect, it's not a cut-and-pastable block of text, so I'll provide one here:

<Capabilities>
<Capability Name="ID_CAP_NETWORKING" />
<Capability Name="ID_CAP_LOCATION" />
<Capability Name="ID_CAP_SENSORS" />
<Capability Name="ID_CAP_MICROPHONE" />
<Capability Name="ID_CAP_MEDIALIB" />
<Capability Name="ID_CAP_GAMERSERVICES" />
<Capability Name="ID_CAP_PHONEDIALER" />
<Capability Name="ID_CAP_PUSH_NOTIFICATION" />
<Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
</Capabilities>

This should replace the empty <Capabilities> section in the WMAppManifest.xml file of older WP7 projects.


Since this worked so well yesterday, it was on to my work machine this morning. This was the machine that had all of the uninstalls and reinstalls from last week, but had finally gotten up-and-running with WP7 -- just in time for yesterday's announcement. So... I uninstall WP7, clean out every little package as I've done time and time again on that machine, and on the home machine. Install VS2010 and ... failed. Hrm. Reboot, uninstall the few pieces that got put in, reboot, install again... failed. The problem I was seeing is mentioned here and in other places; the one suggestion of turning off the virus scanner didn't apply (don't run one), and neither did the bad-ISO-image one (I had just used the same image two days prior). But, just in case, I went to arrange for another download, and lo! Found out that I have access to VS2010 Ultimate! Yay MSDNAA! After painstakingly waiting for the download and uninstalling the detritus from the last failed attempt at VS2010 Professional, I start the VS2010 Ultimate install, and ... success!

I have no idea whether a re-download of Professional would have solved the problem, or if the Ultimate installer had some smarter checks when installing itself. I don't care, because I'm that much closer! Unfortunately, the install finished at the end of the day, so the install of the abovementioned list of packages will have to wait until Monday.

If anyone out there has any problems with the WP7 setup using the packages as of the time of this writing, please drop me a comment -- especially if you also found a workaround!

Thursday, April 22, 2010

VS2010 + Windows Phone 7 Redux

Err...yeah. That didn't go well at all. After multiple attempts, numerous installs and painstaking uninstalls, no love was found trying to get the Windows Phone 7 CTP to work with Visual Studio 2010 (not the RC, but the release). Granted, I've never seen anything specifically say that the CTP should work with a post-RC version, only RC, so perhaps it's my fault for high expectations. As it is, I'll wait until the Phone devkit is beyond CTP and released for proper inclusion into a full VS2010 -- and then try all over again.

Luckily, I've got an XP virtual machine in which I can run VS2010, for doing non-Phone development. It's just unfortunate that I can't combine all of my development work into a single environment.


On a related note, I finally got to play around with the Visual Studio 2010 Express that comes with the CTP -- I haven't touched Visual Studio for almost ten years, since I was employed as a developer, and even then I resisted embracing the environment (having come from many years of Emacs under *nix development). My C# programming of late has all been under Linux, using Emacs and Mono, but I'm forcing myself to use the correct environment for Phone development, and ... wow.

I *really* used to despise the Intellisense in Visual Studio, finding it an interfering and distracting nuisance -- it was the first thing I'd change in a new VS install, even before adding my emacs key bindings. But now ... yeah, wow. Because of the "live" nature of the environment, VS can deduce types of variables and provide completion in code that has never been compiled or run, and the method to accept provided completions is definitely more intuitive than it used to be.

This is also my first time doing anything with Silverlight, and thus my first experience using XAML. I'm quite impressed with how useable and interactive the XAML editor is and the immediate view of changes made - it sure beats hitting "compile" every minute to see how things are looking after each change.

I'm sure Visual Studio veterans are laughing at my wide-eyed experiences, but we can't all have experience with everything out there, can we? Well, I'm trying.

Tuesday, April 13, 2010

VS2010 + Windows Phone 7

Catching up on my C#/Silverlight/XNA RSS feeds, I read a Sgt. Conker article regarding Visual Studio 2010 RC and the Windows Phone 7 CTP.

In the past few weeks, I've been having quite the war with the VS2010 Ultimate Beta 2 and the Windows Phone 7 CTP, mainly because they're not compatible, and thus I can only have one installed at a time. On one machine, one of them won out, on the other, the other. That is, until VS2010 RC was released, at which point I uninstalled Ultimate Beta 2 (couldn't upgrade from that), and then ... decided to just install the Phone CTP.


And now I find out that I didn't have to make a decision, but that the CTP *will* work on top of RC just fine, which means I get to uninstall the CTP on two machines, install Visual Studio 2010, and then reinstall CTP on top, with the guidance mentioned in the article above. And, since VS2010 is actually released now (not Release Candidate, as far as I know), I can go directly to that.

All this for the XNA portion of the WP7 tools to tell me that the video card on one of my machines isn't up to snuff, relegating it to Silverlight-only development. And I'm too cheap to go buy a new video card.

So far.

Tuesday, April 6, 2010

Slow start

I've yet to do more than compile a few intro Windows Phone apps and take a look. Part of the reason is that the Windows 7 Phone Series CTP, which comes with Visual Studio 2010 Express, can't co-exist on a machine that already has Visual Studio 2010, which my one machine has. The add-on to the full Visual Studio 2010 that will allow WP7S development hasn't been released yet, so I'm unable to work on that machine.

My first intuition was to run a virtual machine that doesn't have VS2010 installed, but of course the virtualization of the phone hardware doesn't play nicely inside a virtual machine (nor next to a virtual machine, for that matter).

And, my other Windows 7 machine which I purposefully left without VS2010, specifically for WP7S development with the CTP... doesn't have a DirectX 10-compatible videocard, so I can only do Silverlight-related development on that machine -- no XNA.

Not all is lost, however. I've been browsing the UI Design and Interaction Guide for WP7S, which is interesting, if not a bit zealous. I'm also reading the Special Excerpt from Programming Windows Phone 7 Series by Charles Petzold, which works through at a good pace, but would really be more fun if I could play along while reading...

My O'Relly XNA book is being neglected for now because of my lack of an XNA-able videocard. Granted, I could try some XNA development on the non-WP7S machine, but... I haven't. I've got no Silverlight book, and all I've seen available have been for Silverlight 2, and I believe they're calling the WP7S version Silverlight 4, so I don't think I'll be picking up a book on the subject quite yet.

The O'Reilly C# 4.0 in a Nutshell book has been very good, giving me exposure to all sorts of good, new features in C# that I've already forgotten about and will reread about months later and curse not using. I've got a few non-WP7S projects that I'm working on with C#, to get to know the language better so I'm more comfortable when I start doing some phone development.

Expression Blend is being pushed quite a bit as the manner in which you design layouts and UI in WP7S, and I've never touched it before. I've installed it, watched a few videos on Channel9, but that's it. I've never been a good interface designer, and since a phone is all about design, I'm going to be thrown headfirst into it. Luckily, there will be a bunch of Silverlight templates to be used and keep me on track.

I'm hoping in the next week to play with more samples, modify them, and actually get a feeling that I've written my own first WP7S app.

Thursday, March 25, 2010

Obligatory Introduction

Yet another blog. Yet another blog by me. But I've told myself that I need to make a separate blog for all of my Windows 7 Phone blogging, because my general programming blog is, well, too general.

As I learn my way through C#, XNA, Silverlight and the .NET Framework, not to mention the WP7-specific APIs, I'm sure I'm going to find things I like and dislike, code snippets to share, and perhaps even a working app or game, which will hopefully find its way here.

If I end up being interesting, please follow along! If not -- I don't blame you for not.