Christoph Wagner

Freelance Software Developer

How to Become a Better Programmer in 30 Minutes a Day

08 April 2019

What if I told you that there is a surefire way to level up your coding skills in as little as six weeks, and it would only take you about 30 minutes of time per day? Would you do it? Or is that too much to ask?

Think about it: what’s the biggest obstacle standing between you and that big idea that you have? That awesome app that you’d like to code, but you’re not sure that you have the skills or the persistence to finish? Or that day at your job that you don’t have drop everything in order to put out yet another fire and focus on building something really worthwhile?

Read More

Having Fun with Proccesing.js: Langton’s Ant

01 April 2019

The other day I solved an interesting problem on CodeWars, called Langton’s Ant. It’s a type of cellular automaton that runs on a 2-dimensional infinite grid and moves according to two very simple rules:

  1. If the current field is colored white, make it black, turn 90 degrees to the right, and move one step forward.
  2. If the current field is colored black, make it white, turn 90 degrees to the left, and move one step forward.

While the CodeWars problem only required you to compute a few iterations of the ant’s movement and return the resulting state of the grid, I thought it would be interesting to make a visual version that runs in the browser.

Read More

Elixir and Phoenix – A Review

16 February 2019

So I’ve been spending some time recently learning about Elixir and Phoenix. I thought I’d share my experiences here, maybe someone will find it useful. If you’ve never heard of it, Elixir is a new(-ish) programming language that borrows a lot of syntax from Ruby. However, even though it looks quite similar on the surface, it’s really a very different language.

Read More

Tests? We Don't Have Budget for That

17 May 2016

The other week, someone forwarded me this article on the TopTal engineering blog. It was an interesting read, if only for the warm, fuzzy feeling of familiarity that arises when you realize that even someone who works for a company that prides itself in hiring only the top 3% of developers has to deal with the same issues as yourself.

For my last few projects, I was forced to work without automated testing and honestly, it was embarrassing to have the client email me after a code push to say that the application was breaking in places where I hadn’t even touched the code.

Read More

Last week I tried "real" TDD, and it was beautiful

14 April 2016

If you’ve been coding for more than a few weeks, I’m sure you’ve heard of Test-Driven Development, or TDD for short. The idea, of course, is deceptively simple: instead of writing code iteratively and testing it by hand, you write the test first, and then you write the code that makes it pass.

After discussing this principle with one of my mentees at theFirehoseProject, he sent me an article he found, penned by the venerable Bob Martin, in which he elucidates on the The 3 Rules of TDD. They are:

Read More

A Picture Says More Than a Thousand Words

08 March 2016

When Apple first introduced Emojis, I was skeptical. After all, we’d all been accustomed to using text-based emoticons for about a decade and they worked (reasonably) well. Most people, at least in my age group, had no difficult understanding expressions like :) and ;). If it ain’t broken, don’t fix it, right? And after all, having to access a special keyboard to type those image-based emojis didn’t even save you any taps — it requires at least two taps to switch the keyboard and then back again.

Read More