<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Writing on Carolyn Van Slyck</title>
    <link>https://carolynvanslyck.com/blog/</link>
    <description>Recent content in Writing on Carolyn Van Slyck</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 23 Jul 2022 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://carolynvanslyck.com/blog/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Magefiles: Stop on first error</title>
      <link>https://carolynvanslyck.com/blog/2022/07/magefiles-stop-on-first-error/</link>
      <pubDate>Sat, 23 Jul 2022 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2022/07/magefiles-stop-on-first-error/</guid>
      <description>magefile.org  Using Mage to write build scripts in Go is great, but one area where Go is pretty different from Bash is error handling. When I write scripts, I near compulsively add set -euo pipefail to the top so that when an error occurs, the script stops executing immediately. In Make, stopping immediately after a non-zero exit code is the default behavior. So how do you make Mage stop executing when an error occurs?</description>
    </item>
    
    <item>
      <title>Add Issues and Pull Requests to a GitHub Project</title>
      <link>https://carolynvanslyck.com/blog/2022/02/add-to-github-project/</link>
      <pubDate>Sun, 20 Feb 2022 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2022/02/add-to-github-project/</guid>
      <description>Automating GitHub with Octocat  Do you want to add all new issues and pull requests to a GitHub project board? Adding them manually to the board inevitably results in missed issues and a stale, less-than-helpful board. Learn how to use the assign-one-project GitHub action to automate adding issues and pull requests to your board.
How it works The action works by:
 Responding to events such as a new issue or pull request being created, or labels added.</description>
    </item>
    
    <item>
      <title>New Project, New You: Joining an open-source project</title>
      <link>https://carolynvanslyck.com/blog/2021/10/new-project-new-you/</link>
      <pubDate>Sun, 10 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2021/10/new-project-new-you/</guid>
      <description>My Little Ponies: Once upon a zeppelin   This is part three in the series Open Source: The Nice and Accurate Advice of Carolyn Van Slyck
 Do you feel that excitement? Like when you open a new notebook at the beginning of the school year, and before you put your pen to the page, you think &amp;ldquo;This time everything is going to be different&amp;rdquo;. Or I may just have weird associations with school supplies&amp;hellip; 🤷‍♀️ But never mind that now, let&amp;rsquo;s talk about being a new contributor!</description>
    </item>
    
    <item>
      <title>Why would you contribute to open source?</title>
      <link>https://carolynvanslyck.com/blog/2021/08/open-source-curious/</link>
      <pubDate>Sun, 08 Aug 2021 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2021/08/open-source-curious/</guid>
      <description>but y tho?   This is part two in the series Open Source: The Nice and Accurate Advice of Carolyn Van Slyck
 It feels like common wisdom lately that obviously you should want to contribute to open source. But it isn&amp;rsquo;t always clear why! It is unpaid work, so what do you get out of it? These are all going to seem like selfish reasons to get into open source.</description>
    </item>
    
    <item>
      <title>Open Source: The Nice and Accurate Advice of Carolyn Van Slyck</title>
      <link>https://carolynvanslyck.com/blog/2021/08/open-source-journey/</link>
      <pubDate>Fri, 06 Aug 2021 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2021/08/open-source-journey/</guid>
      <description>Hi, my name is Carolyn Van Slyck and Microsoft pays me to write open-source software. 👋 This sounds super cool and maybe you are wondering how you too can trick a multi-national corporation into paying you to work in open source too.
From the outside you don&amp;rsquo;t often get a clear view of what it is really like to actually do open source. You see people tweeting memes about geese and KEPs, having fun and somehow software gets shipped.</description>
    </item>
    
    <item>
      <title>Mage is My Favorite Make</title>
      <link>https://carolynvanslyck.com/blog/2021/01/mage-is-my-favorite-make/</link>
      <pubDate>Sat, 23 Jan 2021 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2021/01/mage-is-my-favorite-make/</guid>
      <description>magefile.org  I am fangirling over a build tool, Mage, and need to tell everyone why. Mage is very similar to make, only you write Go instead of bash. To the end user it has the same user experience, mage build instead of make build, so it&amp;rsquo;s an easy switch for your fingers. It behaves the same as well, handling targets, prerequisites, file modification timestamps in the same way so there aren&amp;rsquo;t many surprises to be had.</description>
    </item>
    
    <item>
      <title>git wip: What the heck was I just doing?</title>
      <link>https://carolynvanslyck.com/blog/2020/12/git-wip/</link>
      <pubDate>Wed, 02 Dec 2020 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2020/12/git-wip/</guid>
      <description>Have you ever run git branch and still wasn&amp;rsquo;t sure what each one is for and if it&amp;rsquo;s recent? Here&amp;rsquo;s a git alias, git wip, that displays your branches and when you last changed them. It&amp;rsquo;s really useful for remembering which one you were just working on, and which branches probably should be deleted.
