Last week I had the pleasure of spending time with a bunch of friends at the OuterConf 2013, including pretty much the entire NuGet team. I also could attend to the hackathon they organized, and I got to hack what I think is a pretty cool Visual Studio 2012 extension: NuGet References.
An improved NuGet experience
The idea is simple enough: I wanted to leverage some new extensibility hooks in VS2012 to show installed nuget packages right inside a packages.config file, like so:

And once you have the nodes in there, wouldn’t it be cool to be able to update and uninstall right from there?

And why not allow me to see key information about the package on the properties window?

Cool enough 
Monetizing your creations
Now, after the extension was “done” (there’s a TON more that can be added to it! This is just the start), I realized I had put quite a few hours (more like days by now!) into it. So even if I do want my work to be open source so that eventually it can make it into NuGet’s core tooling, I could certainly use a few bucks to pay for the coffee and beer I put into it ...
Read full article
And without a custom DLL with a task, too
.
The example at the bottom of the MSDN page on MSBuild Inline Tasks already provides pretty much all you need for that with a TokenReplace task that receives a file path, a token and a replacement and uses string.Replace with that. Similar in spirit but way more useful in its implementation is the RegexTransform in NuGet’s Build.tasks. It’s much better not only because it supports full regular expressions, but also because it receives items, which makes it very amenable to batching (applying the transforms to multiple items). You can read about how to use it for updating assemblies with a version number, for example.
I recently had a need to also supply RegexOptions to the task so I extended the metadata and a little bit of the inline task so that it can parse the optional flags. So when using the task, I can pass the flags as item metadata as follows:...
Read full article
This is not entirely obvious (at least it wasn’t for me), but since Github wikis are actually backed by a proper Git repo, I figured it should be possible to access the raw markdown for a page by using Github’s https://raw.github.com/ style URLs.
After some minor trial/error, it turns out to be very predictable (as many things in github):
https://raw.github.com/wiki/[user]/[project]/[page].md
Just replace the stuff between square brackets with your values and that’s it. I think I’ll be trying this out with a wiki page as a Release Notes landing page, which I just pull in raw format on a build script and replace the Nuget <releaseNotes> node with its content…
Read full article
“Old” apps rely on mouse pointing and tooltips to explain what a given button is for. Maybe there is text associated with the button, but you can only put so much text without wasting useful screen state. More so in a phone or tablet app.
I’ve seen a trend in Google apps where they put an overlay on top of the app the first time it runs, to explain how the various pieces of UI work. I have seen this also on my Nexus phone, but don’t have a screenshot. I don’t recall a way to actually bring that help overlay back again, so that’s maybe some built-in gesture that’s missing. Here’s what it looks like in Gmail, the first time you use the new compose layout:

I like the approach very much, and I think it’s something that should become standard part of mobile OS, and Windows, including a standard way to bring that help up from within any app....
Read full article
When you add library references to project that are not reference assemblies or installed in the GAC, Visual Studio defaults to setting Copy Local to True:

If, however, those dependencies are distributed by some other means (i.e. another extension, or are part of VS private assemblies, or whatever) and you want to avoid including them in your VSIX, you can add the following property to the project file:
<PropertyGroup>
...
<IncludeCopyLocalReferencesInVSIXContainer>false</IncludeCopyLocalReferencesInVSIXContainer>
Read full article
When creating a VSIX or VS Package extension to VS, the default .vsix file name matches the project assembly name. Usually this is too long. So if you want to change it to be a short name, you have to edit the project file and add the following property:
<PropertyGroup>
...
<TargetVsixContainerName>MyCoolExtension.vsix</TargetVsixContainerName>
Happy extending
Read full article
Blog engines were the new "cool thing to write" after the fever of writing a new DI framework was over. It was kinda like the new "hello world++" example. Almost every single engine uses a database of some sort to keep posts and comments. Almost every one is not leveraging the web as a consequence ;)
I was intrigued by the possibilities that a flexible and general-purpose hosting solution like Github could offer for a static blog engine: basically keeping plain markdown/HTML/razor/WLW/whatever files that through a publish/build time process generate static files that pass for a "blog engine". GitHub even supports custom domain names, so why not?
Such an "engine" would have a number of benefits:
- Plain CSS styling
- Arbitrary JavaScript
- Leverage the web infrastructure (caching, CDNs, etc.) ...

Read full article
I'm always on the lookout for cool toys that can empower my kids (9, 6 and 2yo) to be creative and break the mold of being just consumers of other's ideas.
I recently came across littleBits while watching a TED video of their creator. I was immediately hooked. It seemed like the perfect blend of simplicity and self-learning that I was looking to get my kids into electronics. So I went ahead and purchased the kit from SparkFun and a bunch of standalone parts ("bits") from the site itself. There are also a bunch of videos and pictures on their site to get a better idea of what they are, as well as multitude YouTube videos.

This weekend I gave them to my kids, and coincidentally, we also travelled to my hometown and they got to share them too with their cousins.
Man, what a blast it was! I decided to approach this "toy" just like one of the iPod/iPad games I buy for them: "How it's used? I've no idea! I just heard it was great, you go figure it out!". And figure it out they did....
Read full article
This is a very handy utility that I’ve used consistently for years now. I’ve been updating it since VS 2003 days. Originally from Scott’s blog, IIRC.
You can just download the vs2012cmdhere.inf, righ-click the downloaded .inf and select Install. This will add the following context menu:

And the command can even be uninstalled from Add/Remove programs.
Enjoy!
Read full article
We all need some kind of tracing or logging in our apps. We’d also like third party components to provide useful logging too. And if it integrates with whatever logging framework we happen to use, even better!
There’s a challenge though: we’d all have to agree on using a certain logging framework up-front. Or we could all agree on a common API (much like Common Service Locator did for picking DI containers) and provide specific adapters. The former is impossible, so it’s got to be the latter :)
There are some efforts in the area, most notably Common.Logging which has quite a following according to the nuget download numbers. So I set to investigate how thin the abstraction was: 28 public types, yuck. Doesn’t look much like a thin wrapper over specific frameworks :(. One problem I noticed right away is that it already provides a bunch of abstractions to write logger implementations, reading configuration, etc., which I believe should be totally out of scope of such an abstraction....
Read full article
More Posts
Next page »