25 June 2007

GPS Data for Canon DSLR's?

Moose Peterson recently blogged about this really cool mini-GPS that mounts on the hot shoe of Nikon DSLR's. I'm wondering if there is anything like this for Canon's, in particular the Rebel XTi, or 30D, etc. I would also be ok if there was a solution that connected my Garmin 60CSx to my XTi to automatically store GPS data in the EXIF info.

20 June 2007

iPhoneDevCamp at Adobe San Francisco (free event)

Check out the iPhoneDevCamp, which is being held at Adobe's San Francisco office July 6-8. This is a free event, and features presentations, development projects, and demos.

15 June 2007

Fixes for Capistrano 2's Perforce

I'm starting to convert to Capistrano 2. We use Perforce, and I've found a simple typo/bug in Capistrano 1.99.1. The fix is simple:On line 57 of recipes/deploy/scm/perforce.rb, change the use of "revno" to "rev_no".


Now, the question is, where is the Capistrano bug DB, or where/how do I submit this to them?


I reported this to the mailing list, and Jamis has already checked in the fix in SVN. Capistrano lives in the Rails Trac.

Perforce Implementation for CruiseControl.rb

While I haven't had a chance to clean up the code, folks have asked for it, so I'm making my Perforce implementation for CruiseControl available. There are some important notes:

  • You need to set up your project manually, you can't do an "add" via CruiseControl.
  • Some work needs to be done on the text retrieval for checkin messages, and how that's displayed on the CC.rb results pages.
However, so far it's been working fairly well for me. Feel free to use this as you need. I have not yet submitted it to the CC.rb folks, as I hadn't had time to clean it up yet. So, if you dial it in better, please do submit it to them, or send me your changes, and I'll submit it, etc.

To install/use it:
  • Put the perforce.rb file into your cruisecontrol/app/models directory.
  • Manually setup your project:

    • Create a directory under the cruisecontrol/projects directory.
    • Place a cruise_config.rb file in it. It should contain something like the following in order to use Perforce:
    Project.configure do |project|
    # Use Perforce for source control
    project.source_control = Perforce.new(
    :port => 'your.perforce.server:1666',
    :clientspec => 'clientspec-for-cruisecontrol',
    :user => 'buildusername',
    :password => 'builduserpassword',
    :path => '//depot/path/to/your/rails/app/...')
    end
    • Sync your code once.
    • Fire up CruiseControl, and let the games begin.
Usual disclaimer: I take no responsibility for your systems, code, etc. Read the code, test it out, backup your systems, etc.

Update: I've now given this an official home on GitHub. See the cruisecontrolrb_perforce project there. Fork at will, and please do send me Pull requests if you enhance the code, or at least tell me about your version, and I'll put that in the README or on the wiki, etc.

06 June 2007

Our Servers


Rack And Stack
Originally uploaded by • g l u b •
Gary got a nice shot of some of the servers we've recently racked up.

04 June 2007

Visionary Saver Updates Coming...

I've been swamped at work, so haven't had much time to work on Visionary Saver. But, I should have an update in the next week or two. Some of the things I'm working on:

  • Multi-monitor support: allowing you to pick which visualization(s) you want on each monitor (or fully random)
  • Adding a new Flickr visualizer: FlickrTicker
  • More options for various visualizers
  • Looking into enabling use of the mouse while the screen saver is running
Thanks everyone for the support!

In the mean time, to get the existing version, click here.

02 June 2007

New Home AV Stuff

Today the installers wrapped up the bulk of the new home theater and whole-house audio additions, changes, upgrades, etc. The house had come with a Nuvo Concerto system for whole-house audio. But, we wanted really good iPod control, so we upgraded (for cost difference) to the new Grand Concerto system, that has these improved touch pads (instead of keypads), and does full metadata display for iPods, radio, XM radio, and so on. They are really nice and we're stoked to have XM now (before it was a dual AM/FM tuner, which we swapped out for a dual AM/FM + XM). The iPod dock part shows up next week, can't wait for that.

