Why Watch Coders Stream Live

I began hearing about  live code streams a year or so ago on LiveEdu.TV and saw a livestream with Jeff Fritz at DevIntersection, but I decided to become a regular on a stream DevChatter a few months ago to really see how it could improve my own code.

Build a Community

I specifically joined the DevChatter stream because they had a Discord chat.  I wasn’t familiar with Discord, but I’ve spent time on IRC.  I was expecting 3 months of ignoring, bad advice, trolling to make me go away, you know – the standard IRC vetting experience.  DevChatter’s Discord was actually VERY welcoming!

I like that they have a General chat but also VERY specific chats, like #azure, #dotnet, #php  and..  #rants.

Regular dev’s go onto Discord asking for random code help, spit ideas off each other or just to rant about the problem of the day:  the bug that wouldn’t go away, the pains of working with legacy, the random programming problem that won’t leave your mind…

Every portion of that Discord chat lends you a bit of insight into this person.  You figure out what timezone they are in, what languages and systems they work with.  You …

Print PDF’s on Azure Using an API and RazorLight (Update 1)

The API mentioned in my first tutorial got taken down and so I had to do some updates.  First, choose another 3rd party API.  I currently am trying out  HTML 2 PDF Rocket and modified my code a bit:

public async Task<FileStreamResult> PrintAsync(int id)
    InvoiceVM invoiceVM = new InvoiceVM();
    invoiceVM = invoiceRepository.Get(id);

    var engine = new RazorLightEngineBuilder()
      .UseFilesystemProject(_hostingEnvironment.WebRootPath + "\\pdf\\")

    var view = await engine.CompileRenderAsync("PDF.cshtml", invoiceVM);
    string apiKey = "xxxxxxxxxxxxxxxxxxxx";

    using (var client = new WebClient())
        // Build the conversion options
        NameValueCollection options = new NameValueCollection();
        options.Add("apikey", apiKey);
        options.Add("value", view);
        options.Add("MarginLeft", "10");
        options.Add("MarginRight", "10");
        options.Add("MarginTop", "10");
        options.Add("MarginBottom", "10");
        options.Add("PageSize", "Letter");

        MemoryStream ms = new MemoryStream(client.UploadValues("http://api.html2pdfrocket.com/pdf", options));

        return new FileStreamResult(ms, "application/pdf");

This is based directly off the HTML 2 Rocket documentation.  For the rest of the code see the first tutorial.


Using Libman Providers to Coral Front End Libraries

The first package management system I learned to use was Bower.  It was great for the short love affair we had together, but it stopped being supported and I was weary of learning to use one of its replacements.  Fortunately, I haven’t had to with Libman.  Libman’s (Library Manager) simple JSON approach to bringing front end dependencies has been the easiest for me quickly implement and it has been a great addition to Visual Studio.  I implemented it possibly too quickly, however, and overlooked one powerful configuration setting:  provider.

.Net Core – Drop Down (Select) Won’t Populate

I had a recent bug that took me much too long to solve and the root of the cause was me. I got a bit too delete happy and deleted a crucial file that allows me to use Razor Tag Helpers to bring a List into a View as a Drop Down (Select).

The Error

Here’s how the error presented itself:

  • SelectList won’t populate
  • Select or DropDown is empty
  • value = Microsoft.AspNetCore.Mvc.Rendering.SelectList or
  • System.Linq.OrderedEnumerable2 [Microsoft.AspNetCore.Mvc.Rendering.SelectListItem, System.String]

Using Microsoft Flow to Sync BaseCamp & VSTS (To-Do to Tasks)

We’ve strugged for years to get various departments to adapt, and stick to, a project management system. In the past year, have finally had some success with BaseCamp, as it has proved to be user-friendly enough that more and more departments began to use it. We suddenly needed to adapt to our users. We needed to make Visual Studio Team Services work with BaseCamp.

Make BaseCamp To-Do a VSTS Task

Creating a solution for BaseCamp to VSTS actually proved to be easy enough. I setup a project in BaseCamp and then a “Main To-Do List”. The only challenge in this is I needed to pass the BaseCamp To-Do Id so that when I closed my VSTS task (work item), it could link back to BaseCamp. For this, I chose to put the dynamic info in the “tags” field of my VSTS flow. Here’s the setup:…