Edit your ~/.gitconfig file (or create one if you don&amp;rsquo;t have it) and add the following lines.</description>
    </item>
    
    <item>
      <title>Sting of the Viper: Getting Cobra and Viper to work together</title>
      <link>https://carolynvanslyck.com/blog/2020/08/sting-of-the-viper/</link>
      <pubDate>Sat, 08 Aug 2020 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2020/08/sting-of-the-viper/</guid>
      <description>Cobra and Viper, two great libraries for working with command-line tools in Go that were never meant to work together. The sting of the viper 🐍. After lots of time reading their source code and a bit of plumbing code, I have been happily forcing these two sneks to get along for years.
Let&amp;rsquo;s start off with what each library is good at:
 spf13/cobra: Generates command-line tools, including flags spf13/viper: Manages configuration, understands how to read it from config files and environment variables  What most of us really want is a combination of these two libraries.</description>
    </item>
    
    <item>
      <title>Mega Release of Doom - Porter</title>
      <link>https://carolynvanslyck.com/blog/2019/04/release-of-doom/</link>
      <pubDate>Mon, 29 Apr 2019 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2019/04/release-of-doom/</guid>
      <description>This is part of a miniseries explaining what I am working on lately: Porter which is based on the Cloud Native Application Bundle, or CNAB Specification. Start from the beginning
 I just finished the release notes for Porter v0.5 and holy smokes, this is a MEGA RELEASE OF DOOM! 💥
The official release name is v0.5.0-ralpha.1+elderflowerspritz and as part of our release, I&amp;rsquo;ve finally gotten around to documenting how we name our releases.</description>
    </item>
    
    <item>
      <title>Free Glue Code - Porter</title>
      <link>https://carolynvanslyck.com/blog/2019/04/porter/</link>
      <pubDate>Sun, 28 Apr 2019 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2019/04/porter/</guid>
      <description>This is part of a miniseries explaining what I am working on lately: Porter which is based on the Cloud Native Application Bundle, or CNAB Specification. Start from the beginning
 Clouds kinda suck. Don&amp;rsquo;t get me wrong. I like them because I don&amp;rsquo;t have to beg someone in IT to provision a database, load balancer, static IP or virtual machine. However the complexity and knowledge required to deploy software has really increased over the years and clouds have had a bit to do with it.</description>
    </item>
    
    <item>
      <title>Nerd Sniped - Porter</title>
      <link>https://carolynvanslyck.com/blog/2019/04/nerd-snipe/</link>
      <pubDate>Sat, 27 Apr 2019 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2019/04/nerd-snipe/</guid>
      <description>xkcd.com/356   I just finished the release notes for Porter v0.5 and holy smokes, this is a MEGA RELEASE OF DOOM! 💥
Err&amp;hellip; let me back up a bit. Most of you have no idea what Porter is and are wondering &amp;ldquo;I thought Carolyn worked on Go stuff, dep? Maybe Kubernetes?&amp;rdquo; Not so much lately. You see I got nerd sniped hard this fall.
I was minding my own business, wait scratch that, y&amp;rsquo;all know that isn&amp;rsquo;t true.</description>
    </item>
    
    <item>
      <title>Publish Helm Charts to Azure Storage</title>
      <link>https://carolynvanslyck.com/blog/2019/03/publish-helm-charts-to-azure/</link>
      <pubDate>Sat, 02 Mar 2019 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2019/03/publish-helm-charts-to-azure/</guid>
      <description>I&amp;rsquo;d like to share my magic script, passed down from repo to repo, for publishing Helm charts to Azure storage during a CI build. I&amp;rsquo;ve used this most recently for the Athens project, but it has made an appearance with Minibroker, and nearly everything I&amp;rsquo;ve worked on with a Helm chart lately.
Just last night I was seriously considering rolling it into my tiny azure cli so that it didn&amp;rsquo;t need to be a script at all.</description>
    </item>
    
    <item>
      <title>Role Models Are Totes Awkward</title>
      <link>https://carolynvanslyck.com/blog/2019/02/role-models/</link>
      <pubDate>Sun, 17 Feb 2019 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2019/02/role-models/</guid>
      <description>Last week I wrote down on Michelle Noorali&amp;rsquo;s very official peer review feedback that is recorded for all time in the Microsoft&amp;rsquo;s HR system
 OMG, I get to work on the same team as my role model!
 Ahem. Like an adult. Because I&amp;rsquo;m an adult.
