I host many experimental projects on Heroku. I have always followed their example and used Gunicorn as my WSGI server. So when I saw this blog post, Don’t use Gunicorn to host your Django sites on Heroku, I was curious.
Dynosaur is letting us skip that whole rigmarole of wake-up-at-6am-because-we-were-featured-in-the-NYT-and-traffic-is-through-the-roof. More sleep equals happy developers, and this new API from Google is proving very useful to us from an operations perspective.
Seems to be a first (and only) plugin to use the Google Analytics Live API (currently in private beta) and a configurable ‘users per dyno’ value to estimate the required number of dynos.
Andrew talks with Jonathan Rudenberg and Jeff Lindsay about their hard work and updates on Flynn, their open source PaaS.
If you caught episode #99 with Jeff Lindsay and Jonathan Rudenberg where we talked about Flynn, you’ll be glad to know the first fruits of their labor have been released for us to demo. Some additional underlying components from this first demo are also on the Flynn GitHub account for you to check out.
You should also read the Flynn roadmap to see where they’re going and learn about their upcoming fundraising needs.
We’re asking for an additional $350,000 for 2014 to support the existing team for the year and possibly bring in a few additional developers. Based on the results of our first campaign, we are focusing on companies who can contribute on a monthly recurring basis, but of course all types and amounts are appreciated.
Adam and Andrew talk with Jeff Lindsay and Jonathan Rudenberg about Flynn, open source, PaaS and more. You can tune-in LIVE on Tuesday’s at 5pm CST. Hack in style with a Changelog tee! Newsletter sign-up – get updates every Thursday from The Changelog! #89: Linux containers, Docker and dotCloud with Solomon Hykes flynn/flynn-spec Jonathan Rudenberg […]
Adam Stacoviak, Andrew Thorp and Kenneth Reitz talk with Mattt Thompson, Mobile Lead at Heroku, about his many contributions to open source. You can tune-in LIVE on Tuesday’s at 5pm CST. AFNetworking/AFNetworking AFNetworking – a delightful networking framework for iOS and OSX mattt (Mattt Thompson) Mattt Thompson (mattt) on Twitter Helios helios-framework/helios Postgres.app, an easier […]
There’s an easier way
Just download, install and run the app when you want to run Postgres locally for development. I always found myself fumbling with commands like
pg_ctl -D /usr/local/var/postgres start or
pg_ctl -D /usr/local/var/postgres stop -s -m fast to start and stop my Postgres server. Running Postgres.app is a much simpler and easier user experience now. Just run the app when you’re hacking, and quit the app when you’re done. Simple.
The classic Postgres elephant icon will hang out in your system tray for easy access.
Heroku and Rails specifics
If you’re hacking on a project and deploying to Heroku with a Postgres database, you’ll need to run
heroku addons:add heroku-postgresql:dev to setup Postgres for your app before running something like
heroku run rake db:migrate.
For more details on using Postgres on Heroku check out postgres.heroku.com. You should also subscribe to Postgres Weekly – a free, once–weekly e-mail round-up of PostgreSQL news and articles curated by Craig Kerstiens.
Today, Heroku announced log2viz: a way to visualize your log data. Here’s what it looks like:
This is for one of my applications, running on Heroku. It gives you real-time updates; these graphs actually change as you watch them.
It’s pretty easy to use the version Heroku has up, located at https://log2viz.herokuapp.com/, I was already logged into my Heroku account, and all my apps were there.
If you’d like to use your own private install, that’s easy too: just clone the repo and do this:
$ heroku create -a myviz # create a new oauth client $ curl -i -n -X POST \ -d "client[name]=myviz-production&client[[redirect_uri]=https://myviz.herokuapp.com/auth/heroku/callback" https://api.heroku.com/oauth/clients $ heroku config:set HEROKU_ID=xxxxxxxx HEROKU_SECRET=xxxxxx HEROKU_AUTH_URL=https://id.heroku.com $ git push heroku master
Pretty easy! Now you have your own copy running on an app.
For more details, check out the official blog post over on Heroku’s blog: it explains more details about how it actually works.
I don’t have time to contribute to open source”. But who does? We’re too busy shipping products and open source is so daunting and time consuming.
What if giving back wasn’t so overwhelming, so time consuming, so vast and soul crushing? What if you could get bite-sized open source tasks delivered right to your inbox? You could work on them when you get some free time, while learning more about the underlying guts of the code you depend on. Well now you can with: Code Triage.
Making open source easier to jump in and get started, as well as remove the burden from maintainers is a long and deep topic.
The era of “too busy”, “too novice”, and “too lost to start” are over. Now is the time to solve bugs, merge good pull requests, and prevent maintainer burn-out. Together we can do it.
Code Triage is really a win win for maintainers as well as those looking to contribute but don’t know where to start.
Hat tip to this week’s Status Code
Perhaps queueing libraries are the new test frameworks. You’ll get no complaints from me. I for one welcome some choice in picking the right solution for backgrounding jobs. We just covered Qu just last week, and this week we’d like to spotlight Queue Classic from Ryan Smith. Queue Classic aims to exploit some distinct features of PostgreSQL to build a database-backed queueing library.
As Ryan notes in the README
I was already using PostgreSQL to manage my application’s data, why not use PostgreSQL to pass some messages? PostgreSQL was already handling thousands of reads and writes per second anyways. Why not add 35 more reads/writes per second to my established performance metric? queue_classic handles over 3,000,000 jobs per day. It does this on Heroku’s Ronin Database.
His blog post elaborates on his philosophy of using a database as a queue and what makes PostgreSQL a good fit.
For basic usage as well as tips and tricks, don’t miss the documentation that includes plenty of code examples:
@queue = QC::Queue.new("priority_jobs") @queue.enqueue("Class.method", "arg1")
We’re big fans of open source publishing tools. Although Tumblr has been a good way to bootstrap this blog, we have a dream to move on to something with a bit more publishing oomph. Thanks to Graham Ashton, NestaCMS is looking to be the future platform for The Changelog. Nesta is now a Ruby gem and has a shiny new web site.
For those not familiar with Nesta, it’s a bit like Nanoc or Jekyll, but instead of generating 100% pure static pages, it relies on HTTP cache to get the best of both worlds, dynamic content and static delivery. Geoffrey Grosenbach uses a custom Nesta setup to power the Peepcode blog.
If you’re not a designer, the default Nesta theme includes the basic design elements of a good blog or web site:
- Semantic HTML5
- Clean typography
- Easy to extend or embed
- Write content in Markdown, Textile, or Haml
- Support for Google Analytics, Atom feeds, comments (via Disqus), XML sitemaps…
Installation and creating a project
Now that Nesta has been gemified, your project only needs to worry about content and templates, all the Nesta plumbing is provided by the gem. To start, install the gem:
gem install nesta
Now we have a
nesta command line interface:
» nesta USAGE: nesta [GLOBAL OPTIONS] <command> [COMMAND OPTIONS] GLOBAL OPTIONS --help, -h Display this message. COMMANDS new <path> Create a new Nesta project. demo:content Install example pages in ./content-demo. theme:install <url> Install a theme from a git repository. theme:enable <name> Make the theme active, updating config.yml. theme:create <name> Makes a template for a new theme in ./themes. OPTIONS FOR new --git Create a new git repository for the project. --vlad Include config/deploy.rb.
To create a new site, just type:
nesta new my_cool_blawg
This unfurls a basic Sinatra-powered Rack app with a folder for your content:
my_cool_blawg » ls -la ~/Projects/sandbox/my_cool_blawg total 16 drwxr-xr-x 6 wynn staff 204 Feb 18 08:41 . drwxr-xr-x 11 wynn staff 374 Feb 18 08:41 .. -rw-r--r-- 1 wynn staff 116 Feb 18 08:41 Gemfile drwxr-xr-x 3 wynn staff 102 Feb 18 08:41 config -rw-r--r-- 1 wynn staff 175 Feb 18 08:41 config.ru drwxr-xr-x 4 wynn staff 136 Feb 18 08:41 content
You can add some dummy content as well:
Now you can crank up nesta with Shotgun (or Passenger, etc.):
… and browse to your site on [http://localhost:9393]
What we love about Nesta is the front matter, or metadata you can drop into each file for arbitrary bits of info. Here’s how we’re using it in our upcoming blog rewrite:
Date: 2010-05-20 12:33:27 GMT tumblr_id: 616093411 categories: github,typography,css github_repo: typekit/webfontloader title: WebFont Loader - easy @font-face from Google, TypeKit, or your own site # WebFont Loader - easy @font-face from Google, TypeKit, or your own site Thanks to greater browser support for [@font-face](http://www.font-face.com/#lime_content), web typography is breaking free from the same boring font stacks we've known for the last ten years. As with any new technique, @font-face introduces new challenges for finding the right cross-browser syntax, especially to avoid things like Firefox's [Flash of Unstyled Text](http://paulirish.com/2009/fighting-the-font-face-fout/) issue. ...
This allows you to fully customize how you serve up your content, even specifying per-post templates or layouts.
Nesta also has great theme support. You can create your own theme:
theme:create <name> #Makes a template for a new theme in ./themes.
… or install from a url:
theme:install <url> Install a theme from a git repository.
Since Nesta plays nice with Heroku’s readonly filesystem, its a great cheap (or free) way to host a blog or any content-heavy site.
Outsource your content to Nesta
Another great fit for Nesta is as a mountable site inside another Rack application. You can easily have Nesta power your blog inside your Rails application:
MyApp::Application.routes.draw do mount MyHawtBlawg.new => "/blog" # other rails routes ... end
Instead, imagine a simple and slim build server tool that is maintained by the Ruby community itself (just like Gemcutter is, or many other infrastructure/tool-level projects are) in order to support all the open-source Ruby projects/gems we’re using every day.
Instead of just imagining, Sven and others have been working toward that vision with Travis, an extremely alpha Rails project. Travis is a single-page application built in Rails and uses Backbone.js as a client-side MVC frontend.
How it works
By configuring a post-receive URL in your GitHub project settings, GitHub will ping Travis when new git commits are received. Travis will then schedule a build in Resque, a Redis queue. Travis then uses Websockets courtesy of PusherApp to update registered browsers on build status as it runs in the background.
Currently, the hosted edition of Travis is open to anyone with a GitHub account. Just sign in with GitHub. Once you’re in, grab your Travis build token and configure a post-receive URL in your GitHub project’s Service Hooks page:
Host Travis yourself
If you want to run your own instance, you’ll need to set up configuration settings:
$ cp config/travis.example.yml config/travis.yml
If you want to run on Heroku, you’ll need to set some
$ rake heroku:config
IF you’re running locally, you can start a worker with
$ RAILS_ENV=production VERBOSE=true QUEUE=builds rake resque:work
… or if you’re using God:
$ cp config/resque.god.example config/resque.god $ god -c config/resque.god
How you can help
Travis is in EARLY ALPHA. Sven and gang are looking for folks to help test, log issues, and submit patches. If you want to join the community, join the Google Group or hang out in
#travis on IRC.
Sven and team would like to offer a special thanks to Pusher App for donating a Big Boy account for the project. If you’d like to pitch in with the compute side of the project, (we’re looking at you Heroku or Linode), please ping Sven.
It’s Wednesday again, time for us to serve up another quick list of projects to watch on GitHub. These are projects you might have missed or should could keep an eye on. Heroku::Autoscale David Dollar makes automatically scaling your Heroku dynos a snap with this gem. Simply add the gem to your Gemfile gem ‘heroku-autoscale’ […]
Take a look around the small site web landscape and it’s clear we’re not in Kansas anymore. It’s no longer a foregone conclusion that a new blog or brochure site should be built on a CMS or even web framework. Toto is the latest in a rising breed of static page generators.
From the README, here’s how Toto works:
- content is entirely managed through git; you get full fledged version control for free.
- articles are stored as .txt files, with embeded metadata (in yaml format).
- articles are processed through a markdown converter (rdiscount) by default.
- templating is done through ERB.
- toto is built right on top of Rack.
- toto was built to take advantage of HTTP caching.
- toto was built with heroku in mind.
- comments are handled by disqus
- individual articles can be accessed through urls such as /2009/11/21/blogging-with-toto
- the archives can be accessed by year, month or day, wih the same format as above.
- arbitrary metadata can be included in articles files, and accessed from the templates.
- summaries are generated intelligently by toto, following the :max setting you give it.
- you can also define how long your summary is, by adding ~ at the end of it (:delim).
To get started quickly, clone the default template Dorothy and deploy to Heroku in a snap.