One of our latest projects has failed to restore nuget packages on the build server. Error message was

Package restore is disabled by default. To give consent, open the Visual Studio Options dialog, click on Package Manager node and check 'Allow NuGet to download missing packages during build.' You can also give consent by setting the environment variable 'EnableNuGetPackageRestore' to 'true'.

I have looked into options, and was surprised that default way to handle it was

  • Go to your build server (rdp or physical)
  • Start Visual Studio

While this is acceptable for a local development, for a build server this is a big red light right there. Gladly, as pointed out in this blog post, there’s an option of setting a system variable to solve the issue.

Would be nice to see nuget default to system variable, and then fallback to an instance of VS on a server, but not the way around.

Quite amusing to read pros and cons of not having a start menu button in Windows 8. Debates from how great it is to how poor the decision was to remove it are all over the web.

I know people want to be able to navigate to their apps quickly through a single point. But for the love of simplicity, is THIS simple? Yes, I am talking about that monster hiding behind little cute as button button… Start Menu. Not only you had to click through multiple times, but also you had to master multiple cascading menus that where chaotically expanding all over the screen, unless you never installed applications and had it nice and tidy. Is this what people are complaining about? Hmmm, interesting.

For myself this was not even relevant. I have stopped using this “useful” button along with the spaghetti menu long time ago (from Windows XP) thanks to David (ex-co-worker) who has introduced me to Object Dock Plus. That got rid of the start button along with the unnecessary task bar (you may say I copied Mac – so it be, they also “borrowed” the idea from somewhere, good software development imagepractice). Next step – Executor. There are other alternatives, but I found this one the best. Wish only the creator would compile it in 64bit mode, but that’s a different post. So switching to Windows 8 is seamless – no need in button and menu at all.

Now why do I write this post? Probably because it’s my reaction to  those who wine and complaint about the fact that someone moved their cheese, ignoring the fact that the cheese was stinky old. Embrace the change, and if you don’t like it, then find alternative, but don’t complaint just because you think it’s not going to work.

And BTW, Windows 8 has brought my old hardware back to life. Something that only Linux could do before Winking smile

Update 2012-09-20: If you really miss the button, there’s a solution for you as well. It’s called VI Start for Windows 8

Update 20012-11-02: Another free alternative is Classic Start. Features list is quite impressing.

Update 2012-11-08: If you want Shutdown/Logoff/Restart tiles on your new start screen, there’s an easy PowerShell commands to get the job done.

Update 2012-11-26: So far the slickest implementation is Start8 by StarDock, which I like for Fences and ObjectDock.

Our group is moving to Git for code management and we were looking for in-house hosting option on Windows platform. I was surprised to find out that out of the box there are not many options. Rolling your own solution (aka setting it up manually) was not an option as we are a small group that is already tasked with enough work. So I started my search for free or paid options. You can guess that options were limited, yet one product I found has exceeded expectation and was just perfect – SCM-Manager. Easy, simple, smooth integration with Active Directory and Jenkins build server. What else a boy needs SmileNot to mention that it’s absolutely free. Amazing piece of work. Highly recommended.

image

Wow.

Among the features I love about Gmail is to be able to access multiple accounts w/o signing out and signing in. I’m late to learn this, but apparently you can do the same thing with Windows Live IDs. Same idea, straight forward.

image

The bonus is that you can control access to your account like LinkedIn, Facebook, Twitter, and Google. Very neat.

I ran into a situation today when one of our microsites that was developed by a 3rd party is no longer… manageable. To be less politically correct, we don’t have access to the data anymore. Nothing significant, but annoying. The only way to see the data was through the web site. Yet data was paged, with about 40 pages. This is where curl was really helpful. Apparently, you can parameterize URLs (thanks to Sameer’s post) passed into the command, as well as the output. Here’s an example:

curl.exe -o page#1.html http://dummy.com/show?page=[1-40]

Where page#1.html will be populated by the current index and index is set from 1 to 40. Awesome trick!

This is it. Liam has built his first program (sort of) and I am glad that the reason he did it was to confirm what he learned and not as a desire to become a programmer. If you haven’t seen http://www.khanacademy.org/cs/ check it out. An outstanding resource for kids to learn basic programming and practice some math skills. Liam has started Algebra and this was his first “program” to solidify understanding of concepts such as variablealgebraic expression, formula, input, and output.

image

I loved the fact that it was in JavaScript, so natural (he knows how to use browser), intuitive (var for variable). Except semicolon – VB developers would agree with Liam on his words: “weird”. 

