CloudFormation Templates in Non-JSON Format

Update 2016-09-27: The AWS CloudFormation team has just released a new feature that allows you to write your templates in YAML. They even improved on the problems I outlined in this article by allowing shorthand versions of the intrinsic functions. I now suggest everyone to move to YAML as it is the clear winner. Working with CloudFormation is great once it finally clicks in your brain that you can create many AWS resources and then delete all of them to make cleaning up super easy. Other than the steep learning curve when a person first learn CloudFormation, the next annoyance people have is that they have to write in JSON. ...

August 5, 2016 · 5 min · 940 words · Scott Brown

Removing Comments

A couple months ago I removed the Disqus comment section from this website. In this short post, I thought I’d explain why I did that and what I hope the future holds for commenting in general. Transparency is refreshing and I like to share the thoughts behind my actions whenever possible, in case anyone wants to do the same in the future. I must confess that this site is mainly for my purposes. I use it as a platform for my rants – err, I mean I use it to hone my writing skills so that I can tell a better story. Thus I rarely, if ever, received a comment on my articles. If something isn’t working, then I see that as an opportunity for change. In this case, I removed the comments altogether and this site became fully static. ...

June 25, 2016 · 3 min · 555 words · Scott Brown

Ansible and CloudFormation

🎵… sitting in a tree…🎵 For both my personal projects, and projects at Unbounce, I use Ansible to create CloudFormation stacks. This brings some amazing user experience improvements for people not used to working with CloudFormation and its asynchronous behaviour. Before I show some of the benefits, I will explain what each piece of the technology is doing. What is Ansible? Ansible is a configuration and orchestration tool for servers and services. People primarily use Ansible to configure packages, libraries, and services on Linux machines (though other operating systems are supported). It is focused on idempotency, which is to ensure that running the Ansible playbook once will change the system, but subsequent runs will not effect any change. ...

June 24, 2016 · 7 min · 1468 words · Scott Brown

Going to Zero: Caffeine

A recent development in my life is removing the daily caffeine intake that normally happens. Previously, I consumed two cups of coffee in the morning, and rarely drank any sodas (caffeinated or not). This supplied me with enough caffeine to keep going throughout the day, or so I thought. I realize that just 2 cups a day is not a lot compared to some people, but my focus was on the habitual nature rather than the dosage. ...

June 10, 2016 · 5 min · 979 words · Scott Brown

The False Fork

Recently at Unbounce we have been talking about what it takes to move between the ranks of junior, intermediate, and senior developer 1. Some very good discussion came out of it, but one key piece was left out for my personal interest 2: where do developers go after becoming senior? At a certain point in the career of a software developer they are told to make a choice: keep programming and developing a deeper understanding of software (The Guru), or go into management and lead software developers to the possible detriment of deep programming skills (The Manager). Over the past decade I have found myself revisiting this dilemma but have never spoken about my dislike for it. I view it now as a false dilemma but, that being said, it is a common practice to take one of two paths. ...

March 4, 2016 · 4 min · 673 words · Scott Brown

Toward a Zen Workplace

Don’t hate. Create. It is easy to feed the part of you that hates the broken and inefficient things you see every day. Instead of feeding that negative emotion, you can in turn convert the feeling into an opportunity to create something better. If everything worked perfectly and was the most efficient solution, there would be little work to do and life would get quite boring. It is easier to write in red than black. ...

March 1, 2016 · 1 min · 100 words · Scott Brown

Improving UX with Makefiles

Recently I updated the code for this website to use Makefiles and rely less on one-off shell scripts. The reason for this change was to improve my write-test-release workflow. I figured make is available on all of my computers and it serves as a perfect minimal orchestration tool. I now type make deploy instead of ./deploy.sh to push a new version of my website up to production. While this may not seem like a lot, it reduced the number of files in my directory. ...

October 27, 2015 · 3 min · 541 words · Scott Brown

Understanding Security: Maps versus Lists

Many people I speak with don’t have a security mindset, not because they aren’t aware of security, but rather that it doesn’t play a role in their life. As computers become more involved in our everyday lives, we all need to understand the security implications and defend against attacks. The only proper way to defend against something is to understand how it is attacked. I’ll paraphrase a tweet I saw on Twitter 1 about security, “An attacker uses maps, but defenders use lists.” To explain what this means in security terms, let’s look at the definition of those terms. ...

October 26, 2015 · 6 min · 1182 words · Scott Brown

Terraform File Organization

At Unbounce, we have recently started using Terraform for creating our AWS infrastructure. It is working well for our needs but it does have some sharp edges, which is expected as it is a young project. The other configuration tooling we use is Cloudformation, and we provide its templates to the software development teams to use because its commands are fairly simple (and documentation is plentiful). Until our team can come up with a good user experience when working with Terraform, we will keep it for our internal infrastructure projects. That being said, we have put together some best practices for working with Terraform and keeping its scripts organized. ...

October 24, 2015 · 6 min · 1201 words · Scott Brown

Interview Take-Home Tests: Good or Bad?

I’ll state my bias up front: I do not like interview take-home projects. I do not like them, Sam I am. They are exploitative, they lack any ability to show realistic software development, and they shift the cost from the employer to the candidate. Recently I interviewed at a friend’s startup. I went through 2 phone screens and everything was going well. It was the kind of interviewing that I like, where the process is treated as a discussion. Then I was asked if I would mind doing a small project for them. Instead of giving a resounding “yes”, I said “maybe, what kind of project” as a terrible way of weaseling out of me saying no 1. It’s hard being put on the spot during an interview. Honestly, I should have had the guts to say no, but we don’t all act ourselves when in these situations (interviews are already an unnatural setting). I was told the project was intended to take “1 day” to implement and the assignment details were emailed to me a few hours after the phone screen. ...

August 3, 2015 · 8 min · 1576 words · Scott Brown