They also installed the new Samsung 50" plasma, wall mounted, and then racked up the equipment in the little AV closet in our bonus room. Nice setup, but I think we'll likely have to get more ventilation in the little closet, it gets pretty hot in there.

They still have a bunch of othe wiring to do in the house, as we're having some ethernet and other stuff re-jiggered, and they didn't finish programming the killer Universal Remote Control MX-3000. Of course, I'll want to get my hands on programming this as well. You can do all sorts of crazy stuff with it.

The funny part is we probably wouldn't have done half of this if the Nuvo system didn't already come with the house. But now that we have it, boy is it nice. Being able to have music all through the house (and different choices in different rooms), as well as on the deck (that's my favorite!) is just so nice. We watched a movie on the new plasma tonight and it was great, plus super sound in that room. There are better plasmas, but for the money this one is extremely nice. BTW, we have a Loewe 42" plasma for sale if anyone is interested (no, you don't even want to know what that cost, it's rather embarrassing in fact). Anyway, as you can tell, I'm pretty giddy about it all.

01 June 2007

Online/Offiline Web Apps: Why Does the Browser Matter?

For a few months now we've been seeing more offline web app support. This includes technologies like Apollo, some of the tricks people are using with Firefox (like ), http://www.blogger.com/img/gl.link.gif, and lately .http://www.blogger.com/img/gl.link.gif

What amazes me is how much people want to seem to stay within a web browser. They're trying so hard to cram a feature into a space that wasn't designed for it, not to mention is just a crappy solution. No doubt there are a few nice uses of offline support for a pure browser-based app, but why haven't more people started to realize how much better they can do by going beyond the browser? Why do you want the browsers UI to be your dominant surrounding UI? Why do you want to be constrained to the browser's window, and force your user's to have your app running in another http://www.blogger.com/img/gl.link.gifapp, that doesn't have it's own dock/task bar icon or ability to interact with the OS?

I also don't think it's an all or nothing situation. I value having a browser-based UI available to me, so that when I'm not using one of my computers, I can still view my data. I don't expect the experience to be as good, and it can lack features, but I can get to the data in a pinch. But, I would much rather have dedicated applications for the "web applications" I use a lot. Examples of this would be Backpack, project tracking systems (currently I use Scrumworks, which has a Java desktop client that works with their web app, and Basecamp), music players, weather watchers, GotAPI, Twitter, and many others.

There are some examples popping up. Twitter has Twitterific, and FineTune has their Apollo player. These are both excellent examples of how deficient the browser is for many web applications, and how much better you can do outside the browser.

I admit that Apollo is really what took my thinking on this to the next level. You no longer have the excuse that you don't know native code or native code toolkits and such. Building an Apollo app can be done the same as you'd build a web app, and even gives you the choice of Flex or HTML, or a combination (this gets very powerful). You can even simply pop an existing web app into an HTML view in an Apollo window, and thus have a dedicated application (doesn't give you much more but at least you aren't just a tab in your browser, and can display it on a different virtual desktop or size the window differently than your browser window, etc.).

To make this more positive, this is a call to all web developers to think hard about this. Even if you don't need offline support, or you don't need it right away, think about the user experience and how you might create that much better of an app by not being constrained to a browser. I won't have anything in the next week, but yes, I'll be eating my own dogfood, and having some apps out soon enough (watch this space).

23 May 2007

Initial Implementation of Perforce for CruiseControl.rb

I got the Perforce support for CruiseControl.rb working this evening. I haven't done extensive tests yet, but seems to be going ok. I need to polish up a few bits, and then I'll post it (as well as submit a patch to the CruiseControl.rb project).

Bug in Perforce's Marshaled Ruby Output?

I'm working through this with Perforce tech support right now, but wondering if anyone else has seen this (since they didn't seem to know if it off-hand and it seems pretty significant)...

If I use the "-R" flag with Perforce commands, to get the output as Marshaled Ruby, with some commands, I only get the first file or item back. Specifically I'm seeing this with "sync" and "changes" commands. For example:

p4 -R sync
p4 -R changes -m 10

I am consuming these with code similar to:

Marshal.load(`p4 -R sync`)