As a parent, I’m going to embrace this tool, hoping that Liam will benefit from “real-time” visualization, though I will never substitute a printed book with it.

PS: Liam is 8, in case you are wondering.

If you have tried to build a web interface that would work for most of browsers and variety of devices, you’ll appreciate Twitter Bootstrap project/framework.

Personally, I liked the following:

  1. Decent documentation and examples
  2. Ease of setup and use (nuget: Install-Package twitter.Bootstrap)
  3. Intuitive rules names

Recent DNC Magazine has a starter article on how to get it going.

When system is built, no one wants to baby sit after its up and running. Therefore, there is a strong desire to automate everything, including error handling. But sometimes automation is not suitable for every error, and here is a good example.

An email signup service that I have created is using a 3rd party service to discover city, region, and country from city name only.  Easy and intuitive for customers, head ache free to maintain (no need to keep data source up-to-date). All good and nice till I got an error reported by someone on the team – instead of City the system reported “junk” (see screenshot).

image

After debugging a little, it was simply bad data coming back from the 3rd party service (which I have to admit was extremely reliable and accurate for the most part). So what do you do? Initial response in the team was “lets code it so that when a city has a comma and space, we strip it along with the rest. I.e., when “Calgary, Alberta” is received for a city name, we strip the “, Alberta” portion. Sounds like a great idea, can be automated and be done.

But wait a second, there’s also a different issue as well, sometimes system reports Region (aka state / district / province) incorrectly (“AB Alberta” rather than “Alberta”). It is not affecting production right away. So would it be correct to apply the same “fix logic”? At the same time, it could be “City, Regions, Country” returned in a field for City only. Does it make sense to automate the process of fixing the problem (considering that it happens rarely)? Or, perhaps, it’s worth to automate alerts about malformed data, but leave data clean-up to a person?

We have decided to do the minimum required – automate alerts for data that looks odd, and leave fixing to a person that actually deals with subscriptions.

I’m new to Windows Azure, and learning by making mistakes. There’s a lot to learn about Azure in general, and one of the interesting aspects is deployments and cost associated with it. Taking this moment, I’d like to thank Yves Goeleven, Azure MVP, who has helped me a lot.

The simplest deployment that can be done is either directly from Visual Studio .NET. But it’s not automated, and requires a person to trigger it. Next option is to automate it with PowerShell scripts, leveraging Windows Azure PowerShell Cmdlet. But you have to ask yourself, what am I deploying EVERY SINGLE TIME?

When deployed for the first time, I was horrified – 30MB package. Goodness, no wonder it takes forever. “Azure sucks” was my immediate diagnosis. Wait a second, does it? Hmmm… Something tells me it’s not the Azure that sucks. Let’s analyze it. I have several 3rd party dependencies which contributed over 7MB in assemblies. Wow, that’s a lot. Now for each role (and I have two – web and worker roles) that is 7MB x 2 = 14MB. Heavy, don’t you think?

Solution is simple – Startup Task. Azure supports Startup tasks, which is a very powerful concept. You have an option to operate on the machine instance or a role is deployed to, prior to the role execution. This is great, because I can fetch my 3rd party dependencies just before role instance is started, ensuring all dependencies are in place. Where from though? Azure storage. When you deploy your package, you deploy it to the Azure Storage anyways, so why not to upload a zipped blob with your dependencies once, and fetch it every time? This will save you the cost of uploading for every single deployment you do. Event better – when on the same data centre, you don’t pay for moving data. So not only your packages are smaller, shorter deployment time (upload part), but also you save on storage transactions, translated into money saving.

I have gone through this exercise with the dependency I had – NServiceBus, once just for worker role, and then for web role as well, and results are quite impressive as you can see. From 30MB deployment down to 11MB.

image

Dependencies need to be packaged and uploaded either manually, or scripted as a part of build process upon dependencies version change. Therefore I’d suggest to evaluate which dependencies can follow this path and which cannot. You don’t have to stop on 3rd party only, and can also apply the same to Microsoft Azure assemblies, since those eat up space as well, and are found in every role you deploy.

image

And once you do that, well, you are down to the minimum of your project generated artefacts.

I have an idea of creating a “Dependencies Start-Up Task” NuGet package that would take away boiler platting away and allow you to achieve this task with less effort. Would you consider it to be useful? Let me know your opinion, and, perhaps, a few bits will be spared and NuGet be less spammed.

More Posts « Previous page - Next page »