What It Takes to Run Concourse

What does it take to run Concourse? The tl;dr here is that in order to run Concourse for one or more teams, you will need: A secrets manager (e.g. Vault) A container registry (e.g. Harbor) Let’s dig into why you need these two types of applications if you choose to run Concourse. A Secrets Manager # Secrets managers, like Vault, securely store your secrets. Setup correctly, you can trust them to safely store and retrieve your secrets.
Read more →

Tips for Writing Concourse Resource-Types in Bash

Writing Concourse resource-types in bash can be fairly fast, especially if you’re relying on external tools to do some of the heavy lifting for you. I think a lot of us in this space are also use to do writing up quick bash scripts to do things, so writing up a quick and dirty resource-type in bash feels natural. Here are some tips for writing resource-types in bash. I’m not going to explain how resource-types work in Concourse.
Read more →

Giving Concourse AWS Permissions With IAM Roles

I’m currently running Concourse for my team at work. It’s a two instance deployment, one web and one worker EC2 instance. Most of the pipelines we write do stuff that require permissions to various AWS services. We needed to figure out a way to grant permissions to these AWS services to our pipelines. Our first thought was to create an IAM role and assign that role to the Concourse Worker’s EC2 instance.
Read more →

Concourse Manual Approval Step

A request I’ve seen from Concourse users every so often is that they want a way for a Concourse Job to stop what it’s doing and wait for approval from a human. They want what I call a “manual approval” step in their jobs. A more concrete example that I’ve seen is when users are running terraform apply in their pipelines. They usually end up wanting a Concourse Job that looks like:
Read more →

Vim hjkl With Microsoft Powertoys

When I got my first mechanical keyboard one of the first thing I did was create a layer where h,j,k, and l, Vim’s navigation keys, sent their respective arrow key codes instead. This quickly became one of my favourite key bindings that I would use everywhere. I’ve continued to code this setup into any keyboard I can set it up on. With mechanical keyboards this is easy since most come with great programmable tools out of the box.
Read more →

The Adjacent Possible

I’ve been reading So Good They Can’t Ignore You by Cal Newport. I first heard of this book a few years ago from a podcast and it’s been on my reading list ever since. I’ve entered a soul searching mode recently in regards to my career. I’m trying to figure out where I want my career to go. This is a pretty big question and I’ve been finding the advice in this book pretty good for someone in my position.
Read more →

Learning Tests

I’m reading TDD By Example by Kent Beck right now and one of the Red Bar Patterns really resonated with me. It’s called the Learning Test. Here’s the scenario. You have a new library or framework that you’re implementing. Instead of just diving into TDD’ing the implementation, you can write some learning tests. These are tests where you validate how you expect the 3rd party tool to work for you. I see this as testing the contract between your application and the 3rd party tool.
Read more →

Small Lesson About Pointers and Slices in Go

Today I learned a little bit more about how pointers work in Go. We had this object that we want other functions to directly modify. So we pass a pointer to this object to various functions and then in our tests we check to see that the original object has been modified correctly. We also have these helper functions that are supposed to return a pointer to an object buried inside of the struct.
Read more →

Creating Your Own BeforeEach in Go

I’m developing my own budgeting app using Go and have been using it to learn new things as well. For testing, because I’m TDD’ing the entire project, I decided to just use the built-in Go testing framework. I use Ginkgo at work and enjoy it, but decided to see what vanilla testing in Go is like. After writing a bunch of tests for a lot of my boilerplate functions, I quickly had a lot of duplicated set-up code that looked like this at the start of all my tests:
Read more →

Halo Helmet

This year, I decided to participate in my company’s halloween contest. My Instagram news feed usually has a few cosplayers on there, and they started inspiring me to try and build a costume of my own. First I thought of dressing as Geralt from the Witcher, since I’m still in the middle of playing Witcher 3. All the sewing and fabric cutting got me a bit nervous though. Then I came across a video of a cosplayer showing how she built armour and she made it look SO easy!
Read more →

Creating a Custom Chooser

Sometimes you want to modify some of the defaults that appear in the chooser, like when you’re sharing a text or image to any other android app that can accept text or images. The most common use case for this is when users press the “Share” button in your app. To create the custom chooser, you use the ShareCompat.IntentBuilder class. String title = "Share weather details"; String mimeType = "text/plain"; String shareText = "I want to share this string"; Intent intent = ShareCompat.
Read more →

Activity Lifecycle Basics

An image is worth a 1000 words. Source That image generally sums up the main beats of the Android Activity lifecycle. Knowing the lifecycle allows you to think about what your application should do as it goes through this lifecycle. What information you need to save to ensure the user has a consistent experience? I’d really like to see how Twitter handles the lifecycle on it’s timeline activity. I admire how well, even when the app crashes, it’s able to maintain the exact position I was in on my twitter feed.
Read more →

Building Intents

Intents are a kind of messaging system used by Android activities to pass information back and forth. It helps keep a separation of concerns between activities. There are two main types of intents: explicit and implicit. Explicit intents are best used between activities within your own application, since they require the full class name in order for them to be started. Here’s an example of starting an explicit intent. This would appear in an Activity class:
Read more →

Oculus Connect 4

As the owner of the Oculus Rift, it’s important I stay on top of the latest VR news now. Facebook had their Oculus Connect 4 event this week where they showed off some new hardware. As a current owner though, I’m most excited for Rift Core 2.0, a complete system overhaul of the Rift’s system software. I’m excited to try out the new apps that come with the 2.0 update, Oculus Dash and Oculus Home 2.
Read more →

VR PC Build

When the Oculus summer sale started, I immediately went and purchased one online. For that price, I just had to, it was too good to pass up on. The TL:DR is: best impulse purchase ever! One thing I didn’t have though was a PC to run VR. The PC I currently had was 8 years old, running an Intel Core 2 Duo CPU, 4GB of DDR2 RAM and an ATI Radeon 4850.
Read more →

Naked Future (Elm Presentation)

’m taking a first year computer science course (CompSci 1JC3) as one of my electives for my final year. We had to read a book selected from a list provided by the professor and do a book report presentation on it. It had to include an Elm animation. My group made our entire presentation in Elm using code provided by our professor. Each slide represents one chapter from the book we read, The Naked Future by Patrick Tucker.
Read more →

PC to Mac

I feel like writing about my personal computing history a bit, as short as it may be. The first computer I ever used was a Dell Dimension desktop from around 2002-2003. It was the family computer for a really long time. When my brother and I started playing Runescape our dad had to put a timer on the computer that would force us to take turns on the computer. When we ran out of time the screen would slowly start filling up with red blocks until we couldn’t see or click anything anymore.
Read more →