Archives
-
Using WPF Converters to Affect Multiple Properties
I’m working on my first WPF application. I’ve done a ton of reading on WPF and it’s helped me in my understandings of how WPF works. So far, I’m really liking the data binding flexibility WPF gives you. That, along with a very testable MVVM-based architecture, has made the experience a fun one!
-
Published My First Android Application!
While I’ve been playing around with Android development for a few months and I’ve started half-a-dozen various apps, I finally completed one and submitted it to the Android Market. It’s a simple SQLite database app that contains the 2011 ferry schedule for the Star Line Mackinac Island Ferry.
-
Taking Android Emulator Screenshots WITHOUT Eclipse.
I’m working on an Android app and before publishing it to the Android Market, I needed some screenshots. I assumed the emulator supported screenshots, but when I did a search for “android emulator screenshot”, most of the hits talked about how to do it from Eclipse. I’m using IntelliJ IDEA Community Edition. However, based on the descriptions, I understood what was going on.
-
HOWTO: Change which “.testsettings” file Visual Stuido 2010 uses
I’m blogging this mainly for historical reasons. I just spent over 30 minutes trying to figure this out. Well, the first 10 or 15 minutes was getting code coverage enabled in Visual Studio 2010. There’s plenty of coverage on that topic since it’s not as intuitive as it could be. I’ll let Google handle that one.
-
WPF: Simple “Busy” Overlay
I’m working on a WPF project that does some background processing which could take more than a few seconds. Instead of a busy cursor, I want to give the user a simple “Please wait…” message via an overlay that appears on top of the form. I found the solution in this stackoverflow question. However, the solution presented there was an overview. In this post I’ll show a complete example along with a downloadable sample project so you can play with it for yourself.
-
Clarification on Updating DefaultLocation in an MSI
Back in February, I did a blog post on how to change the default location for an Application installed via an MSI. Thanks to a comment from Joe Marcelino, it wasn’t clear where to find the “DefaultLocation” field to change that. Here’s a quick how-to on finding the field.
-
Android: Encapsulating Shared Preferences
The Android OS gives you a convenient way to save and load simple data (i.e. string, float, int, boolean and long) in the form of SharedPreferences. The data is stored in a dictionary format that utilizes a key/value pair. The “name” of the preferences is also supplied by your code. In a lot of the samples you’ll find online, the name of the shared preferences and all of the keys are stored as constants at the top of the Activity class (or worse, the key names are copy/pasted throughout the code!). I don’t like polluting my Activity classes with stuff like that so I’ve been encapsulating my preferences in their own class.
-
.hgignore file for IntelliJ IDEA Development
Every time I start a new project in Visual Studio, I almost always put it under Mercurial source control – even a small demo project. If the project becomes serious enough, I’ll create a private repository in Bitbucket and maintain it there. After I initialize my Mercurial repository, the first thing I do is grab Nino’s .hgignore file for Visual Studio. It’s a great time-saver.
-
Automapper: Handling NULL members
A question about null members came up on the Automapper mailing list. While the problem wasn’t with Automapper, investigating the issue led to an interesting feature in Automapper.
-
Moving a local Mercurial Repository to Bitbucket
I recently got a new laptop. Part of the migration process was to move a few local Mercurial repositories into Bitbucket. Since these are just “playing around” repositories, they’ll be private, but the beauty of Bitbucket is that you get unlimited private repositories. This allows me to keep all of my little pet projects “up in the cloud” and it’s one less thing to migrate the next time I get a new machine.
-
Changing the Default Install Location of an MSI
A few months ago, I had to tweak an MSI installer. It was installing into a specific directory (named the same as the application) underneath Program Files. Since the location of Program Files can change from machine to machine, the MSI has a special token you can use for Program Files (as well as for the application name). So the current value for “DefaultLocation” of the Application Folder was:
-
Setting up Windows Live Writer for Weblogs.asp.net
Once again, I’m on a new laptop and have forgotten how to set up Windows Live Writer to post to my Weblogs.asp.net account. Thanks to Bil Simser, I’m up and running now.
-
Using Lambdas for return values in Rhino.Mocks
In a recent StackOverflow question, someone showed some sample code they’d like to be able to use. The particular syntax they used isn’t supported by Rhino.Mocks, but it was an interesting idea that I thought could be easily implemented with an extension method.
-
Xml Serialization and the [Obsolete] Attribute
I learned something new today: Starting with .NET 3.5, the XmlSerializer no longer serializes properties that are marked with the Obsolete attribute. I can’t say that I really agree with this. Marking something Obsolete is supposed to be something for a developer to deal with in source code. Once an object is serialized to XML, it becomes data. I think using the Obsolete attribute as both a compiler flag as well as controlling XML serialization is a bad idea.
-
Welcome 2011
About this time last year, I wrote a blog post about how January of 2010 was almost over and I hadn’t done a single blog post. Ugh… History repeats itself.