<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Christoph Weigert</title>
    <description>The latest articles on DEV Community by Christoph Weigert (@christophweigert).</description>
    <link>https://dev.to/christophweigert</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F315665%2Fb25a3816-494c-4ae2-b66b-f60f27975a6e.jpg</url>
      <title>DEV Community: Christoph Weigert</title>
      <link>https://dev.to/christophweigert</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/christophweigert"/>
    <language>en</language>
    <item>
      <title>Update the Android SDK for a Visual Studio Build Tools installation</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Mon, 10 Feb 2020 16:30:00 +0000</pubDate>
      <link>https://dev.to/christophweigert/update-the-android-sdk-for-a-visual-studio-build-tools-installation-2pal</link>
      <guid>https://dev.to/christophweigert/update-the-android-sdk-for-a-visual-studio-build-tools-installation-2pal</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8cfM7Zz8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/xamarin-banner.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8cfM7Zz8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/xamarin-banner.png" alt="Update the Android SDK for a Visual Studio Build Tools installation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We recently set the Target Framework Version for our mobile app to SDK Version 29. On two of our three build agents, we had no issues because they were regular Visual Studio instances running on developer machines. But one build agent only had the Visual Studio Build Tools installed without any GUI.&lt;/p&gt;

&lt;p&gt;After some digging in the Visual Studio and Android SDK folder, I couldn't find the AndroidSdkManager.exe that's provided from the regular Visual Studio Installation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uXtjg9HY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uXtjg9HY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/image.png" alt="Update the Android SDK for a Visual Studio Build Tools installation"&gt;&lt;/a&gt;The AndroidSdkManager.exe is not available for Build Tools only installations.&lt;/p&gt;

&lt;p&gt;After searching the Android Developer site, I found an article that explained how to update or install SDKs by the command line:&lt;/p&gt;

