robots.thoughtbot.com Archives - 29 January 2015, Thursday

  • Multiple CI Services on a GitHub Pull Request

    robots.thoughtbot.com 28 Jan '15, 12pm

    When someone changes a codebase, Continuous Integration (CI) services such as Travis , Circle , Solano , Ship , Hound , and Code Climate automatically run tests, build mobile apps, or catch style, quality, and security issues. GitHub’s pull request status UI supports multiple CI servi...

  • Shopify Theme Development

    robots.thoughtbot.com 27 Jan '15, 12pm

    Developing a theme for Shopify is a little bit different than for something like Wordpress. First of all, you do not run a local server instance or database. I’m not sure why, but I bet it is because Shopify made a choice to reduce complexity for the entire community by hosting and gu...

  • Take Control of Your HTTP Caching in Rails

    robots.thoughtbot.com 26 Jan '15, 12pm

    The Rails fresh_when method is a powerful tool for conditionally caching resources via HTTP. However there are some pitfalls. For one, fresh_when only supports the default render flow in a controller; if a client’s cache is not fresh, it will just render the related view. We cannot ut...

    Related:
    1. faraday-http-cache rubygems.org 27 Jan '15, 8pm
  • How to Make a Chrome Extension

    robots.thoughtbot.com 23 Jan '15, 12pm

    is great for creating basic extensions, but to use more advanced features requires a lot of Googling and Stack Overflow. Let’s build an intermediate extension that interacts with the page: it will find the first external link on the page and open it in a new tab.

  • MyGem.configure Block

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

    Dan Croak January 20, 2010 ruby We recently enhanced Clearance with a configuration block that could be used in config/initializers/clearance.rb . I liked the way Airbrake did it and wanted to implement the same pattern: Airbrake.configure do |config| config.api_key = 'your_key_here' ...

  • Ethnographic Research Exercise

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

    At thoughtbot, we’ve used product design sprints for over a year now to kick off client engagements. They work well. However, one thing we’ve found is that the sprint relies heavily on the client’s understanding of the user we’re building around. This can pose a bit of a dilemma; not ...

  • Rapid iOS App Prototyping With Pixate

    Rapid iOS App Prototyping With Pixate

    robots.thoughtbot.com 20 Jan '15, 7pm

    At thoughtbot, a small group of us are building Poppins, an iPhone app for keeping your GIFs and memes in good order (obviously an important task). It’s a simple app. It consists of: a collection view, a detail view, and the ability to share and manage items using iOS' UIActivity​View...

  • Testing Directives with Dependencies in Angular

    robots.thoughtbot.com 20 Jan '15, 12pm

    Testing Angular applications is multifaceted. On one hand, it’s fantastic that the Angular team places such a high emphasis on testing and provides tools to stub out various components of your application so that they can be tested in isolation. On the other hand, writing these tests ...

  • The magic behind configure, make, make install

    robots.thoughtbot.com 19 Jan '15, 4am

    Configure the software The configure script is responsible for getting ready to build the software on your specific system. It makes sure all of the dependencies for the rest of the build and install process are available, and finds out whatever it needs to know to use those dependenc...

  • Converting To Jobs Stories

    robots.thoughtbot.com 16 Jan '15, 4pm

    We have used user stories as part of our design and development process for many years. You could find several mentions of them throughout our playbook . We used user stories to give designers and developers context to the problems that the user is having and give space for them to so...

  • swift | giant robots smashing into other giant robots

    robots.thoughtbot.com 16 Jan '15, 9am

    Function currying in Swift might not be immediately obvious, but once you see the applications, it can be another incredibly powerful tool at your disposal.

  • Ethnographic Research Exercise

    robots.thoughtbot.com 15 Jan '15, 9pm

    At thoughtbot, we’ve used product design sprints for over a year now to kick off client engagements. They work well. However, one thing we’ve found is that the sprint relies heavily on the client’s understanding of the user we’re building around. This can pose a bit of a dilemma; not ...

  • Separate Rendering Sass From Non-Rendering Sass

    robots.thoughtbot.com 15 Jan '15, 3pm

    I always separate the Sass that renders CSS from the Sass that doesn’t. The benefits are subtle, but reach far into the future for the sustainability of the Sass codebase: Expect access to all variables and mixins Eliminate redundant declarations Easily incorporate new layouts Some Sa...

  • CSS Animation for Beginners

    robots.thoughtbot.com 10 Jan '15, 5pm

    Name of the animation: A name that describes the animation, for example, bounceIn . Stages of the animation: Each stage of the animation is represented as a percentage. 0% represents the beginning state of the animation. 100% represents the ending state of the animation. Multiple inte...

  • Skinny Controllers, Skinny Models

    robots.thoughtbot.com 10 Jan '15, 3pm

    I hear a lot of people recommending the skinny controller, fat model approach to Rails development. I’m all for keeping controllers simple, but who wants a fat model? If your editor slows down while loading up your model files, I have some advice: put your models on a diet. Let’s say ...

  • Email and Password Confirmation Bias

    robots.thoughtbot.com 10 Jan '15, 2pm

    I don’t believe email confirmation or password confirmation are desirable in web apps for early-stage startups. Clearance We wrote and maintain a user authentication and authorization Rails engine called Clearance . It serves a narrow focus for users to sign up, sign in, sign out, and...

  • Last Year at thoughtbot

    Last Year at thoughtbot

    robots.thoughtbot.com 10 Jan '15, 4am

    Joanne Cheng January 10, 2015 data We had a pretty amazing 2014. We released some great products (such as FormKeep and Hound ), opened a new office , wrote some books , made some changes to our education service , and even monitored our bathrooms through technology . After digging int...

  • From Ember-Rails to Ember CLI

    robots.thoughtbot.com 09 Jan '15, 12pm

    The majority of Ember applications I’ve worked on have been powered by the Ember-Rails gem. Ember-Rails is great but can make your Ember app feel like a second class citizen when it’s just as important as the Rails API that powers it. Ember CLI solves this issue by separating your Emb...

  • Handle incoming email with Griddler

    robots.thoughtbot.com 08 Jan '15, 5am

    For all the likes, shares, tweets, pokes, follows, and friends, there’s a fundamental core to the internet that, no matter how hard some might hope, will never go away—email. Rails has built-in support for outgoing mail with ActionMailer, but nothing on the omakase menu handles incomi...

  • Set up CloudFlare's free SSL on Heroku

    robots.thoughtbot.com 06 Jan '15, 1pm

    On September 29, 2014, CloudFlare introduced Universal SSL for the public. To be able to offer TLS certificates for free, they are using the extension to TLS protocol called Server Name Indication . This allows them to be able to serve a certificate for multiple domains using only one...

  • Contributing to Big Bad Open Source

    Contributing to Big Bad Open Source

    robots.thoughtbot.com 05 Jan '15, 4pm

    Contributing to open source software can be scary. We all want to help sharpen our tools, but most of us don’t know where to start. One of my favorite tools as of late has been Ember.js . Ember describes itself as A framework for creating ambitious web applications. Feeling a little a...

    Related:
    1. So Much Open Source In 2014 hybridgroup.com 05 Jan '15, 6pm
  • CSS Animation for Beginners

    robots.thoughtbot.com 27 Dec '14, 12pm

    Name of the animation: A name that describes the animation, for example, bounceIn . Stages of the animation: Each stage of the animation is represented as a percentage. 0% represents the beginning state of the animation. 100% represents the ending state of the animation. Multiple inte...

  • North Star Metric

    North Star Metric

    robots.thoughtbot.com 25 Dec '14, 3pm

    We don’t use the terms Daily Active Users (DAU) or Monthly Active Users (MAU). The North Star metaphor reminds us to use the metric as our guide. The moment when a user gets authentic value may not always be when the user acts.

  • Handling Security Issues In Open Source Projects

    robots.thoughtbot.com 24 Dec '14, 12pm

    Cross-site request forgery (CSRF) vulnerability in doorkeeper 1.4.0 and earlier allows remote attackers to hijack the user's OAuth autorization code. This vulnerability has been assigned the CVE identifier CVE-2014-8144. Versions Affected: 1.4.0 and below Fixed Versions: 1.4.1, 2.0.0 ...

  • Why You Should Use a Mechanical Keyboard

    robots.thoughtbot.com 23 Dec '14, 4pm

    About a year ago, I remember catching a glimpse of an advertisement for mechanical gaming keyboards. I was shocked that someone would pay $80+ for something that came with your computer for free! What were the benefits of having this bulky piece of hardware with you while you had a pe...

  • Clear Your Mental Cache

    robots.thoughtbot.com 22 Dec '14, 12pm

    Ben Orenstein December 22, 2014 touchy feely When I was in high school, I was a pretty poor dancer. This was confirmed by subtle messages from friends and even family. As a result, I recorded a fact in my brain: “I suck at dancing.” Twelve years later, goaded by some friends, I attend...

  • Using Expressions in After Effects

    robots.thoughtbot.com 19 Dec '14, 12pm

    After Effects (AE) is a great tool for prototyping UI animations, but we’re always looking for ways to speed up our workflow. AE comes with support for expressions, which create relationships between layer properties or keyframes so the designer can animate layers without defining eac...

  • You Could Invent Object-Oriented Programming

    robots.thoughtbot.com 18 Dec '14, 12pm

    ;; make-user : String Number -> (list-of any) ;; Create a user record with a given name and age. (define make-user (lambda (name age) (cons 'user (cons name (cons age null))))) ;; display-name : (list-of any) -> String ;; Print the name of the user. Raises the error 'not-a-user if pas...

  • The Chameleon

    robots.thoughtbot.com 16 Dec '14, 12pm

    “It’s going great. The product is cool and so far things are going well.” I was happy to hear that a good friend of mine was happy with his new job. After a bit more chatting, we started discussing the talk I was preparing for RubyConf. When I touched on the “Chameleon Effect” his eye...

  • Xcode and git: bridging the gap

    robots.thoughtbot.com 14 Dec '14, 1pm

    Apple integrated git into Xcode 4 in 2011 much to the relief of iOS developers everywhere. Unfortunately when collaborating on projects with multiple developers, Xcode and git can still seem miles apart. Here are some ways that we can bridge the gap. .gitignore The first adjustment is...