Jim Kingdon's blog



Jim KingdonJim Kingdon
New York Standup 10/3/2008
edit Posted by Jim Kingdon on Friday October 03, 2008 at 01:29PM
  • Our site has a number of buttons which are: (a) really links which look like buttons instead of links, (b) ajaxy actions, which typically cause an edit box to appear, or (c) form submissions. This item is especially about (a) and perhaps (b). Right now we have what is a glorified styled a tag, as described here. We've been having trouble getting that to work right (in particular, the height seems off by one pixel in mysterious circumstances). Probably the easiest solution is the rails button_to helper, which makes a form with one button in it (and method=get). This loses some desirable behaviors of the a tag (such as being able to control click or menu-click to open in a new tab), but certainly solves the rendering hassles.

Jim KingdonJim Kingdon
New York Standup 10/2/2008
edit Posted by Jim Kingdon on Thursday October 02, 2008 at 01:35PM
  • Selenium on several machines was failing with Connection Refused errors. This turned out to be caused by IPv6 entries (for example, "::1 localhost") which were added by a recent MacOS upgrade. Commenting out those entries seemed to fix the problem (or work around it, anyway).

  • Some people expressed a style preference, in rspec, for "pending" rather than an empty "it" block, to make it easy to search for pending tests. Excessive pending tests may be an anti-pattern. On the other hand, writing pending tests, at least temporarily, may be a good way to sketch out an area of functionality before it is implemented.

  • We have sometimes found that editing selenium tests (but not other ruby files) in IDEA is incredibly slow (as in, 30 second pauses). Two things to try are removing the gems directory from the project (in favor of just those gems which you need to be able to look at in IDEA), or at least removing the selenium gems. Another such example is that IDEA can be really slow editing the end of a long fixture file. This is probably IDEA 7.0.3 or 7.0.4.

Jim KingdonJim Kingdon
New York Standup 10/1/2008
edit Posted by Jim Kingdon on Wednesday October 01, 2008 at 01:29PM
  • There is a ruby meetup tonight at Outside In, at 7pm.

  • For load testing, Load Testing With Log Replay from igvita.com has a review of several common tools.

Jim KingdonJim Kingdon
New York Standup 9/30/2008
edit Posted by Jim Kingdon on Tuesday September 30, 2008 at 07:02PM
  • What's the best way to import a million records into a postgres database via ActiveRecord (which is needed to implement some application-specific logic)? We anticipate waiting a second (or so) between inserts to avoid slowing down the production database (which is under load, almost entirely reads). If there is any ActiveRecord feature which helps batch together inserts, noone knew about it. As for generally how long this will take (estimates range from 9 to 27 hours), and what the load on the production database will be, we planned on answering that with a trial run of a small number of these records.

  • We're thinking of having capistrano deploy to two demo servers, one particularly aimed at showing to prospective users of our application, and the other mostly for story acceptance. The former would be hosted at a hosting company; the latter an internally run machine. Several people reported they have done this on their projects, and the problems were minor, mostly having to do with whether the deployed location (/u/apps/whatever or some such) is different on the two machines (the solution would be to use the capistrano variables, but tracking down all the places that need to do that could be an issue).

  • Erector tip of the day: in a Rails project, you can put a file (named edit.rb or edit.html.rb) in your view directory, and Rails/Erector will find the template implicitly (as it would for ERB, HAML, etc). It is not necessary to explicitly call render from your controller method.

Jim KingdonJim Kingdon
Standup 08/29/2008
edit Posted by Jim Kingdon on Friday August 29, 2008 at 04:52PM
  • Using multiple buckets for Amazon S3. One of our sites has a lot of images (perhaps 30+ photos per page, different for each page and user) and got significant benefits from using four buckets instead of one. Multiple buckets allows browsers to fetch several images in parallel. Increasing it beyond four probably wouldn't help, as browsers have a limit on how many parallel requests they will send.

  • Amazon S3 now has a copy command. This could be useful, for example, if you have a lot of data in a single bucket and want to move it to multiple buckets. Copy is faster than downloading and re-uploading all that data. The ruby S3 gem, however, only lets you copy in one bucket, so you'll need to bypass the S3 gem.

  • We wrote a script to dump a local SQL database and copy it up to a remote server (for example, a demo or production server). This is in contrast with a script we wrote some months ago which copies from demo to a local workstation (for test data, reproducing data-driven bugs, etc). The push to remote feature was for a situation in which there was a bunch of data to be generated (based on some XML input files) and we could afford to bog down a workstation for half an hour, but not an overloaded (and perhaps underpowered) server.

  • Deprec is a set of capistrano recipes for setting up a remote server (in conjunction with deploying an application), for example creating accounts, ssh keys, init scripts, logrotate, etc.

  • Capistrano 2.3 has weird sudo issues (deleting old releases or something). Recommend Capistrano 2.5.

Jim KingdonJim Kingdon
Standup 08/28/2008
edit Posted by Jim Kingdon on Thursday August 28, 2008 at 04:20PM
  • What's a good way to measure an application's memory usage (beyond top)? Ideally, this would provide summarized information (rather than a lot of raw data like Linux's /proc/pid/maps).

Jim KingdonJim Kingdon
Standup 08/27/2008
edit Posted by Jim Kingdon on Wednesday August 27, 2008 at 04:26PM
  • Does anyone have any experiences with one of the object mother libraries like object daddy? (Answers at standup were "no, we always wrote our own object mothers in a domain-specific way"). The appeal of a library is that it might help keep track of what needs to be done to make an object pass rails validation.

  • Clock.zone now has exists. (Background, pivotal has a Clock class which has a now method which can be implemented either by a call to Time.now for production, or a mock clock which lets tests specify the "time"). This is so that the rails 2.1 features like Time.zone.now have an analog in Clock.

Jim KingdonJim Kingdon
Standup 08/26/2008
edit Posted by Jim Kingdon on Tuesday August 26, 2008 at 04:14PM
  • Looking for options to maintain a website of technical documentation with the following:

    • A somewhat technical person, but not a programmer, must be able to maintain the site (think a technical manager or a tech writer).
    • I need to display code samples, so this should be easy/convenient
    • Somewhat skinnable (custom logo, custom fonts & colors)

    The ideal examples would be the google chart api or google maps api

    A possible solution is a wiki (mediawiki?). Something google-code-like gets extra points for the issue tracker. Google groups gets points for the mailing list. Google sites seems like is might be a decent basic option (it's easy to point a CNAME at it too).

    Experience reports/recommendations appreciated.

  • Rails hackfest is on through the end of August. Get points for getting patches accepted, and win prizes.