I'm using Ruby 1.8.6 from MacPorts, on a MacBook Pro running MacOS X 10.4.9, and Perforce client "P4/MACOSX104X86/2006.2/112639 (2006/12/14)".

Update: Turns out that the output is still individual lines, but where the lines are marshalled Ruby. So, you simply need to process each line, with something like:


CMD="p4 -R sync"
IO.popen(CMD, "rb") do |file|
while not file.eof
hash = Marshal.load(file)
synced_files << hash['data']
end
end

22 May 2007

Perforce for CruiseControl.rb

Tonight I'm doing a quick bit of hacking to see if I can implement Perforce support for CruiseControl.rb. It looks promising, but we'll see. Perforce and SVN are quite different beasts. One cool thing though, Perforce has a -R flag to all commands that say to return the output as marshalled Ruby (they also have this for Python). This is very handy when writing scripts.

Also, if someone has already done this (i.e. my Google searches for it were too feeble), please let me know!

19 May 2007

RailsConf Day 3

There were a couple good sessions at RailsConf today. In particular Ezra's talk on performance, and the demo show was great. After the sessions, headed into town for a good dinner. We hit the Portland Steak and Chophouse for a quite leisurely and good dinner. Fried oysters and drinks, great steaks, and a nice bottle of Stag's Leap. Then it was on to Pivotal Labs party at the Rock Bottom Brewery which was fun. Played many rounds of pool where Aaron from Revolution Health showed us how it was done. Thanks to Ian and the folks from Pivotal for the party.

p.s. Jeff - I'll get you the yo-yos one way or another...

New Version of Twittervision Screen Saver

I've put up a new version of Visionary Saver the Twittervision/Flickrvision, and now Twittervision 3D and Twitter Flash RailsConf visualizers. The options panel is a bit different now - it's just checkboxes. If you want to randomize between different visions, just check which ones you'd like to randomize for.

I'm still at RailsConf, but will be home this coming week and can then work on settings for which saver you want to run on which monitor of a multiple monitor setup, so stay tuned.

Download Visionary Saver

18 May 2007

RailsConf Day 2