This is one of the most amazing things about my life right now. I get to not only meet so many of my role models but I get to move beyond that awkward first introduction where I realize in real time that I really don&amp;rsquo;t know them at all beyond the very one-sided view from social media.</description>
    </item>
    
    <item>
      <title>Submit a Talk to GopherCon!</title>
      <link>https://carolynvanslyck.com/blog/2018/12/talk-at-gophercon/</link>
      <pubDate>Sun, 30 Dec 2018 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2018/12/talk-at-gophercon/</guid>
      <description>I don&#39;t surf, but I can babble about Go!   I want to encourage you to submit a talk to GopherCon. You. Yes you, hiding behind the potted plant. If you are afraid of public speaking, I am not the type of person to convince you otherwise. But if what&amp;rsquo;s holding you back is worry that you are not an expert, or that you don&amp;rsquo;t know what to talk about, or how to get your talk accepted, I would like to help.</description>
    </item>
    
    <item>
      <title>Building Go from Source</title>
      <link>https://carolynvanslyck.com/blog/2018/07/building-go-from-source/</link>
      <pubDate>Mon, 16 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2018/07/building-go-from-source/</guid>
      <description>Gophers At Work    This is a part of a larger effort that I&amp;rsquo;m calling GopherSource, and our goal is for more of the gopher community to become upstream Go contributors.
 Before we can become Go contributors, the very first step is being able to build Go from source. I followed the official doc and filled in the blanks a bit to figure out how to get everything working.</description>
    </item>
    
    <item>
      <title>Interview Brain Dump</title>
      <link>https://carolynvanslyck.com/blog/2018/06/interview-brain-dump/</link>
      <pubDate>Sun, 24 Jun 2018 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2018/06/interview-brain-dump/</guid>
      <description>My Interview Technique   Last year I spent a silly amount of time interviewing for remote senior Go developer positions working on upstream Kubernetes. I&amp;rsquo;m not sure if I landed my current position on the Azure Containers team at Microsoft because of my interviewing skills. In fact it may have more to do with my cluster decorating to be quite honest, but I&amp;rsquo;m not so cool that I won&amp;rsquo;t take all help that I can get!</description>
    </item>
    
    <item>
      <title>Adventures in Gopher Source</title>
      <link>https://carolynvanslyck.com/blog/2018/06/gopher-source-adventures/</link>
      <pubDate>Tue, 19 Jun 2018 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2018/06/gopher-source-adventures/</guid>
      <description>I work in OSS because I enjoy collaborating with people. I&amp;rsquo;ve made friendships across the globe that are stronger than the ties of whoever our current corporate overlords may be. I&amp;rsquo;m also a huge UX nerd, and have been known to go &amp;ldquo;Full Lorax&amp;rdquo; to give voice to my users, my peoples.
 Come @ me   Things have been a bit tense in the gopher-sphere lately. There&amp;rsquo;s a lack of trust, hurt feelings, and a general sense that we don&amp;rsquo;t have control over Go&amp;rsquo;s direction.</description>
    </item>
    
    <item>
      <title>I Did a Thing - My Little Cluster</title>
      <link>https://carolynvanslyck.com/blog/2017/10/i-did-a-thing/</link>
      <pubDate>Sun, 22 Oct 2017 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2017/10/i-did-a-thing/</guid>
      <description>This is a part of the story of how I went from chipping away at archiving my movie collection one DVD at at time to running a bare-metal Kubernetes cluster capable of transcoding dozens a day.
Start from the beginning
 So I haven&amp;rsquo;t been completely honest with you. I left some parts out of my story. This isn&amp;rsquo;t just about video transcoding, Kubernetes, or rainbow-colored ponies.
In March, after a rousing breakfast at the local pancake house, I realized what I really wanted to do next in my career: I wanted to work with Go, interact with the community, and contribute to upstream Kubernetes&amp;hellip; for my day job.</description>
    </item>
    
    <item>
      <title>My Overkill - My Little Cluster</title>
      <link>https://carolynvanslyck.com/blog/2017/10/my-overkill/</link>
      <pubDate>Sat, 21 Oct 2017 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2017/10/my-overkill/</guid>
      <description>This is a part of the story of how I went from chipping away at archiving my movie collection one DVD at at time to running a bare-metal Kubernetes cluster capable of transcoding dozens a day.
Start from the beginning
 Now to some of you, this all may seem like overkill but believe me, it wasn&amp;rsquo;t. If I had stopped sooner, half-assing it until things mostly worked, what happened next would have been a disaster.</description>
    </item>
    
    <item>
      <title>It&#39;s Go Time! - My Little Cluster</title>
      <link>https://carolynvanslyck.com/blog/2017/10/its-go-time/</link>
      <pubDate>Fri, 20 Oct 2017 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2017/10/its-go-time/</guid>
      <description>This is a part of the story of how I went from chipping away at archiving my movie collection one DVD at at time to running a bare-metal Kubernetes cluster capable of transcoding dozens a day.
Start from the beginning
 At this point even though everything was running in Docker containers on a Kubernetes cluster, it wasn&amp;rsquo;t really all that resilient. When things went sideways it was up to me to restore state and get back on the happy path: identify which video had failed mid-transcode, move the files back into the watch directory, etc.</description>
    </item>
    
    <item>
      <title>All the Pretty Little Ponies - My Little Cluster</title>
      <link>https://carolynvanslyck.com/blog/2017/10/all-the-pretty-little-ponies/</link>
      <pubDate>Thu, 19 Oct 2017 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2017/10/all-the-pretty-little-ponies/</guid>
      <description>This is a part of the story of how I went from chipping away at archiving my movie collection one DVD at at time to running a bare-metal Kubernetes cluster capable of transcoding dozens a day.
