We were briefly mentioned in an article about hiring Jr. developers from a local code school.
Brief mention in the Portland Business Journal
26 Mar 2014
26 Mar 2014
We were briefly mentioned in an article about hiring Jr. developers from a local code school.
26 Mar 2014
We work primarily in Ruby on Rails, but every once and a while a client will need us to fix a critical bug in an existing PHP/Wordpress app that is slated to be deprecated.
We use Pow on our development machines. This is great for developing Rails applications but it does't play so well with other stacks that require port 80 to run.
There are some instructions out on the web that show you how to use Apache in conjunction with Pow so that both apps can be served simultaneously. This seemed like a little too much overhead, so I started poking around for a solution.
Did you know that PHP comes with an embedded web server? Yup, it's built in as of PHP 5.4 and OS X Mavericks comes with it pre-installed. If you're looking for a newer version, you can install 5.5 using homebrew-php.
Now that we don't need Apache to run PHP, we'll need something to proxy requests back to our embedded server. For this, I used Rack.
I setup a simple Gemfile with the following gems:
gem 'rack'
gem 'rack-legacy'
Then it's time to create our rackup file. Create a file titled config.ru and add the following:
require 'rubygems'
require 'bundler'
Bundler.setup
require 'rack'
require 'rack-legacy'
use Rack::ShowExceptions
use Rack::Legacy::Index
use Rack::Legacy::Php
run Rack::File.new Dir.getwd
That's it! Place this file into the root of your PHP project and you should be able to call rackup
from the terminal to start the Rack server. By default this will be at http://0.0.0.0:9292.
There is one caveat though. At this time, Rack Legacy, will only respond to requests if it thinks that it's a valid PHP file.
From the Rack Legacy library this is called before a request is proxied:
def valid? path
return false unless path =~ /\.php/
path = path[1..-1] if path =~ /^\//
path = path.split('.php', 2)[0] + '.php'
path = ::File.expand_path path, @public_dir
::File.file? path
end
In our case this wasn't working for us because of the way that pretty URLs were being handled by Wordpress. In order to get around that, I monkey-patched Rack Legacy to simply pass all requests back to PHP.
Here is what I added to the config.ru file to make this happen:
class Rack::Legacy::Php
def valid? path
return true
end
end
With that change, the Wordpress site was working as expected.
25 Mar 2014
I just ran into an issue with a branch that had a tag with the same name as the branch and it was causing strange issues with branching off of that, so this was very helpful.
20 Mar 2014
It's no mystery that client side JS frameworks are here to stay, and while they do offer many benefits. The drawbacks can be daunting, especially if you have an application with any traction already.
Here Airbnb developer Spike Brehm (@spikebrehm) lays out what he sees as the future, the Isomorphic Javascript MVC...
Oh and while we are at it. Welcome to Portland @Airbnb!
14 Mar 2014
Topics discussed in the chat room this week
13 Mar 2014
Tuesday night I attended the second ever PDX Digital PM meetup session at Instrument. It was beyond refreshing to meet with other project managers / producers and hear that others are facing similar operational challenges that candidly, we deal with daily at Planet Argon. During the meetup we broke into small groups and discussed various topics such as preferred tools, process, and client expectations.
The small group format provided us with the opportunity to share our experiences and work with each other through some issues that we face. Garnering such rich information from peers in the industry is beyond valuable, especially for someone who works with a small team.
One of the most valuable pieces of information that I carried away with me last night concerns a scheduling tool called 'Merlin'. Listening to the Instrument’s producers rave about this tool while at the same time voice concerns about other tools I myself have tried and immediately discarded in the past, I knew I had to try it. So far, I might just be sold on it.
Special thanks goes to Adam Edgerton, of Metal Toad Media, who took the time to organize these meetups. Prior to this, I was unable to find anything quite like this in Portland. Last night’s turnout clearly indicates that this is a much desired gathering of the minds. I'm greatly looking forward to the next one on April 8th!
12 Mar 2014
Recently in the Harvard Business Review, Wyatt Jenkins of Shutterstock shares some thoughts on how their product benefits from experimentation.
6 Mar 2014
What makes people passionate, pure and simple, is great experiences. If they have great experience with your product and they have great experiences with your service, they’re going to be passionate about your brand, they’re going to be committed to it. That’s how you build that kind of commitment.
5 Mar 2014
Once leadership was all about planting your flag on the summit and standing heroically for a photograph. Now the leader is the one pacing anxiously at base camp waiting to hear good news.
Really enjoying this book, which was recommended to me by Dan Saffer a while back.
4 Mar 2014
In a project we’re currently working on, we created a form builder that could publish complex forms that include features such as:
Have a project that needs help?