Setting up OBS to record your desktop

Download OBS Studio
Install it

File, Settings

Tab: Video
Change Base and Output to be the same resolution (1920×1080 probably)

Tab: Output
Encoder: Hardware (Anything)
Recording Format: mp4

ok, close out of settings

Sources [+] (at the bottom)
Display Capture
[ok] [ok]

Check your video looks right in the video area (Should be showing your desktop)
You can click in there and resize, but if you need to do that you probably didn’t get the video resolution correct before.


Hit [Start Recording] to record.


In the future you should just be able to start OBS, the display should already be in the video pane, hit [Start Recording]

YOW! Melbourne 2015

I was lucky enough to attend YOW! in Melbourne last week, here is a braindump of what I went to.


Day 1

It’s Complicated…

Virtual Teams: Making Them Work

Interesting talk on Virtual Teams (Not remote teams). A Virtual Team is where (ideally) everyone is remote. Some takeaways:
Almost everyone in the room used Slack.
When there is an office and some people remote, if the people in the office all go in to a room to have a call with remote people, this will make the remote people feel even more remote as the people together will have a conversation between themselves that they can’t really be a part of.

Rethinking MVC with React Native & ReactiveCocoa

React Native is a React Framework for doing native looking mobile apps using javascript and React.  It looks pretty awesome.

ReactiveCocoa is a React style framework for Cocoa UI, also looks pretty awesome.

Pragmatic Microservices: Whether, When and How to Migrate

This was an excellent talk. Randy went through lots of things around moving towards a microservice architecture, recommend watching this one back when the vids arrive.

Production Haskell

Sustainability Supporting Data Variability: Keeping Core Components Clean while Dealing with Data Variability

Another really good talk, talked about how they added lots of custom logic and processing to their app without making it a mess.
Spoilers: Preprocessing data, hook points to allow specific extensions and validation.

Frugal Innovation and Scaffolding software

Really good feel good talk on innovation in Africa, when the video comes up make sure you watch it!

Thriving in a Stochastic World

Good talk for teams that try optimise for reliability in their process.


Day 2

Using Formal Methods to Eliminate Exploitable Bugs

Delivery Mapping: Turning the Lights On

Really Really good talk for anyone doing scrum, Slides are online but don’t make sense by themselves, watch out for the video.

Talks about the human-improvement side of this process, writing down what skills people think they have and what they’d like to improve on. Forming scrum teams based on the work that needs doing rather than trying to fit the work to the team.

Facebook’s Product Infrastructure

Talked about how facebook is just a giant hack and they like it that way.

Making Hacking Child’s Play

Really entertaining talk on how easy it is to hack poorly made sites.

Deploying and Scaling Microservices

The Future of Software Engineering

Good talk about the practice of Software Engineering. Everyone talks about how Software engineering isn’t real engineering, but when you delve in to it it turns out it is.

Designing for Failure: Scaling Uber’s Backend by Breaking Everything

Interesting talk about failures that Uber has had and how their architecture ended up like it is.

Simpulls two week post-mortem

Simpulls launched on iOS two weeks ago, this was the same week that Zombie Match Defense launched, which has been in the press due to it’s self proclaimed failed launch.
Simpulls unfortunately didn’t receive an Apple feature on launch, so it’s been even more quiet.

Simpulls has been received well by those who have picked it up, it’s sitting at 4.5 stars globally, even with some negative reviews from the French store – it turns out that Simpulls crashes on launch in this region 🙁 A fix has been submitted for this however!

This wasn’t the only issue, there have been a few random crash errors which are also fixed in the upcoming update. Finding all the bugs as a tiny team is really hard. The most annoying one is that in level 60 (a Totems and Mages level) some times people will get to the end of the level and not have enough totem pieces. I believe I’ve fixed this now (Pretty certain mages were clearing totem pieces), but I haven’t been able to reproduce it, so I’m not 100% sure.

Having your game launch on iOS without an Apple feature is a deathbell, your game will almost never be seen by anyone, thankfully I have been lucky enough to meet some of the amazing people who release games on iOS and they were awesome enough to do some cross promotion for me.

