Jekyll2023-07-10T04:32:37+00:00https://www.jeremycade.com/feed.xmlWhat?The incoherent ramblings of a Father, Software Engineer, Baseball Coach and all round オタク.Jeremy CadeDDD Brisbane - Terraforming the world - Take 22017-12-02T00:00:00+00:002017-12-02T00:00:00+00:00https://www.jeremycade.com/devops/talks/2017/12/02/ddd-brisbane<p>December in Brisbane means one thing.. DDD Brisbane.</p>
<p>This year’s talk was geared around how I management my Production Infrastructure, and application deployments with a combination of Jenkins, Terraform, Octopus Deploy, all wired together with Cake.</p>
<p>Feel free to grab a copy of my <a href="https://www.jeremycade.com/public/presentations/20171202-terraforming-the-world.pdf">Slide Deck</a>.</p>Jeremy CadeDecember in Brisbane means one thing.. DDD Brisbane.NDC Sydney - Terraforming the world2017-09-27T00:00:00+00:002017-09-27T00:00:00+00:00https://www.jeremycade.com/devops/talks/2017/09/27/terraforming-the-world<p>Back in August 2018, I was fortunate enough to side-load a last minute talk into <a href="https://ndcsydney.com/speaker/jeremy-cade/">NDC Sydney</a> on using HashiCorp’s <a href="https://www.terraform.io/">Terraform</a> to stand up infrastructure.</p>
<p>This particular talk was prepared in the space of about 2 hours. While it’s not the best presentation I’ve ever put together, I’m reasonably happy with how it turned out.</p>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/O-KmlUR5TgI?rel=0" frameborder="0" allowfullscreen=""></iframe>Jeremy CadeBack in August 2018, I was fortunate enough to side-load a last minute talk into NDC Sydney on using HashiCorp’s Terraform to stand up infrastructure.ALT.NET is my modus operandi!2017-05-22T00:00:00+00:002017-05-22T00:00:00+00:00https://www.jeremycade.com/altnet/2017/05/22/alt-net-is-my-modus-operandi<p>I write software with C# in a Text Editor on Mac OS.</p>
<p>The software I build is small, modular and self-contained.</p>
<p>All SCM is via the commandline, using the tools the way they were designed.</p>
<p>Continuous Integration builds run on Windows Server and Ubuntu.</p>
<p>My Deployment targets (Windows Server, Ubuntu, Docker Containers, App Service) are defined and managed with code.</p>
<p>ALMOST everything I use is Open Source (to varying degrees).</p>
<h2 id="how-the-times-have-changed">How the times have changed</h2>
<p>It’s been 10 years since the ALT.NET phrase was coined.</p>
<p>In 2007 .NET as a whole was a very different beast. .NET 3.5 shipped with Visual Studio 2008 in November 2007, followed by ASP.NET MVC CTP in December of the same year. Though most of us where still drudging through VB.NET and C# .NET 1.1 or .NET 2.0 code bases in Visual Studio 2005, which needed a number of of service packs installed before it was useful. Web Forms and Windows Forms were the bane of my existence, both exceptionally difficult to test. Windows Vista or Windows XP were the operating Systems of choice.</p>
<p>At that time, the ALT.NET discussion was centered around technology choice; e.g. You are an ALT.NET practitioner if you used Resharper (or CodeRush), or NHibernate, or a RDBMS that wasn’t SQL Server.</p>
<p>Though for me it was always more about choice.</p>
<ul>
<li>What choices did I have to build the best software?</li>
<li>What choices did I have in terms of Development Environment’s?</li>
<li>What choices did I have in terms of Architectural Patterns?</li>
<li>How could I build better software?</li>
</ul>
<p>To me that was the ALT.NET Mindset. I really wanted to have choice.</p>
<p>Moving forward to 2017: The .NET Community has matured. Microsoft as an organisation has quite drastically changed. The .NET Core SDK and Runtimes have moved to the point where I no longer need Windows & Visual Studio to build fast, robust applications with C#.</p>
<p>Granted you could always write C# in a text editor, and push it through csc.exe or MSBuild. But it always felt clunky.</p>
<p>Oh, how the times of changed, and you know what? It feels great!</p>
<h2 id="hands-down">Hands Down</h2>
<p>Microsoft’s decision to make .NET Core cross-platform has been the single largest change, and the single largest productivity gain that I have had from the .NET Eco-System in 15 years.</p>
<p>Not only does it enable me to work the way that I want to work, use the tools that I want to use, but it has allowed me to build fast scalable systems with less code at a much lower cost.</p>
<p>As far as my version of ALT.NET is concerned.</p>
<p>I’m there. I have choices, and that’s a win in my book.</p>Jeremy CadeI write software with C# in a Text Editor on Mac OS.Resize a VirtualBox Guest Hard disk in Windows2016-03-10T00:00:00+00:002016-03-10T00:00:00+00:00https://www.jeremycade.com/virtualization/2016/03/10/resize-a-virtualbox-guest-hard-disk-in-windows<p>VirtualBox has a nasty little habit of suggesting small virtual Hard disk sizes when creating Guest Virtual Machines.
Anyone who has worked with Windows guests knows that 25.00 GB is ridiculously small for a standard install of most versions of Windows Server (excluding Windows Server Nano).</p>
<p><img src="https://www.jeremycade.com/images/Virtualization/VirtualBox-Small-Harddisk.png" alt="Figure 1 - Default 25.00 GB Hard disk" /></p>
<p>My general rule of thumb is to increase the default Hard disk to between 60 and 80 GB depending on the purpose of the Virtual Machine. Though it is easy to be caught out; And you are now in a position where you will need to resize the guest Hard disk. To complete this task we will make use of the VirtualBox commandline tools.</p>
<p>The steps below were tested against VirtualBox 5.0.16</p>
<h2 id="step-1-backup-everything">Step 1: Backup Everything!</h2>
<p>Ensure that the guest virtual machine is in a <code class="language-plaintext highlighter-rouge">Powered Off</code> state.</p>
<p><img src="https://www.jeremycade.com/images/Virtualization/VirtualBox-Powered-Off.png" alt="Figure 2 - Guest Virtual Machine is Powered Off" /></p>
<p>Backup the guests Hard disk. In my case I created a copy of the guest Hard disk on a separate drive.</p>
<h2 id="step-2-ensure-the-virtualbox-commandline-tools-are-in-your-path">Step 2: Ensure the VirtualBox commandline tools are in your PATH</h2>
<p>Open the Environment Variables dialog confirm that the following is present in your PATH variable.
On Windows 10, this can be done by searching for <code class="language-plaintext highlighter-rouge">environment variables</code> with Cortana.</p>
<p><code class="language-plaintext highlighter-rouge">C:\Program Files\Oracle\VirtualBox</code></p>
<p>If it is not present in either the System or User Variables path, add it. My personal preference is to add it to the User variables path as shown in the image below.</p>
<p><img src="https://www.jeremycade.com/images/Virtualization/VirtualBox-Path-Variables.png" alt="Figure 3 - Guest Virtual Machine is Powered Off" /></p>
<p>Once completed, Open <code class="language-plaintext highlighter-rouge">powershell</code> and execute the following:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">vboxmanage</code></pre></figure>
<p>Which should result in output similar to:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">Oracle VM VirtualBox Command Line Management Interface Version 5.0.16
<span class="o">(</span>C<span class="o">)</span> 2005-2016 Oracle Corporation
All rights reserved.
Usage:
VBoxManage <span class="o">[</span><general option>] <<span class="nb">command</span><span class="o">></span>
General Options:
<span class="o">[</span><span class="nt">-v</span>|--version] print version number and <span class="nb">exit</span>
<span class="o">[</span><span class="nt">-q</span>|--nologo] suppress the logo
<span class="o">[</span><span class="nt">--settingspw</span> <pw>] provide the settings password
<span class="o">[</span><span class="nt">--settingspwfile</span> <file>] provide a file containing the settings password
... REMOVED FOR BREVITY ...
Extension package management:
VBoxManage extpack <span class="nb">install</span> <span class="o">[</span><span class="nt">--replace</span><span class="o">]</span> <tarball>
VBoxManage extpack uninstall <span class="o">[</span><span class="nt">--force</span><span class="o">]</span> <name>
VBoxManage extpack cleanup</code></pre></figure>
<h2 id="step-3-resize-the-virtual-hard-disk">Step 3: Resize the Virtual Hard disk.</h2>
<p>In order to resize a disk we need to execute <code class="language-plaintext highlighter-rouge">vboxmanage</code> with the <code class="language-plaintext highlighter-rouge">modifymedium</code> option.
In previous versions of VirtualBox the option was either <code class="language-plaintext highlighter-rouge">modifyhd</code> or <code class="language-plaintext highlighter-rouge">modifyvdi</code>.</p>
<p><code class="language-plaintext highlighter-rouge">vboxmanage modifymedium disk NAMEOFDISK.EXT --resize SIZEINMB</code></p>
<p>In my case I executed the following:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">vboxmanage modifymedium disk Win2012R2.vdi <span class="nt">--resize</span> 81920
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%</code></pre></figure>
<h2 id="step-4-boot-and-resize-the-disk-in-your-guest-os">Step 4: Boot and Resize the Disk in your Guest OS</h2>
<p>If all has gone well, the final step is to boot into your guest OS and resize your drive partitions.</p>
<p>The steps for which are heavily dependent on your Guest OS and can be readily found on the internet.</p>Jeremy CadeVirtualBox has a nasty little habit of suggesting small virtual Hard disk sizes when creating Guest Virtual Machines. Anyone who has worked with Windows guests knows that 25.00 GB is ridiculously small for a standard install of most versions of Windows Server (excluding Windows Server Nano).2016: A New Year, and a New Role.2016-01-10T00:00:00+00:002016-01-10T00:00:00+00:00https://www.jeremycade.com/professional/2016/01/10/a-new-year-a-new-job<p>In July of 2015, I made my first real organizational change in 13 years. Moving from the safety and security of what was an extremely cushy Software Engineering role with <a href="https://www.aussieweb.com.au">AussieWeb</a> into a more formal consulting role with <a href="https://www.ssw.com.au">SSW</a>. After six months of consulting, I have decided, with some consistent prodding from my family that the consulting was not for me. Don’t get me wrong. I’m not saying that SSW isn’t a great place to work; it is (and they are always <a href="https://www.ssw.com.au/ssw/Employment/Employment.aspx">hiring</a>), it’s more that I wasn’t enjoying developing enterprise applications. I was starting to feel the itch to be back developing productized services and SaaS applications at scale. Rather than being constrained by corporate technology choices and the ever present “billable by the hour” world of consulting.</p>
<p>Luckily for me; one of the staples of the Brisbane tech-community, Joshua Wulf, all round nice guy and <a href="https://www.linkedin.com/in/sitapati">Legendary Recruiter</a> with Just Digital People had some inside knowledge of a Brisbane based organization that not only had a need for someone with my skillsets, but was also family friendly. Suffice to say I did not hesitate when Josh mentioned that the two founders Neeshil Pabari & Joe Antonini would like to meet.</p>
<h2 id="hello-lüp">Hello Lüp</h2>
<p>When I arrived at the <a href="http://www.lup.com.au">Lüp</a> (pronounced Loop) office, it immediately felt familiar, very similar to what I had previously been accustomed too at <a href="https://www.aussieweb.com.au">AussieWeb</a>. My initial meeting with both Neeshil and Joe immediately answered any question as to whether or not Lup would have the type of high performance culture that I was looking for.</p>
<p><a href="http://www.lup.com.au">Lüp</a> itself is an interesting organization; one that has a distributed team, and provides a unique solution to the problems faced by exhibitors at large scale events. Though what caught my attention was the mixed technology stack, the need to scale quickly when needed, and the opportunity to work on some challenging big data and optimization problems.</p>
<p>I don’t think it is a stretch to say that I am looking forward to the new challenge.</p>Jeremy CadeIn July of 2015, I made my first real organizational change in 13 years. Moving from the safety and security of what was an extremely cushy Software Engineering role with AussieWeb into a more formal consulting role with SSW. After six months of consulting, I have decided, with some consistent prodding from my family that the consulting was not for me. Don’t get me wrong. I’m not saying that SSW isn’t a great place to work; it is (and they are always hiring), it’s more that I wasn’t enjoying developing enterprise applications. I was starting to feel the itch to be back developing productized services and SaaS applications at scale. Rather than being constrained by corporate technology choices and the ever present “billable by the hour” world of consulting.Visaul Studio 2015: Code Lens Unit Test Attribution bug2015-08-24T00:00:00+00:002015-08-24T00:00:00+00:00https://www.jeremycade.com/visual-studio-2015/2015/08/24/vs2015-code-lens-attribution-bug<p>I am currently working on a legacy application that has recently had a “solution” upgrade to work with Visual Studio 2015.
During the course of my work I have encountered minor Code Lens attribution bug.</p>
<p>The bug essentially attributes test results of a child class, to the base class from which it is inherited.
The test results are then propagated up the class hierarchy to all classes which inherit from the base class.</p>
<h3 id="example">Example:</h3>
<ol>
<li>
<p>Create Unit Tests for new Attribute
<img src="https://www.jeremycade.com/images/VS2015/CodeLens/01.png" alt="Figure: Unit Tests for RemoteRequireAttribute" />
<strong>Figure: Unit Tests for RemoteRequireAttribute</strong></p>
</li>
<li>
<p>Create ActionFilter that inherits from RequireHttpsAttribute | ActionFilterAttribute and implement functionality.
<img src="https://www.jeremycade.com/images/VS2015/CodeLens/02.png" alt="Figure: RemoteRequireHttpsAttribute class signature" />
<strong>Figure: RemoteRequireHttpsAttribute class signature</strong></p>
</li>
<li>
<p>Execute Tests. All Passing
<img src="https://www.jeremycade.com/images/VS2015/CodeLens/03.png" alt="Figure: Passing Unit Tests" />
<strong>Figure: Passing Unit Tests</strong></p>
</li>
<li>
<p>View another class that inherits from ActionAttribute. VS2015 Code lens now shows 5 of 5 tests passing.
<img src="https://www.jeremycade.com/images/VS2015/CodeLens/04.png" alt="Figure: 5 of 5 passing tests" />
<strong>Figure: 5 of 5 passing tests</strong></p>
</li>
<li>
<p>Closer inspection of the tests shows that the are not related to this class, other than the base inherited classes.
<img src="https://www.jeremycade.com/images/VS2015/CodeLens/05.png" alt="Figure: 5 of 5 passing tests are all for RemoteRequireHttpsAttribute ActionFilter." />
<strong>Figure: 5 of 5 passing tests are all for RemoteRequireHttpsAttribute ActionFilter.</strong></p>
</li>
</ol>
<p>For those of you who are wondering what my system looks like:</p>
<ul>
<li>Surface Pro 3 - Max specs.</li>
<li>Windows 8.1 Fully patched and at the latest version</li>
<li>Domain Joined</li>
<li>.Net 2 through 4.6 installed and fully patched to the latest versions</li>
<li>VS2013 and VS2015 are both installed and fully patched.</li>
</ul>Jeremy CadeI am currently working on a legacy application that has recently had a “solution” upgrade to work with Visual Studio 2015. During the course of my work I have encountered minor Code Lens attribution bug.ASP.NET 5 dnvm update-self on OS X2015-08-16T00:00:00+00:002015-08-16T00:00:00+00:00https://www.jeremycade.com/asp.net/2015/08/16/dnvm-update-self<p>Continuing on from <a href="https://github.com/aspnet/Home/issues/687">#687: dnu restore broken</a>; A number of people are still finding this to be an issue. The recommended fix at this stage is to update <code class="language-plaintext highlighter-rouge">dnvm</code> to the latest version with <code class="language-plaintext highlighter-rouge">dnvm update-self</code>.</p>
<p>If you, like me have installed <code class="language-plaintext highlighter-rouge">dnvm</code> on OS X via Homebrew, you will run into the following issue:</p>
<p><img src="https://www.jeremycade.com/images/dnvm_update_self.png" alt="dvnm update-self issue" />
<strong>Figure: dnvm update expects dnvm directory in .dnx folder</strong></p>
<p>As you can see from the following <code class="language-plaintext highlighter-rouge">tree .dnx</code> output, the <code class="language-plaintext highlighter-rouge">dnvm</code> directory is not present.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>.dnx/
├── alias
│ └── default.alias
└── runtimes
├── dnx-mono.1.0.0-beta4
│ ├── bin
│ │ ├── Microsoft.CodeAnalysis.CSharp.Desktop.dll
│ │ ├── Microsoft.CodeAnalysis.CSharp.dll
│ │ ├── Microsoft.CodeAnalysis.Desktop.dll
│ │ ├── Microsoft.CodeAnalysis.dll
│ │ ├── Microsoft.Framework.ApplicationHost.dll
│ │ ├── Microsoft.Framework.DesignTimeHost.Interfaces.dll
│ │ ├── Microsoft.Framework.Runtime.Interfaces.dll
│ │ ├── Microsoft.Framework.Runtime.Loader.dll
│ │ ├── Microsoft.Framework.Runtime.Roslyn.Common.dll
│ │ ├── Microsoft.Framework.Runtime.Roslyn.Interfaces.dll
│ │ ├── Microsoft.Framework.Runtime.Roslyn.dll
│ │ ├── Microsoft.Framework.Runtime.dll
│ │ ├── Newtonsoft.Json.dll
│ │ ├── System.Collections.Immutable.dll
│ │ ├── System.Reflection.Metadata.dll
│ │ ├── dnu
│ │ ├── dnx
│ │ ├── dnx.host.dll
│ │ ├── dnx.mono.managed.dll
│ │ └── lib
│ │ ├── Microsoft.Framework.DesignTimeHost
│ │ │ ├── Microsoft.Framework.DesignTimeHost.dll
│ │ │ └── Microsoft.Framework.NotNullAttribute.Internal.dll
│ │ ├── Microsoft.Framework.PackageManager
│ │ │ └── Microsoft.Framework.PackageManager.dll
│ │ └── Microsoft.Framework.Project
│ │ └── Microsoft.Framework.Project.dll
│ ├── dnx-mono.nuspec
│ └── package
│ └── services
│ └── metadata
│ └── core-properties
│ └── ddd70229659a44fe8e4fbc08b9d84d87.psmdcp
└── dnx-mono.1.0.0-beta6
├── bin
│ ├── Microsoft.CodeAnalysis.CSharp.dll
│ ├── Microsoft.CodeAnalysis.dll
│ ├── Microsoft.Framework.ApplicationHost.dll
│ ├── Microsoft.Framework.DesignTimeHost.Abstractions.dll
│ ├── Microsoft.Framework.Runtime.Abstractions.dll
│ ├── Microsoft.Framework.Runtime.Caching.dll
│ ├── Microsoft.Framework.Runtime.Compilation.DesignTime.dll
│ ├── Microsoft.Framework.Runtime.Loader.dll
│ ├── Microsoft.Framework.Runtime.Roslyn.Abstractions.dll
│ ├── Microsoft.Framework.Runtime.Roslyn.Common.dll
│ ├── Microsoft.Framework.Runtime.Roslyn.dll
│ ├── Microsoft.Framework.Runtime.dll
│ ├── System.Collections.Immutable.dll
│ ├── System.Reflection.Metadata.dll
│ ├── dnu
│ ├── dnx
│ ├── dnx.host.dll
│ ├── dnx.mono.managed.dll
│ └── lib
│ ├── Microsoft.Framework.DesignTimeHost
│ │ ├── Microsoft.Framework.DesignTimeHost.dll
│ │ ├── Microsoft.Framework.NotNullAttribute.Sources.dll
│ │ └── Newtonsoft.Json.dll
│ ├── Microsoft.Framework.PackageManager
│ │ ├── Microsoft.Framework.NotNullAttribute.Sources.dll
│ │ ├── Microsoft.Framework.PackageManager.dll
│ │ └── Newtonsoft.Json.dll
│ └── Microsoft.Framework.Project
│ └── Microsoft.Framework.Project.dll
├── dnx-mono.nuspec
└── package
└── services
└── metadata
└── core-properties
└── 6586fbcfbbe442c4a108a4b34abfbae8.psmdcp
22 directories, 53 files
</code></pre></div></div>
<p>This is due to Homebrew installing packages into <code class="language-plaintext highlighter-rouge">/usr/local/Cellar/</code> and then symlinking to <code class="language-plaintext highlighter-rouge">/usr/local/bin</code> by default.</p>
<p>Normally I would advise updating <code class="language-plaintext highlighter-rouge">dnvm</code> via Homebrew like so:</p>
<p><code class="language-plaintext highlighter-rouge">brew update; brew upgrade dnvm;</code></p>
<p>However as <a href="https://github.com/BrennanConroy">Brennan Conroy</a> mentions: “Unfortunately we don’t support upgrade through homebrew”.</p>
<p><img src="https://www.jeremycade.com/images/dnvm-update-homebrew-not-supported.png" alt="Unfortunately we don't support upgrade through homebrew." />
<strong>Figure: Unfortunately we don’t support upgrade through homebrew.</strong></p>
<p>The correct method as of August 16th 2015 to upgrade <code class="language-plaintext highlighter-rouge">dnvm</code> if installed via Homebrew is the following:</p>
<p><code class="language-plaintext highlighter-rouge">brew remove dnvm; brew install dnvm;</code></p>
<p>Personally, I find this to be somewhat of an issue, though given the beta nature of ASP.Net 5 it’s to be expected. At this stage I am investigating the viability of a patch to <code class="language-plaintext highlighter-rouge">dnvm.sh</code> to support <code class="language-plaintext highlighter-rouge">dnvm update-self</code> from a Homebrew install. More on that at a later date.</p>Jeremy CadeContinuing on from #687: dnu restore broken; A number of people are still finding this to be an issue. The recommended fix at this stage is to update dnvm to the latest version with dnvm update-self.ASP.NET 5 Beta 6: dnu restore broken #6872015-08-07T00:00:00+00:002015-08-07T00:00:00+00:00https://www.jeremycade.com/asp.net/2015/08/07/dnu-restore-broken-687<p>I have recently updated to the latest ASP.NET 5 Beta on my OS X development machines. One of the first stumbling blocks that I ran into was issue <a href="https://github.com/aspnet/Home/issues/687">#687: dnu restore broken</a>.</p>
<p><img src="https://www.jeremycade.com/images/dnu_execution_error.png" alt="dnu execution error." />
<strong>Figure: Permission is denied.</strong></p>
<p>This is a minor issue, and the fix is relatively simple</p>
<p><strong>Steps to fix:</strong></p>
<ol>
<li>Open Terminal <code class="language-plaintext highlighter-rouge">⌘+space Terminal</code></li>
<li>Execute the following:</li>
</ol>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nb">cd</span> ~/.dnx/runtimes/dnx-mono.1.0.0-beta6/bin/
<span class="nb">chmod</span> +x dnu
</code></pre></div></div>
<p>No more issues.</p>
<p><img src="https://www.jeremycade.com/images/dnu_executeable.png" alt="Correct permissions for dnu execution." />
<strong>Figure: Executeable dnu</strong></p>Jeremy CadeI have recently updated to the latest ASP.NET 5 Beta on my OS X development machines. One of the first stumbling blocks that I ran into was issue #687: dnu restore broken.Goodbye AussieWeb. Hello SSW.2015-06-29T00:00:00+00:002015-06-29T00:00:00+00:00https://www.jeremycade.com/professional/2015/06/29/goodbye-aussieweb-hello-ssw<p>After more then 13 years, I have made the decision to move on from my Software Engineering role with <a href="http://www.montehuebsch.com">Monte Huebsch</a> and team at <a href="http://www.aussieweb.com.au">AussieWeb</a> and take on a Senior Software Architect position with <a href="http://www.adamcogan.com/">Adam Cogan</a> and his team at <a href="http://www.ssw.com.au">SSW</a>.</p>
<h3 id="goodbye-aussieweb">Goodbye AussieWeb</h3>
<p>AussieWeb has been my home for more then a decade. When I started, AussieWeb was a small business, with only 4 permanent part-time employees; .Net was still in it’s early releases (1.0 and 1.1), and the main business was Website Development & Hosting (partnered with <a href="http://www.lloyde.com/projects/webcentral/">Lloyd Ernst’s WebCentral</a>).</p>
<p>Today: AussieWeb employees 10 full time staff on generous salary & benefits packages; while the business itself has transformed from a Website Development & Hosting provider to one of the leading Google AdWords Partners in the Asia-Pacific Region. The core technology stack as I am leaving it, is .Net 4.5.1, SQL Server 2008R2 (and SQL 2014SP1), Entity Framework Code First, and ASP.NET MVC 5.</p>
<p>My time at AussieWeb has allowed me to do things that I would never have been able to do if I had taken the normal corporate developer route. I was able to live in different cities & countries, work remotely during a period in time where the idea of “remote” workers was still a new, untested and fraught with dangers and generally follow the path I decided was the most appropriate at the time. Ultimately I had complete flexibility as to when and where I worked; the technology stacks, platforms and devices I worked on/from. It was a dream job, with a steady paycheck. All the benefits of the “Nomadic Entrepreneur”/”Tropical MBA” lifestyle, without the responsibility of having to worry about meeting costs and payroll.</p>
<p>Though ultimately family life has caught up.</p>
<h3 id="hello-ssw">Hello SSW</h3>
<p>I was introduced to SSW through the Brisbane .Net User Group, to be frank, I was impressed by the level of knowledge displayed by their Brisbane staff. SSW at this point feels like an environment where I can continue to grow my craft and expand my knowledge.</p>
<p>Though my official start date with SSW is July 1st 2015, I have been working with the Brisbane Team in a part time capacity since June 1st 2015. This has allowed me to ease myself into SSW’s work-flow and methodologies, though not without some level of pain. It’s not always easy to move from having complete freedom to following the <a href="https://rules.ssw.com.au">rules</a></p>
<p>To date: I have pushed changes to the <a href="https://www.ssw.com.au/">SSW Website</a>, <a href="http://www.sugarlearning.com/">SugarLearning</a> and have started working with <a href="http://www.bne.catholic.edu.au/">Brisbane Catholic Education</a> on one of their internal Information Systems.</p>
<p>So a final Goodbye to my coworkers of 13+ years and AussieWeb, and hello to all of the team at SSW.</p>Jeremy CadeAfter more then 13 years, I have made the decision to move on from my Software Engineering role with Monte Huebsch and team at AussieWeb and take on a Senior Software Architect position with Adam Cogan and his team at SSW.How to fix your Python virtualenv after a Homebrew Python upgrade2015-03-02T00:00:00+00:002015-03-02T00:00:00+00:00https://www.jeremycade.com/python/osx/homebrew/2015/03/02/fixing-virtualenv-after-a-python-upgrade<p>Do you manage your OS X Python installation with Homebrew? Have you recently upgraded Python?</p>
<p>In my case it was a Python 3 point release; from 3.4.2 to 3.4.3. The downside is that this is enough to invalidate virtualenv’s symbolic links.</p>
<h3 id="example">Example</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~: cd ~/src/my_app
~/src/my_app: source venv/bin/activate
[venv] ~/src/my_app: python
dyld: Library not loaded: @executable_path/../.Python
Referenced from: /Users/jeremycade/src/my_app/env/bin/python
Reason: image not found
Trace/BPT trap: 5
</code></pre></div></div>
<p>As I’ve mentioned the virtualenv symlinks to your Homebrew python installation no longer link to the correct locations. The solution is to delete, and regenerate virtualenv symlinks.</p>
<p>First thing, we need to ensure that the your virtualenv is not active.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[venv] ~/src/my_app: deactivate
</code></pre></div></div>
<p>Next, delete the offending symlinks.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/src/my_app: find venv -type l -delete
</code></pre></div></div>
<p>In this case I’ve made use of the BSD <a href="http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/find.1?query=find">find</a> command that ships with OS X.</p>
<p>The final step is to recreate your virtualenv.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~src/my_app: virtualenv venv
</code></pre></div></div>Jeremy CadeDo you manage your OS X Python installation with Homebrew? Have you recently upgraded Python?