Start from the beginning
 Now that I had a working HandBrake container capable of running in parallel, obviously the next step was to buy a proper cluster of computers, right? 😇 After much researching, I settled on a configuration and bought five beefy computers in a mini-computer form factor.</description>
    </item>
    
    <item>
      <title>Docker or GTFO - My Little Cluster</title>
      <link>https://carolynvanslyck.com/blog/2017/10/docker-or-gtfo/</link>
      <pubDate>Wed, 18 Oct 2017 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2017/10/docker-or-gtfo/</guid>
      <description>This is a part of the story of how I went from chipping away at archiving my movie collection one DVD at at time to running a bare-metal Kubernetes cluster capable of transcoding dozens a day.
Start from the beginning
 At this point, I knew what needed to happen in order to go from a physical disc to watching the movie on Plex. However, I only knew how to do it by hand.</description>
    </item>
    
    <item>
      <title>DIY Netflix - My Little Cluster</title>
      <link>https://carolynvanslyck.com/blog/2017/10/diy-netflix/</link>
      <pubDate>Tue, 17 Oct 2017 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2017/10/diy-netflix/</guid>
      <description>This is part of the story of how I went from chipping away at archiving my movie collection one DVD at at time to running a bare-metal Kubernetes cluster capable of transcoding dozens a day.
Start from the beginning
 Putting together your own Netflix at home takes a bit of cobbling together. Here are all the pieces:
Storage Space A compressed standard definition video takes up about 2GB of space, and a high definition video anywhere from 5-15GB.</description>
    </item>
    
    <item>
      <title>My Little Cluster Story</title>
      <link>https://carolynvanslyck.com/blog/2017/10/my-little-cluster/</link>
      <pubDate>Mon, 16 Oct 2017 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2017/10/my-little-cluster/</guid>
      <description>If there is anything more satisfying then putting a computer to good use, it would be doing so with a cluster of computers.
 This is the story of how I went from chipping away at archiving my movie collection one DVD at at time to running a bare-metal Kubernetes cluster capable of transcoding dozens a day.
One night a few months back, my husband decided to stream a movie on Netflix, something that we already owned on DVD because getting off the couch to put the DVD in the player is hard.</description>
    </item>
    
    <item>
      <title>How to get going with Go</title>
      <link>https://carolynvanslyck.com/blog/2017/08/how-to-get-going/</link>
      <pubDate>Fri, 18 Aug 2017 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2017/08/how-to-get-going/</guid>
      <description>Gophers by Ashley McNamara   Yesterday I had a great time chatting with GoTimeFM about how to land a job in Go. Often the question of how to get a job in Go boils down to:
 I&amp;rsquo;m not paid to write Go and am struggling to build up relevant experience
 I&amp;rsquo;ve found that anytime you want to learn something on-the-job the safest path is to find areas that aren&amp;rsquo;t directly related to the business and apply it there.</description>
    </item>
    
    <item>
      <title>Set the line endings for all files in a directory</title>
      <link>https://carolynvanslyck.com/blog/2017/02/set-git-eol-entire-directory/</link>
      <pubDate>Tue, 14 Feb 2017 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2017/02/set-git-eol-entire-directory/</guid>
      <description>The Git for Windows installer often leads people to turn on AutoCRLF, an occasionally useful feature that can also cause a ton of trouble. Luckily, you aren&amp;rsquo;t at the mercy of whatever settings a developer may have when contributing to your project. You can force git to do things your way by adding a .gitattributes file to your repository.
This all started when Windows users with AutoCRLF enabled ran the test suite, tests would fail because the files containing expected values were helpfully modified by AutoCRLF to use CRLF instead of LF.</description>
    </item>
    
    <item>
      <title>Use Docker optimized Jupyter Stacks with JupyterHub</title>
      <link>https://carolynvanslyck.com/blog/2016/03/use-jupyter-stacks-with-docker/</link>
      <pubDate>Wed, 16 Mar 2016 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2016/03/use-jupyter-stacks-with-docker/</guid>
      <description>Jupyter is a crazy awesome. Head over to tmpnb.org to try it out. waits Have fun playing with Python? Or did you maybe learn yourself a Haskell for great good? Hopefully it&amp;rsquo;s obvious that Jupyter is not only a cool concept, but a pretty damn powerful one too.
