The Changelog

spacer

Open Source moves fast. Keep up.

24 Pull Requests: An Open Source Participation Advent #

24 Pull Requests is a yearly initiative to encourage developers around the world to send a pull request every day in December up to Christmas. 24 Pull Requests is the site to help promote the project, highlighting why, how and where to send your pull requests.

Darner – Simple, persistent, out-of-process message queue #

Darner from Erik Frey is a simple, lightweight durable message queue that aims for middle ground between Redis and RabbitMQ. Log-structured storage means queues are not limited by RAM, but unlike RabbitMQ, messages are out-of-process.

Built in C++, Darner boasts performance gains and less configuration over Kestrel while supporting the same memcache protocol.

spacer

Source on GitHub.

TextMate 2 now on GitHub #

As announced on the Macromates blog, TextMate 2 source is now on GitHub.

Allan Odgaard:

I’ve always wanted to allow end-users to tinker with their environment, my ability to do this is what got me excited about programming in the first place, and it is why I created the bundles concept, but there are limits to how much a bundle can do, and with the still growing user base, I think the best move forward is to open source the program.

Starred.

Hyperspider – Declarative HATEOAS API crawler for Node.js #

Interesting project from Jed Schmidt to roll up resources in hypertext APIs:

Give it a list of url patterns, and it will recursively crawl your hypertext HTTP API, streaming back every matching endpoint.

var hyperspider = require("hyperspider")

var options = {
  host: "mytwitterclone.biz",
  path: [
    "/users/jed",
    "/users/jed/following",
    "/users/*"
  ]
})

hyperspider(options, function(err, data) {
  // data is an array with the result entities of 6 endpoints:
  // 1. /users/jedschmidt
  // 2. /users/jedschmidt/following
  // 3. /users/janl
  // 4. /users/cramforce
  // 5. /users/hblank
  // 6. /users/theophani
})

Source on GitHub.

Episode 0.8.4 – News roundup

Andrew and Wynn run down the news of the last month. Items mentioned in the show: Gitspective – Facebook style timeline for your GitHub feed Hammer.js – Easily add multi-touch to your websites TweetStream – Easily access the Twitter Streaming API t – Powerful command line interface for Twitter Sextant – view your Rails routes […]

Nodefront – Node.js-powered rapid front-end development utility #

Nodefront from Karthik Viswanathan aims to make a front-end developer’s life easier. Built in Node.js, Nodefront bundles a local web server for serving up HTML, CSS, and JavaScript assets and supports live reloading via web sockets. Additionally it ships with a command line interface:

  • nodefront compile – Compiles Jade and Stylus files to HTML and CSS. Can compile upon modification, serve files on localhost, and even automatically refresh the browser/styles when files are changed.

  • nodefront fetch – Automatically fetches CSS/JS libraries for use in your project. Provides an interactive mode to add new libraries.

  • nodefront insert – Inserts CSS/JS libraries directly into your HTML or Jade files.

  • nodefront minify – Minifies CSS and JS files. Can also optimize JPG and PNG images.

Karthik has put together a twenty minute screencast for a full demonstration.

Check out the project web site or source on GitHub for more.

Rack::CoreData – Automatically generate REST APIs for Core Data models #

An interesting project from Mattt to scaffold RESTful web services based on CoreData models using Rack.

require 'bundler'
Bundler.require

# Rack::CoreData requires a Sequel connection to a database  
DB = Sequel.connect(ENV['DATABASE_URL'] || "postgres://localhost:5432/coredata")

run Rack::CoreData('./Example.xcdatamodeld')

In summary:• AFIncrementalStore: *poof* no client code.• Rack::CoreData: *poof* no server code.

— Mattt Thompson (@mattt) July 24, 2012

View the Source for this project on GitHub.

zsh 5.0 released #

Everybody’s favorite shell has hit 5.0 with a boat load of new features including new prompt escapes, command line highlighting and coloring, as well as expansion and redirection options.

Check the Changelog for a full list.

