Open Sourcing BuiltWithAurelia.com

Over two years ago (wow, has it really been that long?) I launched builtwithaurelia a showcase of Aurelia applications and community created offerings for the Aurelia Javascript framework.

When I launched I didn’t open source it because I didn’t want the pressure of having to put out something clean and perfect. I hacked this thing together quite quickly and over time slowly grew it to what it is now (sort of complete).

The Aurelia team are hard at work on vNext of Aurelia, soon to be the latest and greatest version of the Aurelia framework. As part of Aurelia 2.0, the team wanted real applications they could test against to ensure no breaking changes would be made.

I made the suggestion in the core team chat that I would open source Built With Aurelia and sure enough, two weeks later I did just that. The cool thing about this app is not the fact it’ll help prevent breaking changes and bug regressions, it’s another learning point for anyone wanting to build Aurelia applications.

The application is comprised of:

  • Aurelia Store for state management
  • Aurelia Validation for validation
  • Aurelia server-side rendering (from within a Firebase cloud function)
  • Hosted on Firebase and uses Real-time database for data

At present, there are no tests and the codebase is still messy, but over the next few weeks now that it is public I will be overhauling parts of the app (some two years old) and making it nicer to look at. I will also be writing tests for this as well.

I am glad I can share it with everyone and it’s MIT licenced, so go to town if you want to use it as a starting point for any Aurelia applications you want to build.

The code is on Github here: https://github.com/Vheissu/builtwithaurelia – please feel free to submit pull requests.

Expensive Lessons Learned Running A Free File Hosting Web Service

Towards the early part of 2017, I embarked on creating a bunch of quick single-purpose web applications to keep myself busy and sharp. One of those apps was a temporary file storage web application called Tempfile.cloud.

The premise was simple: you get 1gb of free upload space and your files have an expiry of 24 hours.

I threw some advertisements on there and then shared it around. Surprisingly, it got some traffic. Turns out file sharing sites not covered in malware-laced banner ads/widgets, require you to signup and have no Russian tracking scripts resonate.

I did the numbers and the cost of storing even a few hundred gigabytes of files was going to be cheap on Amazon S3, both the bandwidth and storage costs. Using an S3 bucket policy, I was able to automate the deletion of files after 24 hours.

The site didn’t really generate any income for me and it got a few thousand visitors per month, people were using it. Costs for the first few months were not even $1 and the ads (whilst not very profitable) were covering the costs (and then some).

Then one month it all changed… I got my monthly Amazon bill and almost had a heart attack. My beloved sub $1 application just netted me a bill for almost $500 for just one month.

I immediately went to Amazon thinking it was some kind of mistake that my bill had jumped so much.

Once I realised it wasn’t, I then started digging. Did I all of a sudden start to get more users because people loved the product, was my site being used as a new Pirate Bay replacement or the next Wikileaks? I had to know.

The traffic stats were not showing a spike in new users, I didn’t make it to the front of Reddit, Product Hunt or Hacker News. Turns out a few standard definition movies had been uploaded, that’s just where it starts.

Digging even deeper, I realised that not only were movies being uploaded, but my site had inadvertently become a movie streaming platform and a couple of videos shared on a forum. Thankfully these were not dodgy movies (I log IP’s anyway).

It turns out I had failed to enforce uploaded files are to be downloaded by the user. This meant I had created a site where you could upload any type of file and then hotlink it (for 24 hours). Movies and music, anything you can stream. I had just created a Netflix for piraters, without the discovery UI.

The lesson here is, if you’re going to allow files to be uploaded and you’re not restricting the type (like me), make sure you enforce a policy which always forces the files to be downloaded. Otherwise, you could be drowned in a sea of expensive bandwidth fees.

The story didn’t end badly for me though. Kudos to Amazon, when I reached out to them they wiped the entire bill and understood that it was a mistake (even if it was my fault). They didn’t have to do that, but I am grateful that they did.