I&amp;rsquo;ve been digging into JupyterHub lately, specifically toying with running it on Carina because I like to Docker ALL THE THINGS! By pairing them up, when a user logs into the Jupyter hub, a Carina cluster is created on-the-fly to run that user&amp;rsquo;s personal Jupyter server.</description>
    </item>
    
    <item>
      <title>Getting started with ASP.NET on Carina with Visual Studio</title>
      <link>https://carolynvanslyck.com/blog/2016/02/aspnet-on-carina-with-visual-studio/</link>
      <pubDate>Fri, 12 Feb 2016 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2016/02/aspnet-on-carina-with-visual-studio/</guid>
      <description>Learn how to publish an ASP.NET website to Carina with Visual Studio. Deploying to Docker containers is just a wizard away!</description>
    </item>
    
    <item>
      <title>Publish an ASP.NET website to Carina from the command line</title>
      <link>https://carolynvanslyck.com/blog/2016/02/aspnet-on-carina/</link>
      <pubDate>Fri, 12 Feb 2016 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2016/02/aspnet-on-carina/</guid>
      <description>Learn how to publish an ASP.NET website to Carina from the command line on Mac OS X, Linux or Windows</description>
    </item>
    
    <item>
      <title>Connect a Carina container to a Rackspace cloud database</title>
      <link>https://carolynvanslyck.com/blog/2016/01/use-mysql-db-with-carina/</link>
      <pubDate>Fri, 15 Jan 2016 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2016/01/use-mysql-db-with-carina/</guid>
      <description>Learn how to connect a Carina container to a Rackspace cloud database and span your infrastructure across both Carina and the Rackspace Cloud</description>
    </item>
    
    <item>
      <title>Install a Linux-like Environment on Your Windows Machine in Minutes</title>
      <link>https://carolynvanslyck.com/blog/2016/01/stealth-lolnix/</link>
      <pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2016/01/stealth-lolnix/</guid>
      <description>Can haz lolnix?  Sometimes it feels like Windows developers are left out of all the fun. The cool new tools and technologies are all written by hipsters on their sexy Macs with the intention of being deployed on unsexy Linux servers off in the cloud. A decade ago, Windows developers didn&amp;rsquo;t care. We had a very nice stack of Microsoft technology and tools that just worked, and we weren&amp;rsquo;t much interested in what the other team was up to.</description>
    </item>
    
    <item>
      <title>Set Up a Proper Windows Terminal</title>
      <link>https://carolynvanslyck.com/blog/2016/01/a-proper-windows-terminal/</link>
      <pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2016/01/a-proper-windows-terminal/</guid>
      <description>I don&amp;rsquo;t know how to put this politely but the command-line experience on Windows sucks*. If you are using the default terminal in Windows, whether with CMD, PowerShell or Bash, you may not realize just how much better it could be. In this tutorial, you will setup an alternative terminal that supports fun stuff: window resizing, tabs, intuitive copy/paste and pretty colors.
* Yes, I am aware that the terminal in Windows 10 has a lot of improvements.</description>
    </item>
    
    <item>
      <title>Manage Docker clients with the Docker Version Manager</title>
      <link>https://carolynvanslyck.com/blog/2015/11/docker-version-manager/</link>
      <pubDate>Mon, 09 Nov 2015 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2015/11/docker-version-manager/</guid>
      <description>Learn how to juggle multiple Docker client versions with the Docker Version Manager (dvm)</description>
    </item>
    
    <item>
      <title>Preview a Jekyll site with Docker</title>
      <link>https://carolynvanslyck.com/blog/2015/09/preview-jekyll-with-docker/</link>
      <pubDate>Thu, 24 Sep 2015 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2015/09/preview-jekyll-with-docker/</guid>
      <description>Learn how to preview a Jekyll site in a Docker container, so that there is no need to install Ruby or Jekyll on your local machine.
 Windows tutorial Mac OS X tutorial Linux tutorial  </description>
    </item>
    
    <item>
      <title>DevOps Days Chicago 2015</title>
      <link>https://carolynvanslyck.com/blog/2015/08/devops-days-chicago-2015/</link>
      <pubDate>Thu, 27 Aug 2015 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2015/08/devops-days-chicago-2015/</guid>
      <description>I just attended DevOps Days Chicago 2015 and loved it. My usual MO for a conferences is to go with friends and keep to myself. So I was quite surprised that I came away having met dozens of people and bubbling with excitement about the experience.
DevOps Days is a two day event with presentations in the morning, followed by ignite or lightning talks, and then the rest of the day is dedicated to open spaces.</description>
    </item>
    
    <item>
      <title>A Better Force Clean Checkout in Bamboo</title>
      <link>https://carolynvanslyck.com/blog/2015/05/bamboo-force-clean-checkout/</link>
      <pubDate>Thu, 07 May 2015 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2015/05/bamboo-force-clean-checkout/</guid>
      <description>Recently, I was asked for help to alter one of our builds to &amp;ldquo;run dirty&amp;rdquo;. They use npm and were incurring a significant cost by starting with a fresh checkout on every build. By leaving the node_modules diretory around between builds, it would shave 4 minutes off the build time.
