Categories
English Startup

My 2020 in numbers

Happy 2021! May all your pharmacy stock pay off and may your hodling enhance your riches!

What a crazy year it was. Covid-19 forced everyone to work from home and online conferencing tools almost brought down the internet… and (spoilers ahead) introduced the mass market to online streaming quiz games.

Last year I started extensive timetracking on anything work related and this year I did the same. Slightly less hobby projects this year, as QuizWitz took a bit of a jump and caused some gear shifting on our side. So only 9 projects this year (excluding the 3 projects I worked on under ‘Work for hire’).

ProjectHoursRevenueHourly
Quizkalender0,00€ 73,24€ 73,24
Work for hire1.523,33€ 102.970,72€ 67,60
QuizWitz748,00€ 32.958,94€ 44,06
Dolumar4,00€ 22,56€ 5,64
Quizfabriek218,50€ 1.000,00€ 4,58
Photobooth53,00€ 0,00€ 0,00
Eukles18,50€ 0,00€ 0,00
Administratie15,50€ 0,00€ 0,00
CatLab Drinks4,50€ 0,00€ 0,00
Same as last year I’ve only counted revenue and excluded all cost except for personnel cost that was directly related to the event (so when I needed an extra pair of hands to work on a QuizWitz event, the cost of those hands are not included in this revenue list). Servers, transport, equipment and other external labour are ignored (= left included) and all amounts are excluding VAT.

I’ve logged a total of 2585,33 hours which amounts to an average of about 53,86 hours a week (at 48 weeks / year, so holidays excluded). A fair bit more than the 44 hours I logged last year.

An overview

Isn’t it great when a project generates revenue without having to work on it? That’s how a silly website as www.quizkalender.com managed to jump to the top of my project list at €73,24 (google ads) revenue for 0 hours of work. That is an infinitive amount of revenue per hour! If only I had spent slightly more time on it…

Secondly, same message as last year: don’t quit your dayjob just yet. Working for the man still pays the bills. When comparing the numbers to last year, I must admit that I’m a little annoyed with myself for trading a 15% price cut for the convenience of working close to home, especially at a time when working from home is the default. No rights to complain ofcourse, but bills were paid 15% faster last year 😉

Thirdly, the big one. QuizWitz. Suddenly teleconferencing became huge and people had to be entertained. I managed to quickly adapt the software to take the streaming delay of YouTube and Twitch into account without affecting the gameplay too much and together with de Quizfabriek we started replaying old live-quizzes on YouTube. A few additional changes soon followed and we fairly quickly gained a bit of an online following.

After testing on a small scale, QuizWitz grabbed the attention of a few bigger players and after some nerve-wracking meetings, tests and experiments we supported a whole series of quizzes at www.huiskamerquiz.be with hosts like (start <namedropping>) Belpop Bonanza (Jan Delvaux & DJ Bobby Ewing), Nerdland (Lieven Scheire & Bart Van Peer), Bahamontes, Sofie Engelen, Xander De Rycke. Not to mention a whole bunch of these livestreams were filmed on the old Studio Mussle location where Mosselen om half twee was recorded for a while. (end </namedropping>)

Meeting your heroes whilst stressing out over the stability of your software and servers: big check! (Having your servers crash on one of these events and working through the night to fix them by next evening: also check.) We’ve also worked with Sitting Bull and Roularta to organise livestream quizzes.

Meanwhile de Quizfabriek started doing their own teambuilding activities. It’s awesome to see that something you helped setting up suddenly kicks into gear and starts accelerating without you pushing it forward.

While the events were ofcourse a strong push for QuizWitz, another thing started happening in april: online sales of the regular platform jumped to heights we had never seen. As soon as the surge started I started concentrating on usability and compatibility of the game and the platform (at this point it was mostly tested on google Chrome only, as this was the platform used at the events). We also wrote a manual on how to use the software in various situations and this seemed to help the sales as well.

QuizWitz made €10.358,82 in work (support at events, excluding extra hands) and €23.600,12 in licenses (including €1.445,01 on Airconsole). Of those licenses, €16.727,17 was made through online sales and €6.872,95 was made through livestream license fees.

As I try to conduct business in an open and transparant fashion (and maybe also because I hope one day an investor will cold call me) I’ve started sharing the QuizWitz key metrics in a publicly available online dashboard. It takes a while to load so be patient.

So yes, QuizWitz took a fairly big part of the year again.

Fourthly Dolumar. Hardly did any work, hardly made any money. Not much to talk about. There’s still a few people playing it, and that games is now 13 years old. Yay me.

