Ramblings of a Tampa engineer

For the 3rd week in a row I'm blogging about a project I created and let slowly die in the wind.

This was Leafapp which is the only domain that remains in my control after owning:

  • leafapp.co
  • trunkapp.co
  • treeapp.co
  • stumpapp.co
  • twigapp.co
  • branchapp.co

Funny enough, the domains were either gifted to me or purchased myself at the $12/year mark. Little did I know that renewals could be different than the purchase price so I found myself with a $30/renewal per domain per year. That instantly changed my dream of having a different Halo modding site on each domain and I let them go one by one. A friend took over BranchApp and I kept LeafApp and let the others expire.

Though, we have to turn the clock back to learn what Leaf really started at. It began in January in 2013 based on Halo 4 and Halo Waypoint. Scraping an API that the website used - a friend (Xerax) discovered you could just emulate that flow and login programmatically to extract the token needed. So he built Auntiedot which provided the credentials Leaf used to authenticate against Halo Waypoint to pull stats.

Leaf - Early 2014

Looking back at this image, Leaf looked pretty cool compared to the Leaf of 2016, but the code was horrific. The codebase was a CodeIgniter install with MongoDB as the database. I quickly learned that MongoDB was not a tokenized database yet (ever) and I was storing very long key names of many many records.

My $2.95/month oversold shared hosting did not like that and I found myself in a bit of pickle with constant resource abuse messages. So I thought I could cleanup the database with its 200k~ records with manual tokenization.

/**
 * Our enum of Layout for the Halo 4 profile. Due to the use of MongoDB, it replicates the category names
 * in every file of the collection. Thus you can store
 *
 * array(
 *    'totalKills' => 123123
 * )';
 *
 * OR
 *
 * array(
 *      1 => 123123
 * )';
 *
 * (in every file of the collection). So each of the above arrays times 200,000.
 *
 * The ID then corresponds to this enum. Saves a few bytes here and there which adds up.
 *
 */
July 22, 2013

This resulted in a weird database where all the keys were numerics only readable from my enum file. This meant my mess of databases was MySQL, MongoDB and even redis for a cache. This was a disaster and the project while looked pretty slick was horrifically buggy.

So I shut it down and decided to rewrite it in Laravel. My next biggest mistake was trying to use the abomination that was the database of the previous Leaf in the new codebase.

This led to models in Laravel that looked like:

protected $guarded = ['0x00', '0x15', '0x16', '0x18', '0x2a', '0x3d', '0x3e', '0x3f', '0x40', '0x41'];


public function get0x1dAttribute($value)
{
    return self::unpack_msg($value);
}

So I gave up and put the site on hold. Competitors were far more succesful and I lost the chance to compete, but I very much enjoyed using Laravel instead of CodeIgniter. So I decided to resume Leaf with Halo 5.


When Halo 5 launched the idea of true competition was born - leaderboards with seasons to track placement was the perfect idea for Leaf to track. So I built a leaderboard that requested the top 250 gamers for every playlist and tracked it. Additionally tracking the movement up/down the leaderboard to provide visual indicators of the progress of an agent.

This was a new Laravel project on Laravel 5.2 - the UI was more professional and designed in a far more standard way then previous iterations. I additionally spent a lot of time on attempts at SEO techniques with automatic sitemap generation and proper meta tags. All in all, Leaf never really attracted any viewers. It worked for years without a commit and one day stopped syncing data - I never dug into why.

Like ReachStuff and PandaLove - my focus went elsewhere and this project just stopped getting updates and was abandoned. Looking back at the code - it's also very embarrassing.

A little tidbit - I attempted to launch Trunkapp doing Halo stats as well in Revel (a go framework) and was massively in over my head so gave it up.

When another Halo game comes around - who knows maybe Leaf will make another appearance on a new written codebase.

You’ve successfully subscribed to Connor Tumbleson
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.