diff --git a/_posts/2014-12-08-hostr-how-i-got-to-here.markdown b/_posts/2014-12-08-hostr-how-i-got-to-here.markdown new file mode 100644 index 0000000..2f80f53 --- /dev/null +++ b/_posts/2014-12-08-hostr-how-i-got-to-here.markdown @@ -0,0 +1,55 @@ +--- +layout: post +title: "Hostr: How I Got to Here" +--- +Back in 2006 I started what was then called Localhostr. I was in second year at University and looking to build a web app for the experience. The name was supposed to be a parody on the "web 2.0" trend that was happening around that time, but I really wish I came up with something better now. + +At the time, Tinypic and Imageshack were the loathed kings of image sharing, and there wasn't really any way to share other kinds of files easily. +I figured I had sufficient PHP chops and my $10 Dreamhost account would be enough to take on the challenge. Mostly, I just wanted somewhere I could upload things and easily hotlink them to my friends on IRC and elsewhere. + +In early May I put the site online. [Wayback Machine](https://web.archive.org/web/20060521194406/http://beta.localhostr.com/) kindly grabbed a copy. + +Localhostr homepage in 2006 + +For the next few months I would get tens of visitors every day. The site did one thing well and I was pretty happy that anyone other than myself used it. + +Then on October 20th someone submitted it to [Lifehacker](http://lifehacker.com/208989/host-files-in-a-flash-with-localhostr) and the next day it hit the Digg homepage. + +People seemed to like the way it presented the whole process up front as three simple steps. + + +In hindsight it was an immense opportunity, but I had neither the technical ability or the connections to do anything with. I was still at college and working 4 or 5 days a week just to support myself. Regardless, I was happy to have a project that people liked and used. + +Graph showing Digg/Lifehacker traffic spike + +Over the next few years it went through some redesigns and rewrites. I discovered Codeigniter, and rewrote it around that. Quickly realised how terrible Codeigniter was and rewrote it in Kohana. Then decided to build my own micro framework and rewrote it with that. + +I bounced from Dreamhost to a dedicated server and on to virtual servers. + +Somewhere in there I added an API and virus scanning. [Someone](https://twitter.com/simon360) made a dashboard widget for OS X, [someone else](https://twitter.com/mjpa) made a Windows desktop app. + +At the end of 2010 in order to further combat drive-by malware uploaders I forced non-image files to have a download confirmation page. This resulted in a bit of an uptick in page views. + +Graph showing overall traffic levels since 2006 + +That gap in 2012 was a period where I trialled an alternative analytics service. I wish I hadn't now. The spike on the far left is Digg. + +PHP had lost its lustre for me, so next I rewrote it in Python with Flask. + +I learned enough Objective-C to build a Mac app, and a completed iOS app that got shelved in the wake of the iOS 6-7 design change. + +Then another rewrite in Node.js, to facilitate the instant sharing event-driven stuff. It was totally possible with Python and gevent, but it was horrible to work with. + +I coincided this most recent rewrite with a rebrand to Hostr. I had never liked the name, and while I didn't think I could drop it completely, I felt this was a good compromise. + +That brings us to today, over eight years and a billion downloads later. + +Hostr homepage + +Hostr runs on six boxes at Linode, between web nodes, Mongodb nodes and a staging box. The web nodes also act as a hot cache for files, with S3 acting as cold storage. + +While this arrangement saves me a few thousand Euros a month in data transfer costs it also ends up being faster for most users. If you're one of my contemporaries serving from S3 directly, you should probably be doing it this way too. + +Most months Hostr pays for itself and leaves me with a bit to help with the groceries. + +More importantly it remains a great way for me to have a practical application for exploring new technologies. diff --git a/_posts/2014-12-16-command-line-downloading-on-hostr.markdown b/_posts/2014-12-16-command-line-downloading-on-hostr.markdown new file mode 100644 index 0000000..042d9c2 --- /dev/null +++ b/_posts/2014-12-16-command-line-downloading-on-hostr.markdown @@ -0,0 +1,22 @@ +--- +layout: post +title: "Command-line Downloading on Hostr" +--- + +If you have no idea what a command-line is, don't worry, this feature isn't something you'd be interested in anyway. + +You can now download files on Hostr from the command-line using `wget` and `curl`. Perfect for when you're on a remote server and need to grab a file from Hostr. + + + +Command-line downloading demonstration + +Here are some examples: + +`curl -JO https://hostr.co/p4l1wZlvTm27` + +`wget --content-disposition https://hostr.co/p4l1wZlvTm27` + +Passing `-JO` for `curl` `--content-disposition` and for `wget` tell them to output the file using the remote header filename, otherwise you'll end up with a file called `p4l1wZlvTm27` instead of `test.txt`. + +Bear in mind that you're bypassing our malware warnings when you do this, so you should open the link in a browser somewhere first. Files we're sure are just malware are removed, but less clear cut cases carry warnings instead. \ No newline at end of file diff --git a/images/content/10501279565_1cf4eacc23_o.jpeg b/images/content/10501279565_1cf4eacc23_o.jpeg index 213d33f..25c62e9 100644 Binary files a/images/content/10501279565_1cf4eacc23_o.jpeg and b/images/content/10501279565_1cf4eacc23_o.jpeg differ diff --git a/images/content/cli.gif b/images/content/cli.gif new file mode 100644 index 0000000..895d097 Binary files /dev/null and b/images/content/cli.gif differ diff --git a/images/content/create-account-photo.jpg b/images/content/create-account-photo.jpg index 8ca5a1c..00b8e2a 100644 Binary files a/images/content/create-account-photo.jpg and b/images/content/create-account-photo.jpg differ diff --git a/images/content/create-account-photo@2x.jpeg b/images/content/create-account-photo@2x.jpeg index a30e4c8..b73b127 100644 Binary files a/images/content/create-account-photo@2x.jpeg and b/images/content/create-account-photo@2x.jpeg differ diff --git a/images/content/fugue.png b/images/content/fugue.png index d01e2db..bef53c0 100755 Binary files a/images/content/fugue.png and b/images/content/fugue.png differ diff --git a/images/content/hostr-panel.png b/images/content/hostr-panel.png new file mode 100644 index 0000000..482a7d3 Binary files /dev/null and b/images/content/hostr-panel.png differ diff --git a/images/content/lifehacker-digg.png b/images/content/lifehacker-digg.png new file mode 100644 index 0000000..4259a20 Binary files /dev/null and b/images/content/lifehacker-digg.png differ diff --git a/images/content/localhostr-2006.png b/images/content/localhostr-2006.png new file mode 100644 index 0000000..2243bf2 Binary files /dev/null and b/images/content/localhostr-2006.png differ diff --git a/images/content/localhostr-2010.png b/images/content/localhostr-2010.png new file mode 100644 index 0000000..b8d6be1 Binary files /dev/null and b/images/content/localhostr-2010.png differ diff --git a/images/content/localhostr-2011.png b/images/content/localhostr-2011.png new file mode 100644 index 0000000..415a3a5 Binary files /dev/null and b/images/content/localhostr-2011.png differ diff --git a/images/content/localhostr-2012.png b/images/content/localhostr-2012.png new file mode 100644 index 0000000..3fdd4bd Binary files /dev/null and b/images/content/localhostr-2012.png differ diff --git a/images/content/neowindex-2008.jpg b/images/content/neowindex-2008.jpg index aca03d0..4feb4e0 100644 Binary files a/images/content/neowindex-2008.jpg and b/images/content/neowindex-2008.jpg differ diff --git a/images/content/picture-1.png b/images/content/picture-1.png index f08105a..8490056 100755 Binary files a/images/content/picture-1.png and b/images/content/picture-1.png differ diff --git a/images/content/picture-2.png b/images/content/picture-2.png index 32a8b88..4d48325 100755 Binary files a/images/content/picture-2.png and b/images/content/picture-2.png differ diff --git a/images/content/reachability-phil-schiller.jpg b/images/content/reachability-phil-schiller.jpg index 63c7ff1..61a2051 100644 Binary files a/images/content/reachability-phil-schiller.jpg and b/images/content/reachability-phil-schiller.jpg differ diff --git a/images/content/requery-panel-thumb.png b/images/content/requery-panel-thumb.png index a61071d..dac2469 100755 Binary files a/images/content/requery-panel-thumb.png and b/images/content/requery-panel-thumb.png differ diff --git a/images/content/requery-panel-thumb2.png b/images/content/requery-panel-thumb2.png index 495e7f7..8615828 100755 Binary files a/images/content/requery-panel-thumb2.png and b/images/content/requery-panel-thumb2.png differ diff --git a/images/content/requery-panel.png b/images/content/requery-panel.png index 51d8718..7253a94 100755 Binary files a/images/content/requery-panel.png and b/images/content/requery-panel.png differ diff --git a/images/content/requery-sandbox-thumb.png b/images/content/requery-sandbox-thumb.png index a9c09a1..c81f2df 100755 Binary files a/images/content/requery-sandbox-thumb.png and b/images/content/requery-sandbox-thumb.png differ diff --git a/images/content/requery-sandbox-thumb2.png b/images/content/requery-sandbox-thumb2.png index bae8da6..db0a497 100755 Binary files a/images/content/requery-sandbox-thumb2.png and b/images/content/requery-sandbox-thumb2.png differ diff --git a/images/content/requery-sandbox.png b/images/content/requery-sandbox.png index f781cd8..0909db0 100755 Binary files a/images/content/requery-sandbox.png and b/images/content/requery-sandbox.png differ diff --git a/images/content/resume-photo.jpg b/images/content/resume-photo.jpg index bf28dd5..6545c64 100644 Binary files a/images/content/resume-photo.jpg and b/images/content/resume-photo.jpg differ diff --git a/images/content/ripoff-thumb.png b/images/content/ripoff-thumb.png index 06a71b3..2443bdd 100755 Binary files a/images/content/ripoff-thumb.png and b/images/content/ripoff-thumb.png differ diff --git a/images/content/ripoff.png b/images/content/ripoff.png index ef88127..32c9297 100755 Binary files a/images/content/ripoff.png and b/images/content/ripoff.png differ diff --git a/images/content/rocky.jpg b/images/content/rocky.jpg index c9e0153..4684b08 100755 Binary files a/images/content/rocky.jpg and b/images/content/rocky.jpg differ diff --git a/images/content/traffic.png b/images/content/traffic.png new file mode 100644 index 0000000..35fc6a4 Binary files /dev/null and b/images/content/traffic.png differ