Fifthly, we’ve already talked about Quizfabriek in the QuizWitz section. The €1.000,00 revenue I took for licensing is already included in the QuizWitz calculations above (that’s why the total license income doesn’t match the column at the top). While I am taking a little distance from the non-profit organisation, I’m still putting in a quite a few hours 🙂

Technology

And finally, the fun (open source) projects. The CatLab Photobooth project was a rather silly attempt to combine the NFC scanners (that we use at de Quizfabriek for digital drink vouchers) with a remote controller DSLR camera to generate a photobooth that was aware of who it was taking a picture of.

We’ve used it for the Harry Potter quiz to make sure we had a picture of each individual quiz team. It then uploads these pictures to an Amazon S3 bucket and we then used those to generate a little memento of the quiz and mail it to the players. The photobooth project only took care of taking and uploading the pictures, the rest was done by Mathias (from de Quizfabriek) in Python.

I also spent some time on Eukles, a project that currently doesn’t do much more than gathering events from various websites, send emails and send Slack notifications. But hey, at least QuizWitz users now finally receive a receipt when making a purchase.

The CatLab Drinks project also need(ed/s) some fixes. We’ve used it extensively (and by third party bar people) on the Harry Potter quiz and it is … almost stable. We still have some trouble with people moving the card away from the scanner too soon … but it is mostly safe.

Oh, and Tine and I bought a house.

Next up

Honestly, I don’t know. I’ve started talking to a few people on how to keep the QuizWitz ball roling. I poured a lot of hours in the project again and every release it feels slightly more production ready. Getting the damn thing to the market keeps being the real problem and I’m realising it’s not one I can fix alone. The end of the covid crisis will likely result in a drop of the salesnumbers as well, so getting some kind of marketing ball rolling will likely be very important.

I should probably look into getting that Work for hire average back to 2019 level. Even though I’m quite happy with the projects I’m doing at the moment, knowing that there are more lucrative deals out there sometimes stings a bit.

And, as soon as these vaccines are finally rolled out globaly, go on a long holiday and enjoy life a little more. That should probably be a little higher on this list 🙂

Thanks for reading and take care! See you in 12 months.

Categories
English Startup

My 2019 in numbers

Happy 2020! May all your companies turn into unicorns and all your projects be bought by Facebook!

I have a tendency to blindly jump into new projects, lose interest along the way and then abandon them. It’s been a constant in my carreer, so in january 2019 I decided to do something about that. I started doing timetracking on my just-for-fun projects.

Turns out I worked on 16 projects this year, some of them as little as half an hour. I have also kept note of any income generated by the projects, and calculated an hourly income. Note that I’m ignoring any costs involved (servers, transport, equipment and external labour), and all amounts are VAT excluded.

ProjectHoursRevenueHourly
Work for hire1.013,76€ 77.897,38€ 76,84
QuizWitz388,75€ 8.547,76€ 21,99
Dolumar10,25€ 78,67€ 7,68
Quizfabriek336,00€ 925,00€ 2,75
Quizkalender33,00€ 13,78€ 0,42
CatLab Drinks167,00€ 0,00€ 0,00
Kitten Race55,00€ 0,00€ 0,00
Werewolves34,00€ 0,00€ 0,00
Escape game21,00€ 0,00€ 0,00
Research project13,00€ 0,00€ 0,00
Administratie11,00€ 0,00€ 0,00
Word game11,00€ 0,00€ 0,00
Eukles8,00€ 0,00€ 0,00
Dolumar TCG6,00€ 0,00€ 0,00
Trading game2,00€ 0,00€ 0,00
Wittegeit0,50€ 0,00€ 0,00

Since this is the first year I’m doing time tracking, I don’t have running totals of the projects. The bulk of QuizWitz development has happened over the past few years, and a quick estimation shows at least 5000 hours have been put in before (by various people). However, to not completely lose my mind, I have decided to only measure this years activity.

In total, I’ve logged 2110,26 working hours, which is about 44 hours a week (at 48 weeks / year, holidays excluded).

An overview

Don’t quit your dayjob just yet is probably the lesson to learn here. I deciced to turn down a lucrative project in May, in order to take some time off and take on projects a little closer to home. It took a cut out of the hourly rate, but at least I don’t have to drive for two hours every day. But even then, pet projects don’t even come close to working for the man.

Next up: the big one. QuizWitz has been my main project for the past few years, so I’m happy to see at least some revenue coming in. Quizfabriek, a little lower on the list, should actually be added to QuizWitz as well, as any income from Quizfabriek comes in the form of license fees for QuizWitz. That brings QuizWitz to €9472,76 in revenue, or €24,36 hourly. (I’m not counting the 336 hours worked as a volunteer, since none of the other volunteers get paid either.)

