Tuesday, May 26, 2015

Best (or at least funiest) ng-conf 2015 session

At ng-conf Shai Reznik brought this great ‘ng-wat’ session inspired by the ‘Wat’ sessions by Gary Bernhardt(a must watch).

Maybe not so informative but certainly entertaining!

Friday, May 22, 2015

Xamarin.Forms: Xamarin-Forms-Labs

The amount of controls for Xamarin.Forms is rather limited. Luckily with the help of the community and control vendors like Telerik, Syncfusion,etc… this is changing.

One of the open source initiatives is Xamarin-Forms-Labs:

“Xamarin Forms Labs is a open source project that aims to provide a powerful and cross platform set of controls and helpers tailored to work with Xamarin Forms”

It offers a wide range of controls, services, helpers and plugins. A must have for every Xamarin.Forms developer…

Available controls

Available services (Beta)

  • Accelerometer
  • Cache
  • Camera (Picture and Video picker, Take Picture, Take Video)
  • Device (battery info, device info, sensors, accelerometers)
  • Display
  • Geolocator
  • Phone Service (cellular network info, make phonecalls)
  • SoundService
  • Text To Speech

Available Mvvm helpers (Beta)

  • ViewModel (navigation, isbusy)
  • ViewFactory
  • IOC
  • IXFormsApp (application events)

Available Plugins (Beta)

  • Serialization (ServiceStackV3, ProtoBuf, JSON.Net)
  • Caching (SQLLiteSimpleCache)
  • Dependency Injection containers (TinyIOC, Autofac, NInject, SimpleInjector, Unity)
  • Web (RestClient)
  • Charting (Line, Bar & Pie) (Alpha)

Thursday, May 21, 2015

Xamarin.Forms: No valid iOS code signing keys found in keychain

Yesterday while creating a new Xamarin.Forms application,  it failed to build for iOS with the following error message:

No valid iOS code signing keys found in keychain

I first thought that there was something wrong with my iOS configuration, but when I tried to create a ‘traditional’ iOS application, it just worked.

On the Xamarin forums I found the following solution that worked for me:

  • Open your Xamarin.Forms projects.
  • Unload the iOS project in Visual Studio.
  • Open the csproj file and search for the following element

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
    <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>

  • Remove ‘Entitlements.plist’ from the ‘CodesignEntitlements’
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<CodesignEntitlements></CodesignEntitlements>
</PropertyGroup>

Wednesday, May 20, 2015

Simplify MsBuild thanks to MsBuild Explorer

MsBuild is a complex beast. It’s easy to get lost inside the XML and hard to discover what exactly is going on.

One tool I recently discovered is MsBuild Explorer:

Use MSBuild Explorer to help you find your way around the make-up of your build file(s). It presents you with a treeview to see the targets that you have available. A series of tabs provide access to more information including detailed target information, custom target execution, detailed property, item, import and using information and evaluation.

 

MsBuildExplorer

Techorama 2015: RequestBin

Always great to discover the tools that other people use during their presentations. It are these moments that make visiting a conference worthwhile and allow you to earn your money back big time!

image

During Techorama 2015, one of the speakers was using RequestBin:

RequestBin gives you a URL that will collect requests made to it and let you inspect them in a human-friendly way.
Use RequestBin to see what your HTTP client is sending or to inspect and debug webhook requests.

It’s the perfect solution when you want to see what’s send to the server but are not able to trace and inspect the HTTP requests on the server.

Click on the Create a RequestBin button:

image

Copy the generated url into your HTTP client (like curl for example). Execute a call:

image

And check the results on the RequestBin website:

image

Nice!

Tuesday, May 19, 2015

Impress your colleagues with your knowledge about…AggregateException.Flatten()

Sometimes when working with .NET you discover some hidden gems. Some of them very useful, other ones a little bit harder to find a good way to benefit from their functionality. One of those hidden gems that I discovered some days ago is AggregateException.Flatten().

If you have a task that calls another task that calls another task and so on… and an exception is thrown, you end up with an AggregateException that contains an AggregateException that contains an AggregateException and so on… . If you want to unwrap the real exceptions and get rid of all the intermediate AggregateExceptions, you can use the Flatten method on the top most AggregateException.

An example:

var task = Task.Factory.StartNew(
() =>
{
Task.Factory.StartNew(
() => { throw new Exception("inner"); },
TaskCreationOptions.AttachedToParent);

throw new Exception("outer");
});


If you Wait() on the created task, it will throw an AggregateException, that looks like this:




  • AggregateException


    • Exception: outer


    • AggregateException


      • Exception: inner







Thanks to the Flatten method, the structure is simplified to:




  • AggregateException



    • Exception: outer



      • Exception: inner



Monday, May 18, 2015

Team Foundation Server: How to migrate TFS Version Control project by project

One of the customers I work for is making the move to Team Foundation Server. For the project I’m working on, we used a temporal TFS project hosted at my employer(Ordina). Unfortunately there wasn’t an easy migration path to move the source code from the Ordina TFS to the TFS at the customer location. Why? Because we are using SQL Server 2014 and the customer has standardized on SQL Server 2012. And this is an unsupported migration path.

Luckily, I found a workaround to not lose any history. In short, what I do is export all the source code in TFS Version Control(TFVC) from my company’s TFS to a Git Repo. Afterwards I import the code from Git  into the TFSVC from the customer.

Interested in the specific steps? Here are all the details:

Prerequisites

I used a combination of 2 tools that support integration between TFS and Git. (Why 2 tools? Because I had some issues when I tried to accomplish the process with only one of the tools.)

Export the code from TFSVC into Git using Git-TFS

  • Download and install the Git-TFS binary
  • Add the git-tfs folder path to your PATH environment variable
  • Open a command prompt
  • Check which branches are available for cloning
  • Clone the full repository or a specific branch(note that this can take a while…)
  • After the clone operation has completed, you have the full TFS history available in a local git repo

Import the code from Git into TFSVC using Git-TF

  • Let’s now switch to the Git-TF tool. Download and install it from the Microsoft Download site.
  • Add the Git-TF installation path to your PATH environment variable
  • Open a command prompt
  • Browse to the location where you have the local git repo created
  • Configure git-tf to link to the target tfs repo
  • Do a check-in of the Git repo in TFS
    • git-tf checkin --deep --verbose