I am writing this blog post in response to a podcast that was put out a few days ago about Cube Tutor and some of the issues surrounding it’s current state of development.
I would like to thank Brad and Eric for producing this episode. They approached a topic that they have all the right in the world to be screaming and shouting mad about with a mature, level-headed, clear and polite tone. As you can probably imagine it was a really difficult thing for me to listen to, to hear the state of Cube Tutor laid out plain by two of it’s longest running supporters, who in spite of everything still continue to support the site financially through Patreon. They presented the information in a clear, factual manner and I have no issue to raise with any of the points that were made. They are right about everything – I haven’t kept up my end of the bargain and I have been woefully inadequate about offering any sort of communication, and for that I am truly sorry to all of you.
So how did I get here?
If you aren’t interested in the history of Cube Tutor then feel free to skip to the section: What went wrong?
Back in 2013 I was a developer at a large and successful software house. The job was good and looking back I have no complaints about it but it didn’t excite me, it didn’t give me a reason to get out of bed and throw myself into the day. I’d been a Magic player on and off for over 10 years and around that time I was really getting in to cube and was keen to build my own. In my spare time I started to develop Cube Tutor, really just for my own needs initially. As it grew and became more feature rich I put it out online and a couple of friends started tinkering around with it. From there I put a post on MTGSalvation inviting others to try it out and many people did.
Around autumn 2013 I realised that I had something with Cube Tutor. People were really engaging with it and it was making me very happy to be able to work on a site that I loved in my free time. I was approached by a potential business partner about the possibility of building Cube Tutor into something that could support me financially and the idea sounded like a dream. I’d grown somewhat tired of my job and the idea of working on something that I loved full time was hugely appealing. I handed in my notice and threw myself into it.
The first six months or so of 2014 were great! I was waking up every day, motivated to work hard on a site that I loved, to build it into something even bigger. Whilst I wasn’t getting paid to do anything at the time, I was able to support myself through some savings and with the promise of building this thing into a viable business I was happily working away.
I don’t really remember when it happened but it gradually became apparent that the business partner I had hoped to work with clearly didn’t have the same vision as me and simply wasn’t interested in pursuing our idea. Looking back I was probably a little naïve and for whatever reason it just didn’t come together. My savings were starting to run a little low and in the face of mounting running costs it became clear that continuing to offer Cube Tutor as a completely free service was no longer going to work. I could either go back to work and ask my users for a little help with the server costs and keep it ticking over or I could throw myself into this even further, work on my passion project and try and make something of it. There was no choice for me, I wanted to make a success of this.
I embarked on the Cube Tutor Champion program. This was a way for you guys to support Cube Tutor financially on the promise of some extra features for your account but more importantly to take the financial pressure off and allow me to actually work on improving the site. All in all I was working on this for the best part of a year before it would see the light of day but when it finally launched it felt great. Not only did people engage with it but I quickly achieved my second tier commitment on Patreon which allowed me to work part time on the site, as my job.
By the time the program launched, I was in quite a bad place financially. Having taken 18 months without pay, coupled with the thousands of dollars I’d spent on server costs, I really needed to get some income. It is really only with the support of a very loving and understanding wife that I managed to get to the stage where I could even launch the Champion Program and for that I am very lucky. Thank You.
However even with the overwhelming support from the community, it just wasn’t enough to keep me going and I had to take on another job. I was offered an opportunity that would fit very well alongside my 1-2 day a week commitment on Cube Tutor and it is a job that I continue to this day, part time. I am also very thankful for that opportunity as not many traditional jobs would be so accommodating and understanding of the time that I needed to spend working on Cube Tutor.
Along with the launch of the Champion Program came a flurry of feature requests from users who knew what they wanted out of the site and for the first few months up until October 2015 things were going great. I was putting out regular releases, resolving feature requests and generally keeping up with my Patreon promise. The feedback I was getting around this time was along the lines of “these features are great, but when are you going to tackle one of the bigger ones, like getting the site working on mobile?”. Back in the beginning I’d never imagined that I’d be at the stage where people would be using CT the way that they are and it hadn’t really been built with mobile devices in mind. This was a huge undertaking. I went back to my Patreon supporters and said, “OK I can do this but I’m no longer going to be able to keep up with 1-2 Feature Releases a month, this is 6 months of hard work on it’s own”. You guys were very supportive and said, “Hey, great! Go for it!”. I set off to build a mobile UI on top of Cube Tutor.
In a lot of ways I think this was a turning point as I’d gone from my familiar territory of churning out small releases and bug fixes into something much bigger. Even in the days when I was developing the Champion Program I was still putting out regular releases. This was the start of the decline in my communication, something which there is just no excuse for. Nonetheless I did work hard during those six months and came out the other end with a mobile UI for drafting, something which I offered up for Beta Testing in the Summer of 2016. The feedback was generally very positive and I went back into development with a view to completing the work and getting it released.
What went wrong?
Then a bomb hit. I’m going to talk a little technically over the next couple of paragraphs, but I think it’s important to be as clear as I can about what happened. I learned overnight that Apache Tapestry, the framework that Cube Tutor was built on had come to the end of it’s life and the founder of that framework would no longer be supporting it. This shouldn’t have come as a surprise to me, Tapestry was a framework from an older time. It hadn’t really been built with mobile in mind and eschewed the current industry trend of running scripting languages on the client and the server. It was a slow moving relic that didn’t really belong in 2016. I had only chosen Tapestry in the first place because it was quick to develop on and familiar and I didn’t think this project would ever see the light of day anyway. If there is one decision I could change in all of this it would be that one, of course hindsight is 20/20.
Up until this point Tapestry had a very active community of developers who were not only improving the framework but were producing plugins to extend it. I made heavy use of these plugins for many things including upload widgets, jQuery integration and server-push functionality that is leveraged heavily in drafting and grid drafting. This framework and it’s plugins were the foundation of Cube Tutor and without them being actively maintained, I just didn’t know whether I should continue with the mobile rewrite, for something that would probably need to be rewritten again in short order. I found myself trying to modernise something from a foundation that was never really modern in the first place and now wouldn’t even be maintained and current. The web development industry has moved quickly over the last ten years and without the support of something that would see Cube Tutor safely into the next ten, how could I continue with Tapestry? For a few months I was spinning. I was partly carrying on with the mobile work, partly prototyping other frameworks but mostly just lost and unsure what to do in the face of this problem.
In the middle of all of this, another problem struck. Not only was Cube Tutor built on a dying framework but it was also using a slightly outdated version of that framework. It was (and still is) running on the 5.3.X version of Tapestry due to it’s dependency on some of the previously mentioned plugins which aren’t compatible with with the latest 5.4.X release. Unfortunately the 5.3.X version of Tapestry is using an older version of Java, Java 7, another relic and my build server decided to stop supporting Java 7. This means that I couldn’t actually build the code base for release. In itself this problem is not insurmountable. I could change build servers, build the site locally or potentially look at modifying the Tapestry plugins myself to bring them in line with the 5.4 release of Tapestry and Java 8. However, coupled with everything else it felt like the final nail in the coffin of Cube Tutor on Tapestry.
I can’t exaggerate how much work it would be to go back to the beginning and rewrite Cube Tutor again on a new framework. I took the best part of two years working full time to get it to where it is now. With my other professional commitments and the prospect of starting a family soon I just simply couldn’t contemplate doing all of that work again, it wasn’t possible.
My biggest shame in all of this is the lack of transparency on the matter. I wish I’d had the courage to just say “look guys, here’s where I’m at” but I wasn’t used to that. I was used to solving problems and presenting nice completed work and improvements to the adoration of the community. Brad and Eric read out a PM conversation that I’d had with Brad last year where I talk of embarrassment and that’s the only justification I have. I don’t know what to do about this problem and have been struggling to see a way out of it for a long time now.
Where are we now?
Simply put I can’t currently update the site, other than the stuff I can change through the database like new cards, featured cubes and average cubes. My life is no longer full of the free time that I had the luxury of in 2014 and I simply cannot afford to go back to a position of Patreon-only income to support myself on Cube Tutor full time to rewrite the site and even if I could I now have other long term professional commitments to keep that have a demand on my time. All of that said, in order to keep Cube Tutor up I need to cover the running costs which are currently averaging around $700-750 a month. A combination of those three things has left me just treading water, spinning, not knowing what to do.
As for the money itself, I haven’t touched that in over a year. I have a separate account for all of Cube Tutor’s Patreon earnings and the extra money on top of what I have had to pay in costs and tax is for the most part just sitting there. Back when the Patreon started and I was still working on it actively I would withdraw the money regularly but I don’t feel like I have earnt it for a while now and so there is a small pot of money that has accumulated which could, at the very least cover the server costs for a little while if Patreon support dramatically reduced after this post as I expect it may.
So where does all of this leave Cube Tutor? Well the answer is still that I don’t know. Brad and Eric kept coming back to this point that I’d been mentioning “an upcoming blog post” for a long time without ever delivering on it and I guess I was putting it off until I could offer at least some sort of a light at the end of the tunnel but right now I just don’t know what that resolution is. All I want to do right now is be honest and open about the situation, something which I should have done a long time ago. It’s not fair on any of you guys and particularly those who are making decisions to support Cube Tutor based on my Patreon commitments.
The most important thing is that the information is finally out there and it’s a fundamental and somewhat cathartic step for me to take to write this. I’m treating this post as the first step back in the right direction towards working out a solution to the problem, in lieu of knowing what that solution actually is. Thank you again to Brad and Eric for being the catalyst. I’m sorry that things got so bad that you felt that you had to produce this podcast and I am sorry to everyone else for letting you down and not having the courage to write this off my own back a long time ago.
More than anything I love this site and this community and I am very proud of it but hand on heart I don’t know how I can find a way to continue with it in the face of the obstacles that I have in front of me. What’s my ideal solution? To find a way out of this where Cube Tutor remains the most awesome cube platform available on the web, something I can be proud of and that you guys will love once more.
I don’t really use Reddit a whole lot but as ever I am contactable via email: firstname.lastname@example.org.