Trello Tasks – A Chrome Extension

Trello Tasks – A Chrome Extension

So I am taking a little time away from games development at the moment to explore a few other projects and ideas. I want to solve real problems that either I or others have had. I want the projects to be short so I don’t get bored and frustrated and I want to also learn new techniques and technologies as I build them.

The first of these little projects is called Trello Tasks.


The TL;DR of Trello Tasks is: it augments Trello by turning Cards into “completable” tasks.

I have spoken about Trello before but if you arent familiar with Trello its a super simple, popular and free Kanban style app designed to organise any data. You can create any number of “Lists” which you then populate with “Cards”. You can add images, links, comments etc to cards which allows you to organise just about any sort of project.

One of the most common ways to use Trello is in the “ToDo” style. In this style you have three lists, ToDo, Doing and Done:


In this style, when you start work on something, you move it from the “ToDo” List to “Doing” List then when its complete you move it to “Done” List.

This is all well and good but what if you use a different system of organisation such as arranging the items by category:


Now if you want to indicate that you have read a book or watched a movie you would have to either drag it into the “Done” list (and loose the categorisation) or create a “Done” list for each category. One other option is to “Archive” the card but doing this removes it from the list altogether.


So I decided to try and solve this very particular but annoying problem. My solution is to add a checkbox to each card. Now cards can be marked “complete” and “uncomplete” by simply checking the checkbox.


The extension works by piggybacking on Trello’s comments system. So each time you complete or uncomplete a task the extension adds a comment to the card.


This means that in a multi-user board you can tell who completed or uncompleted a task and syncing “just works”:


So I think its a pretty neat solution to a problem that I personally have had while using Trello. You can grab the extension now and for free from the Chrome store:

I have a few more ideas like this I would love to explore and solve over the coming weeks so stay tuned!

Startup Weekend Perth 2015 – Tuckr

Startup Weekend Perth 2015 – Tuckr

So this weekend I took part in an event I signed up for some time ago: Startup Weekend, Perth. Startup Weekend is an event where teams all over the world come together to build a startup over the course of a weekend.


Being very interested in startups as I am and having enjoyed GovHack earlier this year I thought it would be a perfect event for me.

It started on Friday after work. We piled into the startup-hub Spacecubed on St Georges Terrace. After a few looseners and semi-nervous chitchat we were soon taking our seats for the introduction presentation by the excellent Marcus Holmes.

2015-11-13 19.49.25

After the short talk split into informal groups to play “Startups against humanity” (I think). Each group was given a “Problem” and a number of “Solution” cards. In typical Cards Against Humanity style, the problems and solutions were suitably ‘humerous’ in nature.

As I understood it, the purpose of this game was to get the creative juices flowing. For me tho it just seemed to devolve into a shouting competition with the loudest people making the decisions. Being small and on the outside of our group I couldn’t really see what was going on or contribute. Instead I just decided to take a bathroom break and wait for it to finish.

Thankfully the game was only played for a brief time before the real action started, pitching time. The pitches were held in the same fashion as Govhack. Pitchers would line up and take turn for one minute each to pitch their idea to the group.

This whole process went rather smoothly, all credit to Marcus and his team there for keeping the pitches moving rapidly. Infact the entire event was run very well, it felt much better organised than Govhack, but then again it was the 7th time it had been run.

2015-11-13 19.49.27

After presenting their concept the pitchers knocked together quick posters and affixed them to the walls. We, the non-pitchers then went around the various posters and deliberated over which one we wanted to join.

At Govhack we were given little stickers to stick on each poster to show our interest. I didn’t see the point in that at Govhack so thankfully that process wasn’t followed through at Startup Weekend.

The mistake I made at Govhack was to deliberate for too long. I couldn’t make my mind up at that event and very quickly the teams had formed and I was left at the end wondering around like a lost lamb wondering where to go.

I was determined not to make that mistake again so after one quick lap of the available options I decided upon Mary’s “Stop the hangry”. I chose it because the idea was simple: “Develop an app that maps food trucks in Perth”.

The idea resonated with me as I could quite easily see a situation: it’s late, you want to eat, all the good restaurants are booked and you don’t want take away or Maccas yet again, what you really crave is some wood-smoked-ribs or perhaps spicy mexican tacos but you have no clue where that food-truck you saw that one time would be.

When Mary pitched the idea I was stood at the back of the room and noticed quite a few people nodding their heads around the room. For me this was also a good sign that the idea was good, it was an instant crowd validation.

