Your friends at Viget present Extend, a Code & Technology Blog

Slack on Rails

Back in the days of Campfire, Hubot was an essential companion to the company chatroom. Hubot was great for the automation of some simple tasks, but the performance of more complex tasks involving external services often seemed more complicated than necessary. And the performance of private tasks was completely impossible. Campfire simply doesn't allow for a better solution.

Now it's 2015 and Slack fever is in full tilt. Slack offers numerous advantages over Campfire, but without question, the most powerful is a greatly enhanced ability to use the chatroom as an interface to other services through its powerful integrations.

Writing custom service integrations for your chatroom is easier than ever before. At Viget, we use Slack as an interface to a few of our internal apps. In this post you'll discover exactly how easy it is to build these integrations into an existing Ruby on Rails app.

Lulzbot Mini Critique

World, meet the Lulzbot Mini. Mini, meet the crazy world you’ve been brought into. Don’t worry -- you’ll fit in just fine. There are many wonderful things about you that deserve recognition.

I’ll be quick about this. It’s only a matter of time before the next 3D printer Kickstarts its way into existence. In such a dynamic market, it’s difficult to say two things about any one printer before it’s either updated our outdated. So, without further ado, here is my critique of the Mini (v1).


Viget purchased a Mini a little over a month ago and we’ve been ecstatic with its performance. Out of the box, it just worked. How many things with moving parts can you say that about? Well, it took Lulzbot some effort to make it that way -- and, here’s why.

An Update on Updating npm and Bower Packages

In my previous post on publishing code to npm and Bower, I included a section at the end with some information and instructions on updating and releasing new versions of packages. Turns out I got it sort of right and sort of wrong.

What follows is a more accurate process for updating packages for each registry and a proposed workflow for publishing updates to both registries.

Publishing Packages to npm and Bower

The last few years have seen an explosion in the use of JavaScript for a variety of tasks outside its traditional home within the Web browser. Workflow tools like Grunt and Gulp have changed how we use, share, and optimize front-end Web code. These tools and their brethren are typically built on top of the Node.js platform and, owing to their being written in the familiar JavaScript, have seen widespread adoption among those working on the Web.

Developers have also shared packaged code en masse to public registries like npm and Bower. These registries and their associated command line tools give developers an easy way to add functionality to their projects. If you’re familiar with Ruby-based dependency management tools like Bundler, you can think of npm and Bower packages as being similar to Ruby gems.

Packaging and publishing your front-end code allows you (and others!) to easily include code in your (and their!) projects. What you choose to publish—CSS snippets, JavaScript modules, etc.—is up to you, but generally, the smaller and more discrete your code, the better.

In this post, I’ll run through the process by which you can publish code to the npm and Bower repositories. In publishing my own work to these repositories, I uncovered a couple of things to watch out for and I’ll note those along the way.

My Other Sublime Text Keyboard Shortcuts

I received a bunch of feedback for my Sublime Text Keyboard Shortcuts post. And, while much of it was positive, some expressed concern that my examples didn't fit real-world scenarios. I agree. Knowing how to uppercase some letters is pretty trivial. I, like you, understand that in the real world we have more complex goals, and a blog post explaining how to use Sublime Text to accomplish them is much over-due. Until Now.