Day 2 of RailsConf has drawn to a close for me. Back in my room, ready to pretty much collapse. It's been an extremely busy month leading up to today for me, and I'm now really looking forward to the next two days as a) the two presentations I/we did are done (both went fairly well today I think), b) the sale of my house in CA closed, and they finished up the flood repair on Wednesday, c) wrapping up a week of travel, and d) resting a bit from putting in some serious hours at work for the last several weeks. It all adds up to one tired guy (the house stuff felt like a second job! Some day I'll elaborate on that saga).

Tonight, Andrew S (Adobe), Peter Armstrong (buy his book, Flexible Rails), and my presentation partner in crime, Chris H (thanks for TwitterRailsConf), and I went to dinner at Pazzo, which is a great Italian restaurant. Most of us were about ready to fall asleep by the end (Peter, wake up!). MAXed back to the hotel, then CH and I hung in the bar for a while after. Heh, you should have seen the size of the "double" gin they gave me (and that was so they could charge me less as a martini, instead of the single rocks I asked for - whatever). This thing was probably a quad. I barely dented it, and am now blogging and winding down, then will crash.

RailsConf, and Presentation Day

Today is the big day for us: our two presentations at RailsConf. In the morning my co-worker, Chris Haupt, and I are presenting a session purely on Apollo. If you don't know much about Apollo, or want to find out more, join us for this. Then, in the afternoon, we'll jump into using Apollo with Rails, and our experiences in that regard. Both talks will include demos and code.

If you attended Peter Armstrong's BOF on Flex and Rails last night (which was great, good job Peter!), come see the Apollo talks to see how you can take that even further with what Apollo adds to Flex.

17 May 2007

RailsConf version of Apollo TwitterCamp App

My co-worker Chris Haupt has tweaked the TwitterCamp Apollo app, for displaying RailsConf tweets. Very nice. You can get it on the RailsConf wiki "Toys" page.

15 May 2007

Twittervision/Flickrvision - the Screen Saver

I think Twittervision, and Flickrvision are really cool. However, I thought, to be even better, why not have them as a screen saver?! So, last night I whipped up a MacOS X screen saver that shows these. You can choose one or the other, or have it randomly choose which one to use. This is literally a quick hack. I plan to add some other visualizations, such as Breathing Earth, and others (send me your suggestions).

Download Visionary Saver

10 May 2007

Bug in ActiveResource's HttpMock?

I'm using ActiveResource a fair bit now. It's working fairly well, even with our non-standard XML and so on. Testing it works ok with use of HttpMock (see this blog entry for a way to do it). But, I've found that HttpMock appears to have a bug in how it deals with headers, and comparing the request you're making and the known requests. If the order of the keys in the header hash differs, they will fail to compare equally, and thus fail to match. To resolve this, I've modified the HttpMock::Request#hash method. It used to look like this:

def hash
  "#{path}#{method}#{headers}".hash
end

I changed it simply to this:

def hash
  "#{path}#{method}#{headers.sort}".hash
end

I will figure out how to post a bug report on this, but wanted to post here first in case there's a different solution, or disagreement that this is a bug.


Update: I've filed a bug in Rails trac. You can find it here.


03 May 2007

Adobe Acquiring Scene7

Adobe is acquiring Scene7, who make superb technology for media delivery amongst other things. If you've ever browsed various Amazon merchants, Sears, Macy's, Land's End, and many other clothing and other such merchants online, who show their products in all the different colors and styles, etc., they're using Scene7 to do it. This is their dynamic imaging product. They also make eCatalogs, and various other things. Great stuff, check it out.

27 April 2007

New Networked Printer, Scanner, Fax: Epson AcuLaser

This is an initial blurb on the new Epson AcuLaser CX11NF all-in-one laser I recently hooked up. The short story so far is, there are a few setup tricks, but the thing is awesome in general. I am only using this machine from a Mac, but it works with at least Windows machines as well (and has a few more features when using Windows - like being able to do scans from the unit and send them to your machine).

The CX11NF is a color laser printer, color fax, color copier, and both flat bed and sheet fed scanner. That's a mouth-full. So far I've used the printer, copier, and flat bed scanner. Setup was easy - they provide very good clear instructions on unpackaging it and getting the toner carts installed, etc. Also, the box it came in is designed really well. The unit weights in at 75 pounds, so you dread having to "dump" it out of the usual cardboard box, but no. With this setup, there are plugs at the bottom of the box that you pull out, and then the top and sides of the box pull right off, leaving the bottom of the box and printer there. REALLY NICE.

Software setup is my only gripe so far, and it wasn't too bad. I'm using it as a network printer. When I first ran their software, it just seemed to sit there forever trying to launch the first sub-installer. I had to go manually launch that, and then things worked fine. I also found that in order for Bonjour printing (the "easy" way use it as a network printer) to actually work, I needed to download the latest drivers. I also got the latest scanner drivers while I was there.

Also, for network scans, you need to run their Epson Scan Settings app that they silently put into your Applications/Utilities folder. This app launches and finds the printer (or you can type in the IP address, if say you're using it from a different subnet/VPN). Then it works great.

I am using the printer from both PowerPC and MacTel Macs, all over network, and on different subnets (one is also behind VPN, but which tunnels into my main subnet for access to things like printers). For the Mac on VPN, I needed to setup the printer using IPP, but once I typed in the IP address, it found it and detected the model and the right driver, etc.

The printer is very fast (at least for B&W, I haven't tried color yet). I don't recall the exact speed, but it spits out pages nearly instantly for B&W, and the quality is excellent.

The scanner works well too. I've only used it from Photoshop so far, using their TWAIN import, but it has all the usual stuff (seems like the scan interface is very similar to the one for our higher end Epson Perfection V700 Photo scanner (which rocks - I highly recommend for photo).

So far so good. Having a real network printer, etc. is great in my situation since we have a lot of machines in the house. It's also nice to get rid of the few separate devices I had before, and to pick up a sheet fed scanner in the process. Also, having a color printer that isn't a photo printer is handy at times. We'll see how continued use goes, but I would recommend this unit so far.

Tip of the hat to Macworld for the useful review on this device.