Local deal pioneer, and our client Groupon has just launched deal personalization, allowing users to receive deals that are more relevant based on zip code and personal preferences. This is great for all the fans of Groupon out there, as it gives them more interesting deals to choose from, and it allows Groupon to distribute more deals in each city it serves.
We're excited to have gotten a chance to help with this feature, and look forward to seeing how this reshapes the daily deal landscape!
Ask for Help
"What do you do when your JS files are so big they crash RubyMine? Like when they are bigger than 300k..?"
Try turning off syntax highlighting. We're going to try to send a project to JetBrains that reproduces this issue so they can get log a ticket for it.
Interesting Things
There appears to have been a data center outage early morning, affecting a number of applications including Pivotal Tracker. This has caused connectivity problems for users in some locations, and it appears to still be persisting for some.
We're working with our hosting provider to get this resolved as soon as possible, this is our top priority.
This is the second data center outage this week. At the moment, we do not have enough information to know whether the outages are related.
Also, we have received reports that Tracker has been unreachable from certain parts of the world (including China) since the migration to a new data center last week. We've filed a request with Engine Yard to investigate, and hope to have this resolved soon.
Our apologies for the inconvenience these outages have caused. We'll post more information here as we receive it. You can also follow @pivotaltracker on Twitter for updates.
Ask for Help
"What good OpenID solutions are there for rails?"
Janrain provides a service and the rpx_now gem that can handle a lot of the OpenID logic for you.
Interesting Things
- You can use rvm with the
--rvmrc --createflags to create a.rcfile in any directory that will set the version of ruby to use in that directory. A few people said this is particularly useful to do in the root directory of your projects. - jQuery 1.4.3 has a bug with IE7 and live events, e.g. if you register a live event for form submits and for button clicks, when a user clicks a form's submit button on the click event is fired and not the submit event. 1.42 seems to work correctly.
- There's an Android meetup tonight about real time development here in SF. Check it out if you're interested! We've had good experiences at previous meetups with this group.
- And last but not least... a Rails 3 RC came out late last night! Looks like they're hoping to have an official release in a few weeks.
Interesting Things
- Bundler 1.0.0.rc.1 was released - try it out and help find any issues!
- There was a warning that running thin in dev mode can cause all requests to be cached in memory... not so thin. Running in production mode doesn't seem to have this issue.
- Another warning today - Rails 2.3.8 and mongrel don't play nicely together. There are some issues with headers not being passed correctly between the two of them. It was recommended to use passenger instead of mongrel if you want to use 2.3.8.
"I've upgraded Firefox to 3.6 and my selenium and cucumber specs are busted. Anyone else have this issue?"
The selenium-rc jar that comes with webrat needs to be manually updated to the latest version. See prior(http://pivotallabs.com/users/alexander/blog/articles/1241-standup-5-10-2010) posts(http://wjb-tech.blogspot.com/2010/03/ruby-cucumber-webrat-selenium.html).
"Does anyone else ever get ghost files, where RubyMine shows the file as empty but other text editors show the contents, only to have the file return on its own after a few hours?"
Removing RubyMine's cache directory doesn't seem to help, nor does restarting RubyMine. Perhaps we can look for a "Mediocre Code Opacity: 0" in the RubyMine display settings?
Interesting Things
If your debugger stops working in RubyMine, you may want to uninstall all your ruby-debug gems and start from a fresh copy of ruby-debug-ide version >= 3.4.7.
JetBrains often asks for a copy of the project displaying the problem when a ticket is submitted. Maybe we should set up a "RubyMine problem project".
EngineYard is making progress on their new command-line deploy interface. If you'd like the EY web deploy interface to conform to the patterns of the CLI gem, there's now a setting in Engine Yard to convert your project over to those rules, meaning you can deploy without re-chef-ing your server. Much faster.
Ask for Help
"Is there a good heap analyzer to debug some memory issues in our app?"
Some options to look into include rubyprof, valgrind, bleakhouse and memprof.
"Anyone else having problems with RubyMine 2.02 allowing the cursor to be placed at arbitrary locations out beyond the end of the line? We've turned off the setting that controls this."
This can happen if RM is in column-edit mode. Also there's a setting to "Strip Trailing Spaces" -- if you previously were allowing arbitrary cursor placement, you may need to enable this to clean up.
"Anyone have experience dealing with E4X to parse javascript in XML? It seems to be choking on é characters -- in the iso-8559 doctype these are legal content."
No solutions were forthcoming. To recreate this error yourself, plug the following into your Firebug console:
var someHtml = '<p>crème fraiche</p>'; new XML(someHtml); // => "TypeError: unknown XML entity egrave"
"What is the best javascript XML parser?"
jQuery is recommended in the browser and also works on top of env.js in Rhino. libxmljs is built on top of V8.
"Webmock is having trouble correctly parsing matching query params in SSL. Anyone seen this?"
The easiest thing may be to skip the SSL requirement for the tests.
UPDATE: The webmock issue was resolved using a couple of techniques. Firstly, the keys for your query params have to be symbols, not strings. This avoids a problem with sorting them for the comparisons. Secondly, it's better to pass the expected url as a regex. This may be related to :443 getting added to the end of SSL requests, or may just be a bug.
I often hear questions from Pivotal Tracker users about how to organize teams and projects. We also see many requests for features that would make it easier to see stories from across multiple projects.
Tracker is designed for full immersion in one project at a given time. This stems from how we work at Pivotal Labs.
We organize teams such that a single team (and the people on that team) have a single backlog (and Tracker project). This means that within a team, there are no conflicts in terms of priorities, there is less context switching, and the team is completely focused. It leads to more consistency from iteration to iteration and therefore a steadier velocity, which allows you to have a more accurate insight into how long the rest of the backlog (or a release) might take to complete.
We also make it so that anyone on a given team can grab the next available story from the top of the backlog (or the current iteration). This implies few or no specialists (there is no back-end guy), and is generally referred to as collective ownership. It increases overall efficiency by allowing the team to dynamically re-balance, and minimizes reliance on any individual person (which among other things, leads to more relaxing vacations for developers).
The project's customer (or product manager) focuses on prioritizing stories in the backlog, and the development team is collectively responsible for delivering software based on the backlog.
We use labels to tie related stories together within a project. These can represent a major feature, specific end customer, etc. Labels can help answer questions like, how much work is left in this large feature?
A single backlog for the entire team does put more work on the plate of the owner of the backlog (customer / product manager), as he or she has to constantly make potentially difficult prioritization decisions, but, thinking hard about priorities is a good thing, and it allows the development team to focus on getting more work done. That ultimately makes everyone happier.
Also, there are people in certain roles (for example executives and designers), that given their nature, tend to be involved with multiple projects at once. Tracker could certainly use some features to help these roles, and we're thinking about these, but overall, it's more oriented towards enabling the immersed team.
A single team/project can get large enough to the point where it becomes challenging to manage a single backlog. For us, this point is generally reached with 5 to 6 pairs of developers (or 10 - 12 people). Assuming that more developers can actually add value to the overall project (this is not always the case), it's probably worth considering splitting the team into multiple smaller teams, each with their own single backlog.
To avoid knowledge and cultural silos with multiple teams, we find it helpful to rotate a few people around teams every iteration. It's important to maintain consistency (and therefore a steady velocity), so you don't want to shift too many people around too often - usually rotating just 1 person (on each team) each iteration is enough, assuming you're pairing and switching pairs within each team often.
In a multi-team (and Tracker project) environment, the product/project manager acts as a load balancer, and allocates work across the multiple teams/backlogs by considering velocity, dependencies, etc. This is typically a full time job. Tracker doesn't have much out of the box to help with this, but we're thinking about this as well, although it may be that some of this kind of work is better done in a spreadsheet, or other, more traditional project management tools. (As a side note, we did recently add the ability to move stories between Tracker projects, making things a tiny bit easier for people who manage multiple teams/projects).
I'd love to hear your thoughts on any of this, including suggestions for how to organize large projects and multiple teams (and how Tracker can help with that).
Ask for Help
"Is there a way to get better access to the logs in Heroku?"
heroku logs only displays the last 100 lines; This isn't even enough for the full stack trace of the last error in many cases. One team is having problems using the ExceptionLogger plugin as well. Hoptoad might resolve this somewhat. We're really looking for a heroku logs --tail, which doesn't exist.
Interesting Things
- RubyMine has the handy feature of showing your test failures while the test suite is still running. Unfortunately, should you try to click on a failed test to see the output, RM has a nasty habit of stealing your window to continue showing the output of the current running test. No more. You can click the little gear on the upper right corner of the left testing pane. From there you can uncheck "Track Running Test".
- The new RubyMine EAP has a bug where you lose your current indentation when you hit enter twice. A fix is on the way.
- jQuery will sometimes execute the contents of script tags embedded in HTML before you attach then to the DOM. This occurs when doing a wrap or a replace, and might happen other times too.
- Tonight is the SFRuby meetup. Rumor has it there will discussions of agile over soft serve ice cream.
Pivotal Tracker is moving to a new private cloud hosting environment at Engine Yard this Thursday, July 22, starting at 8pm PDT.
Planned downtime is approximately one hour, but because we're changing IP addresses of the Tracker servers, it may take longer for DNS changes to full propagate.
If you've opened your firewall to a specific IP address for Tracker integrations, you'll need to make changes. We'll post the new address of the integrations server after the move, you can also 'ping api.pivotaltracker.com' to resolve it.
Apologies for the inconvenience, we're hoping for noticeable performance improvements in the new environment.
