Tracker will be unavailable for approximately 3 hours this Saturday, Oct 2, starting at 12:00pm (noon) PDT. We’re adding indexes and optimizing DB tables to improve performance.
Ask for Help
“S3 is giving us 400 timeout responses on every first upload for a request. All subsequent uploads for the same request seem to work fine.”
This turned out to be a bug in the HEAD version of Paperclip. They added a fingerprint method that creates a MD5 hash out of the original file, but the method forgets to rewind the original file when done. So S3 times out while waiting for data, but then rewinds the file before trying again. So it does ultimately get uploaded, but it was leading to ~10 second delays in the middle of the request.
- Be careful when doing MyModel.find_by_column-that-is-a-string in ActiveRecord. If you pass it an integer it won’t do a type conversion and will pass it down to SQL as an unquoted integer. MySQL will then not use any indexes you have on that column. This is with Rails 2.3.x and MySQL 5.0.x
We’re honored and excited to announce that TechStars will be launching their inaugural class at our shiny new Union Square office this January.
We’re big believers in getting the smartest people you can into the same room, and the TechStars mentors certainly qualify. They’re a who’s who of the New York tech scene and beyond, not just names but people with incredible insight, who will clearly have a lot to share with their startups.
We can’t wait to see what develops in the new space, and think the cross-pollination of people and insights will be significant.
Applications to TechStars are still being accepted. Check out past results from TechStars companies – they’re impressive! It’s easy to apply: Just answer 15 short questions about your team and your business on the TechStars web site: http://www.techstars.org/apply
Applications for the New York program close on November 21, 2011, however, early applications are strongly encouraged and they receive get additional consideration. Applications received prior November 15, 2011 are eligible to attend TechStars for a Day to learn more about the program. However, this event often fills up quickly so it’s best to apply as early as possible. You can update your application at any time, so don’t wait until your application is perfect, ship it!
Pivotal Tracker makes it easy to add stories to you project. Hit Ctrl-A, type a quick sentence along the lines of “As a user, I can…so that…”. On most of our projects, we find ourselves discovering new stories all the time, based on the continuous feedback loop that Tracker encourages. Not all stories end up in the backlog, but it’s liberating to be able to capture new ideas and user feedback as they occur.
The downside of this is that the icebox, where all new and unprioritized stories live, can grow out of control very quickly. It’s not uncommon for longer lived, active projects to end up with hundreds, even thousands of stories on ice.
A large and growing icebox can be a burden. Your project takes longer to load, it’s harder to find that story you’re sure you added just a few weeks ago. It becomes harder to focus on the future, due to what feels like ever growing debt of promises and yesterday’s priorities.
In our eternal optimism as software developers, we like to hang on to our stories. We know we’ll have more bandwidth just as soon as we get through this month’s big release. Besides, we’re hiring, right?
The reality is that on most software projects, the rate of new story discovery far exceeds the rate at which stories get completed. Typically, a new story in the icebox either gets prioritized and moved to the backlog fairly quickly (either immediately or in the next planning session), or it ends up staying in the Icebox indefinitely. New priorities have a way of displacing older ones.
Stories are perishable, and get stale over time, even when on ice (so to speak). It’s good practice to clean up your icebox regularly, and delete stories that have been sitting there for a while, and are unlikely to see the light of day any time soon. The old stories may have seemed really important at some point in the past, and involved the whole team spending hours in front of a whiteboard or a table full of cards writing them, but if the feature becomes a priority again in the future, you’re probably better off doing it again, based on all the new knowledge you’ll have by then. The important thing is the conversation and a fresh flow of ideas, not so much the stories themselves.
Export before Deleting
To preserve the ideas and any comment discussion in these old stories, it’s a good idea to export them before deleting them. You can do so by selecting them in the icebox via the selection boxes to the right of story titles, and using the Actions menu to export them. You can also export the entire icebox on the project Export CSV page, which is accessible via the Actions menu in your project.
Another option is to move old icebox stories from your active project to a separate project, which serves as a searchable archive. You can move stories from one project to another via the Actions menu as well.We typically keep exported old stories in a Google Docs spreadsheet, shared with the entire development team. The flexibility of a spreadsheet makes it possible to slice and organize the stories in arbitrary ways, and the shared nature of Google Docs make it easy to for anyone on the team to go back and look for ideas from the past, even to re-import selected stories back into your Tracker project if it’s really needed.
Icebox as an Inbox
Use the Icebox as an inbox, for continuous review of new stories, rather than a permanent storage device. As new ideas, feature requests, and bugs come in, triage them regularly. If a new story is really important, for example a production bug, you’ll probably drag it into the backlog immediately. Otherwise, review newly created stories with the team at the next iteration review and planning session, and either estimate them and prioritize them (by dragging them to the backlog), or move them into a system better suited for long term storage, like a Google Docs spreadsheet or a more general purpose project management or issue tracking tool, like JIRA or Lighthouse. Tracker has built-in integrations with these tools, allowing you to bring back and link stories easily with drag and drop import.
Ask for Help
“Does anybody have solutions for a public sandbox?”
They want people to be able to modify their data, but want the data to roll itself back to the clean state at specific times, or after certain events have happened.
Some people are having problems with the latest RubyMine EAP build. When using our standard keyboard map they are unable to make new lines, they have to use Shift-Enter.
- People have good things to say about http://html5boilerplate.com/
- A team ran into a problem with https and S3. Using the bucketname.s3.amazonaws.com syntax instead of the s3.amazonaws.com/bucketname syntax can fail when using https if your bucketname has too many segments. This is a known limitation of wildcard certificates.
At Pivotal Labs, one of the services we provide our clients is helping them interview and hire. Pivotal Labs and our clients place a strong emphasis on Agile development and its many aspects: Pair Programming, Test-Driven Development, rapid iterations, and frequent refactoring.
Honk, a social site helping consumers decide which car is right for them, is looking for Ruby on Rails developers to join their team in San Francisco. The full job posting follows.
Honk.com is dedicated to moving the auto industry ahead through advanced social recommendations – our site gets people in the perfect new car specifically for them. To make this happen we’re building a deep set of next-generation technologies and need a few more top-caliber Ruby on Rails / Sinatra developers to round out our team of experts and veterans. If inventing the future of social networking with a team of technology and entrepreneurial experts using leading-edge technologies sounds like your bag, baby, well… We’d love to meet you!
Soundbytes: Web-scale news and feed management. Advanced recommendation algorithms using exclusive data feeds. Creating a killer user experience designed to go viral. Lean startup and agile development processes. Leveraging our speed and ideas to be the David who dances with the automotive Goliaths. Lone wolves No; great teammates Yes.
We’re lucky enough to have an amazingly great (and fun) product development team and are smart enough to know that only by keeping our team’s DNA at the top of the chart can we grow into the game-changing company we feel destined to be. This position will work directly with our founders and senior team: CEO/CTO/Head of Product/etc, and will be expected to become one of the key leaders of our development team.
- Highly energetic team committed to a great product and culture
- Fully funded by a major media company – built-in financing & exit strategy PLUS great upside
- Highly experienced industry and start up veterans
- Growing, viable revenue streams
- Possess a burning internal goal of creating game-changing product
- Will leave your ego at the door and thrive in healthy debate
- Have passionate integrity and a healthy sense of work/life balance
- Can work productively together with and learn from other top-level players
- Are a world-class developer looking for the right team & opportunity to really make an impact
What we need from you:
- Expert-level knowledge of Ruby on Rails (2 years+), Sinatra is a plus
- Have delivered great technology quickly and understand how to ship in a fast-changing environment
- Well versed in Agile processes / TDD / Continuous Integration
- Good communicator and team member
- Smart and gets things done – you have a can-do attitude for anything from server setup and build maintenance through to QA and feature delivery
You’ll also need thorough experience & understanding of:
- Rails 2.3.x / Mysql
- RSpec 1.x / TDD
- Git / Capistrano
- Linux and/or OSX Development (we use RubyMine)
Bonus points for these – else an interest and ability to learn quickly:
- Sinatra / Unicorn
- MongoDB / Redis / Thinking Sphinx
- Webrat / Selenium / ScrewUnit / Jasmine
- Facebook Connect-JS API
- Amazon EC2/S3
- Data feed management and integration
- High-availability issues (deployment, monitoring)
- Anything mobile (iPhone / iPad, Android, etc)
To apply for the position, please visit http://honk.simplicant.com/job/detail/5172-senior-ruby-rails-sinatra-developer
Ask for Help
“Facebook(or other third party service) is down, and my build is broken. What should we do about this?”
Without extensively mocking Facebook, some of our projects have separated tests that require any third parties. Then, you can accept builds even if tests from that collection fail.
“How to remove errors from validations?”
The best way to handle this is to disable the validations in question by overriding them, though in some cases it may require you to dive deeper into ActiveRecord. Most likely you want to refactor to not have to do this, and if its a plugin you’re using, modify that. Our own Socialitis project is rumored to include code to accomplish this as well.
Adam has been doing work with execCommand, which may be useful to you if you’re trying to add text editor-like features to your webpage.
If the end of your range has an empty element, surroundContents can choke. The best thing to do is programmatically alter your range when it is in this situation, or you may get an exception about a “partial selection”. Also, you’ll need to be careful to insert the right sort of node depending on the contents of your range as to not introduce invalid markup into your page.
UPDATE: We’ve released a new version of the Jasmine Gem and these steps are no longer required. Please see the announcement here
Bad news, everyone! At the moment, the released Jasmine gem is not yet Rails 3 compatible.
Good news, everyone! We now have a short term workaround while we deal with the work needed to work seamlessly with Rails 3.
The Jasmine gem is the easiest way to integrate Jasmine into your web project, including Rails. It adds auto discovery of source & spec files, a tiny Rack app for running them, and a Continuous Integration task (using Selenium) to run your tests on every check in. We use this gem on all of our Rails projects today.
But what if I’m not using Rails?
This fix is only for Rails 3. If you project is not using Rails or does not require RSpec 2, then you can ignore this post.
How the fix works
Once you’ve already created your Rails 3 project, here’s a script that does the right things to vendor the Jasmine gem:
What you see above:
- making a
vendor/gemsdirectory if you don’t already have one
- getting the Jasmine gem code: cloning the Jasmine gem, getting Jasmine itself (as a submodule), then getting & checking out the correct branch
- copying some files from the Jasmine repo up into the gem’s directories (a step Bundler can’t do for us)
Once this is done, you need to add this line to your
Gemfile, likely in a test group (if you have one):
gem 'jasmine', :path => 'vendor/gems/jasmine'
Run a bundle install to get the Jasmine gem installed.
cd ../../.. bundle install
Now you can run the generator to make your Rails project a Jasmine project.
bundle exec jasmine init
Try running the example Jasmine specs:
http://localhost:8888. You should see 5 specs pass.
Now you’ll need to edit
jasmine.yml and point to your source, spec, and helper files. Delete the example files once you get your specs up and working.
Lastly, you need to check in the Jasmine gem source into your project so that other development machines and your CI box can run your Jasmine specs.
- Remove the
- Remove the
vendor/gems/jasmineto your repo directly (
git add vendor/gems/jasmine)
That should do it.
UPDATE: There was an issue in the repo branch that has been fixed.
Using these instructions the first time, you should be fine.
If you’ve already run them, then you need to:
cd vendor/gems/jasmine git pull cd ../../.. bundle install
rake jasmine:ci should work fine.
Ask for Help
“Rails 3 / mysql2 gem: Errors from ActiveRecord due to DB handler going bad while running Cucumber tests. What to do?”
Cucumber does some forking, which may result in your connection being shared in multiple processes, which in turn results in Bad Things©. There may be a way to disable this behavior in the Cucumber rake task. A blunter, less desirable solution may be changing ActiveRecord to reconnect more frequently.
Put an error handler on document. You could make an AJAX request back to your server from there to send debugging information. Alternatively, making an AJAX request at the time of your error may not be safe, so you can also put a request in the source tag of an image or script tag, and this may be more reliable.
Most events are written by developers to help them debug server side functionality. Semantic events are written explicitly for building analytics. Splunk allows developers to create sophisticated analytics for their system without resorting to the typical RDBMS and data cube. Chief Architect Rob Das describes what semantic events are and the best practices for creating them, and follows with a demonstration of how Splunk is used on this type of data.
See all our talks at http://pivotallabs.com/talks