November 2010 Entries
Xbox360 and Guitar Controller Feedback

Anyone developing for XBLIG knows (or should know) that guitar controllers feedback data on certain analog GamePad inputs. This is why the Evil Checklist cautions against using thumbstick movement to determine control. But what data exactly does it feed? I wrote a quick test program to find out.

The whammy bar when not pressed in at all feeds a steady -1.0f on the right thumbstick’s X channel. Pressing it in will steadily change it until (when pressed in all the way) it feeds 1.0f. (The thumbstick channels are analog input placed into a Vector2 with values between -1.0f and 1.0f).

The “effect selector” knob (the switch below the strum bar with 5 positions) sends feedback between 0.0f and 0.8844444f on the left trigger channel. (Trigger channels are analog input placed into a float with values between 0.0f and 1.0f).

Lastly, the “deploy” accelerometer(?) will feed a very quick pulse of feedback greater than 0.0f (it goes up to 1.0f then back to 0.0f in less than a second (approximately)) on the right thumbstick’s Y channel when the guitar controller is moved rapidly. (As best I can figure it is an accelerometer looking for very rapid movement in order to feed a signal). Except for the short pulse of feedback, it will feed 0.0f along the Y channel.

This was just a quick post for future reference. I did not test a drum kit, but I’m not aware of it sending any particular non-zero feedback without something being pressed. Nor have I tested any controllers beyond the classic Rock Band plugged controller (I have a wireless that I expect would feed the same data; I do not have a Guitar Hero controller or any of the fancy new Rock Band 3 controllers (yet)).


Please see the first comment (from Yenian) for some helpful additional information!

Posted On Monday, November 29, 2010 9:43 PM | Comments (1)
My Thoughts On “ChevronWP7”

Today (well, yesterday now) was Thanksgiving here in the U.S. In addition to doing my traditional family things (making and eating a large, Turkey-centered dinner), I found some time to pop on to the computer. To my dismay I saw that the #WP7 hashtag on Twitter was filled with news of a program/project called “ChevronWP7” (which presumably has no connection to the U.S. petroleum products company, Chevron Corp. – which has a market cap of $166 billion dollars and whose trademark lawyers may well decide to bury the people behind “ChevronWP7” in lawsuits, something I’d personally be delighted to hear).

“ChevronWP7” is a “jail-breaking” thing (it apparently involves running some code and possibly visiting a website, mucking in your registry and I don’t even know what else… hence calling it a “thing”). The developers of it protest that their motives are noble and have put up a webpage condemning anyone pirating apps and claiming that it can’t be used to pirate anything anyway. They note that they, too, are app developers and just want to help people load things onto their phones that would never pass marketplace certification and are just exploring the hardware blah blah… .

I really don’t care what your motives are. The fact remains that you have created a tool, the sole purpose of which is to circumvent the security restrictions of the phone. Anyone who thinks that doesn’t hasten the arrival of pirated apps is deluding themselves. You’ve moved the ball forward on that. You. Not someone else. The fact that someone else might have done it eventually anyway doesn’t make it any less harmful and doesn’t make it “OK” that you did it. (And as I understand it, this all began with someone gaining unauthorized access to a DLL that one of the service providers was using in one of their apps which linked in to native code; if that is the case then you’ve advanced that day significantly since without that, your tool never would’ve happened).

You claim to be app developers. If you are, you should’ve gotten the email from Microsoft on November 15th entitled “Windows Phone 7 App Protection”. You were already knee deep in your development and had put out several blog posts tooting your own horn (as though you thought that other developers would all be thrilled to watch you try to tear down the security barriers that Microsoft erected specifically to protect us from people pirating our applications and games). When I read that email, I instantly took it as a warning directed at you. Since you seemed to stop mentioning it, I assumed maybe you’d gotten the hint (or that someone from Microsoft had contacted you and made it clear). Obviously you didn’t take it that way.

You say that the tool can’t be used to illegally load apps from the marketplace. How should we know? Because you say so? It was suggested to me by one of you that I go try for myself. Yes. That’s exactly what I want to do. I want to use your tool that, in my reading of them, violates the App Hub Terms of Use to try to load a XAP file from the marketplace which, other than through unauthorized access to Microsoft’s systems, I could not even acquire legally for such a test. Sorry, but it’s not ok for me to breach my contract with Microsoft and possibly break a lot of laws just so I can make sure that your tool which (in my reading of them) violates the applicable contracts and possibly breaks a lot of laws doesn’t make it easy for someone else to break the law by stealing any apps and games I might develop.