Thanks to these awesome people, we’ve managed to get a few hundred players, almost a thousand. This isn’t as much as I would have hoped, but overall I’m okay with it. It’s not enough to make any money, but considering this is the first game I’ve released in 5 years, at least there are people out there enjoying it finally.

So where to from here? The Android version will be releasing early December, I’m just working on the final touches now. After that we’ll probably release on windows phone too (replacing the old unity version) and any other mobile platforms I can get to.

Hopefully it does well enough somewhere to make it worthwhile to do a proper content update, we have a few more cool things we’d like to add in but we haven’t had the time. Sadly it isn’t worth working on for the amount of people we having playing it now 🙁


Thanks for reading, and if you haven’t already got Simpulls, go grab it on the app store now. (And tell your friends)

Simpulls finally launching on iOS this Thursday

For the last 5 years I’ve been working part time on a mobile game called Simpulls. If you follow me anywhere you’ve probably seen or heard something about it… It’s been a long journey, but I’ve learnt a lot and met a lot of awesome people.

Simpulls is a cartoony and quirky swipe based old-school matching game. Unleash the powers of the special Simpulls you discover on your journey through their lands to help you overcome the variety of challenges you encounter.

Simpulls is our ode to some of our past favourite puzzle games: Magical Drop, Puyo Puyo and Puzzle Bobble. We wanted to bring something new to touch puzzle gaming, something not bejeweled inspired.

So ready your fingers for some fast paced Simpull matching action. Save Simpulls by matching together 3 or more of the same color. Grab and release Simpulls using simple swipe gestures. Discover the lost tribes of the Simpull warriors, mysterious mages and you might even encounter the rare freedom portals. Are you ready?

And if you do the Twitter thing, RTs are greatly appreciated.

Getting started with Go Microservices and Docker

What is a microservice

First, you need to learn about the go language. Do these pages in order to learn the bare basics:

Then you’ll need to learn what docker is, read the understanding docker page:

And then go install docker and run their hello-world example:

Now hopefully you have the basics of go and docker down, so let’s grab an existing microservice and set it up.

On your docker host run:

tar -zxf master.tar.gz
cd go-docker-playground-master
docker build --tag=danzel/go-docker-playground:1.0 .

This will fetch and then build this docker image which contains a simple web server. Now we can start it up with:

docker create --name=test -P danzel/go-docker-playground:1.0
docker start test

Docker will automatically expose the server on a free port (Thanks to EXPOSE in the Dockerfile and -P in the docker create command line).
To see the port it has chosen:

docker ps

Then you should be able to open it by browsing to http://dockerhostip:port

Why I haven’t merged your Pull Request

When you have a popular repository on github, you can get a lot of Pull Requests.

Some of these are good, some need work and some should never be merged. As the maintainer it is your job to figure out what category each PR fits in to, work with the original author to fix any issues and finally do the merge.

But how do you decide what PRs should actually end up in the project?

The naive view would be to merge every feature. But what if that feature is only useful to one person? Is the person submitting that PR going to stick around to maintain their code in the future or (more likely) is maintaining that code going to fall to you? Is the feature even something that other users want?

Every change adds extra weight to the project that must be carried and updated when any refactoring is done. These features also add complication to the project that can hinder further changes. Sometimes the best change is one that makes the project more extensible without adding any features itself.


The way I deal with PRs that I’m not certain about is to let them sit. If someone else wants them they’ll hopefully come along and comment on them. Usually this works well, PRs that add or fix urgently needed things tend to have people on there asking for them to be merged.

Sometimes your PR won’t get merged or looked at because the maintainer has other things to do. The people who maintain projects on Github are people, they only have a limited amount of time in their day and they probably have a job they should be doing.

And finally sometimes the maintainer will miss the notifications so your PR never gets looked at. So don’t get too upset when things don’t get merged, wait a while



Ways to help your PR be merged

  • Explain why your change exists
  • Add tests
  • Fix build errors
  • Change anything that is requested
  • Bump it after a weeks in case the maintainer has missed it

Ways to help your PR not be merged

  • Break the build
  • Do a large amount of changes
  • Include automatically generated files