As for the site. It is still up here – however, file uploads are disabled. I am planning on re-enabling them shortly once I sit down and make sure this kind of thing doesn’t happen again.

Seo.fit: SEO analysis

For a while I’ve had a great domain name just lying around and it dawned on me what it could be a while ago, so I decided to use seo.fit for a SEO analysis tool that gives you SEO information about a domain and improvements. The purpose seemed fitting for the domain.

It’s not an original idea because there are tonnes of these sites around and admittedly, it didn’t take hardly any effort but it’s a step in the right direction for me by actually following through on my side project ideas and launching them.

For the moment, I’ve got a book to finish (so no more projects for a while), but in 2018 I’ll be focusing on releasing more little side projects like this, with the end goal being to create enough side income I can work on bigger and better ideas.

Check it out: https://seo.fit

TidyFork: Cleanup Outdated Forks and Old Starred Repositories

As a developer, I love Github and use it to not only contain my public and private development projects, but also follow other interesting projects. Sometimes I’ll fork a project if I want to contribute to it or star a repository if I am interested in using it now or later.

I joined Github on August 18, 2010 so I have been an active member of Github for seven years now.

In that time I have forked and starred quite a few repositories. I am generally pretty good at deleting unused forks, but I still had a few that dated back by quite a few years.

When it comes to stars however, my development skills and preferences have changed in the past seven years. In 2010 I was still doing a lot of PHP work, I also dabbled in Ruby/Ruby on Rails as well as Python and so on over the years.

At the time of writing this, I have 454 starred repositories which equates to 16 pages of repositories when I view them in the stars tab of my profile. I know developers who have three times that number.

Deleting old forks is a painful experience. You have to enter the name of the repository to confirm you want to delete it and confirm your password. Imagine having 200 forks accumulated over the years and having to delete them one-by-one, it would probably take you a full day at least.

Unstarring repositories is a little more straightforward, but if you have starred a lot of repositories it can be tedious going through and unstarring them.

This is why I created TidyFork. Originally it was just for cleaning old and outdated forks you’ve forgotten about, then I expanded it to also allow you to cleanup old starred repositories.

Running TidyFork over my account yielded my first ever starred repository was Modernizr. Other repositories listed include jQuery plugins and grid systems, PHP libraries, API bridges and pretty much anything else you can think of.

The goal is to expand this tool even further, allowing you to specify criteria and being able to automatically delete forks and starred repositories. At the moment you have to manually choose what you want to delete or unstar, everything is ordered by when it was last updated for forks and for stars, the earliest star.

I built TidyFork mostly for myself, but it might be valuable enough that others might get some use out of it.

January Side Project #2: tempfile.cloud

I know, I said another side project would be coming in February, but I have created another quick little Aurelia side project for January.

Introducing tempfile.cloud a temporary file storage service using Aurelia, Node.js and Amazon S3.

I find most free temporary file services are horrible, the limits are too small and they’re littered with inappropriate ads and pop up windows that tell you that your machine is infected.

I wanted a simple way to share files that didn’t require Dropbox or a dodgy third party service. The site does have ads, but only two of them in the sidebar (quite unobtrusive).

This was surprisingly easy to build, most of the time was spent making it look somewhat okay on the eyes. I am not a designer, though.

Well, that’s it for January side projects, now until February.

January Side Project: Namemyband.net

I’ve made it a kind of New Years Resolution to build little silly, niche apps in 2017 and onwards. And doing what I said I would do, I have built something silly for January.

My first app is a band name generator called namemyband.net.

The premise is simple, you get a random band name. If you’re not happy with it, you click the blue link to get another. It’s not perfect, but it was a quick app built using Aurelia (did you expect anything less).

The name I just got for my next band was: Vigilante Dentist and you know what, it’s not that bad. I think it sounds awesome, for a metal band or something perhaps.

Who knows, maybe someone will actually get a band name from this thing and go on to be famous and rich.

My planned side project for February is going to be a way more ambitious project that’ll be more than a band name generator.