Like I said earlier, I really don’t care at all what someone’s motives are in developing burglar’s tools. “Jailbreaking” is just a euphemism for “helping criminals steal from developers who depend on the software they write to help pay their rent, feed their kids, buy clothes, and meet the other ordinary expenses one incurs in life”. But calling it “jailbreaking” makes you sound like less of a monster who is making people’s lives worse and more of a freedom fighter (who is aiding criminal organizations, but let’s leave that part off, right?).

Are there people in countries who can’t sign up for an AppHub account yet? Yes and I feel bad for them and hope that Microsoft works to open the AppHub up to developers from as many countries as possible as quickly as is possible. But they aren’t helped by this tool of yours. Because they still can’t sell their apps without an AppHub account. Being able to circumvent the security restrictions so that they can deploy software to actual phone hardware doesn’t change that fact. No, all your tool does is provide one of the planks for the bridge to piracy. But if it helps you feel like less of a monster, go ahead and post the pages and comments condemning the very thing you have helped to enable. Call it “jailbreaking” and ignore the fact that developers WILL lose money as a result of this, with all the consequences that a reduction of income entails (“sorry kids, but we aren’t having lunch today because Daddy lost his job and too many people are stealing the programs that Mommy writes for us to be able to afford luxuries like lunch anymore.”). Do whatever it takes to help yourself get to sleep at night. Because being a celebrity is totally worth being a sociopath without any concern for your fellow human beings. Isn’t it?

(P.S. I can’t wait to hear news of your whining and complaining when Microsoft decides to ban you from the AppHub. Not that they guaranteedly will, mind you. But I’m really hoping they do. Promoting and aiding in the circumvention of security restrictions is exactly the sort of thing someone should be banned for. I know that I will gladly defend Microsoft’s actions if they do. You’ll probably try to spin it as “mega corp attacks fun-loving, innocent developers”. But the fun-loving innocent developers are those of us abiding by the terms of our agreements and trying to create great apps and games for customers around the world. You are attacking us by making tools that circumvent security restrictions and help criminals. Microsoft banning you would simply be them sticking up for us. It’s their call how to deal with this abominable act of yours, of course. But don’t harbor any illusions that developers would universally support you. This developer, at least, most certainly would not.)

Update (Dec. 1, 2010, 8:41am EST):

I was glad when a friend forwarded me this post - - outlining a good discussion between Microsoft and the creators of ChevronWP7, including an agreement by the ChevronWP7 folks to immediately discontinue the unlocking tool.

Posted On Friday, November 26, 2010 5:48 AM | Comments (39)
Miscellany Tips for Working With a WP7 Device for the First Time

I just got my first WP7 (an LG Quantum) about ten hours ago. Since then I’ve explored it, played games on it, registered it as a dev phone, deployed my project that’s nearest to completion and tested that, taken some pictures, transferred some essential albums to it, downloaded some apps and some trials, and setup my twitter account and several email accounts both standard and custom. Between one thing and another, I never had a chance to use an actual phone until now. So I’ve been running on pure faith since WP7 was first announced. I’m glad to say that my faith was well-placed. The past ten hours have been like Christmas Day was when I was a kid. Are there some things that could be better? Sure. Having to type a particularly long domain name several times while setting up a set of email accounts would’ve been helped along by copy-paste. There are a few quirks in Zune that I’d enjoy seeing fixed in the future. But in general, it’s really been a pleasure and it’s more beautiful than I could’ve imagined. It makes me want to go out and do things and take pictures and show the phone to people.

