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.
20 June 2007
iPhoneDevCamp at Adobe San Francisco (free event)
Posted by
Chris
at
7:55 PM
0
comments
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.
Posted by
Chris
at
1:26 PM
0
comments
Labels: Capistrano, Perforce, RubyOnRails
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.
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.
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.
Posted by
Chris
at
11:02 AM
12
comments
Labels: ContinuousIntegration, CruiseControl, Perforce, Ruby
06 June 2007
Our Servers
Posted by
Chris
at
9:20 PM
0
comments
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
In the mean time, to get the existing version, click here.
02 June 2007
New Home AV Stuff
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.
Posted by
Chris
at
12:48 AM
0
comments
Labels: HomeTheater, House, Nuvo
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).
Posted by
Chris
at
8:09 AM
4
comments
Labels: Adobe Air
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).
Posted by
Chris
at
11:59 PM
2
comments
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
Posted by
Chris
at
5:36 PM
0
comments
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!
Posted by
Chris
at
10:51 PM
4
comments
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...
Posted by
Chris
at
11:07 PM
3
comments
Labels: RailsConf07, RainsConf
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
Posted by
Chris
at
10:57 AM
12
comments
Labels: RailsConf, RailsConf07, Twitter, Visionary
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.
Posted by
Chris
at
10:34 PM
0
comments
Labels: Portland, RailsConf, RailsConf07
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.
Posted by
Chris
at
7:55 AM
3
comments
Labels: Adobe Air, Flex, RailsConf, RailsConf07, RubyOnRails
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.
Posted by
Chris
at
4:06 PM
0
comments
Labels: Adobe Air, RailsConf, RailsConf07, Twitter
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.
Posted by
Chris
at
2:03 PM
1 comments
Labels: Rails
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.
Posted by
Chris
at
8:07 AM
0
comments
Labels: Adobe
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.
Posted by
Chris
at
10:44 AM
2
comments
Labels: Office
24 April 2007
Cool Akamai Network Comparison Web App
Akamai has a cool data visualization application that compares network routes. It is done in Flash, and is pretty slick.
Posted by
Chris
at
11:18 PM
0
comments
Labels: Flash
23 April 2007
Ordered New Bike: Niner
Today I ordered a new bike, a Niner MCR9. It will not replace any of my existing bikes, but will become both a "town" bike, and an alternate mountain bike (to my Reign). It'll be very alternate, or rather alternative to the Reign, given that it's a 29er and fully rigid! I haven't ridden a rigid mtb since probably 1994, although that rigid bike's frame is still in my garage.
I was interested in going S.S., but with the super steep hills near my house, and the multi-purpose nature of the bike, I really needed some gears. I'm going with their X9 build kit, but will swap the tires out for some Schwalbe Big Apple 2.3's for town riding. I plan to eventually get a set of tubeless 29er wheels for dedicated mtb riding.
To compliment the wild "Tang" orange color I went with, I ordered up the Crank Bros Mallet pedals in orange. With nearly everything else on the bike being black, it should be pretty cool. Should vaguely look like this, except I'll have the rigid orange fork.
Posted by
Chris
at
2:54 PM
0
comments
Labels: bike
20 April 2007
Ultimate Espresso
The other day I talked with Michael at Wandering Goat in Eugene for a while. We'd had some discussions in email, and I headed down to buy some Chupacabra beans from them, and say hi. I did that, but we also talked quite a while about espresso, machines, and grinders. He gave me some great tips.
First, Wandering Goat is my favorite choice of coffee beans right now. They are also simply an awesome company that is well comitted to organic, fair trade coffee, as well as super environmental preparation (their roaster is the only one of its kind in the Pacific Northwest, producing I think they said 80% less biproduct/polutants, etc.). The shop is also cool. It's a little off the beaten path, but in downtown (on Madison between 2nd and 4th). And, I had a truly, truly, superb macchiato there yesterday (and yes, the real kind, not that abomination Starbucks makes).
I've been wanting to get a serious espresso machine, that is not a super-auto like I have now. I have the best super auto at the moment, but you just can't tweak it further, and they don't generate the same pressure levels as a semi-auto. I had been eyeing an Rancilio Silvia, but Michael turned me on to the Expobar Brewtus II, which in checking appears to be the absolute finest home machine on the planet (and the only one with a double boiler). As he mentioned, your abilities will not exceed this machine. It ain't cheap, although it's less than my super auto! But then you factor in a grinder.
I have an ok grinder, but was eyeing a Mazzer Mini. He suggested getting a Mazzer Super Jolly instead of the mini, and said to check eBay (or eBay Tagex). It's awesome, because you can pick up a Super Jolly, normally a $1000 grinder, for like $250, and then buy new burr heads for it for $50. So, that's a $1000 grinder for $300. I just checked and there are two Super Jolly's up there right now. Also, you can put the Mini's bean holder on a Super Jolly to cut down on size, but still have the larger burr heads of the Super Jolly.
Posted by
Chris
at
9:52 AM
2
comments
17 April 2007
Enter Escrow... Have a Flood
Wow, this really sucks. Got a call this morning to tell us that the first floor of our house was flooded, due to a burst pipe. It appears to be one of the flex hoses under the sink in our kitchen island. These are hoses that the builder is at fault for, because other people in the neighborhood have had this problem, and the builder hasn't come through and fixed them all. It was on my list of things to have them come out and do, so uh, it just went up in priority (and they'll have to pay for all the damage). The carpet & restoration folks are already there drying things out.
An odd coincidence is that the buyer's home inspector was there this morning. I guess he stopped the leak, but there was a lot of water, so likely they'll get all new wood floors and carpet (I expect the limestone floor is fine).
We're in better shape than the folks across the street who had one burst upstairs and are in their fourth month of work to fix all the damage. Ugh. Luckily also, our buyers love our house, and this is not stopping the sale/escrow. They already said they want to put the same carpet in as they loved the carpet we had.
I'll be spending a good chunk of the rest of my day talking to my attorney, the builder, real estate agents, and so on. Oh, and I will be checking my new house for these problem hoses as well.
Posted by
Chris
at
12:08 PM
0
comments
16 April 2007
Adobe CS3 (Creative Suite 3) Ships!
And the crowd goes wild! Yep, Adobe CS3 started shipping today. Check out the site. I'm proud to have contributed to Photoshop ("Ps") CS3. Specifically I worked on Photoshop Extended, on the measurement bits, and some small scripting bits.
Posted by
Chris
at
3:18 PM
2
comments
14 April 2007
Eugene (Oregon) People are So Nice!
It's really interesting to see how different people are here in Eugene/Oregon. Everyone is so nice and friendly. It's quite different than California. After my flight home from the Bay area on Thursday, I talked to three people at some length, while getting off the plane, walking over to baggage, waiting for bags, etc.
Rich was also a CA transplant, and had in fact come from the same place as we had. We talked for quite some time about kids, his grandkids, golf (and the crazy Bandon, OR golf scene and real estate situation), etc.
After talking to Rich, I talked to Karen who is the director of emergency services for the Red Cross (for 7 counties here). She mentioned the kids ID event that was happening this weekend, which is great, as we'll go do that.
Prior to Rich and Karen, at the end of my flight I talked to the man sitting next to me (he slept during the flight, and I worked). He has a crazy job, where he works on construction projects in Vegas (currently on the Venetian plaza). He is in Vegas for 6 weeks, then home for 5 days, then back - all the time. He's been doing this for 15 years! He loves Oregon, and has grown very tired of Vegas (where I believe he said there is now a shooting every 8 hours!).
Yesterday I also talked to one of my neighbors, Dino, who I hadn't met yet. He's the owner/builder of one of the houses next to us. Good guy, and he took some time out to talk about some house stuff. For example, after I saw his outdoor fireplace (which I'd love!), he talked about how we could do that on our deck, costs, options, etc. It wasn't a sales pitch (wouldn't be something he, as the "builder", would do anyway), just nice neighborly chatter.
What struck me about these folks was simply has easy going, nice, friendly, etc. they were. The conversations simply flowed with no effort. Sure I've had talks like this with people in CA (you'd hope so given I grew up there, and have lived there all but 5 years of my life). But it's just different. You can "feel" the difference. At times it's also weird. I think we've grown used to being sometimes suspicious, guarded with our kids, etc. So we're learning the more pleasant openness of the Oregon culture.
Posted by
Chris
at
8:25 AM
0
comments
13 April 2007
Forget irb, Use TextMate
I often play around with Ruby code to try things out. irb is of course a great Ruby interactive shell for this. However, what it's less good at is multi-line code, or more complicated code, and simply refining code that you execute over and over (in particular when it's multi-line). Solution: use TextMate instead. As TextMate users know, you can run arbitrary script (either a selection or a file's worth). I am finding now that I much prefer to simply pop open a new window in TextMate, and type my experiments there, and then hit Cmd-R to try things out. It even produces nicer output.
Posted by
Chris
at
12:50 PM
0
comments
07 April 2007
Eugene After First Week
We've been living in Eugene for a week now. We're still in the midst of unpacking and getting back to every day life, but things are going well so far.
This morning, I woke up to see it was raining, and I was psyched! Yes, I'm weird like that :) It had begun to clear up some by about mid morning, and we headed to opening day of the farmer's market, where it didn't rain on us at all. We bought some veggies, salsa, bread, etc. The kids were restless, so we headed off to lunch.
Lunch was at a grill at the Oakway Center. Then we hung out in the courtyard for a while while the kids played, and Xander specifically enjoyed getting rained on. Then it was off to a park back in our neighborhood. We were at the park until 4pm, the whole time it was sunny. Finally, headed home to move a bit of furniture around and then make dinner. Had a tasty Mexican spread. After dinner it seemed hot, and I realized it had gotten up to 77 in the house, with all the sun streaming in. Opened some windows, which was a great bit of fresh air, and enjoyed the rest of the evening.
Looking back on the week, a few other notes:
- Market of Choice is my favorite market in town, but it sure seems expensive. We'll have to see. The place is gorgeous (doesn't hurt that the closest one to us is brand new and very nicely done). It's similar to say an Andronicos, or maybe an aspiring Whole Foods, etc. Great cheese selection (yea!), cool cafe with fresh pizzas, good meat selection and quality, big spread of produce, lots of organic, etc.
- Bicycles are a VERY common way to travel around town here in Eugene, which is something I love. I'm now investigating a town bike. I'm likely going to go with a Niner, and use it both as a town bike, as well as an alternative mtb.
- Our dryer is still not hooked up. When it was delivered, the house didn't have the special vent attachment for the house, so they couldn't finish it. Then, once we had that, on Sears second trip out, they couldn't seem to plug in this vent attachment (which I've since managed to get in, but it was tricky indeed), nor did they have the right power cord (which I've since purchased and wired up). Now the real trick is to figure out how to get the vent hose attached, and be able to climb out of the space without having to use a real excess of vent tubing. Sears comes again on Monday, so we'll see.
Posted by
Chris
at
10:06 PM
0
comments
House for Sale
Our house in Rocklin is for sale now that we've moved to Eugene. We staged it, and had pictures taken, as well as the 360Spin folks do their thing. Pretty cool. Check it out.
Posted by
Chris
at
10:01 PM
2
comments
01 April 2007
Arrival in Eugene
Posted by
Chris
at
8:40 AM
2
comments
27 March 2007
House is nearly packed up; just about to move
The movers were here this morning, and today they packed up nearly all of our house. They will finish tomorrow, while also packing the truck. It's been a crazy day. The gardiners and window washers were here this morning, we were trying to scurry around to finish up things for the movers, and then keep the kids entertained as well.
This afternoon was good though. A real estate agent came by, said she heard we were selling our house (from our neighbor, who just sold theirs, which is the same model as ours), and that she has two prospective buyers (we haven't even put the house on the MLS yet). She brought the family by later this afternoon and our agent showed them around while we did some errands. The people loved it, and we're hoping they'll be putting in a bid by the end of the week. Whew! That'd be awesome, hopefully it works out.
I am now sitting in the home office, which is one of the few things they have left to pack up. I'm doing a bit of work, then finishing readying the office for packing, then off to sleep in the hotel. We drive to Oregon on Saturday.
Posted by
Chris
at
9:46 PM
0
comments
Labels: Moving
18 March 2007
Public Apollo is Available!
Following on ApolloCamp this past Friday at Adobe, you can now go and download the Apollo runtime, SDK, and Flex Builder extensions. Get it here. This is the coolest stuff, seriously.
Posted by
Chris
at
9:29 PM
0
comments
05 March 2007
My Mac Menu bar is getting too full

I have switched to using You Control: Desktops for my Mac virtual desktop manager. I was using Virtue Desktops before, but it's been buggy, and seems to not remember, or often pay attention to my settings for what apps go on which desktops and so on. You Control was something I looked at when they were in pre-release, and it wasn't very good at the time. But since then they've come a long way!
I have always liked having the pager control in the menu bar, and they have this now. But, between that and various other things, my darn menu bar is crazy full, and overcrowded when I'm just looking at my 15" MacBook Pro screen (this screenshot was done on a 20" Dell monitor, and my regular office monitor is a 24" Dell wide aspect ratio, so that one rarely gets crowded). The image above, while shrunk, is 719 pixels wide.
Posted by
Chris
at
3:19 PM
0
comments
Labels: Mac, Virtual Desktops
27 February 2007
Benchmarking Mongrel, Apache, Rails, etc.
I'm doing some benchmarking of a Rails based web app (technically, a web service) to try to establish some baselines and to use in assessing build outs/hardware deployment, etc. To start off, I wanted to establish a baseline by using pure static content. The performance I got didn't seem quite right to me. Below is a message I sent to the mongrel-users mailing list. I figured this was a good blog item, and would like to solicit help on this...
I'm trying to do some initial benchmarking of our setup, mainly just to establish baselines. I'm essentially using the process Zed outlines in a previous message:Shortly after that, I decided to throw Pen and Nginx in the mix just as a random check on this. I haven't used them before so relied on what I found on the net, etc. for config, thus I could potentially get better results, but they yielded:
http://rubyforge.org/pipermail/mongrel-users/2006-May/000200.html
What I'm running into is that Mongrel appears only half as fast as Apache when serving a small static HTML file. If I then add in Apache with mod_proxy_balancer, going to a single Mongrel, it drops down to nearly about a third of what pure static Apache will do. This seems bogus to me, and I suspect I have either some configuration problem, or something. My understanding from what I've read is that Mongrel should be fairly close to Apache when serving static content (at least not only 50% as fast). Is that right as a generalization?
Here's some info to back this up.
- Server: HP DL360 dual 3.0GHz Xeons, 4GB RAM, 10k RPM SCSI disks
- OS: Fedora Core 6, up to date as of a few days ago
- Apache 2.2.3-5, with mod_proxy_balancer
- Mongrel 1.0.1, mongrel_cluster 0.2.1
- serving a static HTML file from the Rails app's public directory
- Testing using an identical server, that sits above this one in the rack, connected to a switch (so it's one hop)
- Using httperf for testing, with the following command:
httperf --server lab05 --port 80 --uri /mongrel_alive.html --num-conns 10000
The number of connections I vary to be near the 10 second mark...
Here's the results:
- Just Apache, num-conns=15000, ~1400 req/sec
- Direct to Mongrel on port 5000, num-conns=8000, ~740 req/sec
- Apache mod_proxy_balancer to a single Mongrel, num-conns=5000, ~475 req/sec
So, I'm incurring a massive penalty for the balancer/cluster setup. In production we will be using hardware load balancers, but even still, my understanding was that instead of a drop from 1400 to 740, it should be somewhat closer (say at least over 1000).
What would folks suggest, or what comments do you have?
- Nginx with one Mongrel: ~612 req/sec
- Pen with one Mongrel: ~670 req/sec
Posted by
Chris
at
4:53 PM
0
comments
Labels: Apache, LoadBalancing, Mongrel, Performance, Rails, Testing
26 February 2007
It's Comcastic!
Well, I hope it will be Comcastic! Ordered up new phone, cable TV, and Internet service all in one with Comcast today, for our new house in Eugene. Yep, that's phone over cable. They had the fastest net service in the area (8MBit down, 784k up). We have a cable modem now, and have had really good luck with it, so I hope that continues.
The cable will include HD, and we have two of the new TiVo Series 3 HD units on the way from Amazon. Comcast will give us four cable cards (two per box) to put in them. Pretty cool, although more for my wife than me, as I barely watch TV these days.
The phone is pretty good too. It includes unlimited local and long distance calling, and 12 features (stuff like voice mail, call forwarding, etc.). All of this, setup for two rooms, etc, etc., is $130/month ($15 of that is for the 3 extra cable cards - they give you one for free). Seems fairly good, although if you did a lot of long distance calling this would probably start to pay off pretty well. Our cable modem now costs me $68/month (this is for the "residential router" package, which means I can "legally" (i.e. I don't violate the ToS) put a router and as many computers as I want behind it), my phone typically costs $45, and our DirecTV (with Tivo) costs about $70/month. So, that's $183, and thus I figure we're saving about $58/month (minus some, as the $130 through Comcast doesn't include the Tivo service).
Posted by
Chris
at
9:09 PM
0
comments
22 February 2007
ApolloCamp
For those of you interested in Apollo, check out the free ApolloCamp, on March 16th at the Adobe San Francisco office. See you there!
Posted by
Chris
at
11:33 PM
0
comments
Labels: Adobe Air
17 February 2007
Using multiple Perforce depots and TextMate's P4 Bundle
I'm a big TextMate user. We're also a Perforce shop. TextMate has a P4 bundle, and it works great, but it's main problem is that it has minimal knowledge of your P4 settings, and certainly doesn't handle multiple P4 clients or depots. For example, I have a few different clientspecs I work with, and the server, port, clientspec, etc. all differ. So, it's not feasible to use a single .p4config file, or set the values in TextMate or globally in the environment. This makes using the P4 bundle essentially impossible for all but whichever one you pick as your main clientspec.
To alleviate this, and based on how I organize my code on my machine, I wrote a simple little script that is what I set the "TM_P4" textmate environment variable to. This script knows that all my code is kept in subdirectories off my ~/Code directory. So, I then stash specific .p4config files at the root of each of these as needed, and the script looks for those based on the currently open file, and sets that for the P4 settings. This seems to work well. Here's the script in case it's useful to you:
#!/bin/sh
#
# Script to run p4 commands in TextMate, and set the P4 variables
# depending on the location of the file being operated on.
# Where all my code lives
CODE_PATH="${HOME}/Code/"
# figure out the Code subdirectory for the current file in TextMate
P4_CONFIG_PATH=${TM_FILEPATH##$CODE_PATH}
P4_CONFIG_PATH=${P4_CONFIG_PATH%%/*}
# Reconstitute as path to potential config file
P4_CONFIG_FILE="${CODE_PATH}${P4_CONFIG_PATH}/.p4config"
# if dir contains a .p4config, set P4CONFIG to that
if [ -f $P4_CONFIG_FILE ]; then
export P4CONFIG="$P4_CONFIG_FILE"
else
export P4CONFIG="~/.p4config"
fi
# now do p4
/usr/local/bin/p4 $*
Posted by
Chris
at
9:03 PM
5
comments
11 February 2007
Loving the Blackjack, Wishing For Ubiquitous 3G
I've really been loving my Blackjack. The one bummer is how spoiled I am getting with 3G. When we move to Eugene there won't be 3G and I already find EDGE sucks. Hey Cingular - please put 3G everywhere!
Posted by
Chris
at
11:58 PM
0
comments
Labels: Mobile
Twitter: cool or just silly?
Check out Twitter, a relatively new web app. It's very simple, it shows the status of people (here's ). Status is any short bit of text the person wants to state. When I first saw this, I thought it was just plain silly. Gee, do you really need up to the minute (or whatever) updates on what people are doing? Could people really keep it up to date enough to be http://www2.blogger.com/img/gl.link.gifinteresting/useful? Would people actually use it?
Tonight I was checking it out, and noticed that they have an ActionScript 3 library so as to make using their public API trivial from Flash/Flex apps (I'm using Flex a fair bit these days). I then noticed that you can update your status via IM as well as via SMS from your mobile phone. Ok, now it's getting a bit more interesting. Maybe you can keep it fairly up to date with relative ease.
Also the AS3 lib and API, as well as the ability to shield your status from the public (only your Twitter "friends" can see it), made me think about tieing this in to the Agile tasking tool we're working on for RailsConf. It could potentially be interesting to have a "work" Twitter account, and use the API to show people's status. You could then tie it in to the tasking app, and anytime anyone changed a task's status (for example, they set a task to now be "in progress", the app would shoot out a Twitter message (aka a "tweet") to indicate that. Then using the public API you could show your team's "timeline" on a web page. Useful? Questionable. Geeky fun? You bet.
Posted by
Chris
at
11:04 PM
0
comments
Labels: ActionScript, Twitter
06 February 2007
moblog from my new Blackjack
I got a Blackjack mobile phone the other day and just set it up for moblogging. This is my first test. As for the phone, I am truly loving it so far!
Posted by
Chris
at
11:35 PM
0
comments
03 February 2007
Essential COM autographed by Don Box, and other books
I've put up more books on eBay, including a copy of "Essential COM", signed by Don Box himself (eBay listing). I've also got books on Zope and Plone (listing, which has links to the others), and various other Windows books. I didn't sell a single one of the Java books I had up there, which kind of surprised me (nearly all were listed at $4).
Posted by
Chris
at
3:00 PM
4
comments
Labels: Books
02 February 2007
Moving to Eugene, Oregon
We (my wife, kids, and I) will be moving to Eugene, Oregon in a couple months (probably in April). We signed the counter-offer on a house today, so hopefully escrow goes well, and we'll own it in March. We're pretty excited, but nervous of course as well. We don't know anyone there. My wife's parents and brother and his family will move later this year (no commune jokes please!). Looking forward to it though. It was a move completely by choice, and I will continue to work for Adobe from there (from the home office).
We spent last Saturday driving around with our real estate agent, and wound up still loving a house we'd seen back in October, which had recently had the price dropped, so we went for it. I have a map showing our drive and various waypoints up on Discover Machine. I recently got a GPS unit, so used it on the drive, which was really quite handy. I put a waypoint in for every house we went in to, as well as lunch spot, and so on. It was cool to look at the overall route afterwards and see where all we went from a 10,000 foot type of view. I uploaded my data from my GPS into Google Earth Plus, and then saved a KML file out, which can be uploaded to Discover Machine (a site done in Rails :).
This will of course be a very convenient location for RailsConf later this year, as well as cool conferences like OSCON.
Posted by
Chris
at
9:12 PM
2
comments
Labels: Eugene, GoogleEarth, GPS, Moving, Oregon
I'm Presenting at RailsConf 2007
I just found out yesterday that the proposal my co-worker and I submitted for RailsConf 2007 was accepted! Quite exciting. I hope to say more later, but for the moment, the talk will be about using Rails and Adobe's new Apollo technology.
Posted by
Chris
at
1:11 PM
4
comments
Labels: Adobe, Adobe Air, RailsConf, RubyOnRails
28 January 2007
Adobe to Release PDF for Industry Standardization
Check out the press release! Adobe is releasing the FULL PDF 1.7 spec to get published as an ISO standard. Pretty cool.
Posted by
Chris
at
11:55 PM
0
comments
25 January 2007
I'm Now A GPS Geek
A good friend who is quite into GPS, and happens to work on the Google Earth team finally got me hooked on GPS. I picked up a Garmin GPSmap 60CSx unit at REI after attending their intro class the other day. I then proceeded to figure out how to get it all going on the Mac. Many thanks to Ben Sinclair, as he pretty much covers every angle in his article, "How to use a Garmin GPS with your Mac."
I'm using the combination of an Intel Mac, with Google Earth Plus, and then Parallels for the Garmin MapSource City Navigator software. I haven't gone for any TOPO stuff yet, and Google Earth seems to cover most of what I want trail/bike/ski wise so far (if I get more into backcountry skiing, then I will likely want the TOPO stuff).
Anyway, this is really cool. I can't wait to use it on my mountain bike. The first heavy use will be this weekend when we go to Eugene to scout houses and so on. I will track the entire day on Saturday and then import into Google Earth, etc. Also, because I have the City Navigator stuff on there, I've got intricate detail of city streets, businesses, turn-by-turn directions, and so on. Slick.
Note, the "x" series units from Garmin (I think all of them anyway) have microSD cards. You can store a ton of map data on these things. For example, the City Navigator stuff I put on mine, for which I did most of Oregon, and a good chunk of Northern CA, was about 50MB. The 60CSx comes with a 64MB microSD, but I have a 512MB on the way (I'd have gone bigger, but I heard that with the 1GB cards it creates a noticeable slowdown on the unit while it sifts through all that data, and 512MB seemed like plenty given what you can put in about 50-100MB).
Posted by
Chris
at
11:56 PM
0
comments
Labels: GoogleEarth, GPS, Mac
24 January 2007
Java Books for Sale
I just posted a slew of Java books for sale on eBay. They are all priced between $3-6. Some are current, some aren't. Here's a listing (and the link goes to the eBay listing):
- Graphic Java 2, Volume 2: Swing (3rd Edition)
- Graphic Java 1.2, Volume 1: AWT, Third Edition
- The Java Class Libraries, Volume 1: java.io, java.la...
- Patterns in Java, Volume 1, A Catalog of Reusable De...
- Patterns in Java, Volume 2
- Programming Web Services with XML-RPC (O'Reilly Inte...
- Java Web Services
- JSTL: Practical Guide for JSP Programmers (The Pract...
- Web Development with Java Server Pages
- Designing Enterprise Applications with the Java(TM) ...
- JavaServer Pages, 3rd Edition
- Java Threads, Second Edition Java 2
- Java(TM) Native Interface: Programmer's Guide and Sp...
- Art of Java Web Development: Struts, Tapestry, Commo...
- Building Imaging Applications with Java(TM) Technolo...
I will have more, on other subjects to come, but I've started to prune my library, in preparation for our move to Eugene.
For the curious, I use iSale on the Mac to post on eBay, it's superb. It easily filled in most of the auction on each book simply by me letting it search Amazon for the ISBN and importing the info (all automatically). The new version of iSale also has iSight support for taking quick pics, etc. But, the listing above was a simple hack by exporting my auction items from iSale (as CSV), plopping that in Excel and dropping out all but the eBay ID column and title column, then dropping that in TextMate, and simply wrapping those with the above HTML, trivially done by using TextMate's awesome column editing abilities (a regex search and replace would've done fine too, but this seemed even faster).
Posted by
Chris
at
10:46 PM
0
comments
30 December 2006
Skiing Silverton in Early January
Just firmed up a quick trip with two friends to ski Silverton (Colorado) in early January. One of the guys, Matt, just skied there today and said it was stellar. It's an interesting place, as it only has one lift, and during the main part of the season you must ski guided. This will be my first real backcountry excursion, although it should be relatively mellow in that regard (no skinning, hopefully minimal hiking as my fitness level is quite poor right now).
I also am hoping to take a lot of pictures. And, given my weak fitness, I expect to not last a whole day of this kind of skiing, so hopefully can also shoot some action shots of Matt and Barry. Matt will easily rip it up, as he's been skiing this kind of stuff all over CO and UT for the last few weeks (the lucky bum).
Posted by
Chris
at
7:03 PM
0
comments
Labels: skiing
23 December 2006
Dtrace: the anal probe
So I'm listening to the ps pipe grep podcast the other day, and with his always interesting sense of humor, Jason provides this superb quote,
Dtrace is an anal probe for your application.
Classic.
Posted by
Chris
at
11:03 PM
0
comments
Labels: TextDrive
14 December 2006
John Nack Slashdotted My Flickr Photos of Adobe
The good John Nack mentioned my photos of Adobe that are on Flickr. And, of course this was about as close as they will get to getting Slashdotted, er, I guess that'd bhttp://beta.blogger.com/img/gl.link.gife Dugg these days.
I should of course make one correction. John mentions I'm a Photoshop engineer. This is only partly true. I used to be full time on Photoshop, but my features are complete (wait for the Photoshop CS3 Beta tomorrow, and I'll blog about them). I'm now actually back to doing web services and web applications (hopefully more on that early next year).
The Photoshop beta is very exciting for those of us who've worked on it though. And of course it's great for folks who've been clamoring for a Mactel version. This will be on tomorrow.
There are some other interesting things on Labs recently as well. For example, check out Kuler and Soundbooth. Really fun and great stuff that's been happening at Adobe. And of course there's all the great Flash and Flex related bits, which I have personally been using a lot.
Amazon's UnSpun done with Ruby on Rails
Pretty cool... Amazon's latest service/site, UnSpun, was implemented with Ruby on Rails. I knew Amazon was looking at Rails, but this is great to see.
Posted by
Chris
at
12:00 AM
1 comments
Labels: Amazon, RubyOnRails
13 December 2006
Winter Evening in Old Town Auburn
Posted by
Chris
at
9:38 PM
0
comments
12 December 2006
Adobe Sixth Floor At Night and Other Pics
Posted by
Chris
at
10:44 PM
0
comments
11 December 2006
Hello BingoDisk, Goodbye iDisk
I've had a Bingo! disk for a little while now, and it's just making the iDisk of .Mac look pathetic. I don't use iDisk for much, except keeping some documents I need to keep available anywhere, and off-site, as well as sync'ing those across machines. But, iDisk performance is horrid, and Bingo disk is nice. So, I'm no longer bothering with iDisk, and hopefully I will not renew my .Mac account (not likely yet, because my main use for it is actually keeping Address Book, iCal, etc. in sync across various machines without having to think about it).
Posted by
Chris
at
1:49 PM
0
comments
05 December 2006
Camera and Camelbak Backup Solution #1
Following up on my previous post about needing a backpack that was both for camera gear and held a Camelbak, for use mountain biking, I've identified my first solution. After further discussion with Dakine, and having talked to various others, I'm going with the Ridge pack (in black/olive) and their Camera Block. Dakine suggested this, and believes it should work. The only question is that it may be a bit of a tight fit with a full Camelbak bladder and Camera Block, but we'll see.
Their packs, with the diagonal ski carry are still the most appealing to me for carrying a tripod. I also like the back access and full/instant access to all camera gear that it and the Camera Block brings. I should get these within a week or so, and will report again once I've had a chance to ride with it and try it all out.
Posted by
Chris
at
9:51 PM
0
comments
Labels: cycling, Photography, travel
04 December 2006
Looking for combo camera and Camelbak pack
I've been searching for a backpack for mountain biking while carrying camera gear (digital SLR, extra lenses, etc.). There are many camera backpacks, but none seem to have a Camelbak/hydration sleeve/compartment. If you know of one, please let me know (add a comment). I've started compiling a list of some that may work, or that I might be able to customize or so on, on a backpack page. My current setup is just to individually carry camera+lens in a padding neoprene Zing pouch, and then carry lenses in separate lens bags, and stuff these in my Camelbak Transalp, which is a fairly large Camelbak. This works pretty well, but I'd also like to carry my tripod, and have a more organized setup, preferably with a bit easier camera access. If only the Dakine Sequence had Camelbak sleeve.
I haven't tried putting my tripod on the Transalp yet. I may be able to lash/secure it to it, but not sure. The tripod is a magfiber 4-section Manfrotto, so it's relatively light and a bit shorter than average. Regardless, it's not just a little thing to lash on.
Posted by
Chris
at
12:17 PM
3
comments
Labels: cycling, packs, Photography, travel
24 November 2006
We need a large scale web app developer/architect
For our team at Adobe, we're looking for an experienced developer who knows larger scale web apps: how to design them, build them, integrate with hardware stacks, and so on. We already hired the more junior spot of the two we have open, but check out my previous post for the description of the more senior position. This promises to be an exciting gig, as we're using cool technology, building some great apps, and the team is a fun one.
Posted by
Chris
at
7:41 AM
0
comments
21 November 2006
Lake Putt and the Wide Angle
Posted by
Chris
at
12:04 PM
0
comments
Labels: Photography, Photos
19 November 2006
Photography Beginnings
I've started to get into photography, and recently finished a short class. The class was given by my father-in-law, who's an avid photography, and while he does some work for pay, it's primarily a hobby. The class was very good, as I am a serious n00b when it comes to real photography (i.e. using more than a point and shoot, and having proper aesthetics and composition). But, it's been really fun, and I'm starting to get some pictures. I put up a of some I took for the class.http://beta.blogger.com/img/gl.link.gif
Posted by
Chris
at
3:29 PM
1 comments
Labels: Photography, Photos
18 November 2006
Espresso vs. American Fear of Death
As seen on Labnotes:
“Serving size is about the American fear of death. Instead of a great, short experience, people want to prolong a mediocre experience.”James Freeman of Blue Bottle Coffee
Posted by
Chris
at
9:02 PM
0
comments
Labels: Espresso
17 November 2006
Upcoming Adobe Apollo Seminar
Adobe is doing another Understanding Apollo seminar. The last one was very good, so I'd encourage folks to check it out. I've been doing some work with Apollo and it's really cool. The ability to create web apps that work online and offline has been a huge interest of mine, and really ups the usefulness of many apps.
Posted by
Chris
at
1:25 PM
0
comments
16 November 2006
Web Developer Jobs at Adobe - Rails, Flex, RIA's, etc.
We're hiring at Adobe (we always are, but my team specifically)! We have two positions, with one being essentially more senior. See the job descriptions below. If you're interested, and meet the requirements, email me your resume (in PDF) at chris.bailey at adobe dot com.
Position Summary:
The Digital Imaging Services team at Adobe Systems is looking for a superior web services developer to help us make our hosted applications and web services architectures best of class in an entrepreneurial and fast moving environment.
You need to have serious Web Development chops targeting LAMP-like platforms using the latest tools. This means you've implemented web services and hosted applications that utilize the latest dynamic techniques and languages, can simultaneously develop for multiple operating systems, know and use n-tier architectural patterns, can sling around SQL, a couple of scripting languages, and automate unit tests with ease, and may have even scaled up a hardware or network infrastructure or two. You should have demonstrated experience working iteratively and incrementally in an agile fashion with a high performance team. Be prepared to explain some of the architectures you've developed, answer coding questions, and tell us about your successes working with a dynamic team!
Knowledge & Skills:
- Expertise with developing multi-tier, distributed web application architectures and deploying in live production environments.
- Experience with Java, Ruby on Rails, or other current technology stacks required, experience with native code development in C/C++ a big plus. Four or more years of hands on LAMP (Linux, Apache, MySQL, Perl/Ruby) development.
- Experience using quality focused development practices such as heavy unit test and automation tool usage or Test Drive Development strongly desired.
- Experience of successful deployment of multiple iterations of a commercial/publicly accessible high traffic web service or application required.
- BS/MS degree in Computer Science (or equivalent).
- Must be able to work both independently and in a focused and efficient Agile engineering team that is geographically dispersed.
Position Summary:
The Digital Imaging Services team at Adobe Systems is looking for a superior web services and infrastructure developer to help us make our hosted applications and web services architectures best of class in an entrepreneurial and fast moving environment.
You need to have serious Web Development chops targeting LAMP-like platforms using the latest tools. This means you've implemented web services and hosted applications that utilize the latest dynamic techniques and languages, can simultaneously develop for multiple operating systems, know and use n-tier architectural patterns, can sling around SQL, a couple of scripting languages, and automate unit tests with ease, and may have even scaled up a hardware or network infrastructure or two. You must have experience building infrastructure that is highly available and has had to grow quickly due to rapid uptake. You should have demonstrated experience working iteratively and incrementally in an agile fashion with a high performance team. Be prepared to explain some of the architectures you've developed, detail growing pains and solutions while scaling SW/HW/Net infrastructure, answer coding questions, and tell us about your successes working with a dynamic team!
Desired Talents:
- Analytic.
- Learner.
- Communication (written and oral).
Knowledge & Skills:
- Expertise with developing multi-tier, distributed web application architectures and deploying in live, high availability production environments.
- Expertise with current commodity based hardware, networking, and software infrastructure and related Operations exposure.
- Experience with two or more of Java, Ruby on Rails, Perl or other current technology stacks is required, experience with native code development in C/C++ a big plus. Eight or more years of hands on LAMP (Linux, Apache, MySQL, Perl/Ruby) or similar development.
- Experience using quality focused development practices such as heavy unit test and automation tool usage or Test Drive Development strongly desired.
- Experience of successful deployment of multiple iterations of a commercial/publicly accessible high traffic web service or application required.
- BS/MS degree in Computer Science (or equivalent).
- Must be able to work both independently and in a focused and efficient Agile engineering team that is geographically dispersed.
Posted by
Chris
at
10:37 PM
0
comments
Labels: Adobe, Adobe Air, Flex, Jobs, RubyOnRails
07 November 2006
DualingMacLaptops
Note, I don't have them both on (i.e. fully awake) at the same time. The MBP is currently on and in use, but the PB is sleeping. I also use the handy smcFanControl to ensure the MPB's fans are cranked up and keeping it nice and cool.
Posted by
Chris
at
8:34 PM
4
comments
FirewoodStackWinter2006
Posted by
Chris
at
10:48 AM
0
comments
Adobe Open Source ActionScript code - attend the chat today
Today, there is a Mozilla developer chat with Brenden Eich and Kevin Lynch (Adobe), discussing Adobe is contributing source code from the ActionScript Virtual Machine to Mozilla! Learn more here.
Posted by
Chris
at
8:51 AM
0
comments
Labels: ActionScript, Adobe, Mozilla, OpenSource
04 November 2006
Encryption choice dramatically effects WiFi range
I've had range problems with the WiFi in our house for a while. And more than that, it seemed that the older iBook we have in the kitchen simply wouldn't deal with our encrypted WiFi. Last night, after setting up WDS (Wireless Distribution System: basically a way to link many WiFi base stations up to provide a bigger network range) I learned the bigger reason.
The kind of encryption seems to make a BIG difference. I had been using the strong WPA2 Personal encryption. This worked just fine within close range of the base station. But, terrible in other spaces that had worked before with an older base station. Switching to WEP 128-bit dramatically changed things, and now I have excellent coverage again.
The WDS setup also helped in one room in particular, and is relatively easy to set up. In case you're interested in that, here's two resources for doing it when using a Linksys WRT54G base station and then either Airport Express or Airport Extreme as the extension:
Linksys WRT54G, Airport Express, and WDS
Extend a Linksys WRT54G network via AirPort Express
Upshot: our kitchen laptop, which is about the furthest point from our upstairs base station went from sometimes seeing the network, but never being able to connect, to now having a solid 4 bar connection. Similar improvements in other places.
Posted by
Chris
at
8:51 AM
0
comments
Labels: networking, WiFi
31 October 2006
HalloweenPepperBBQ
Posted by
Chris
at
10:30 AM
0
comments
30 October 2006
Fall Leaves of Beauty
Posted by
Chris
at
5:16 PM
0
comments
21 October 2006
Moving to Eugene, Oregon?
My wife, kids, and I have been thinking about moving for a while now. We can't stand the heat here in Rocklin, CA, and have been wanting a different kind of town - less strip malls, more outdoor and healthy living oriented culture, better coffee ;-) and so on. We're now planning to move to Eugene next year, which is relatively shocking to me. I had thought we'd pick Bend or Portland, and was fairly biased against Eugene, but then being thorough, went to visit last week. We wound up liking it quite a lot. Also, we went into 10 houses with a realator and liked a lot of them, and it's reasonably priced (by CA standards).
The main downside from my perspective so far, is that the startup and tech culture is relatively minimal, Portland being quite superior. But, I have a ton of experience working remotely (did so for 6 years for multiple employers), so know it can work. Mainly I'd just miss the energy of being colocated with your other startup cohorts. For the time being I'd simply plan to work remotely in my existing job.
All in all, quite exciting. We've even found a house we love, so the question now becomes whether we go for that, and own two houses until we can move and sell ours, or wait a bit. Might be a crazy next few months.
Posted by
Chris
at
1:36 PM
2
comments
New Camera Gear
I'm quite excited, as I just ordered a new camera. I'm getting a Canon Digital Rebel XTi. I chose to get the "throwaway" 18-55 lens with it, which we did not do when we bought our Rebel XT, as instead we got the super sweet EF-S 17-85 lens, which is awesome. But, since we had the 17-85, and I also ordered a 70-300 IS lens, and knew I couldn't take the 17-85 away from my wife much, I got the cheap 18-55 to mostly fill the lower/wider angle end. We also recently got the EF-S 60mm macro lens which is pretty damn cool if I do say so.
Photography is a new thing for me, but I've been really enjoying it, in large part to using a DSLR. I used to use point-and-shoot digital cameras, and they were fun, are good for carrying on a mountain bike ride, etc., but the DSLR is just so amazing in comparison. I take much better pictures with it, in part I think because it makes me take a bit more time and simply the heft of it makes me more serious about it I guess.
I chose the XTi this time almost completely on price. Dell had this superb deal going on them, combined with a 20% coupon, which got me the body and 18-55 for $635 which is a screamin deal. I'd been debating between it and the 30D, which my father-in-law just got, as well as a friend. The 30D is super nice, but the Rebels are quite fine for me, and the nearly $400 I saved payed for most of the 70-300 lens.
Posted by
Chris
at
1:30 PM
0
comments
Labels: cameras, Photography
10 October 2006
GMail Package Tracking Rocks
One of the things that's been added to Gmail somewhat recently (AFAIK), is that it senses package tracking numbers in emails, and adds a little link to track it in the upper right of the mail window. This simply rocks. It's a little thing, but darn if it isn't just a big time saver and great convenience. Small things like this can really set services apart.
Posted by
Chris
at
12:21 PM
0
comments
Labels: Gmail
09 October 2006
Bookmarklet for Pandora mini player
Matt recently turned me on to the Pandora music service. Very cool - check it out if you haven't. I always like to use their mini-player, but I wanted to be able to just bookmark that and have the mini player open. So, I created a bookmarklet for it. Drag the link below to your bookmark toolbar (in Flock or Firefox; other browsers use the appropriate mechanism). Now, whenever you click that link, it'll open a new window with the Pandora mini player.
Pandora mini player
Posted by
Chris
at
4:14 PM
1 comments
Labels: bookmarklets, music, Pandora
Resources for Restful Authentication in Rails
I've been doing a fair bit of REST web service work in Rails apps lately. One of the interesting parts is doing the authentication pieces, and coordinating this with your regular interactive authentication. I've also been ramping up on the whole Simply Restful thing. I'm not totally sold on it, but the one thing that is definitely appealing about it is the further constraint it places on your code for which that primarily comes down to enforcing more consistency.
Anyway, in terms of REST WS API's, and authentication, there's a new Restful Authentication plugin that uses acts_as_authenticated. The San Diego ruby user's group had a video podcast and slides that touch on it briefly. These point to NAME's blog entry on using this for REST WS and authenticated feeds as well. Good stuff.
Posted by
Chris
at
3:09 PM
0
comments
Labels: Authentication, podcast, presentation, REST, RubyOnRails
Why SSH stopped working on my Mac - with solution
I use SSH a lot, and recently it stopped working on one of my Macs here at home. I couldn't figure it out for a long time. The only thing I'd changed was that I got a new Linksys router (a WRTG54, which has WiFi and a switch). Previously I was using a Linksys router that was single port, and no WiFi.
Long story short, it came down to the DNS setting on my Mac. Even since I used SonicWall's, I had set my DNS entry to that of the router, not those of my ISP. This was nice, because then if the ISP changed DNS entries (which I pick up via DHCP), I'd be insulated. Well, apparently with the new Linksys, this somehow messes up SSH. It doesn't seem to bother anything else.
The one other nice change though, is that SSH connections now happen noticeably faster than they used to. Thought I'd pass this along in case it ever happens to anyone else.
Posted by
Chris
at
12:45 PM
1 comments
Labels: Mac
08 October 2006
Installing Rails, Apache 2.2, and Mongrel on Ubuntu Dapper 64-bit
I am setting up a system at SliceHost, on one of their Ubuntu Dapper slices. First, I'm not as familiar with Ubuntu as I am Fedora, but this is one reason I chose Ubuntu (to get more experience). Anyway, I found several other blog posts and such on the web about this, but none worked perfectly. I glommed mine together by using them though. Here they are:
And, here's what I did. First, uncomment the universe lines in /etc/apt/sources.list. Then...
# apt-get update# apt-get dist-upgrade
# apt-get install ruby ruby1.8-dev ri rdoc
# ln -s /usr/bin/irb1.8 /usr/local/bin/irb# wget http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz
# tar xvzf rubygems-0.9.0.tgz
# cd rubygems-0.9.0
# ruby setup.rb
# cd ..
# rm -rf rubygems*
# gem install rails --include-dependencies
# dpkg --purge apache apache2 (this removes Apache if it exists, which it didn't)
# apt-get install build-essential zlib1g-dev
# wget http://apache.rmplc.co.uk/httpd/httpd-2.2.2.tar.gz
# tar xzvf httpd-2.2.2.tar.gz
# cd httpd-2.2.2
# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-deflate --enable-proxy --enable-proxy-balancer --enable-proxy-http
# make
# make install
# cd ..
# rm -rf httpd*
# apt-get install postfix (Then, use the "Internet Site" default setting, and picked "WeighPals.com" as the name)
# apt-get install mysql-server mysql-common mysql-client libmysqlclient15-dev libmysqlclient15off
# apt-get install libmysql-ruby1.8
# gem install daemons gem_plugin mongrel mongrel_cluster --include-dependencies
technorati tags:RubyOnRails, Apache, Ubuntu, Ruby
Posted by
Chris
at
10:15 PM
4
comments
Labels: Apache, Linux, Ruby, RubyOnRails, Ubuntu
06 October 2006
Friday Night Coding
Some might consider it sad, but I'm really enjoying spending my solo Friday night coding. My wife and kids headed to the Bay area earlier this evening to spend time with the grandparents and some of my wife's friends. I have a project I've been wanting to work on for a while, so I'm taking the opportunity to hack for the evening.
Right now I'm enjoying:
- listening to Pandora, a very cool service
- sipping a decaf espresso (I don't need to stay up that late, and I had a regular espresso earlier this afternoon :)
- Hacking Rails code in TextMate, with ZenTest's autotest keeping me on track. The project involves a few interesting things:
- Amazon's S3
- Music files
- Some "Web 2.0" features (natch)
- Client side code (just for Mac so far, but hopefully Linux and Windows as well)
- Figuring out where I'm going to host it. I believe I will have one of TextDrive's new containers soon, but we'll see.
Hope you're enjoying your Friday night as well.
technorati tags:rubyonrails, TextMate, ZenTest, TextDrive, S3
Posted by
Chris
at
9:11 PM
0
comments
30 September 2006
RocklinSunset30Sep2006.jpg
Posted by
Chris
at
8:59 PM
0
comments
01 September 2006
Gmail sucking lately?
Anyone else find that GMail is incredibly slow lately? Half the time it seems to time out or fail to do various things. This has been the case for several days now. I have a GMail domain account as well, and performance there seems fine, so that's interesting. It's a real bummer, makes using it rather painful.
Posted by
Chris
at
6:08 PM
1 comments
29 August 2006
Problems with RubyGems and Platform Specific Gems
Something that at least a few of us are annoyed with is the case where there is a ruby version, as well as a platform specific version of a gem. Good examples are mysql and mongrel, amongst others. I see a couple of issues here, but the crux of the issue is that this kills the ability to automate (non-interactively) installation.
First, why should the system even offer the win32 version of the gem to me if I'm not using a Windows machine? Fixing that would fix the problem for many people.
But, let's say you are doing multi-platform development, and in particular include in that Windows. I think RubyGems ought to be updated so that you can specify a platform variant when you install a gem, much as you can specify a version. This way, your automation script could simply specify the one it wanted, given the platform it was running on.
The other thing I'm wondering about is what solutions people have in terms of being able to freeze your gems, but where you have gems that have native code, and where you work on multiple platforms. This must be extremely common in the Rails world, where it seems the standard developers machine is MacOS X, and deployment servers are typically some UNIX flavor. Also, I've yet to try it, but I presume things don't behave well if you freeze gems on one platform and then go to another - I assume it freezes gems that include native code?
Anyone have solutions to these issues?
technorati tags:Ruby RubyOnRails
Posted by
Chris
at
9:25 PM
0
comments
28 August 2006
WebORB for Rails: connectivity between Flex and Flash Remoting clients and Ruby on Rails
This is just really cool. Take a look at the page. It makes putting a Flex front end on your RoR apps really easy. What's nice is that it's an easy install, and then it exposes your Rails objects as Flex Data SErvices or Flash Remoting gateway, which means that it's the natural way for Flex or Flash to work with it. In the past I've connected Flex apps up to Rails apps via web services and JSON as the data transport. This works just fine, but it appears this will be a more direct and natural integration for Flex. Here's the diagram from their site:
technorati tags:RubyOnRails, Flex, Flash, FlexDataSErvices, FlashRemoting, WebORB
Posted by
Chris
at
10:42 AM
0
comments
21 August 2006
Resizing hard drives in Parallels on Mac
Parallels is a very cool virtual machine system for Mac (and Windows and Linux). Particularly cool is the ability to resize the hard drive image you have for a given VM. But, the Parallels manual is not accurate on how to do this, or rather is missing some steps (maybe they don't intend for you to have to do this, but haven't finished this functionality?). A thread on their forum leads to the solution, but the thread is a bit jumbled and you need to put together the full solution. For ease, here's the step by step I used to make it work:
- Shutdown Parallels
- Run the "Image Tool" that comes with Parallels.
- Resize the disk you want (it needs to be an "expandable" disk, but Parallels makes them this way by default. If yours is not for some reason, read their manual on how to convert it to one).
- I did not bother making a backup of my image prior to this, but of course, standard cautions apply.
- Now, what Image Tool actually does, is just to make the disk bigger, it doesn't actually affect the change on your virtual disk volume.
- Go get the GPartEd LiveCD. You don't need to burn it to a CD.
- Now, start up Parallels, and do two things for your virtual machine:
- Change the boot order, so CDROM is first, and
- In the CD options, change it to use a disk image, and then go browse to the GPartEd Live CD ISO you just downloaded.
- Run the VM, which will boot into GPartEd. Accept all the default options.
- Once GPartEd is running, select the initial partition, and click the Resize toolbar button. In the resulting dialog, drag it to fill the additional space, hit OK; then Apply the changes. Shutdown GPartEd.
- Boot up your Parallels VM. If doing this for Windows, you'll see Windows do a chkdsk. Once booted, you'll see it say you have new devices and need to restart. This is fine, do so. Once it restarts and is back, you're good to go.
Posted by
Chris
at
2:39 PM
1 comments
19 August 2006
Headed to Scale With Rails Workshop; and Interesting Rails Deployment Options
technorati tags:rubyonrails, TextDrive, RailsMachine, EngineYard, VPS
Posted by
Chris
at
12:03 AM
0
comments
18 August 2006
Using Non-CRUD Actions With Simply Restful Controllers
I've been making use of the simply restful integration in my Rails apps. However, one of the things that took a bit of digging to figure out, was how to map additional (non-CRUD) actions. If you try to simply use a URL of /controller/action that won't work, because it'll treat the action as an ID.
I came across this blog entry on Ryan's Scraps, which explained how to add more actions to the mix. That got me most of the way there. However, what happens if you want to support both GET and POST to an action? A good example of this is a login form. You want GET to show the form page, and POST to do a submit to the login action. As it turns out, you can do this easily with the following mapping:
map.resources :users, :new => { :login => :any }For more good info, and more of a primer, on simply_restful, check out David Goodlad's post.
technorati tags:RubyOnRails, simply_restful
Posted by
Chris
at
11:51 PM
0
comments
10 August 2006
08 August 2006
Confluence vs. Basecamp
I've recently been using Basecamp for some project management. It was working fairly well. I can definitely see the value if you are a consulting firm or similar where you are manageing multiple clients/projects. The main drawback relates to their claimed strength of simplicity. Sometimes it's too simple. I'd like to see multiple todo pages for one. Also, my real complaint is speed. Basecamp seems very slow to me, painfully slow at times.
On a new project, we evaluated Basecamp vs. using a wiki and sort of doing it ourselves. Due to various constraints our wiki choices were MediaWiki (which is what powers Wikipedia, and many more), or Confluence. MediaWiki definitely came up short. We have a range of people using this, from engineers to marketing folks. Wiki's sometimes present stumbling blocks to those who prefer to write in more of a word processor environment. Also, we really wanted a good task list system. We tried the two task extensions for MediaWiki, but neither seemed to actually work properly.
I then setup Confluence. It should be noted that it is not open source and has a significant price tag that may be a prohibitive factor for many (note to open source folks though that they have arrangements for that). Setup was simple drop-in and run a startup script (as well as create a database in your DB engine of choice).
I am impressed! Confluence is a superb wiki! I've used several other wikis over the last year or two (we use twiki heavily as well, and I've tried a half dozen others). Confluence takes it up a notch. It feels polished and professional, and it's been a joy to use. Also, the less-technical folks are finding it a lot nicer to use as well. And, their task extension (we're using the Enhanced Task List macro) is quite nice, perfect for what we're after (fitting our Scrum use).
Another thing I like is how it manages hierarchies of pages, and provides automatic lists of child pages at the bottom of a page. This allows you to forgo linking when you don't need to. Also, the mail features, and RSS abilities are well done. So, I'm sold, and we're proceeding full steam ahead with Confluence.
technorati tags:Confluence, Basecamp, MediaWiki, wiki
Posted by
Chris
at
8:13 AM
8
comments