Source: Mathias Meyer

Episode 0.8.3 – Cloud 9 IDE with Ruben Daniels and Matt Pardee

Wynn caught up with Ruben and Matt from Cloud 9 to talk about what’s new with their IDE in the cloud. Items mentioned in the show: Ruben Daniels is the CEO of Cloud9. Matt Pardee is a developer & evangelist for Cloud9. Tim Caswell was on a previous episode is an employee at Cloud9. Cloud9 […]

Nodist – Node version manager for Windows #

Nodist from Marcel Klehr aims to be an easy way to switch between Node.js versions on Windows. Inspired by TJ’s n and aiming to improve on nvmw’s global-only switching, Nodist ships with a nice command line interface:

Usage:

    nodist                         List all installed node versions.
    nodist list
    nodist ls

    nodist <version>               Use the specified node version globally (downloads the executable, if necessary).
    nodist latest                  Use the latest available node version globally (downloads the executable, if necessary).

    nodist add <version>           Download the specified node version.
    nodist + <version>

    nodist run <version> -- <file> Run <file> with the specified node version (downloads the executable, if necessary).
    nodist r <version> -- <file>

    nodist rm <version>            Uninstall the specified node version.
    nodist - <version>

    nodist --help                  Display this help

    nodist -v                      Display nodist version

Examples:

    nodist 0.8.1                   Use node v0.8.1 globally
    nodist v0.5.10                 Use node v0.5.10 globally
    nodist r 0.8.1 -- foo.js -s    Run `foo.js -s` with node v0.8.1, regardless of the global version
    nodist - 0.5.10                Uninstall node v0.5.10

See the README for installation and usage.

kinectable_pipe – Microsoft Kinect data in the command line #

A neat little script from Marshall Yount that takes Microsoft Kinect input and pipes it to STDOUT, or wherever else you need it.

From the readme:

kinectable_pipe is a command-line utility that dumps user skeleton data from a Microsoft Kinect device to a standard Unix pipe.

Check out the project page or the source on GitHub for installation, background, and usage.

Episode 0.8.2 – Ruby Motion, MacRuby and more with Laurent Sansonetti

Wynn and Sam caught up with Laurent Sansonetti to talk about MacRuby, RubyMotion, and more. Items mentioned in the show: Bully is Sam’s Pusher client for Objective-C. Get some Cheddar, Sam’s TODO app (soon in the App Store). Laurent Sansonetti, creator of RubyMotion (and MacRuby) MacRuby is an implementation of Ruby 1.9 on top of […]

Don’t git-blame me, I was pairing #

Thanks to Teespring and everyone who helped us get to our thirty shirt minimum. There’s still time to get yours.

spacer

Descriptive statistics – extend Ruby Enumerable for common stats methods #

Descriptive Statistics is a small gem from Derrick Parkhurst that provides a few common statistics methods to Ruby’s Enumerable:

> require 'descriptive_statistics'
 => true 
> data = [2,6,9,3,5,1,8,3,6,9,2]
 => [2, 6, 9, 3, 5, 1, 8, 3, 6, 9, 2] 
> data.number
 => 11.0 
> data.sum
 => 54 
> data.mean
 => 4.909090909090909 
> data.median
 => 5.0 
> data.variance
 => 7.7190082644628095 
> data.standard_deviation
 => 2.778310325442932 
> data.percentile(70)
 => 6.0

Browse the source or fork on GitHub.

Update: Francois-Guillaume Ribreau has ported the project to JavaScript as a NPM package.

Update 2: Gleicon Moraes has created a Python port.

Ruby Mass – introspection for the heap #

Paul Engel, whose CSONV we covered previously, has created Ruby Mass, a gem that helps you introspect the Ruby heap. Ruby Mass indexes, counts, and locates object references.

$ Mass.index Foo #=> {}

$ f = Foo.new
$ b1 = Foo::Bar.new
$ b2 = Foo::Bar.new
$ t = Thing.new