So I signed up to “Stop the hangry” which eventually turned into “Tuckr”. The irony is that Mary already knew of me via my blog post of Govhack, she had even downloaded Mr Nibbles for her children to play, we were going to get on just fine :)

Surprisingly (to me at least) we struggled at first to get the required 5 team members. I thought the idea was solid but it seemed like others weren’t so sure. It also looked like I needn’t have rushed into my team choice as the group forming stage took much longer than the Govhack event.

I had quite a few offers by other teams to join them. It seemed like developers were very much in demand at the event and hot property. I was sold on the food truck idea however and instead tried to convince them to join us instead.

Just as the situation was starting to look dire, Mary and I we finally secured our third Member Adam then soon after Trent, Daniel and finally the golden catch, Sydel the designer, an even rarer breed than developers at Startup Weekend.

2015-11-14 12.53.23

So we had 6, two developers, one designer and 3 non-tecchies, an ideal composition, things were looking good so we set to work.

It had been heavily suggested to us, then over the course of the weekend hammered into us, that if you wanted to win it wasn’t about building the thing, it was about validating that people wanted your thing.

Now this is the critical rub for the entire event for me. The more and more I go to events like this and other startup related meetups I find out about the type of person I am and what drives me. I am discovering that I driven by the technology of the product rather than the process of business creation itself. I love to make the thing not necessarily make the business that makes the thing.

I totally understand that the business is completely necessary. You must have a vehicle to drive your product and more importantly you need to make sure you are creating the correct product in the first place. This process is what Startup Weekend is all about and unfortunately for me, not about actually creating the thing.

In hindsight this is kind of obvious, the event is called Startup Weekend, its about building a startup in a weekend. It’s not a hackathon like Govhack which is all about hacking together various technologies to solve a well defined existing problem.

So although I really wanted to make the actual app, we decided it would have been better if we just concentrated on making a landing page and designing how the app would look and function. These things are what the judges are actually looking for, not an actual working product.

2015-11-14 16.47.21

So until 8pm on Friday, 10pm on Saturday and 4pm on Sunday I hacked together a landing page: with Adam whilst Sydel produced some awesome mockups for the app. Daniel, Mary and Trent spent the time trying to validate the idea and develop the business model.

During the entire weekend we had regular “check-ins” where all the teams would come together in the main Spacecubed area and let others know what they had been working on and what difficulties there were having. It quickly became obvious that many of the teams were far ahead of the curve. By Saturday morning some of them already had a landing page or product and some had even already generated revenue.

I found check-ins both inspiring and depressing. The were inspiring because could see that other groups were suffering some of the same problems to you but it was also sometimes disheartening to hear how far ahead some of the teams were.

2015-11-15 11.36.01

Soon enough Sunday afternoon rolled around and it was time to present our startup to the the rest of the teams and hopefully win over the four judges.

The presentation process was much better organised than Govhack. Instead of each team going up and individually connecting and disconnecting their laptop from the projector (which took ages and untold number of problems) every team was required to submit their slides 1 hour before we were due to present. That way a single laptop was used to run the slides. It also meant that there was no way you could have demoed a product even if you wanted to.

Our presentation went well, Mary did a great job of presenting our business concept to the room while I cowered backstage clicking next on the slides.

Sadly tho we didnt win this year, there was some truly excellent competition in the form of Veri Vote, Codename Canary and YoPro. Hats off to those guys, they did an excellent job and Veri Vote and Canary had especially great solutions.

Special mention should go to Mulch Club too who were a twice disqualified team (no fault of their own) who managed to generate close to $1000 over the course of the weeknd which is just phenominal.

So after the awards ceremony the event was wrapped up at 8pm. I enjoyed my Startup Weekend, I learnt a whole bunch about business and startup creation and about myself. Would I do it again? Im not sure, I learnt a lot but I think I had more fun at Govhack where we hacking tech together to solve existing problems.

Massive thanks to my awesome team, you guys did a great job and I hope we can stay in touch and perhaps team up again next time!

2015-11-15 19.53.33-2

Tinkering With Entitias – Entitiasteroids

Tinkering With Entitias – Entitiasteroids

EDIT: Check the comments for an excellent reply from Simon, creator of Entitias.

Last week I wrote a couple of blog posts about my work on Unity Ash:

After publishing those I was contacted by a friend about another Unity Entity / System architecture called Entitas.

After giving it a read and watching the Unity Europe 2015 video I knew that I had to tinker with it.