While I could have simply unchecked &amp;ldquo;Force Clean Checkout&amp;rdquo; on our Source Code Checkout task in Bamboo, that would have made dealing with the occasional need to do a clean build a bit awkward.</description>
    </item>
    
    <item>
      <title>Right Hook!</title>
      <link>https://carolynvanslyck.com/blog/2015/03/right-hook/</link>
      <pubDate>Fri, 27 Mar 2015 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2015/03/right-hook/</guid>
      <description>I was recently invited to join Atlassian Allstars program, which I would love to link to but they don&amp;rsquo;t appear to have a public page so&amp;hellip; oops maybe I wasn&amp;rsquo;t supposed to let anyone know about it. First rule of Atlassian Allstars is you don&amp;rsquo;t talk about Atlassian Allstars! In my ongoing quest to earn enough achievment points to be a part of the Atlassian Justice League Atlassian Customer Advisory panel&amp;hellip; I took on the Stash: Beer-o-Clock challenge.</description>
    </item>
    
    <item>
      <title>GitVersion for Bamboo</title>
      <link>https://carolynvanslyck.com/blog/2015/03/gitversion-for-bamboo/</link>
      <pubDate>Fri, 06 Mar 2015 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2015/03/gitversion-for-bamboo/</guid>
      <description>I have just released a plugin for Atlassian Bamboo which integrates with GitVersion: GitVersion for Bamboo. Check out the link for info on how to install and configure the plugin.
GitVersion is a tool which automates generating unique, semantic versions. It detects your branching pattern and uses your tags to generate a repeatable version number which you can then use to stamp assemblies, version NuGet packages, etc.
What I like about GitVersion is the flexibility it provides.</description>
    </item>
    
    <item>
      <title>KPM Restore Throws AggregateException</title>
      <link>https://carolynvanslyck.com/blog/2015/01/kpm-restore-throws-aggregateexception/</link>
      <pubDate>Fri, 02 Jan 2015 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2015/01/kpm-restore-throws-aggregateexception/</guid>
      <description>While I was migrating a legacy codebase from .NET 4.5 to vNext (.NET 5), I started getting this error when restoring my dependencies via kpm restore or building inside VS 2015.
