For newcomers to JavaScript, the language's prototypical inheritance model is often a source of confusion, particularly for those used to classical inheritance in languages like Java, C++, and Ruby. Right off the bat, new JS developers generally hit a few blocking questions:
Developers Collide: Resolving Sequencing Conflicts in ActiveRecord Migrations
By Randy Burkes on Sep 12, 2013 5:22:00 AM
Here at Salsify we follow a git flow branching model, so it is common for us each to work independently on feature branches while regularly merging to and from a shared develop branch. We also routinely push code to staging and production environments for internal review and release. The combination of our fast-paced development environment and extensive use of branching occasionally results in conflicts when landing new features. We recently encountered one of these conflicts (sequencing not code) in a pair of ActiveRecord migrations and found a workaround we thought might be useful to others. The following migration excerpts were written on two different branches:
Read More →
At Salsify we're developing a single-page Javascript app backed by Rails. We've done so with Backbone, extending its functionality through various extension projects when needed (Marionette, Cocktail, etc). The project we've made the most use of lately is Epoxy, and that's what I'll talk about today.
Read More →
Recently I blogged about the Delayed Job plugin mechanism. In this post we'll explore how we can use this plugin mechanism to add job groups to Delayed Job allowing us to:
Read More →
Capturing Logs from Rake Tasks and Rails Console on Heroku
By Jeremy Redburn on Jul 8, 2013 1:41:00 PM
Quick one today, but hopefully useful for others as it wasted a few hours of our time. At Salsify, we've been using Rake tasks to handle a few one-off data migrations. We ran into trouble, however, when the many logging statements we'd included didn't show up in our logs. We use PaperTrail but after some digging realized this applies to Heroku's base logging as well (at least on the Cedar stack).
Read More →
Using Cocktail To Create Mixins for Backbone Models That Respect Inheritance
By Dan Spangenberger on Jun 17, 2013 8:00:00 PM
At Salsify we use Backbone heavily to represent our data, fully embracing its Model/Collection paradigm. Backbone models and collections in fact represent all server-managed state in our single-page Javascript client application. We also use Backbone views, relying heavily on Marionette to structure our presentation and Epoxy to bind our model data to the DOM in our views.
Read More →
One of the best things about Rails is how easy it is to interact with the database. Unfortunately, that's also one of the worst things about Rails if you care about performance (which you hopefully do). Inevitably, you'll find your application slowing down and track down the root cause to a recent change that spawned far more database queries than you expected, or hits the database when you least expected it.
Read More →
Salsify is a single-page app (Backbone on the client, Rails + Postgres + Elastic Search on the backend) that requires very low latency responses to provide an interactive experience for browsing and editing product catalogs. In order to satisfy these latency requirements we rely heavily on Delayed Job for running time consuming tasks like importing data, exporting data, and applying bulk updates in background processes. We've found useful pattern for using Delayed Jobs callbacks and hooks together that I wanted to share.
Read More →
Recently I looked around for a JSON streaming parser written in PHP and couldn't find one. So I wrote my own and am making it available to anyone who wants to use it.