My girlfriend was telling me that I don't text her nearly enough through out the day. Being a developer, I immediately realized that the act of texting was a completely repetitive task. What else is development for than to solve repititive tasks and make your life easier. So I decided to write a little application that would text her through out the day with little messages to let her know that I still care. This seemed pretty simple and I wrote an initial winform version in no time, but it lacked the humor and character that an app with this intention needs. I realized that WPF would be perfect for this but I had only dabbled with it before. I set off searching for references and there is definetly enough on the internet and especially a good amount on DotNetKicks. Once I felt confident, I ended up with the following.
I want to give credit to Everaldo Choelho for the crystal icons. And I also want to give credit to Clarice Gomes for the HeartVectors off of Vecteezy. There was also code used from James-Newton King found on Haacked.com and Dr. WPF. The online community is great!
The application was a joke and my girlfriend found it funny :P
The Application
These screenshots don't really do the application much justice, I've used the animation aspects of WPF to animate some of the windows and made several of the hearts glow. It's visual candy and WPF is 100% the reason for my rotting teeth. Just kidding, my teeth are fine but you get my point. Download the application and give it a try, if you run into any issues please let me know. I have only tested it with AT&T since that is what I and my girlfriend have. When you start the application set up your love profile which you can see below. IWuvYou uses email to text message gateways setup by the phone companies, which is not the best solution but works. If you don't have a girlfriend then just set yourself as the love interest (freaky).
Thoughts About WPF
WPF is completely awesome, I was a little hesitant at first because I am a web development kind of guy: WCF, ASP.NET, JQuery, and etc. I thought to myself, how could WPF really be any different than Winforms? It is completely different, you are entering a world where you are no longer constrained by your ideas of what an interface is. If a designer can mock it up, you can take that mock up and bring it to life without any compromise. You have to approach WPF development differently than WinForm development. If you try to use WinForm ideas in WPF you will not be happy with the outcome. I used the Model-View-ViewModel pattern and it made things very easy. If I had more design cred and capabilities then this app could be even more visually dazzling, with exploding hearts, crazy sound effects, and fluid animations (not that cramming all that in one application makes it a good application).
Now the negative. WPF is good and frustrating for the same reason. You can make anything look the way you want it to, but if you want a different look then you have to make it look the way you want it to. There aren't a lot of WPF themes out there. But using someone else's theme doesn't make your application unique so I understand why Microsoft excluded that from Expression Blend and WPF. Xaml can also be daunting if you haven't had time to become accustomed to it; relax and breath and it will get better over time. Other than those two things, I haven't found other things that frustrated me enough to give up on WPF.
The code written for this application works, but that doesn't mean that it doesn't need a lot of refactoring. I attempted to use Unity and IoC but since I didn't fully understand the WPF development domain, the implementation of IoC kind of broke down a little on me. I also was using TDD to create the services and repositories, but once I got to the UI that process broke down. I felt that learning what I was doing this first time was daunting enough. This doesn't mean I have abandoned TDD for WPF because it is definetly applicable, and as this application get more refined tests will be added in. So note, this application works, but it probably has bugs and needs refinement.
Use WPF and leverage it's power to give your apps that extra pop!
Download
IWuvYou.zip (893.66 kb) (no source included)
Afterthought
I am planning to port this code over to Windows Mobile 6.5 and running it on a cellphone; accessing the SMS stack found on the device instead of the email to SMS gateway.