The Internet is slowly becoming a trap. We’re building a sanctuary for passionate audiences to come together and build comprehensive, fun websites with less bullshit.
Here at Whiskey Media we build and run a handful of web sites that integrate deep editable product databases and best-in-breed editorial and video coverage with the power and influence of passionate communities. The technology team tries to build the most interesting, fun and empowering sites on the Internet.
Yeah, but what do we really do? Each day is a battle of resources against bugs, hackers and feature requests. Each day, we try to improve every aspect of each site we've launched. Whether its streamlining our chat interface or updating our deployment process, we're always trying improve the experience our user's have on our sites.
A lot of the original team came over from CNet where we worked on entertainment sites such as GameSpot, TV.com and MP3.com. LAMP was our name and PHP development was our game. It wasn't until we decided that we were going to re-launch Comic Vine in the winter of 2008 that Andy made the tough sell to push us towards a new web framework called Django.
At first we were hesitant. Here was a young company, making a crucial architectural decision based on (at the time) an unproven framework. I think it was only Andy who would have known that the recommendation to use Django would prove to be one of the most important technological decisions Whiskey Media has ever made.
We use a number of different technologies and tools to get our sites up and humming. This post simply outlines our stack. We'll dive deeper into each particular topic in upcoming posts.
Django: Django is a Python web framework and is at the core of everything we do. We've been using Django since before its 1.0 release and have been lucky enough to have worked with one of its founders in Jacob Kaplan-Moss and count ourselves doubly lucky to have one of its core committers working along side us in Honza Král.
Simply put, Django lets us move fast. If you're trying to set up something as simple as blog, or are looking to build complex service based system, Django is a wonderfully powerful and intuitive framework for perfectionists with deadlines.
Amazon:
S3/CloudFront: All of our media is stored on Amazon's S3 service. Whether its our hour long Endurance Run videos, user uploaded content, or our beautifully crafted javascript and CSS -- its all stored on S3. CloudFront sits on top of S3 distributing our content to edge locations throughout the world. We'll get to how we use S3 and CloudFront in future posts; for now, just know that it is an incredibly functional service and we're happy to be using them.
EC2: Shortly after Amazon launched S3, they started to build onto their suite of cloud based services. It was only a matter of time until they solved cloud based hosting and from there, it was only a matter of time until we migrated our sites to utilize EC2's power and scalability. Our outstanding ops team will be posting tips and tricks for working with EC2 in future posts.
PostgreSQL: We love relational data, and PostgreSQL stores our bread and butter data.
Solr/Haystack: Our sites tend to have large product databases that need to be indexed and searched quickly and efficiently. Solr is our back-bone when it comes to search and Haystack is an elegant Python library that sits on top of it. We’ll get deeper into how we use both of these technologies in future posts, but for now know that they’re a godsend and life would be much more difficult without them.
jQuery: Although we started as a MooTools shop, we are slowly and steadily migrating to jQuery. Mike Horn is leading the front-end charge and if you're in San Francisco and interested in getting together to talk shop about all things front-end --- Horn has recently started a meet up at the Whiskey Bar downstairs.
Redis/Mongo/Memcached: We use a handful of no-sql solutions in different situations depending on the specific problem we're dealing with. Although these technologies are relatively new, we fully embrace the power, speed and scalability they provide.
Rabbit/Celery: In order to improve the speed of our sites, we have started to rely heavily on asynchronous processing systems such as RabbitMQ and Celery. These async queueing systems have become an integral part of what we do and we will be writing about how we use them, tune them, etc. in future posts.
Compass/SASS: About a year ago, we started using a CSS framework called Compass. It allows our front-end developers to be more pragmatic with their front-end logic and enables us to launch new features faster.
Fabric: Fabric is the heart of our deployment process. We've come a long way from rolling our own deployment scripts to building stable fabfiles - and we believe in this process so much that we recently added Fabric's core developer Jeff Forcier to our team.This is just the first of a series of blog posts from our engineering/ops teams. We'll be discussing everything from Redis to Fabric and jQuery to Django. So whether you're interested in keeping tabs on the latest site features or you're a budding developer and find yourself interested on what makes us tick, add us to your RSS reader and stay tuned.
California, I know you're having fun with this "let's have spring in Feb." stuff. But 75* weather should really wait until at LEAST March!
Jeff Forcier / @bitprophet
Slept 16 hours yesterday. Feel almost human again.
Will Smith / @willsmith
Thanks for everything. http://t.co/nUuOMAxl
Tony Guerrero / @GManFromHeck
great article on @github in @wired: http://t.co/5m5oU9L8 About time Github gets national press! (nice work @pjhyett and @defunkt)
/ @miketatum
Oh, weird. It works better with the D pad and buttons. It's like the touch controls were sort of bolted on at the last minute or something.
Jeff Gerstmann / @jeffgerstmann
Anybody who doesn't enjoy and understand customer support shouldn't be in charge of building products. No better way to learn your gaps.
Dave Snider / @enemykite
"The age that a child masters toileting has absolutely no correlation to future abilities or intelligence"
Mike Horn / @gpbmike
SSX Demo dropped today... excited to hear initial reactions.
/ @cooncesean
Guys, remember emo Spider-Man!!! http://t.co/rYrwJxl0
Joey Fameli / @HDJoey
weird evening where i suddenly feel socially persecuted on about three different levels, mostly based on things i read on the internet. ugh.
/ @AHR
At 38 years old I just road a skateboard for the 1st time. I've a new hobby. I see a broken hip in my future.
Ethan Lance / @red_lamp
In Sausalito http://t.co/oZjnaxcw
/ @alexisg
Terminal: a sure sign that your disk recovery situation has turned dire. http://t.co/75OKAHMq
Drew Scanlon / @drewscanlon
Deleted code is good code.
/ @HonzaKral
An asshole deer attacked my car at 4:30am in the absolute most podunk-nowhere-ville place ever. 8 hour delay to the road trip.
Andy McCurdy / @andymccurdy
Mike Horn will be touching on Sass and our front-end development process in future posts -- however here is a quick primer.
Sass is an extension of CSS3. It adds support for various rules, nesting, variables, etc. (stuff that CSS doesn't support (yet)). It is built on top of Ruby and is installed via gem. Essentially its its own language and being that it is an extension of CSS3, it shares a number of syntax similarities with CSS.
Compass, on the other hand is a stylesheet authoring tool that takes your Sass files and converts them to CSS. It too was developed in Ruby as well and you will need Ruby installed for the compiler to run.
Here is a great Compass 'about' video for those interested.
So, while yes, Ruby is required for you to use these tools -- all they do is help our front-end developers build more logical and efficient stylesheets - which, at the end of the day can be used with any backend from Rails to Django to PHP.
We play with both. I tend to prefer SASS, but Mike Horn has started using SCSS. I like the clean code myself, but when it comes to our coded front-end I leave all the decision making up to Mike. He's done a couple presentations on frontend stuff in some meetup groups out here. I'll see if I can convince him to post them up.
Used the term front-end a lot there.
yeah -- we got it all working agains...