The bulk of the QuizWitz revenue comes from offering support at live events and renting out equipment (so basically me doing actual work) totalling €6544,50. That means QuizWitz generated €2928,26 in software sales (including Airconsole).

Related, but not exactly the same: Quizfabriek, our now 10-headed non profit that tries to revolutionise the traditional pub quiz. As stated above, all revenue that is listed here comes out of QuizWitz license fees. All hours put in should be considered ‘unpaid voluntary work’, but just for funsies I split them up anyway.

I’m not sure what happened, but for some reason Dolumar also generated some sales this year. Not enough to keep the server running, but since this game was my first proper try to build a strategy browser game, I can’t bring myself to shutting it down. And obviously thousands of hours have sunk into the Dolumar project, so the hourly revenue is way off. Thanks for the support though!

The last project that generated any revenue was Quizkalender. This project was built to give to provide some free advertising space for our Quizfabriek quizzes. It uses data from various sites to compile the most complete overview of the Flemish quiz scene. When we’re not advertising our own quizzes, we’re using the space to show paid ads, resulting in a tiny bit of extra beer money.

On to another big time-waster, but one that has had a significant impact on the way we organise our quizzes at Quizfabriek. CatLab Drinks is a very rudimentary web based cash register system with support for NFC topup cards. It can be integrated in the QuizWitz quiz software, which allows players to order drinks from the bar during the game. When the NFC topup system is used, players can topup their card and all payments are done behind the scene, so that bartenders don’t have to worry about anything. I’ve released the code under GPLv3.

That leaves us with the projects that have had no value whatsoever. Kitten race was an attempt on an educational ‘classroom game’, but ended up being a refactor of our ‘CatLab Remote’ engine. That same refactored engine was then used to create a party game implementation of the game Werewolves (also known as Maffia in some parts of the world). Both games are still sitting on a shelf and might be released on Airconsole or Steam at some point in the future.

With Escape Game I wanted to see if the CatLab Remote engine could be used for a mass escape game, where tens to hundreds of people would try to solve a mystery or avoid a disaster, but I didn’t get much further than a few sketches.

Finally there’s a bunch of projects where I only spent a few hours on; prototypes that I still want to explore at a later stage. I even have a rough draft of a Dolumar themed card game, but it hasn’t come to the playtesting stage yet.

Technology

Overall, I’ve had a fun year. Not always productive, but I’ve played around with fun ideas and tinkered with lots of things I hardly knew anything about.

I’ve used DMX and WebMidi to automate moving lights and led pars at our quizzes. I’ve used WebRTC to stream QuizWitz to raspberry pi’s connected to displays (to avoid having to use HDMI splitters and unhandly cables).

I’ve played with NTAG213 NFC tags and readers to implement a cashless topup system and used html offline features to make sure the system runs even when internet connection fails.

I’ve made my old libraries compatible with npm and typescript, to make the game development less painful.

Oh, and I’ve also bought a new car!

Next up

I don’t think 2020 will be much different from 2019. I’ll probably try to put in some more work-for-hire hours, as you can’t spend every summer sitting on your arse, but I don’t think I’ll stop starting silly projects and giving up on them. It’s just too much fun.

I should look into more ways to get QuizWitz into the hands of event planners and quiz organisers. Everyone who’s used the software is enthousiastic and our very first client still calls us for every quiz they organise. I feel like I’m leaving a lot of potential on the table. I’m just not very confident reaching out and doing sales. Improving my business skills is pretty high on my list of new year resolutions. Or finding a cofounder who can handle that part.

Finally, I should finish renovating my tiny little house. I haven’t really done any construction work in 2019, and renovating a house of this size shouldn’t take 5 years to finish. 🙂

Categories
English

5 months of QuizWitz on Airconsole

Airconsole is an awesome project by Swiss startup ‘N-Dream’. It offers a ‘game console in the cloud‘ where the games are played on a smart tv / laptop / … and the players use smartphones to as controllers. Most games are party games, so there is an obvious match with QuizWitz.

QuizWitz has been available on Airconsole since july, and since there is very little information on how games on Airconsole generally fare (and there are no NDAs that prevent me from sharing), I’ve decided to share the results of publishing QuizWitz on the Airconsole network.

Statistics: QuizWitz is the 23th most popular game on the network, yay! I should note that the ranking changes frequently and violently, QuizWitz has been jumping between 40 and 20 for the past few weeks.
Revenue since July 2019. Lets not quit that dayjob just yet.

