In my relatively short career, I've developed applications and websites in some professional capacity with VB, PHP, C#, and VB.NET (that's right, the first mention of VB is VB6). This includes Windows and Windows Mobile applications, and PHP and ASP.NET websites. Recently, I have been developing for Windows Phone 7 in my spare time (see ArkWords, my first WP7 app I've discussed openly).
At the office, though, I've had a chance to work on Android and iPhone apps. I'd like to take this opportunity to compare and contrast the languages and tools of those two and of WP7. But first, a few disclaimers. I use Windows at home -- I'm used to it. My server at home runs Linux -- its software RAID support is awesome. My phone is an AT&T/HTC Fuze and, while it normally runs Windows Mobile, I've been following this xda-devs thread. And last, but certainly not least, while I love the hardware specs of the iPhone 4, I still strongly dislike Apple's culture of secrecy and closed, tightly controlled ecosystems.
This blog post shall serve as my semi-official request to receive a Windows Phone 7 development device from Microsoft. So, why should I receive one of these devices? The reasons are quite simple.
Recently, the Diaspora project has been making waves on the Internet. Personally, I'm glad someone is taking privacy seriously for a change, but that's not what this post is about. One thing about the project that caught my attention is that their Kickstarter page says that they promise to release the source code under "aGPL", also known as Affero GPL.
I have live-blogged three MIX10 Windows Phone sessions. You can access them below:
First session - introduction to WP7S
I think I can safely say that, to date, I've not really released anything that I could consider popular. Things like The Vista Syn are useful tools for a very limited audience. That's exactly what I expected when I released ArkSwitch, a finger-friendly Windows Mobile 6.5.1+ task manager. After all - it's a task manager, which there are plenty of out there; for an unreleased version of WinMo; and it doesn't even have the coolest features of other task managers, like taking over the X button.
Well, that's not entirely how it happened.
By the time this blog entry is published, I will have submitted my new Silverlight app to the MIX 10K Challenge. Pentatonality, as I have named it, is a Silverlight 3-based application that provides a fun way to make music - simply by clicking or dragging boxes to turn them on and off. This is made possible through the use of a pentatonic scale, so that virtually any combination of notes will "sound good."
EDIT: I've linked to a local copy of the app at the end of the post.
EDIT 2: The entry has been posted to the MIX site: please vote for it!
In Part I, Part II, and Part III, I covered mostly the reasoning behind my home automation project, and its hardware components. Now it's time to conquer the project's most challenging aspect, the software. I suppose the reason that I consider software to be the most challenging aspect is that I'm a software engineer, and as such, I always feel the need to tweak the hell out of any software system I might go with, or even create my own from scratch. Hardware engineering isn't aligned too well with my skillset, which is why I very rarely do any hardware hacking that might involve precision soldering and the like. Therefore, I usually end up accepting hardware limitations as a fact of life (unless they're just too egregious), but I have a hard time accepting software limitations, especially when there's something I can do about them.
Although I'm not 100% done with the lamp topic from Part II, I think it's in a good enough state that I can move on to something else for now. The next topic is controlling window blinds, also known as an exercise in masochism. Existing solutions are obscenely expensive, starting around the $130 mark and going way past $500. I refuse to pay that much for automated window coverings. Luckily, there is an alternative.
Since I have decided to go with Z-Wave at the end of part I, the next step is to determine what hardware I'll need for the features I laid out (again in part I). Some hardware is obvious, like the various Z-Wave modules I'll have to buy, while other hardware is more ambiguous, like what my Internet-accessible controller will run on. Let's get the more obvious stuff out of the way first.
I have wanted to do home automation for a number of years now (see my old post on my legacy blog here), but various things prevented me from experimenting with it, not the least of them being me not owning a house. Now that I actually do own a house, I've been looking at home automation technologies more and more, trying to decide what I can do, what I should do, what is feasible to do, and so forth.