$ f.object_id #=> 2154166500
$ b1.object_id #=> 2154037400
$ b2.object_id #=> 2154126780
$ t.object_id #=> 2154372180

$ Mass.index Foo #=> {"Foo"=>[2154166500], "Foo::Bar"=>[2154037400, 2154126780]}
$ Mass.index Foo::Bar #=> {"Foo::Bar"=>[2154037400, 2154126780]}
$ Mass.index Thing #=> {"Thing"=>[2154372180]}
$ Mass.index #=> {"String"=>[2151797000, 2151797080, 2151797120, 2151797140, ... a lot of more classes and object_ids}
$ Mass.index OneMoreThing #=> {}

As always, check the README for usage. The source is on GitHub.

Mina – deploy your app over a single SSH connection #

Tools like Capistrano and Vlad have been popular for deploying applications to remote servers. Mina is a new entrant in the field that uses a single SSH session per server, cutting down on deploy time. Mina uses Rake and deploy routines are set up in config/deploy.rb:

require 'mina/git'

set :domain, 'your.server.com'
set :user, 'flipstack'
set :repository, 'flipstack'

task :deploy do
  deploy do
    # Preparations here
    invoke :'git:clone'
    invoke :'bundle:install'
  end
end

task :restart do
  queue 'sudo service restart apache'
end

Check out the project web site or source on GitHub for complete usage instructions, including test deploys with Rspec and other popular frameworks.

/via

Virtus – give your Ruby objects DataMapper-like attributes #

I’ve written a few wrappers for various JSON APIs, and each time I’ve had to make a decision about how to represent API data in Ruby. Ruby hashes and arrays work well but bracket['notation'], can be hard on the eyes and fingers. My go-to library for these types of objects is often Hashie, the hash toolkit from Intridea. Its Mash, Dash, Clash, and Trash, objects provide some syntactic sugar on top of Ruby’s Hash.

Thanks to Mike’s linkblog, another project has caught my eye. Virtus from Piotr Solnica extracts DataMapper’s Property API, for the times when you need to implement attributes on your objects yet maintain a bit more encapsulation. I love the module approach for defining properties:

module Name
  include Virtus

  attribute :name, String
end

module Age
  include Virtus

  attribute :age, Integer
end

class User
  include Name, Age
end

user = User.new(:name => 'John', :age => '30')

Check the excellent README or source on GitHub for more.

Zipkin – distributed tracing for service-based applications #

As more and more applications are composed of several or more services, finding all the bottlenecks between the data and the user is a tough problem in itself. Twitter has added to their growing list of open source projects with Zipkin, which provides a system for distributed tracing.

spacer

Instrumented libraries in the stack send information to a Zipkin collector via Thrift. Data can then be queried and presented in Zipkin’s web interface.

spacer

Check the README or source on GitHub for more.

RubyMotion toolchain now open source #

Laurent has just announced the release of Ruby Motion’s lib folder which powers the command line tool chain. The source is on GitHub.

Stay tuned, Laurent will be our guest on the next episode.

Ostio – add a forum to your GitHub project #

Ostio from Paul Miller lets you easily add a forum to your GitHub-hosted projects. Integrated with GitHub OAuth, Ostio syncs your orgs and public repos from your GitHub account. You can then create discussion threads with Markdown support.

spacer

Frontend and API source on GitHub.

Backstop – Simple HTTP service for submitting metrics to Graphite #

We’ve mentioned a couple of Graphite-related projects previously. Jason Dixon and Michael Gorsuch from Heroku have released Backstop, a simple HTTP-to-Graphite proxy to make it simple to send metrics. Using the /publish method, metrics and annotations can be posted that match any approved prefixes found in the PREFIXES environment variable, custom in the following example:

# Send a metric
RestClient.post("https://backstop.example.com/publish/custom",
   [{:metric => key, :value => value, :measure_time => Time.now.to_i}].to_json)

# Send an annotation
RestClient.post("https://backstop.example.com/publish/note",
   [{:metric => "foobar.release", :


gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.