In my initial journey, I bumped into several things (most of which I’d heard about before but had to research nonetheless). So I thought I’d chronicle them and share them with you so that when you get your WP7 (assuming you haven’t already) and are ready to start developing with it, you can have as smooth an experience as possible (and perhaps discover a few things you didn’t know about more quickly). Without further ado:

  1. To register your phone as a developer device (assuming you’ve registered at the AppHub and completed the verification process), follow the instructions here:
  2. If you get an error when trying to perform the registration itself (and you’ve made sure that your time & date are correct), make sure that you don’t have your phone connected to a Wi-Fi network. If (like me) you connected to your Wi-Fi network as soon as the phone discovered it, you can disconnect by going to your phone’s home screen (the thing with the tiles), pressing on the right arrow in a circle and swiping left to go to the full list of applications, going to “Settings” and then under “system” choose “Wi-Fi” and swipe the selector left to turn it off. I’m not positive this is required, mind you, just that the first time I tried to register it gave me an error, I confirmed the date & time, decided maybe it was a network confuzzlement issue, disabled Wi-Fi, tried again and it worked.
  3. If you’re doing anything with music and get an exception while trying to run (e.g. I got an UnauthorizedAccessException trying to set MediaPlayer.IsRepeating to true), what you need to do is close Zune and run the WPConnect utility (available as part of the October tools update This is a known issue and I think they’re working on a more permanent fix, but for now, running WPConnect in lieu of Zune is the solution. If you’ve installed the October update, WPConnect can be found at: C:\Program Files\Microsoft SDKs\Windows Phone\v7.0\Tools\WPConnect\WPConnect.exe (for 32-bit systems) and C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Tools\WPConnect\WPConnect.exe (for 64-bit systems). Note that you’ll need to run that from a command prompt (which you can get to by pressing Windows-R and typing ‘cmd’ (without the ‘s). If it errors on you, give it a moment; the Zune software is probably finishing up closing down in the background.
  4. You don’t need to run anything special on the phone to deploy to it. Just make sure that in Visual Studio you change the deployment from “Windows Phone 7 Emulator” to “Windows Phone 7 Device”.
  5. If you’re trying to deploy and get an instant error, most likely your phone was idle for too long and did it’s turn off the screen & lock the phone thing. One of the first things I did was change my phone’s default screen time out (under “lock & wallpaper” in the “Settings”) to 5 minutes from 1 minute. I’d love it if they added a 10 minute and/or 15 minute screen time out option in the future and if they made it so that you could have different settings depending upon whether or not your phone was plugged in to a power source. I would leave it at 1 for unplugged and set it to a hypothetical 15-30 minutes for plugged.
  6. I was really amazed at how fast my game loaded up. Maybe a second, maybe less. I believe that the design of XNA’s Game State Management sample has a lot to do with that. Note that deploying might take a little while, but actually starting it up on the phone (you can test this by deploying, quitting your game/app, then launching it from the applications menu) was surprisingly fast after all the rumors of I/O speeds being meh. Note that if you’re front-loading a lot of data you’ll probably see something different entirely and will need to engage in some sort of splash screen with threaded loading optimizations.
  7. IMPORTANT. If you have trouble safely disconnecting your Windows Phone from your PC (i.e. you get an error message about a program still using your phone when you are trying to use the USB eject device thingy in the notification area), you will need to go to “Administrative Tools”->”Services” and stop “Zune Windows Mobile Connectivity Service” first. You probably need to close Zune first (I did not test leaving Zune open and stopping that service). Not sure if this is something wonky with my setup, but I thought I’d post it. This was tested in Win7 Ultimate x64. Your mileage may vary with other setups. 1
  8. My LG Quantum (which I’m very happy with so far) has both an “AT&T AppCenter” and an “LG apps store” in addition to “apps” “games” and “music”. They both have some fun, free content in them (e.g. the Xbox LIVE for WP7 game “ilomilo” in the AT&T AppCenter and a handy collection of “tools” in the LG apps store along with the cool looking “Panorama Shot” app that I haven’t had a chance to try yet but am excited about) so I definitely recommend checking them out (or whatever version(s) of these that your phone happens to have). A quick note, btw. I got my phone through Amazon Wireless but nevertheless qualified for AT&T’s free content offer. The wording on that was ambiguous but it seems that it’s if you get a phone with AT&T service, not that you have to actually buy it directly from AT&T.
  9. There are all sorts of interesting settings you can set in Zune for your phone. Browse around and have a look for yourself. Click the little “settings” text button in the top of Zune when your phone is connected to get there. “Do More On The Web” is particularly neat in my opinion.
  10. One thing you’ll see in “Do More On The Web” is the ability to locate your phone. To enable this and/or make it work better (not quite sure which), you’ll want to go into your phone’s settings, scroll down to “find my phone” and check (at a minimum) the “Save my location periodically for better mapping” checkbox. This service works through text messaging and, with the exception of any costs you may incur for the text messages, is free. Very neat. You can also use that site to do things like ring your phone, lock it (and add a “please return” type note) in case you’ve misplaced it, and even erase it back to factory defaults.

There’s probably plenty more to say and I’m sure I’ll have further posts in the coming weeks. Anything that really fits with this post I’ll add as an addendum. Until next time, good luck!

Edit (Nov. 22, 2010):

1A quicker way to get into the "Services" is to press Windows-R and type "services.msc" (without the quotes) and click 'OK'. This assumes you have Administrator access on your machine or that permissions are such that you can access and stop that particular service. (Not sure whether that's possible without Admin access.

Posted On Thursday, November 18, 2010 4:30 AM | Comments (3)
The Reports of XBLIG’s Death Have Been Greatly Exaggerated

The release of the recent update to the Xbox 360’s dashboard has caused quite a commotion among the Xbox LIVE Indie Games (“XBLIG”) community. The primary reasons for this have been a negative response to various changes that have occurred in regards to XBLIG’s look and presence on the Xbox. Unfortunately, what was an “Indie Developers Unhappy With Dashboard Changes” story has been slowly corrupted into a “Microsoft Wants To Kill XBLIG” story.

I undoubtedly played a part in that with my post here on the AppHub forums. I said, in relevant part, “XBLIG is dead”, and it doesn’t take too many rephrasings to go from that to the “Microsoft is Euthanizing XBLIG” story. Rather than try to weasel out of whatever responsibility I might bear for the latter story taking hold, I’ll instead just share my thoughts on what I think happened and what I think needs to happen going forward.

First, I don’t think Microsoft was trying to kill XBLIG. If they wanted to do that, they would’ve just done it. They wouldn’t have released a public version of XNA 4.0 with support for the Xbox 360 and they wouldn’t have publically released a new version of XNA Game Studio Connect (which is the software that runs on the Xbox itself that allows developers to deploy games to the Xbox for testing). Instead they would’ve announced a winding up time frame – say 6 months out from now or so – after which new submissions to the play testing & peer review system would’ve been closed and some additional time afterwards for those games in the pipeline at that point to try to make it through the peer review process. They would’ve put out a nice press release talking about how great an experiment it has been so far and how many lovely games have been created. They would’ve had all sorts of talking points about how the purpose of the XNA Creators Club’s XBLCG/XBLIG program was to give indie studios a chance to use Microsoft’s great platforms to reach large numbers of gamers and how that experiment is continuing and evolving with the introduction of the Windows Phone 7 platform. It would’ve talked about the unique opportunity WP7 presents to indie studios to access a brand new platform right from the very beginning, one which is projected to reach __ million users by the end of 2011 alone, and how mobile gaming is a wonderful fit for indie developers since the average mobile gamer is looking for a more casual gaming experience that is less asset-intensive and more focused on simple and quirky fun, which is exactly the sort of experience that indie developers excel at delivering. It would’ve talked up how the amazing XNA Game Studio Framework makes it easy for even beginning game developers to create exciting games and how access to LIVE on Windows Phone 7 is available not only to existing Xbox LIVE and Games for Windows LIVE partners but will also be made available to indie developers who build and demo top notch games that deliver the fun, satisfying, and captivating game experience that members associate with the LIVE name.

Much of the above, of course, is true. In fact, it’s all true except for the parts about closing XBLIG. Because they didn’t close it and instead have created a new version of Game Studio Connect that supports XNA 4.0 and will be opening the submission pipeline for play test and peer review to XNA 4.0 games on or about Monday Nov. 8th.

The chief XBLIG-specific complaints I’ve come across about the new dashboard are:

  1. XBLIG is not in Games & Demos/Genres/Titles A-Z, but instead is inside a (for lack of a better term) plate group called “Specialty Shops”.
  2. The image used for the XBLIG plate is three avatars standing amongst some clouds and that this is both misrepresentative (since there are far more non-Avatar games than Avatar games among XBLIG titles) and confusing (since XBLIG is to the immediate right of the Avatar Marketplace such that someone glancing casually might just see Avatars and move on).
  3. The Game Library interface for XBLIG titles is deficient in that the launch screen consists solely of "[Game Name (truncated if it’s beyond some certain length)]” “Play Game” and “Delete Game” without the game description, box art, or anything else.
  4. The Game Library itself shows the game tile and description but the description is truncated if it’s too long and none of the content rating (e.g. violence and language) are displayed.
  5. It’s impossible to rate games (i.e. 1-5 star rating system) from the Game Library; gamers need to go back to the Marketplace and hunt down your game again if they want to actually rate it.

Much of the initial complaint was over the “Specialty Shops” placement. Me, I’m not super bothered by it, but downloads of trials and sales of full games have been down quite a bit for according to a number of devs with popular games. I can understand Microsoft’s reasoning on putting it there – Avatars are quite popular and a ton of Avatar accessories have been purchased, and that tab also have the Rock Band and Guitar Hero music stores as well as the Game Room and the Lips music store. The problem is that while people buy a lot of Avatar accessories and a lot of music for Rock Band and Guitar Hero, many (most?) do so in the Avatar editor and in the respective games. I don’t think anyone ever asked the “where do people buy this stuff” question though and so something that looks really good from a raw numbers perspective probably doesn’t hold up once you look at the point-of-sale locations for Avatar stuff and downloadable music tracks.

The image with the three avatars looks really good. But it doesn’t represent the channel well – most games don’t use Avatars – and when placed right next to the Avatar Marketplace, it’s easy to have gamers who are just flicking quickly through see two tiles of avatars and the Game Room and just keep on flicking to the next plate group, never even realizing that the second plate was “Indie Games”. When the beta of the dashboard first expanded to the large-scale public beta (around the end of September/beginning of October), there was a great interface for browsing New Releases, Top Downloads, and Top Rated. You’d choose one (e.g. New Releases) and then there were several plate groups of games, with each type (e.g. Arcade, Games on Demand, and Indie) getting its own plate group. This was an awesome interface for browsing games – not just for Indies (which were included but still separate from XBLA, etc.,) but for ALL games. But either something didn’t work from a technical perspective or else one or more of the big game studios/publishers didn’t like it because it vanished within a week or so and never turned up again. I think this was a big loss for all LIVE subscribers and the remaining interfaces were much more confusing as a result. I’d love to see Microsoft bring that interface back but I’m not holding my breath; unless XBLA sales are down quite a lot, I don’t see them making any changes to the dashboard given the time and money that goes into making such changes (even if it is simply a matter of restoring an interface that had already been tested by many users).

The third issue is pretty big to me. It’s the reason I made the “XBLIG is dead” comment, in fact. The Game Library launch screen for Indie games looks terrible and I think gamers who see that will draw negative conclusions both about the quality of XBLIG and about Microsoft’s interest in it (I also thought many developers would draw the same conclusion, having already been on edge due to the massive upheaval surrounding the sudden, without-any-warning termination of the XNA Creators Club, its replacement with the AppHub, and the numerous issues that cropped up surrounding that change). On the bright side, according to this Digital Spy article, “issues regarding missing game data, box art and ratings from downloaded games are still being looked into”. So there’s some chance that this might be fixed – though again if it would require any non-trivial change to the dashboard then the cost in both time and money could easily block it from happening. LIVE is a billion dollar business and you simply don’t take risks with such a thing – anything going into the production system must be tested both internally and in a large beta involving users in a wide variety of locales with lots of different hardware setups in order to try to identify and eliminate every potential problem. The fourth issue (description truncation, which is actually something I just noticed) falls into the same category of “is it a trivial fix or not” as to whether it’ll likely be fixed anytime soon.

The fifth issue, no rating in the Game Library, is something that might actually get fixed since it affects XBLA games too. To the extent that any publishers are dissatisfied with that, Microsoft is likely to build a patch to fix it and if that patch requires a full beta, then there’s a chance that most of the above issues could be corrected. But that’s only if publishers are dissatisfied and if the changes would require a large-scale beta (and if the patch isn’t considered so urgent that it’s the only thing that gets written, tested, and patched).

Many devs have made quite a few suggestions about what to do. While most of the suggestions sound good to me, I also know that most of the suggestion simply aren’t going to happen. Anything that requires Microsoft to make any changes to the dashboard won’t happen (time and money spent developing and testing are unlikely to ever be recouped by an uptick in XBLIG sales, assuming there even was an uptick in sales as a result). Quite a few of the suggestions are things that have been suggested many times before and the fact that they weren’t implemented in this dashboard update (or in any previous one) makes it very unlikely that they’d suddenly be implemented.

I think that the main problem XBLIG suffers from when it comes to attracting serious gamers is that XBLIG titles have no gamerscore and no official achievements that show up in a gamer’s profile. XBLIGs will never get gamerscore or achievements since XBLIGs are not reviewed by Microsoft (something I suspect is a requirement of the exemption from getting games rated by the ESRB, PEGI, and similar content ratings boards in the countries where the XBLIG marketplace is available; getting games rated would cost several thousand dollars, negating one of the main principles of XBLIG itself). So the only opportunity a serious game has is to win Dream-Build-Play or in some other way get accepted into XBLA (where it can use achievements and leaderboards and where it can have gamerscore). Otherwise what seems to sell well are games with simple controls, nice graphics, and non-complicated storylines. Humor is a plus but not strictly required. Other things randomly sell well, but it’s all just guesswork based on individual observations without any demographics on the XBLIG customer base (something that’s been requested many times over the years but never released; my suspicion is that Microsoft wants developers taking risks and trying random things rather than having almost everyone trying to make games that appeal to _________ since making games that appeal to ___________ would be ignoring the other ___% of the market thus shrinking the pool of XBLIG customers and oversaturating the market with games that are very similar to one another).

When I look through the above list, what shines through to me is the lack of a Community Manager. The former Community Manager left to take a new job in the middle of September, just a few weeks before a lot of the changes to the dashboard that have upset many developers were made and finalized. Other members of the XNA team have been filling in since she left (Note: I do not blame her at all for any of this; she fought the good fight for us for many years, seemed to be getting worn down in the last couple of months, and when a good opportunity came along took it just the same as anyone else would). While I’m certain that they’ve been doing the best they can, with the launch of WP7, the launch of Kinect, and getting everything set up to process XNA 4.0 games, the people covering have simply been overtaxed. A dedicated community manager, someone without a million other responsibilities eating into the limited supply of hours in a day, would’ve noticed those issues and would’ve fought to get them resolved in an acceptable way. Such a person would’ve been in the meetings speaking up on behalf of XBLIG developers. When that old, nice, early-beta interface was removed, they would’ve made sure that XBLIG still came out OK, and that the bland screen would’ve had the box art for the game. But a search of Microsoft’s careers website turns up no results as far as hiring such a person. I don’t know why such a job isn’t be advertised; maybe it’s being advertised internally first. But whatever the case may be, XBLIG needs a Community Manager.

Do I think XBLIG is dead? No. I engaged in some hyperbole in a forum that is usually only read by developers in a moment of strong frustration. But this issue has taken off and the more it antagonizes Microsoft, the more I get worried that what arose simply because of some unfortunate timing might instead actually come to be. That by people continuing to write about Microsoft “euthanizing” XBLIG, that executives who are getting sick of hearing about it might very well make the terrible choice to do just that. Because at the end of the day, Xbox LIVE Indie Games is an incredible opportunity. It has some quirks, but it’s always had some quirks. There are a couple of “new” problems but nothing that can’t be resolved in time. But if there’s no one in Microsoft whose job it is to represent XBLIG developers to Microsoft and represent Microsoft to XBLIG developers, then it’s going to be much, much harder to get things fixed and developers will continue to get frustrated by the perceived lack of response to their concerns. The new dashboard is something we’ll have to deal with at least until the publishers realize that the lack of a rating mechanism in the Game Library for their XBLA titles is making it impossible for their really good games to get on to the Top Rated list and demand that that problem be resolved. But if and when that day comes there’s still no dedicated XBLIG Community Manager, then it’ll all the more difficult to ensure that fixes for the problems XBLIG devs have are implemented. After all, if there’s nobody speaking on our behalf, how are the other people in the meeting supposed to know there’s even a problem?

Posted On Sunday, November 7, 2010 10:37 AM | Comments (5)
Bob Taco Industries is an ISV focused on game and app development for Microsoft platforms headed up by Michael B. McLaughlin. Mike is a Microsoft Visual C++ MVP (previously an XNA/DirectX MVP from 2011-2013), a developer, a writer, a consultant, and a retired lawyer. If you're a developer who is just getting started, consider checking out the BTI website's section for developers for links to code samples and other helpful sites.
Tag Cloud