Entitias is similar to Ash in that it is an Entity / System architecture that works in Unity but it differs in its approach.

Compared to Ash, Entitias favours a much more pure, immutability focused approach where components are added, removed and replaced instead of having their state changed. Systems react to changes by watching when matching groups of components are added or removed from a pool.

On paper it looks like a better approach to Entity / Systems in Unity than Ash as it means that Components are pure objects with no dependencies upon the Unity engine at all (Ash components extend MonoBehaviour). No dependencies on Unity means that the same code can be run on the client and server.

To dig a little deeper into Entitias I decided to port the Ashteroids example I did for Unity-Ash to Entitias, I called it Entitiasteroids:


So what did I learn in the process?

Code Generation

Is mostly awesome. I really love the easy to read fluent interface it lets you construct, I mean just take a look at how beautiful and expressive this is:

public static Entity CreatePlayer(this Pool pool, bool controllable)
	return pool.CreateEntity()
		.AddPosition(0, 0)
		.AddSpaceship(0.5f, 0.02f)
		.AddForce(new List<Vector2>(), 0)

My only complaint is that the code generation can sometime be annoying to work with because it requires that the app is in a compilable state to run. You can quite easily get into catch 22 situation where you need a component to make a System compile but to make the component you need to generate code, which requires that the app compiles.

I mentioned this issue to Simon Schmid, the author of the project, and he agreed. The reason it requires a compiling application is because the code generator currently works via reflection. There is a Roslyn compiler for Entitias which may solve the issue but its still quite experimental.


I miss prefabs. Look at the code example above, notice those hard-coded values there. After working with Unity’s method of inspector based configuration objects it just feels wrong to go and put magic numbers back into the code, forcing a recompile each time you want to tweak a value. Using this method with teams could be quite troublesome too as the coder will be required for each minor value tweak.

I think Unity-Ash excels here as you just create prefabs as normal with components as normal, the only difference is how those components are handled at runtime.

Interop With Unity Components

Retrieving data from Unity components such as Rigidbody2D and Transform can be quite painful. Perhaps I wasn’t doing it right and it may well be a totally necessary side effect of removing the Unity dependency from components but the copying of data from Unity components to Entitas components then “rendering” Entitas component values back to Unity components just felt cumbersome and confusing at times.

Cryptic Error Messages

During development you would continually run into errors such as:


Its quite difficult to read and follow whats happening here. Named components would help instead of index’s but even with that it can be tough to understand whats going on. Unity-Ash doesnt have this problem really as you rarely ever interact with an Entity directly, you always go via a Node so you can be almost guaranteed that the components exist upon the entity.

Im not exactly sure why but sometimes adding IEnsureComponent to a system fixes some of the errors but I wasn’t really sure what it does.

Minor Annoyances

+ It would be nice if there was a utility to automatically add systems to the Systems object. Often you spend a lot of time wondering why your code isnt working, often its because you forgot to add the newly created system to the Systems object.

+ To keep things immutable, whenever you want to change a value in a component you must use ReplaceX() methods. This is a bit of a gotcha at first but once you get used to it its okay. The only problem is that the ReplaceX methods require that you supply the entire list of properties for a component. This can be quite annoying and verbose if you want to change a single property or simply increment or decrement the existing value;

+ Reactive systems are one of the best things about Entitias but 99% of the time you end up writing something like:

public void Execute(List<Entity> entities)
	foreach (var entity in entities)

It would be nice if that list was looped for you so Execute just supplied a single Entity.

+ Example projects listed on the Entitias github seems to use different versions of the library, so it can be quite confusing when looking for examples for how to do something when the examples all look different.

+ Some of the callbacks in Entitias start with a lowercased letter such “trigger” “ensureComponents”, this is strangely inconsistent with Unity and C# in general.

public TriggerOnEvent trigger
    get { return Matcher.AllOf(Matcher.Force, Matcher.Rigidbody).OnEntityAdded(); }


Despite the above bitching I think Entitas is really nice. I am really impressed at how clever it is and the refreshing take on Entity / Systems architecture. The Code Generation is really nice and the immutability model for the framework is really powerful.

I do however think that it would be more difficult for people coming from Unity to pick up than Unity-Ash due to the pure-code nature of the entities / components (instead of Prefabs), the hoops you have to jump through to use existing Unity components and the difficult to debug errors.

I think that there is much that could be applied to Unity-Ash to improve it and perhaps bring some of the cool features from Entitias, but thats a tinking for another day :)