Airconsole has recently raised $3 million in a series A funding round, so I’m pretty excited to see where the platform is going from here.

Categories
English Mijn Wereld

How to fix a remote control (without any special products or tools)

One of my buttons from my remote has been broken for a while now. First I had to push really hard for it to work, now it doesn’t do anything anymore. So I decided to break the damn thing open and take a look inside.

The keys on most remotes are so called “dome switches”. They consist of a plastic sheet with buttons on it with a little black dot at the bottom. When the black stuff touches the pcb, the button gets pushed.

Turns out the black stuff didn’t work anymore. After doing some reading on one of ’em internets, I found out this black stuff is supposed to be conducting. Turns out my black stuff didn’t conduct anymore. I could easily fix it by buying some conducting paint or paste (according to the internets), except that I obviously didn’t want to wait a few days for the product to arrive.

On to another solution then: I took some aluminium foil and some glue and glued a tiny piece of aluminium foil to the switch. I then put everything together again and… tada! The button is working again.

Mind you that I have no clue how long the glue will hold, but with some proper glue it should be fine.

Happy glueing!

Categories
English Mijn Wereld World Wide Web

“Ye, people, hear my story”

An English post, for English people. My blogging frequency goes up another notch and I’m quicly approaching the 3 blogs a year border!

But enough about my blogging rituals. As some of you guys, my frequent visitors, might know, the National Novel Writing Month. The idea is fairly simple: write a 50000 words novel in less than one month. An easy challenge indeed; how hard can it be to write a fifty thousands word story?

Since last year, I only heard about it when it was half over, I decided to give it a try. Since I had completely forgotten about the weird contest, I heard the deadline started yesterday… yesterday. In other words, I’m starting on this in the purest form possible: without a storyline in my mind nor a letter on paper.

The only way to keep myself motivated to do this is to proclaim my victory here now. This way, if I succeed, nothing happens. But when I fail, I will fail you guys, my worthy visitors.

But do not dispair, I will finish this novel before the 30th of this month. I’ve blogged, therefor I will succeed. Bring it on, Novel! I can take you!

Categories
English World Wide Web

LinkedIn

I had some trouble logging into LinkedIn lately, so I contacted customer support.

This is the answer I got:

Categories
Dolumar English

Dolumar Art: Sneak preview

Here is a little sneak preview of what is to come 😉

Categories
Dolumar English

Dolumar Summer of Code

The Dolumar Summer of Code has began! Like we announced earlier, Dolumar would get some serious updates in august, so last wednesday we began.

More information on the renewed battle system and the improved GUI will follow soon. Most of the graphics will be replaced with brand new, very cool looking graphics and a bunch of new gameplay element will be introduced.

Stay tuned for more information!

Our main designer & art director at workSneak preview to the new Dolumar ;-)

Categories
English Mijn Wereld Spam Uncategorized

I love the Whole World

And here you can find the XKCD version of this song 😉

Categories
English World Wide Web

Thijs’ guide to UTF8

The Thijs way!
This might not be the best way, but it does work like a charm!

First of all: make sure your document is written in UTF8. This will make sure that all forms you submit (yes, even in xmlHttpRequest calls) will be encoded in UTF8.

Second: make sure that your database connection is using UTF8 aswell! Using UTF8 as charset in your fields and tables is one thing, you have to make sure that your connection is using UTF8 aswell! You can change the default charset in your mysql configuration files, but the easiest way to make sure you are using UTF8 is actually telling your connection to use UTF8.
mysql_connect (DB_SERVER, DB_USER, DB_PASS);
mysql_select_db (DB_DATABASE);
mysql_query ("SET NAMES utf8");

This way you will lose those ugly non-utf8 characters in your database.

Now let’s take a look at the xmlHttpRequest. This is fairly simple: what do you want to do? Submit a form ofcourse. What do we have to take in mind? & and = are special characters, so we can’t use those in the form. A simple escape in javascript should take care of that.

The html:
<textarea id="myfield">Some data</textarea>
<button onclick="submitForm();">Submit</button>

The javascript (function submitForm()):
// Only escape the form field
var myfield = encodeURIComponent(document.getElementById('myfield').value);
var req= getXmlHttpRequest (); // Use your own function here..
req.open ('post', 'index.php', true);
req.setRequestHeader("Method", "POST index.php HTTP/1.1");
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send ('myfield='+myfield);

How to receive it in PHP:
// Just remove the special url chars
$myfield = rawurldecode ($_POST['myfield']);

And that’s it really. Since your document is in UTF8 and your form fields are encoded in UTF8, the only thing you have to keep in mind is the “split symbols”. No need to encode or decode anything.