robots.thoughtbot.com Archives - 05 July 2015, Sunday

  • Easy Haskell Development Setup with Docker

    robots.thoughtbot.com 02 Jul '15, 1pm

    In order to make Haskell development smoother, we’ve created a few Docker images that you can use. They start containers that come installed with the base dependencies needed to develop with Haskell and with Yesod , a popular web development framework. We’re going to walk you through ...

  • Create a Retention Curve with Mixpanel and Google Sheets

    Create a Retention Curve with Mixpanel and Google Sheets

    robots.thoughtbot.com 01 Jul '15, 12am

    It could be said that an early-stage business has reached product/market fit when it has a trifecta of non-trivial new user growth, retention of those users, and meaningful use by those users “Non-trivial new user growth” and “meaningful use” typically mean something different per-pro...

  • Configure Travis CI for Go

    robots.thoughtbot.com 30 Jun '15, 12am

    The fastest way to get started testing your Go application with Travis CI is to create a .travis.yml with language: go and push to your remote. The defaults tend to work well for a broad spectrum of projects. But it’s good to understand what those defaults do, and how and why you migh...

  • Starting and Stopping Background Services with Homebrew

    robots.thoughtbot.com 28 Jun '15, 11pm

    I love Homebrew , but sometimes it really gets me down, you know? Especially when I have to deal with launchctl . launchctl loads and unloads services that start at login. In OS X, these services are represented by files ending with .plist (which stands for “property list”). These pli...

  • thoughtbot in London

    robots.thoughtbot.com 27 Jun '15, 10am

    I am pleased to announce that we will be coming to London, starting in July. If you or someone you know are looking to start something new, or to improve your existing product, please let us know ! While many people know us for our community and open source contributions, our core bus...

  • Optimizing Full Text Search with Postgres tsvector Columns and Triggers

    robots.thoughtbot.com 25 Jun '15, 4am

    SELECT products.* FROM products INNER JOIN ( SELECT products.id AS pg_search_id, ( ts_rank( ( to_tsvector('english', coalesce(products.description::text, '')) || to_tsvector('english', coalesce(products.manufacturer_name::text, '')) || to_tsvector('english', coalesce(products.name::te...

  • Open Sourcing Tropos, Our iOS Weather App

    robots.thoughtbot.com 22 Jun '15, 12am

    Back in March , we announced the release of our weather app for humans, Tropos . Today, we’re excited to announce that we’re making the source code available on GitHub . There are a few interesting things about the application that make it worthwhile to open source: The app is using R...

  • Setting Up Webpack for React and Hot Module Replacement

    robots.thoughtbot.com 19 Jun '15, 12am

    Webpack is the build tool that takes our application code and generates static assets as well as a development server. Webpack has several advantages over other build tools: for example, it strips out unused code, supports hot module replacement, and is easily configured.

  • Migrating FormKeep to ember-cli-rails

    robots.thoughtbot.com 18 Jun '15, 4am

    so that we could separate our client and server-side codebases and workflows, align our project’s conventions with the Ember.js core team and community, and utilize the rich EmberCLI addon ecosystem , while still running truly end-to-end JavaScript-enabled Capybara integration tests.

  • Install Linux on a MacBook Air

    robots.thoughtbot.com 17 Jun '15, 12am

    nixos_livecd=path/to/downloaded/iso # create vm VBoxManage createvm \ --name nixos-livecd \ --ostype Linux_64 \ --register # create a virtual disk VBoxManage createhd \ --filename "$HOME/VirtualBox VMs/nixos-livecd/nixos-livecd.vdi" \ --size 8192 # create virtual disk/cd controller VB...

  • Where to Define Command-Line Flags in Go

    robots.thoughtbot.com 16 Jun '15, 6pm

    When building a command-line tool in Go, you’ll eventually want to accept arguments as flags. If you’re using the standard library’s flag package , you’ll have to decide where in your package to define your flags. The only requirement of flag is that the flags be defined before flag.P...

  • Auto-squashing Git Commits

    robots.thoughtbot.com 15 Jun '15, 12am

    If you’ve read thoughtbot’s Git protocol guide , you’ll know that once a branch has been code reviewed, we encourage the branch’s author to use an interactive rebase to squash the branch down into a few commits with great commit messages . It’s fairly common for a feature branch to be...

  • HTTP Safety Doesn't Happen by Accident

    robots.thoughtbot.com 12 Jun '15, 1pm

    Request methods are considered “safe” if their defined semantics are essentially read-only; i.e., the client does not request, and does not expect, any state change on the origin server as a result of applying a safe method to a target resource. Likewise, reasonable use of a safe meth...

  • What's New in WWDC '15: Designer Edition

    robots.thoughtbot.com 11 Jun '15, 9pm

    Even though this year’s WWDC theme is stability and performance, there are a number of changes and new features that are likely to be of interest to you as a software designer. New font This year’s most noticeable visual change is the switch from Helvetica to San Francisco, a custom-b...

  • Announcing Foundry

    robots.thoughtbot.com 09 Jun '15, 3pm

    Foundry is a new place for finding and sharing SVGs. It gives designers the opportunity to contribute and collaborate on families of vector illustrations and icons and make them available to the world. No more hunting around Google for ten minutes to find just the right icon or wastin...

  • Shoulda Matchers 3.0

    robots.thoughtbot.com 05 Jun '15, 10pm

    For a long time Shoulda Matchers required very little setup: all you had to do was add the gem to your Gemfile and you could start using the matchers in your tests right away, regardless of whether you were using RSpec or Minitest. A little magic made this possible. The gem first trie...

  • Paperclip Security Release

    robots.thoughtbot.com 05 Jun '15, 7pm

    We just released paperclip v4.2.2. This contains only a security patch over v4.2.1, and everyone is encouraged to upgrade. The commit message explains the problem and fix: There is an issue where if an HTML file is uploaded with a .html extension, but the content type is listed as bei...

  • Introducing our new Chief Design Officer and Design Directors

    robots.thoughtbot.com 01 Jun '15, 12am

    Since 2005, we have been at the forefront of design-led product development. We have always strived for a fully-integrated design and development team, with few barriers between designers and developers. This way of working not only allows us to create better products, but to do it fa...

  • How lawn care relates to product design

    robots.thoughtbot.com 27 May '15, 12am

    It’s easy to quickly mow your lawn and believe you’re finished. In reality you’re only about 70% done: there are trimmings everywhere and the edges look like a patchy uneven fence. All you need is a little more work and attention to detail and you’re left with a well-groomed lawn. The...

  • fake_braintree has a new maintainer

    robots.thoughtbot.com 25 May '15, 12am

    Four years ago, we created the fake_braintree library to make testing against Braintree easier. It spins up a local server that responds like Braintree, allowing you to run code like Braintree::Transactions.create without the extra time and setup required by Braintree’s actual servers...

  • Test Incoming Webhook Requests with Faraday

    Test Incoming Webhook Requests with Faraday

    robots.thoughtbot.com 15 May '15, 2pm

    I was recently working with client who has an application that accepts incoming webhooks from GitHub. We track receipt of these webhooks and display state information to the user. We test this functionality with request specs, which provide unit-level guarantees. We also want to use a...

  • Styling a Middleman Blog with Bourbon, Neat, and Bitters

    robots.thoughtbot.com 05 May '15, 5am

    Bourbon is a library of vanilla Sass mixins, Neat gives us a responsive grid system, and Bitters sets default styles for Bourbon projects. These gems will make the assets available to our site through Middleman’s

  • Design Spiking

    robots.thoughtbot.com 04 May '15, 7am

    A “spike” is a development term for a quick exercise that lets you explore solutions without the burden of writing good code , then throwing it all away so you can do it the right way with confidence. These are typically experiments timeboxed to a certain number of hours set aside jus...

  • Build and test a blazing fast JSON API with Phoenix, an Elixir framework

    robots.thoughtbot.com 03 May '15, 4am

    defmodule HelloPhoenix.ContactControllerTest do use ExUnit.Case, async: false use Plug.Test alias HelloPhoenix.Contact alias HelloPhoenix.Repo alias Ecto.Adapters.SQL setup do SQL.begin_test_transaction(Repo) on_exit fn -> SQL.rollback_test_transaction(Repo) end end test "/index retur...

  • Why Fixed Bids Are Bad For Clients, Too

    robots.thoughtbot.com 28 Apr '15, 11pm

    Most software developers know that fixed bid contracts are bad for them. But what most clients don’t know is that fixed bids are bad for them as well. Traditionally, when a client needed a piece of software built they would draft a Request for Proposal (RFP). This document would descr...

  • How We Use Trello for Product Design and Development — by @thoughtbot

    How We Use Trello for Product Design and Development

    robots.thoughtbot.com 28 Apr '15, 7pm

    Our playbook touches upon how we use Trello for all sorts of tasks, from projects to hiring to sales – however, it doesn’t dive deeply into how we manage our boards for each project. Each of our project boards are broken down into 6 columns: Ideas / Discussion, Next up, Doing, Code Re...

  • Swift Sequences

    robots.thoughtbot.com 21 Apr '15, 11pm

    We’re incredibly excited about the new Swift programming language announced by Apple at this year’s WWDC. As a way of experimenting, we’ve begun looking into what it would be like if we rewrote Liftoff , our command line Xcode project generation/configuration tool, in Swift.

  • Replace CoffeeScript with ES6

    robots.thoughtbot.com 13 Apr '15, 4pm

    I’ve been looking into ES6 , the next version of JavaScript, and finally got a chance to use it on a project. In the brief amount of time I was able to use it I’ve found that it solves a lot of the problems that CoffeeScript is trying to solve without drastic syntax changes. Using ES6...

  • Rototo: Space Survival

    Rototo: Space Survival

    robots.thoughtbot.com 09 Apr '15, 1pm

    You are a circle. A circle with a core, and a curved shield, floating in space. Enemies come to attack you, and you rotate your shield to fend off their attacks. If three enemy attacks slip past your shield, the game is over. This. Is. Rototo. Rototo is a minimalistic 2D space surviva...

  • Xcode as a Prototyping Tool for Designers

    robots.thoughtbot.com 07 Apr '15, 1am

    There are a lot of prototyping tools out there for designers. Some of our favorites include Framer.js , Pixate , Flinto , and Invision , all of which provide different ways for designers to show interaction and test their designs. However, I’ve recently started learning how to prototy...