Mister Goodcat

Peter's home of all things life

Wednesday, 7/23/2014 10:00 PM
by Peter Kuhn

A Semantic Version Provider

Wednesday, 7/23/2014 10:00 PM by Peter Kuhn | 1 Comments

I did some thinking recently on how team collaboration with different versioning strategies of components should look like, ideally, to cause as little friction as possible. Particularly, the use of technologies like NuGet to distribute components, and ways to integrate this with continuous builds, made it necessary to re-consider some details I had taken as a given before.

During a proof-of-concept phase for some workflow ideas I came to the conclusion that it would be necessary to have some sort of service that can provide version numbers on a "global" level (e.g. accessible to everyone, not only to your build system, but also individual developers). Naturally, I wanted it to follow a semantic versioning approach, something I've grown a fan of during the last years.

What started as a quick implementation of a sample service has now turned into a complete library for semantic version generation that can be used in arbitrary .NET projects. It's fully backed by unit and integration tests and should be production-ready (your mileage may vary). You can find it on GitHub. The repository also contains a Web API wrapper that exposes its features as a web service, with support for arbitrary numbers of projects, components and the like to version, through configuration.

Thursday, 12/8/2011 12:49 PM
by Peter Kuhn

NuGet: little known features

Thursday, 12/8/2011 12:49 PM by Peter Kuhn | 2 Comments

To me personally, NuGet is one of the greatest additions to a .NET developer's life during the last years. It's simple to use, makes your life easier, and simply works. I like how quickly it is adopted by customers, friends and public projects, and extensively used everywhere. However, I often see that people do not know about all the available features and sometimes even create custom solutions to problems that are already solved by built-in options. In this post, I randomly pick three features you should know about when you're working with NuGet, and create your own packages. More...

Sunday, 11/20/2011 9:07 PM
by Peter Kuhn

Announcing: Your Last Options Dialog (YLOD)

Sunday, 11/20/2011 9:07 PM by Peter Kuhn | 0 Comments

Similar to the idea behind my project "Your Last About Dialog" (YLAD) I have created an implementation of a generic options/settings dialog for Windows Phone. The goal is to make it as easy as possible for you to set up such a dialog, but at the same time keep all options to extend and customize it when required. The features in detail are:

  • Uses reflection to support arbitrary objects as "data providers" for the options page. No need to implement custom interfaces or use special types – continue using your POCOs for your user and application settings.
  • Use attributes to customize the behavior and looks of your individual options, in particular:
    • Supports grouping of options into pivot items
    • Supports sorting of options
    • Supports validation
    • Supports localization using standard resources mechanism
    • Has custom features depending on the data type (e.g. input scope for strings etc.)
    • Much more…
  • Highly extensible component, in particular:
    • Change existing views (editors) to your own
    • Add support for additional data types – even your custom ones
    • Implement custom validators for your particular needs
  • Prepares and extracts all data on a background thread for maximum responsiveness

This initial release already supports a wide variety of data types, including bool, integral types (byte, short, int, long), floating types (float, double, decimal), DateTime, TimeSpan, strings, color and all enumerations. To learn more, please visit the project:

On CodePlex
In the NuGet gallery ("Extras" extensions in the NuGet gallery)

For a quick overview and details on how to use the component, make sure to read the walkthrough.

As always, comments and feedback as well as feature requests and bug reports are very welcome.


Friday, 11/4/2011 10:52 PM
by Peter Kuhn

Announcing: Your Last About Dialog (YLAD)

Friday, 11/4/2011 10:52 PM by Peter Kuhn | 0 Comments

Inspired by a blog post from Jeff Wilcox back in July (here), I started creating a generic about dialog for Windows Phone based on his initial ideas and design. Over time I improved the code more and more, created new features and avoided pitfalls, and eventually added localization support. At this point I think it's a pretty handy piece of code that is also interesting for others to use in their applications, and it has proven to be robust and reliable by multiple applications in the Marketplace that use it. Remembering my own "reinventing the wheel" issues with about and help screens, I hope that this addition will indeed be "your last about dialog", serving all your requirements. Included features:

  • Extracts all information about your app automatically (name, version, description etc.).
  • Allows overriding all information with alternate fixed values.
  • Shows a configurable list of hyperlinks to your web site(s) or email addresses etc.
  • Shows a button that lets the user rate your app in the Marketplace.
  • Supports additional pages (pivot items) to be added, containing local or remote content.
  • Freely configurable fallback content for remote sources that cannot be retrieved.
  • Supports both text (with auto-formatting/highlighting) and XAML content.
  • Can be localized for any culture you want to support.
  • Only loaded when the user requests it – zero memory/performance impact otherwise.

To learn more about the project and configuration options, please visit the documentation on CodePlex. The download package there contains the binary library and multiple sample configurations, and the available source code also has a small additional Windows Phone sample app that uses the dialog for demonstration. The more convenient way to pull the library into your project is to use the NuGet package.

YLAD – Your Last About Dialog:
On CodePlex 
In the NuGet gallery (recommended for installation)