robots.thoughtbot.com Archives - 27 December 2014, Saturday

  • 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...

  • Introduction to Function Currying in Swift

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

    There’s still one more change we can make that will (arguably) improve our add function. Right now, we’re manually creating and returning the closure, and giving our function an unintuitive signature. But Swift actually supports this kind of function out of the box. We can bring our f...

  • Introducing Design and Front-End Development Trails for Upcase

    Introducing Design and Front-End Development Trails for Upcase

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

    We have been working on a new series of design and front-end development trails for Upcase. Today, I’m happy to announce the first two trails. The CSS Transforms & Transitions trail will teach you the basics of 2D transforms - how to make elements change from one style to another, sca...

  • Merck Design Sprint Part Deux

    robots.thoughtbot.com 09 Dec '14, 6pm

    Kyle Fiedler December 09, 2014 design During the first sprint , we both validated and invalidated some of the assumptions we made about the solution to the Merck Developer Portal. Several problems and insights arose that we hadn’t initially anticipated. We spent a few hours reviewing ...

  • Using the Dropbox Objective-C API in Swift

    robots.thoughtbot.com 08 Dec '14, 10pm

    Using Objective-C sources and frameworks with Swift is made possible through Interoperability. The compiler has all the magic built in that allows us to call Objective-C methods as if they were Swift functions. However, Objective-C and Swift are very different languages and what works...

  • Prototype with Proteus

    robots.thoughtbot.com 08 Dec '14, 6pm

    We use static site generators for everything from design prototypes to marketing websites, to just testing out a quick idea. There are quite a few static site generators out there and they all have their purpose. The one for you depends mostly on your preferred programming language. I...

  • Introducing the Reboot Podcast

    robots.thoughtbot.com 08 Dec '14, 6pm

    We’re excited to announce Reboot , a show hosted by Adarsh Pandit which features interviews with people who have made dramatic career changes. The show joins The Bike Shed , Build Phase , and Giant Robots in the thoughtbot radio family. We’re experimenting with recording this show as ...

  • A Guide to Caching Your Rails Application With Fastly

    A Guide to Caching Your Rails Application With Fastly

    robots.thoughtbot.com 05 Dec '14, 7pm

    The simplest way to do cache invalidation is to “purge” the entire cache each time a change is made in your application. This means that you tell service that is caching your site - in this case, Fastly - to retrieve all new content because the cache is no longer a valid representatio...

  • CSS Animation for Beginners

    robots.thoughtbot.com 04 Dec '14, 6pm

    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...

  • Testing and Environment Variables

    robots.thoughtbot.com 03 Dec '14, 10pm

    As developers have moved hosting applications to cloud-based solutions like Heroku , a number of patterns for developing and deploying applications emerged. Perhaps the most well-known set of methodologies is the Twelve-Factor App , which outlines areas in which applications become di...

  • Writing Go in Vim

    robots.thoughtbot.com 02 Dec '14, 10am

    I recently needed to update my Vim setup for writing Go (the latest release no longer ships with its own Vim plugin ), so I thought I’d take this chance to document and share how to work productively on Go with Vim. Prerequisites You’ll need a working Go installation to make use of th...

  • Have Some (Referential) Integrity with Foreign Keys

    robots.thoughtbot.com 02 Dec '14, 7am

    Referential integrity is a relational database concept that states implied relationships among data should be enforced. Referential integrity ensures that the relationship between rows in two tables will remain synchronized during all updates and deletes. Rails allows us to easily set...

  • How to Fix Circular Dependency Errors in Rails Integration Tests

    robots.thoughtbot.com 28 Nov '14, 10pm

    We recently joined an existing Rails 4.1 project that uses AngularJS. We observed sporadic Capybara::ElementNotFound failures in RSpec feature specs with JavaScript. These failures were false positives and undermined our confidence in the test suite, preventing us from using a fluid o...

  • Giving Thanks

    Giving Thanks

    robots.thoughtbot.com 27 Nov '14, 2pm

    Melissa Xie November 27, 2014 news It’s that time of year again — Happy Thanksgiving to all! We’d like to take the time to remember all that we’re thankful for this year. Our teammates and our families Thank you to all of our teammates for the amazing work they do on client projects, ...

    Related:
    1. 223: November 27, 2014 rubyweekly.com 27 Nov '14, 1pm
  • Input Accessorizing with UIViewController

    Input Accessorizing with UIViewController

    robots.thoughtbot.com 26 Nov '14, 5pm

    When designing a user interface that accepts and displays text input, a common pattern is to have a text field persist on screen. As the only control in the view, it is immediately clear how to enter text and have it displayed. It doesn’t hurt that Apple has been training users to acc...

  • We Want To Teach You Haskell

    We Want To Teach You Haskell

    robots.thoughtbot.com 26 Nov '14, 2pm

    We’ve been learning and teaching each other Haskell for a while now. We’ve read books together, we have a very active #haskell Slack room, and we have a biweekly meeting to pair on Haskell projects. Even the commenting system for this blog is powered by a Haskell service . As part of ...

  • Introduction to Conditional HTTP Caching with Rails

    robots.thoughtbot.com 25 Nov '14, 8pm

    HTTP provides developers with a powerful set of tools to cache responses. Often times we don’t want a client to blindly cache content that it has been given. We may not be able to rely on setting specific expiration headers either. Instead we need a way for the client to ask the serve...

  • Ember for Designers: Components

    Ember for Designers: Components

    robots.thoughtbot.com 24 Nov '14, 6pm

    Imagine a world where you aren’t confined to the existing standard for available HTML tags. You aren’t limited to <h1> s and <div> s and <section> s. You can define and use your own application-specific DOM elements for more semantic and readable markup. The W3C is currently working o...

  • .@upcase is better than ever and now more affordable!

    Upcase Is Now More Affordable

    robots.thoughtbot.com 21 Nov '14, 7pm

    Over the last several months, we’ve been working to make Upcase even better and more affordable. Today, we are simplifying our pricing plans, and reducing the cost of our most popular plan from $99 per month to just $29 per month. We are committed to this new pricing strategy, and the...

  • Control Rdio from Vim by @gabebw

    Control Rdio from Vim

    robots.thoughtbot.com 21 Nov '14, 2pm

    function findRdioTab(){ var app = Application("Google Chrome"); var rdioTab = undefined; for(var i = 0; i < app.windows().length; i++){ var window = app.windows[i]; var possibleRdioTabs = window.tabs.whose({ title: { _endsWith: 'Rdio' } }) if( possibleRdioTabs.length > 0 ){ rdioTab = ...

  • Writing Clojure in Vim

    robots.thoughtbot.com 20 Nov '14, 4pm

    Editing Clojure , or any other Lisp dialect , is unlike editing any other language we normally write. We can no longer just make our changes line-wise, instead we must deal with editing s-expressions , or expressions surrounded by parentheses. Let’s look at a small Clojure function. (...

  • Using Yesql in Clojure

    robots.thoughtbot.com 20 Nov '14, 12am

    We previously wrote about writing webapps with Liberator in Clojure . This time I want to look at how we chose to integrate our JSON API with PostgreSQL . Without trying to overgeneralize, there seems to be a few common ways to integrate Clojure with databases. The first, as shown in ...

  • Updated Test-Driven Rails Videos

    robots.thoughtbot.com 18 Nov '14, 9pm

    I’m happy to announce that we’ve updated the content for our popular Test-Driven Rails course on Upcase . What’s changed? Updated Gems, including Rails 4 and RSpec 3 We’ve updated the course to take advantage of newer versions of Ruby, Rails, RSpec, and Capybara, allowing viewers to b...

    Related:
    1. Ruby on Rails testanswers-100.info 18 Nov '14, 6pm