System.AggregateException: One or more errors occurred. ---&amp;gt; System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.Framework.PackageManager.Restore.NuGet.PackageFeed.&amp;lt;OpenNuspecStreamAsync&amp;gt;d__1.MoveNext()  Turns out there was a trailing space after one of my dependencies, e.g.
{ &amp;quot;dependencies&amp;quot;: { &amp;quot;Microsoft.AspNet.Mvc &amp;quot;: &amp;quot;4.</description>
    </item>
    
    <item>
      <title>Upgrade to .NET vNext</title>
      <link>https://carolynvanslyck.com/blog/2015/01/upgrade-to-net-vnext/</link>
      <pubDate>Fri, 02 Jan 2015 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2015/01/upgrade-to-net-vnext/</guid>
      <description>While I have read informal comments from the .NET developers that vNext is intended for new development, I really wanted to upgrade BytesForHealth to .NET vNext (.NET 5).
This is just my first step towards migrating, I&#39;m sticking with the .NET Framework and am not making changes to work with .NET Core. Once I get this working, I&#39;ll start refactoring to only use Core packages. Here are some of the steps I took to upgrade:</description>
    </item>
    
    <item>
      <title>First Impression of .NET vNext</title>
      <link>https://carolynvanslyck.com/blog/2014/09/dotnet-vnext-impressions/</link>
      <pubDate>Thu, 11 Sep 2014 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2014/09/dotnet-vnext-impressions/</guid>
      <description>When ASP.NET vNext was first announced, I was scratching my head over how it would impact developing .NET in non-Windows environments. There was a lot of hype, snippets of info coming from multiple sources, and nothing I could try out for myself. Well now that the Visual Studio 2014 CTP is out, I finally can!
If you have an Azure account, I recommend using their Visual Studio 2014 VM image to test things out without wreaking havoc on your day-to-day machine.</description>
    </item>
    
    <item>
      <title>Create an Atlassian Plugin</title>
      <link>https://carolynvanslyck.com/blog/2014/08/atlassian-plugin-getting-started/</link>
      <pubDate>Thu, 07 Aug 2014 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2014/08/atlassian-plugin-getting-started/</guid>
      <description>I am a big fan of continuous integration, testing and improving the development experience. Using Atlassian Stash and Bamboo every day has given me lots of ideas for making them better. Thanks to Atlassian&amp;rsquo;s great SDK, and the ability to view the core application&amp;rsquo;s source code as a reference, developing plugins is very straightforward. My first plugin, was completed and deployed to the marketplace in just a single weekend and after that &amp;hellip; I was hooked.</description>
    </item>
    
    <item>
      <title>Migrating a large codebase to Git with Atlassian Stash</title>
      <link>https://carolynvanslyck.com/blog/2014/02/migrating-from-svn-to-git/</link>
      <pubDate>Thu, 13 Feb 2014 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2014/02/migrating-from-svn-to-git/</guid>
      <description>This was originally a guest blog post on atlassian.com.
Redefining what is possible I work at a large software company which is heavily invested in Subversion. In my division alone, we have 3 repositories, each with 100+ projects. I don&amp;rsquo;t even know how many repositories and projects we have across the company but it is enough that we have an entire team dedicated to managing our source control, CI and build infrastructure.</description>
    </item>
    
    <item>
      <title>Setting up Jenkins on Windows Azure</title>
      <link>https://carolynvanslyck.com/blog/2013/02/setting-up-jenkins-on-azure/</link>
      <pubDate>Sat, 02 Feb 2013 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2013/02/setting-up-jenkins-on-azure/</guid>
      <description>I have used a few different continuous integration (ci) servers before and really like Jenkins. So when running my suite of unit and integration tests started taking more than a minute, it was time for a ci server, specifically Jenkins. Originally I installed Jenkins on my dev machine but it required annoying config tweaks to not interfere with my existing IIS configuration and really needed a home of its own. Since I have been happily hosting my website on Windows Azure and an extra-small node is only $9/month.</description>
    </item>
    
    <item>
      <title>Using both HTTP and HTTPS in ASP.NET MVC</title>
      <link>https://carolynvanslyck.com/blog/2013/01/mixing-http-https-in-mvc/</link>
      <pubDate>Thu, 17 Jan 2013 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2013/01/mixing-http-https-in-mvc/</guid>
      <description>I recently added a secured payment page to my MVC site using the RequireHttps attribute and quickly noticed that once the user went to the page, all other pages were now being served up via https as well. I prefer to only use https when necessary and wanted the user to be redirected back to http for any pages that didn&#39;t require https.
Below is the code for my RequireHttp attribute.</description>
    </item>
    
    <item>
      <title>Unit testing your ASP.NET Web API routes</title>
      <link>https://carolynvanslyck.com/blog/2013/01/webapi-route-testing/</link>
      <pubDate>Sun, 06 Jan 2013 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2013/01/webapi-route-testing/</guid>
      <description>When your API is purely RESTful, your routes are pretty simple and there isn&#39;t much need to test. But if you are like me and decided to mix RPC and RESTful style methods on the same controller, then some tests are in order.
I had been using the RouteTestingExtensions from MvcContrib to test my MVC routes. It allows you to assert that a URL was routed to the expected controller and action.</description>
    </item>
    
    <item>
      <title>Mixing REST and RPC style methods on an ASP.NET Web API Controller</title>
      <link>https://carolynvanslyck.com/blog/2013/01/webapi-mixed-rest-rpc-routing/</link>
      <pubDate>Thu, 03 Jan 2013 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2013/01/webapi-mixed-rest-rpc-routing/</guid>
      <description>I wanted to have an API controller that had the normal RESTful actions (Get/Put/Post/Delete) and also some RPC style actions. This used to work in the MVC 4 Beta but now in RTM I would get the following error &#34;Multiple actions were found that match the request: Get() on type CarController and Blue() on type CarController&#34;.
While I can understand that Microsoft is trying to encourage RESTful web services, it doesn&#39;t seem too farfetched to want simple filter methods on top of a normally RESTful controller.</description>
    </item>
    
    <item>
      <title>Knockout Observables</title>
      <link>https://carolynvanslyck.com/blog/2012/12/knockout-observables/</link>
      <pubDate>Tue, 11 Dec 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/12/knockout-observables/</guid>
      <description>I sometimes run into a bug where can&#39;t figure out why Knockout is changing the value of my variables. After digging around, it always is caused by me passing an object in the constructor when newing up an observable or changing its value. When setting the value of an observable or observableArray, remember that if you pass it an array, date or object, when your observable is changed, the value of your variable will also be changed.</description>
    </item>
    
    <item>
      <title>Using Generic Methods in Entity Framework Queries</title>
      <link>https://carolynvanslyck.com/blog/2012/12/entity-framework-generic-methods/</link>
      <pubDate>Mon, 10 Dec 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/12/entity-framework-generic-methods/</guid>
      <description>Many of my models have a common property that I wanted to use in Entity Framework queries. After creating a generic method to encapsulate the filter logic, everything compiled but at runtime I ran into the following error:
Unable to cast the type &#39;FooBar&#39; to type &#39;IFooBar&#39;. LINQ to Entities only supports casting EDM primitive or enumeration types. Thanks to this StackOverflow post, I found the solution. When specifying the constraints on your generic parameter, include &#34;</description>
    </item>
    
    <item>
      <title>Unit Testing ASP.NET MVC Bundles</title>
      <link>https://carolynvanslyck.com/blog/2012/10/unit-testing-mvc-bundles/</link>
      <pubDate>Fri, 26 Oct 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/10/unit-testing-mvc-bundles/</guid>
      <description>In order to unit test your bundles you must assign BundleTable.MapPathMethod to a function which mocks mapping from the bundle item&#39;s virtual path to the physical path of the file. I created a simple method (see MapBundleItemPath below) that uses a hard-coded string to find the root physical path of the MVC project. If your tests are run on multiple environments, you should replace the implementation to dynamically discover the project&#39;s path.</description>
    </item>
    
    <item>
      <title>How to get compile-time checking of ASP.NET MVC views</title>
      <link>https://carolynvanslyck.com/blog/2012/09/compile-time-support-for-mvc-views/</link>
      <pubDate>Fri, 07 Sep 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/09/compile-time-support-for-mvc-views/</guid>
      <description>The Backstory  When I first got started with ASP.NET MVC, I immediately noticed that my views were not checked for errors at compile time. The thought of random runtime errors in my views was unacceptable! A bit of searching turned up the BuildMvcViews project flag. Simply unload your MVC project, open the csproj file and switch BuildMvcViews to true. Reload your project and now you views will have a test compilation performed during each build.</description>
    </item>
    
    <item>
      <title>When should I implement GetHashCode, Equals, IEquatable and IComparable?</title>
      <link>https://carolynvanslyck.com/blog/2012/09/when-to-implement-equality/</link>
      <pubDate>Tue, 04 Sep 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/09/when-to-implement-equality/</guid>
      <description>GetHashCode and Equals I am implementing another equality or comparison interface, I want LINQ set operations to work (e.g. Union, Intersect, Except) or will be using Object.Equals. When I implement anything equality related, this is the first task. I always override GetHashCode and Equals together, never just one or the other.
 Equality Operators I am using the equals (==) or not equals (!=) operators on my objects and I want to compare equality, not references.</description>
    </item>
    
    <item>
      <title>Working with DateTime in ASP.NET Web API</title>
      <link>https://carolynvanslyck.com/blog/2012/08/webapi-datetime/</link>
      <pubDate>Mon, 13 Aug 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/08/webapi-datetime/</guid>
      <description>I was writing a website that tracked and displayed timestamps, and I only cared about what the time was on the client&#39;s machine. The server or database time was irrelevant. This seemed easy, just generate the timestamps on the client and I was all set, right? Wrong!
Client: JavaScript I was first convinced by old StackOverflow answers to use a Date utility instead of the built in Date constructor in JavaScript.</description>
    </item>
    
    <item>
      <title>Intellitrace, New Relic and Windows Azure</title>
      <link>https://carolynvanslyck.com/blog/2012/08/intellitrace-newrelic-azure-performance/</link>
      <pubDate>Wed, 01 Aug 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/08/intellitrace-newrelic-azure-performance/</guid>
      <description>I recently discovered Intellitrace and think it&amp;rsquo;s the bee&amp;rsquo;s knees. It was especially helpful debugging issues on Windows Azure. Since I couldn&amp;rsquo;t attach a debugger to my site, and it was working fine on my development machine, being able to view errors and other information (that Elmah wasn&amp;rsquo;t pickup up) seemed like a huge win. So I decided to leave Intellitrace enabled on my web role and moved on with my life.</description>
    </item>
    
    <item>
      <title>How do I make Google Analytics ignore my traffic?</title>
      <link>https://carolynvanslyck.com/blog/2012/02/google-analytics-ignore-your-traffic/</link>
      <pubDate>Sun, 26 Feb 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/02/google-analytics-ignore-your-traffic/</guid>
      <description>Originally I tried having Google ignore my IP address but since it does change from time to time and I also enjoy checking my site at work too&amp;hellip; I needed something more robust. When you only get a handful of visitors a week, it is important to not have your own traffic skewing the reports!
After setting up your special page and tweaking your Google Analytics settings, whenever you want to view your website, go first to this special web page and then all of your traffic will be excluded from your reports.</description>
    </item>
    
    <item>
      <title>Installing Windows 7 on a MacBook Air</title>
      <link>https://carolynvanslyck.com/blog/2012/02/windows7-macbook-air/</link>
      <pubDate>Sun, 26 Feb 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/02/windows7-macbook-air/</guid>
      <description>&#34;No bootable device -- insert boot disk and press an key&#34;
The most important thing to realize when installing Windows on a Mac via USB is that not all USB sticks are bootable. The error message you see will be the same whether you screwed up setting up the files on the drive or the USB thumb drive is simply flaky, cheap and doesn&#39;t support booting. So if you run into this message, try another stick first!</description>
    </item>
    
    <item>
      <title>Why is my web page is too wide in a mobile phone browser?</title>
      <link>https://carolynvanslyck.com/blog/2012/02/page-too-wide-on-mobile-browser/</link>
      <pubDate>Sun, 26 Feb 2012 00:00:00 +0000</pubDate>
      
      <guid>https://carolynvanslyck.com/blog/2012/02/page-too-wide-on-mobile-browser/</guid>
      <description>I don&amp;rsquo;t know why the scrollbars don&amp;rsquo;t show up in any other browser but in a mobile browser the phone zooms out much too far by default. However you can easily fix it by adding the following tag to your page header.
&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0;&amp;quot; /&amp;gt;  Here is a full sample:
&amp;lt;!DOCTYPE HTML&amp;gt; &amp;lt;html&amp;gt; &amp;lt;head&amp;gt; &amp;lt;title&amp;gt;I love titles!&amp;lt;/title&amp;gt; &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0;&amp;quot; /&amp;gt; &amp;lt;/head&amp;gt; &amp;lt;body&amp;gt; ... &amp;lt;/body&amp;gt; &amp;lt;/html&amp;gt;  </description>
    </item>
    
  </channel>
</rss>