&lt;p&gt;[&lt;/p&gt;

&lt;p&gt;sdkmanager | Android Developers&lt;/p&gt;

&lt;p&gt;The sdkmanager is a command line tool that allows you to view, install, update, and uninstall packages for the Android SDK.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7QGLAsfF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.gstatic.com/devrel-devsite/prod/v172e5dffd78b32f4b12f8112b00e940d4993af48229fac5346097b33edb0f543/android/images/touchicon-180.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7QGLAsfF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.gstatic.com/devrel-devsite/prod/v172e5dffd78b32f4b12f8112b00e940d4993af48229fac5346097b33edb0f543/android/images/touchicon-180.png" alt="Update the Android SDK for a Visual Studio Build Tools installation"&gt;&lt;/a&gt;Android Developers&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KgFirQUX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://developer.android.com/images/android-developers.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KgFirQUX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://developer.android.com/images/android-developers.png" alt="Update the Android SDK for a Visual Studio Build Tools installation"&gt;&lt;/a&gt;&lt;br&gt;
](&lt;a href="https://developer.android.com/studio/command-line/sdkmanager"&gt;https://developer.android.com/studio/command-line/sdkmanager&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;On the build agent, the path was&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;C:\Program Files (x86)\Android\android-sdk\tools\bin&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Start a PowerShell Session (Shift+Right-click) and type&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;.\sdkmanager.bat --list&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You will see a list of all installed android tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YT2ernuH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/image-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YT2ernuH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/image-1.png" alt="Update the Android SDK for a Visual Studio Build Tools installation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The last output of the previous command will be available updates.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1__kB4He--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/image-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1__kB4He--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/image-2.png" alt="Update the Android SDK for a Visual Studio Build Tools installation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure to install those by running&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;.\sdkmanager.bat --update&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But be careful, you have to accept the SDK License Agreement.&lt;/p&gt;

&lt;p&gt;Back to our missing build-tools and platform version we have to issue another command&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;.\sdkmanager.bat "build-tools;29.0.3"&lt;br&gt;&lt;br&gt;
.\sdkmanager.bat "platforms;android-29"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jlFSMvli--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/image-4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jlFSMvli--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/02/image-4.png" alt="Update the Android SDK for a Visual Studio Build Tools installation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can trigger a build from your CI pipeline and see if everything is working.&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>visualstudio</category>
    </item>
    <item>
      <title>Fix Visual Studio Mono.AndroidTools.RequiresUninstallException</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Wed, 22 Jan 2020 17:00:00 +0000</pubDate>
      <link>https://dev.to/christophweigert/fix-visual-studio-mono-androidtools-requiresuninstallexception-3mp9</link>
      <guid>https://dev.to/christophweigert/fix-visual-studio-mono-androidtools-requiresuninstallexception-3mp9</guid>
      <description>&lt;p&gt;After upgrading to Visual Studio 16.4 I couldn't deploy an older Xamarin.Forms branch to a Samsung Galaxy Tab S5e. Visual Studio could not deploy the App to the device.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ADB1000: Deployment failed Mono.AndroidTools.RequiresUninstallException: The installed package is incompatible. Please manually uninstall and try again. at Mono.AndroidTools.Internal.AdbOutputParsing.CheckInstallSuccess(String output, String packageName)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After digging around google I found this &lt;a href="https://developercommunity.visualstudio.com/content/problem/854497/xamarinandroid-deployment-failed-monoandroidtoolsr.html"&gt;useful Entry in the Visual Studio Developer Community&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A workaround is available to fix this critical issue:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Tools -&amp;gt; Android -&amp;gt; Android ADB Command Prompt&lt;/li&gt;
&lt;li&gt;Run the uninstall command via adb and pass your APK package name.
adb uninstall com.yourcompanyname.yourappname&lt;/li&gt;
&lt;li&gt;Deploy the app through Visual Studio again. This time it should work.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>visualstudio</category>
      <category>xamarin</category>
      <category>dotnet</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Reuse EDMX files with .NET Core or .NET Standard 2.1</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Mon, 13 Jan 2020 17:00:00 +0000</pubDate>
      <link>https://dev.to/christophweigert/reuse-edmx-files-with-net-core-or-net-standard-2-1-5b05</link>
      <guid>https://dev.to/christophweigert/reuse-edmx-files-with-net-core-or-net-standard-2-1-5b05</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1vIDjsnu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/01/modelinitial.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1vIDjsnu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/01/modelinitial.png" alt="Reuse EDMX files with .NET Core or .NET Standard 2.1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you previously an EDMX file for your database first model generation you are left out for .NET Standard or .NET Core Support. But there is at least a workaround that you can use to target .NET Standard 2.1 or .NET Core Apps with 3.0 or newer.&lt;/p&gt;

&lt;p&gt;You have to create a separate project and link your EDMX, Context and Model files. This solutions works independently of C# or VB.NET. The magic lies in the build action "EntityDeploy" introduced with Entity Framework 6.3. Updating the model needs to be done in the .NET Framework project.&lt;/p&gt;

&lt;p&gt;This is project file I created. Feel free to reuse it but change vb to cs in case you want to use it with a C# model.&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Project Sdk="Microsoft.NET.Sdk"&amp;gt;

  &amp;lt;PropertyGroup&amp;gt;
    &amp;lt;TargetFrameworks&amp;gt;netstandard2.1;net472&amp;lt;/TargetFrameworks&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;

  &amp;lt;ItemGroup&amp;gt;
    &amp;lt;PackageReference Include="EntityFramework" Version="6.4.0" /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;

  &amp;lt;ItemGroup&amp;gt;
    &amp;lt;EntityDeploy Include="..\Test.EntityFramework\YourEdmx.edmx" Link="YourEdmx.edmx" /&amp;gt;
    &amp;lt;Compile Include="..\Test.EntityFramework\YourEdmx.Context.vb" Link="sbEntities.Context.vb" /&amp;gt;
    &amp;lt;Compile Include="..\Test.EntityFramework\Employee.vb" Link="Employee.vb" /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;

&amp;lt;/Project&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If you have many model classes you can use a neat feature or visual studio. Right-click inside your new project and click "Add &amp;gt; existing item"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XpaYDC4r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/01/image-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XpaYDC4r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/01/image-1.png" alt="Reuse EDMX files with .NET Core or .NET Standard 2.1"&gt;&lt;/a&gt;Before manually modifying your project file you can use the "Add As Link" feature from Visual Studio.&lt;/p&gt;

&lt;p&gt;For further reference you can see the &lt;a href="https://docs.microsoft.com/en-us/ef/ef6/what-is-new/#ef-designer-support"&gt;Microsoft Documentation&lt;/a&gt;, &lt;a href="https://github.com/aspnet/EntityFramework.Docs/issues/1748"&gt;GitHub Issue&lt;/a&gt; or the &lt;a href="https://github.com/efcore/EdmxDotNetCoreSample/"&gt;sample repository&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>vbnet</category>
      <category>legacy</category>
    </item>
    <item>
      <title>Move self-hosted Octopus Deploy to Cloud</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Sat, 11 Jan 2020 17:00:00 +0000</pubDate>
      <link>https://dev.to/christophweigert/move-self-hosted-octopus-deploy-to-cloud-4j4n</link>
      <guid>https://dev.to/christophweigert/move-self-hosted-octopus-deploy-to-cloud-4j4n</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JNvbLho5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/01/Octopus_Logo_2Lines.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JNvbLho5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2020/01/Octopus_Logo_2Lines.svg" alt="Move self-hosted Octopus Deploy to Cloud"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After running Octopus Deploy server on our dedicated hardware behind our corporate firewall, we had some limitations with the upload bandwidth, and we wanted to avoid managing the server ourselves. We know that we would have to increase the Tentacles because, in one project, most customers require the software to run on their dedicated hardware. So we decided to migrate to the Octopus Deploy Cloud Version.&lt;/p&gt;

&lt;p&gt;The migration was effortless. Let's start with some statistics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1885 Entries in DeploymentHistory Table&lt;/li&gt;
&lt;li&gt;3 Projects&lt;/li&gt;
&lt;li&gt;40403 Events&lt;/li&gt;
&lt;li&gt;Database Size: ~ 1500 MB&lt;/li&gt;
&lt;li&gt;Folder-size: ~ 9.2 GB&lt;/li&gt;
&lt;li&gt;Deployment Targets: 10 Tentacles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can read the current guidelines for the migration at the &lt;a href="https://octopus.com/docs/octopus-cloud/migrations"&gt;Octopus Deploy documentation&lt;/a&gt;&lt;br&gt;&lt;br&gt;
The process required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backup the Octopus database &lt;/li&gt;
&lt;li&gt;Backup Artifacts, TaskLogs and Packages folder&lt;/li&gt;
&lt;li&gt;Provide the master data key&lt;/li&gt;
&lt;li&gt;Schedule the migration date&lt;/li&gt;
&lt;li&gt;Upload the Backup to a given website&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the migration, you have to reconfigure your tentacles. Polling tentacles have to be updated with the new server address, and listening tentacles will need to be re-registered. However, it seems like a great idea to convert listening tentacles to polling tentacles to avoid having to open ports in your firewall.&lt;/p&gt;

&lt;p&gt;Overall the migration took us less than one business day. We are pretty happy with the result. We had no outage so far, and the Support is super fast in responding to questions.&lt;/p&gt;

</description>
      <category>cicd</category>
    </item>
    <item>
      <title>Deploy it right! Use tools to automate Integration and Delivery</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Sat, 09 Feb 2019 16:56:57 +0000</pubDate>
      <link>https://dev.to/christophweigert/deploy-it-right-use-tools-to-automate-integration-and-delivery-1o17</link>
      <guid>https://dev.to/christophweigert/deploy-it-right-use-tools-to-automate-integration-and-delivery-1o17</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fchristophweigert.com%2Fcontent%2Fimages%2F2019%2F02%2Fdevops-3148393_1280.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fchristophweigert.com%2Fcontent%2Fimages%2F2019%2F02%2Fdevops-3148393_1280.png" alt="Deploy it right! Use tools to automate Integration and Delivery"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How often did you right-click in your solution and hit deploy? How often did your colleagues asked you what they have to do when deploying? &lt;strong&gt;Automate it!&lt;/strong&gt; Simply as that. There are many wrong ways of "publishing":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy &amp;amp; Paste your release folder&lt;/li&gt;
&lt;li&gt;Provided files by Mail/FTP&lt;/li&gt;
&lt;li&gt;Every Person follows their own release process&lt;/li&gt;
&lt;li&gt;Right-click &amp;gt; publish&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fchristophweigert.com%2Fcontent%2Fimages%2F2019%2F02%2FRightclickpublish.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fchristophweigert.com%2Fcontent%2Fimages%2F2019%2F02%2FRightclickpublish.gif" alt="Deploy it right! Use tools to automate Integration and Delivery"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All the above steps are right in the initial phase of a new project. Like first and second deployment. But as seen as it's in production or you have many developers working on the same project you should immediately stop this behavior!&lt;br&gt;&lt;br&gt;
You may think, why the heck should I do this? Here are some excellent reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are you sure, you are using the latest Source Code?&lt;/li&gt;
&lt;li&gt;Did all Tests succeed? What about specific tests that pass on your machine but not in production? &lt;/li&gt;
&lt;li&gt;Was your last merge successful, have all commits been resolved?&lt;/li&gt;
&lt;li&gt;Are you following the defined release process?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The goal is predictability
&lt;/h2&gt;

&lt;p&gt;Wouldn't it be nice always to have the same, standardized way of publishing and deploying? No more error-prone environment configurations like app settings or connection strings. Manual database setup, missing libraries, and so on. You can even roll back to a previous version if you found a critical flaw.&lt;/p&gt;

&lt;h2&gt;
  
  
  Save time and money
&lt;/h2&gt;

&lt;p&gt;But what's the RoI? Let's do quick math. If every release costs you 15 minutes and every deployment to each tenant another 10 minutes. On the other side, it takes you 8 hours to set up your Continuous Integration and Continuous Delivery pipeline. How many releases until you recovered that time?&lt;/p&gt;

&lt;p&gt;At least if you have one test target, you'll get that time back really quickly. Think about how long it takes to do all the required steps it takes (merge, compile, run tests, deploy to Q&amp;amp;A &amp;gt; Test &amp;gt; Production.&lt;/p&gt;

&lt;p&gt;Can you use right-click publish to go to production? Sure, you can, but you shouldn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start today
&lt;/h2&gt;

&lt;p&gt;I'll cover CI/CD in the upcoming weeks. But here are some fundamental links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.jetbrains.com/teamcity/" rel="noopener noreferrer"&gt;TeamCity&lt;/a&gt;: Great to set up a basic, automated Builds and Publish process&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://azure.microsoft.com/de-de/services/devops/pipelines/" rel="noopener noreferrer"&gt;Azure Pipelines&lt;/a&gt;: Alternative to TeamCity&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://AppCenter.ms" rel="noopener noreferrer"&gt;AppCenter&lt;/a&gt;: Build and deploy mobile apps with ease!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jenkins.io/" rel="noopener noreferrer"&gt;Jenkins&lt;/a&gt;: An open-source automation server for build and deployment&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://octopus.com/" rel="noopener noreferrer"&gt;Octopus Deploy&lt;/a&gt;: Send your release to Q&amp;amp;A, staging, and production. Scheduled and automated!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cicd</category>
      <category>teamcity</category>
      <category>azure</category>
      <category>visualstudio</category>
    </item>
    <item>
      <title>Protect your local data with BitLocker</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Wed, 30 Jan 2019 21:36:14 +0000</pubDate>
      <link>https://dev.to/christophweigert/protect-your-local-data-with-bitlocker-2mpp</link>
      <guid>https://dev.to/christophweigert/protect-your-local-data-with-bitlocker-2mpp</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_Z0ww5i6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2019/01/night-computer-hdd-hard-drive.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_Z0ww5i6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2019/01/night-computer-hdd-hard-drive.jpg" alt="Protect your local data with BitLocker"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BitLocker is a feature embedded since Windows Vista that allows you to encrypt your hard disk. You should enable this feature to prevent unauthorized access to your private data in case your laptop or computer gets stolen. Another advantage is the integration with TPM (Trusted Platform Module) which validates the integrity of your boot and system files before decrypting your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements to use BitLocker
&lt;/h2&gt;

&lt;p&gt;BitLocker is only available for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Computers with TPM 1.2 or later (Or use an external Drive to store the startup key)&lt;/li&gt;
&lt;li&gt;Supported BIOS / UEFI &lt;/li&gt;
&lt;li&gt;Boot drive with NTFS file system&lt;/li&gt;
&lt;li&gt;System drive with FAT32 (UEFI) or NTFS (BIOS) file system&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setup BitLocker
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4ZGdCyRr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2018/12/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4ZGdCyRr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2018/12/image.png" alt="Protect your local data with BitLocker"&gt;&lt;/a&gt;Open the Windows start menu and start typing BitLocker&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9-qv_bSZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2018/12/image-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9-qv_bSZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2018/12/image-1.png" alt="Protect your local data with BitLocker"&gt;&lt;/a&gt;Click on the UAC Icon "Turn on BitLocker"&lt;/p&gt;

&lt;p&gt;If your device is not supported, you will see the following message.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8PcsGrxf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2018/12/image-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8PcsGrxf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2018/12/image-2.png" alt="Protect your local data with BitLocker"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If that's the case, you can buy a TPM Module I, for example, use the following Asus TPM Module, but be aware that your mainboard must have a TPM header.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LR8-RA4j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2019/01/asus_tpm-m_r2.0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LR8-RA4j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2019/01/asus_tpm-m_r2.0.jpg" alt="Protect your local data with BitLocker"&gt;&lt;/a&gt;&lt;a href="https://amzn.to/2BawYXK"&gt;ASUS Computer TPM-M R2.0&lt;/a&gt; from Amazon&lt;/p&gt;

&lt;p&gt;After installing the module open again the Settings Dialog and follow the instructions after clicking "Turn on BitLocker".&lt;/p&gt;

&lt;p&gt;If you have any questions, hit me up in the comment section.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Visual Studio: Could not load file or assembly sqlmgmt.dll Analysis Services Processing Task</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Sun, 13 Jan 2019 10:30:00 +0000</pubDate>
      <link>https://dev.to/christophweigert/visual-studio-could-not-load-file-or-assembly-sqlmgmt-dll-analysis-services-processing-task-1532</link>
      <guid>https://dev.to/christophweigert/visual-studio-could-not-load-file-or-assembly-sqlmgmt-dll-analysis-services-processing-task-1532</guid>
      <description>&lt;p&gt;Today I wanted to deploy a multidimensional Analysis Services Solution to our test server, but Visual Studio crashed right after loading the Processing Task User Interface. The exception was: 'Could not load file or assembly sqlmgmt.dll Analysis Services Processing Task.'&lt;/p&gt;

&lt;p&gt;One fix I stumbled across was to copy &amp;amp; paste files. If you are using Professional or Enterprise Edition, you need to change the first path accordingly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copy from:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C:\Program Files (x86)\Microsoft VisualStudio\2017\Community\Common7\IDE\Extensions\Microsoft\SQLCommon\140&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C:\Program Files (x86)\Common Files\microsoft shared\SQL Server Developer Tools\140&lt;/p&gt;

&lt;p&gt;Restart your Visual Studio, and you can redeploy your solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some more time intense solutions are to reinstall the SSDT packages
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/ssdt/archive/2012/12/13/available-today-ssdt-december-2012.aspx"&gt;SSDT 2012&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/ssdt/archive/2014/03/25/sql-server-data-tools-for-sql-server-2014-is-available.aspx"&gt;SSDT 2014&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;References:&lt;br&gt;&lt;br&gt;
&lt;a href="https://developercommunity.visualstudio.com/content/problem/137098/could-not-load-file-or-assembly-sqlmgmtdll-analysi.html"&gt;Could not load file or assembly sqlmgmt.dll Analysis Services Processing Task&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://stackoverflow.com/questions/23473512/getting-assembly-error-when-attempting-to-process-cube-in-vs-2012"&gt;Getting assembly error when attempting to process cube&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>visualstudio</category>
    </item>
    <item>
      <title>Goals for 2019</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Tue, 08 Jan 2019 16:30:00 +0000</pubDate>
      <link>https://dev.to/christophweigert/goals-for-2019-28j2</link>
      <guid>https://dev.to/christophweigert/goals-for-2019-28j2</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--12iLd9u1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1506784926709-22f1ec395907%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--12iLd9u1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1506784926709-22f1ec395907%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" alt="Goals for 2019"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since the turn of the year, I had some &lt;a href="https://dev.to/christophweigert/2018-year-in-review-2lmg-temp-slug-2746431"&gt;time to reflect on the last 12 months&lt;/a&gt; and how 2019 can be even better. It is an excellent time of the year to look ahead to the rest of the year and set goals for my life, my career, family matters, and health. 2018 was a fascinating year. Full of fun, adventures, and happiness. From the business side, I was challenged, learned a lot, and enjoyed the work I was involved.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JBsH0vkf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1524769490-6d12a683d9ee%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JBsH0vkf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1524769490-6d12a683d9ee%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" alt="Goals for 2019"&gt;&lt;/a&gt;Photo by &lt;a href="https://unsplash.com/@stefyaich?utm_source=ghost&amp;amp;utm_medium=referral&amp;amp;utm_campaign=api-credit"&gt;Stephane YAICH&lt;/a&gt; / &lt;a href="https://unsplash.com/?utm_source=ghost&amp;amp;utm_medium=referral&amp;amp;utm_campaign=api-credit"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Continuous Integration / Continuous Delivery
&lt;/h2&gt;

&lt;p&gt;I plan to create unique and insightful content around DevOps, CI and CD with Azure Pipelines, Octopus Deploy, TeamCity, App Center and Docker for Web- and Xamarin Apps. However, I also want to take a quick look at Jenkins (maybe Eclipse Hudson) and GitLab CI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WW9LUo3w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2019/01/20170812_124940.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WW9LUo3w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://christophweigert.com/content/images/2019/01/20170812_124940.jpg" alt="Goals for 2019"&gt;&lt;/a&gt;my personal computer&lt;/p&gt;

&lt;h2&gt;
  
  
  Software development
&lt;/h2&gt;

&lt;p&gt;Get a more in-depth understanding around migrating legacy Code to .NET Core and Entity Framework Core. Build serverless with Azure Functions and Cloudflare workers. The goals here are less with the individual technologies, but rather with the magnitude and associated architectural and performance challenges.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NopNL2He--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1521798509035-1c05acf2d840%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NopNL2He--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1521798509035-1c05acf2d840%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" alt="Goals for 2019"&gt;&lt;/a&gt;Photo by &lt;a href="https://unsplash.com/@rawpixel?utm_source=ghost&amp;amp;utm_medium=referral&amp;amp;utm_campaign=api-credit"&gt;rawpixel&lt;/a&gt; / &lt;a href="https://unsplash.com/?utm_source=ghost&amp;amp;utm_medium=referral&amp;amp;utm_campaign=api-credit"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Post (at least) once every two weeks
&lt;/h2&gt;

&lt;p&gt;Build a consistent blog schedule. Sounds challenging but I want to have at least one blog post scheduled ahead of time, so I don't have to do a 'quick and dirty' post.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6Gx7q4Hp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1466637574441-749b8f19452f%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6Gx7q4Hp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1466637574441-749b8f19452f%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" alt="Goals for 2019"&gt;&lt;/a&gt;Photo by &lt;a href="https://unsplash.com/@kate5oh3?utm_source=ghost&amp;amp;utm_medium=referral&amp;amp;utm_campaign=api-credit"&gt;Katie Smith&lt;/a&gt; / &lt;a href="https://unsplash.com/?utm_source=ghost&amp;amp;utm_medium=referral&amp;amp;utm_campaign=api-credit"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Improve Health
&lt;/h2&gt;

&lt;p&gt;My health is at a good state. Though, my weight starts to annoy me a bit. I'm up about 8 kilograms over the last year. I need to commit this year to keep exercise a priority and keep sweets away and stick to my food plan. Consistency and routine should be the keys to success.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--__J6rzp0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1519895173443-d259e1fc4962%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--__J6rzp0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1519895173443-d259e1fc4962%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" alt="Goals for 2019"&gt;&lt;/a&gt;Photo by &lt;a href="https://unsplash.com/@rawpixel?utm_source=ghost&amp;amp;utm_medium=referral&amp;amp;utm_campaign=api-credit"&gt;rawpixel&lt;/a&gt; / &lt;a href="https://unsplash.com/?utm_source=ghost&amp;amp;utm_medium=referral&amp;amp;utm_campaign=api-credit"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Launch my business.
&lt;/h2&gt;

&lt;p&gt;That's a big goal for this year, and I’m scared of writing here because somehow it sounds 'real' and I’m making myself accountable in my hopeful 2019 retro perspective at the end of the year. However, I will not talk much about it yet because I need to clarify the idea of how everything will look before sharing it with anybody. So I’m just putting this goal for 2019 for now. When the time is right, you will know, promise.&lt;/p&gt;

</description>
      <category>careerdevelopment</category>
      <category>azure</category>
      <category>cicd</category>
      <category>personal</category>
    </item>
    <item>
      <title>2018 Year in Review</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Wed, 02 Jan 2019 10:28:43 +0000</pubDate>
      <link>https://dev.to/christophweigert/2018-year-in-review-1325</link>
      <guid>https://dev.to/christophweigert/2018-year-in-review-1325</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hi5cP29S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1510936994138-07e06c7c5add%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hi5cP29S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1510936994138-07e06c7c5add%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" alt="2018 Year in Review"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The years go by, and I would like to take a look back and reflect on the past 365 days of 2018.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software development
&lt;/h2&gt;

&lt;p&gt;As I planned, in 2018 I was very busy with .NET Core, Xamarin, SOLID principles and Continuous Integration and Continuous Delivery. Also, I have looked outside the box and gazed at Typescript, Flutter, and NodeJS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blog
&lt;/h2&gt;

&lt;p&gt;As you can see from my previous post, I just started blogging. The blog is based on Ghost.org Docker Image. I hope to reach some people and help them with their problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Overall, the year 2018 presented numerous challenges. It was not always easy, but there was a lot to learn - and that's important and good.&lt;/p&gt;

</description>
      <category>careerdevelopment</category>
      <category>personal</category>
      <category>cicd</category>
      <category>azure</category>
    </item>
    <item>
      <title>Here we go! Happy new year!</title>
      <dc:creator>Christoph Weigert</dc:creator>
      <pubDate>Tue, 01 Jan 2019 15:15:00 +0000</pubDate>
      <link>https://dev.to/christophweigert/here-we-go-happy-new-year-3j2n</link>
      <guid>https://dev.to/christophweigert/here-we-go-happy-new-year-3j2n</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u88svjrs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1530026091265-6ab5b498c7f9%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u88svjrs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1530026091265-6ab5b498c7f9%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" alt="Here we go! Happy new year!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hi first,&lt;/p&gt;

&lt;p&gt;I'm Christoph and here we go. This is my first blog post. After reading so many great blogs, I wanted to start my technology blog. &lt;a href="https://christophweigert.com/about"&gt;So here can you read more about me.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now the time has come. A new blog is here.&lt;br&gt;&lt;br&gt;
This blog is based on the &lt;a href="https://ghost.org/"&gt;Ghost Blogging platform&lt;/a&gt;, the theme is from &lt;a href="https://troyhunt.com"&gt;Troy Hunt&lt;/a&gt;, hosting is provided by &lt;a href="https://hetzner.de"&gt;Hetzner.de&lt;/a&gt; and protected by &lt;a href="https://cloudflare.com/"&gt;Cloudflare&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The idea to start my blog wasn't something new, but frankly, I didn't have time to set up a blog or write posts - until now. After reading many retrospectives I had the urge to start.&lt;/p&gt;

&lt;p&gt;From now on it will be blogging about programming (MS Stack including C#, .Net, SQL Server) but also about Linux, Ghost, npm, and from time to time there will certainly be something private details. But this time it should not get out of hand. At least that is currently still on my 'goals list'. However, enough of the big words and enjoy reading.&lt;/p&gt;

&lt;p&gt;Because this blog post is scheduled for New Year's Eve I wish you a happy new year.&lt;/p&gt;

</description>
      <category>personal</category>
    </item>
  </channel>
</rss>
