<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:ewtroan</id>
  <title>ewtroan</title>
  <subtitle>ewtroan</subtitle>
  <author>
    <name>ewtroan</name>
  </author>
  <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom"/>
  <updated>2008-05-22T20:49:24Z</updated>
  <lj:journal username="ewtroan" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://ewtroan.livejournal.com/data/atom" title="ewtroan"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:20202</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/20202.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=20202"/>
    <title>USB Power</title>
    <published>2008-05-22T20:49:24Z</published>
    <updated>2008-05-22T20:49:24Z</updated>
    <content type="html">&lt;p&gt;&lt;br /&gt;I'm sitting at Houston Hobby airport waiting for a flight home, and while I was looking for power I saw these pedestals between a lot of the seats at the Southwest gates.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pics.livejournal.com/ewtroan/pic/000016y7/"&gt;&lt;img src="http://pics.livejournal.com/ewtroan/pic/000016y7/s320x240" width="180" height="240" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Not only does it have one 120V outlet between each seat, but it has one powered USB plug between each seat! Time for all of those manufacturers who think proprietary power plugs still make sense to grow up and realize custom wall warts are not a feature.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:19920</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/19920.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=19920"/>
    <title>Recipe Factories</title>
    <published>2008-03-03T15:56:48Z</published>
    <updated>2008-03-03T15:56:48Z</updated>
    <content type="html">&lt;p&gt;
For a while now I've been struggling with how to get recipes out of source components. In many cases, our superclasses are now smart enough to eliminate the need for them altogether, leaving just a stub recipe. For binary tarballs, a single &lt;tt&gt;addArchive&lt;/tt&gt; rule is all that's needed in the recipe (you end up putting a version in there as well, but it's almost always encoded in the filename itself making even that spurious). I've been hoping to get to the point where you can check in (say) a single binary tarball and cook without having to have a recipe at all.

&lt;p&gt;
For this to work well, the cook process would need to look in the repository for the right cook rules, just like it does for superclasses already. We'd also want to be able to leverage the work which has already been done with superclasses, so whatever we added needs to be compatible with those. We came up with the idea of a &lt;it&gt;recipe factory&lt;/it&gt;, and I just finished up a working implementation for the next version of Conary 2.

&lt;p&gt;
The basic idea is that a source component can now have a &lt;it&gt;type&lt;/it&gt;, and that type tells the cook process to go look in the repository for help building that source component. For example, if &lt;tt&gt;testtar:source&lt;/tt&gt; has type &lt;tt&gt;archive&lt;/tt&gt;, Conary will look for a &lt;tt&gt;factory-archive:source&lt;/tt&gt; component, and use the recipe in that component as the starting point for building the &lt;tt&gt;testtar&lt;/tt&gt; package.

&lt;p&gt;
The factory-archive:source component itself must be of type &lt;tt&gt;factory&lt;/tt&gt;, and it is not a normal recipe. It instead provides a recipe factory, which is a class derived from the &lt;tt&gt;Factory&lt;/tt&gt; superclass. Conary instantiates an object of that class and calls that object's &lt;tt&gt;getRecipeClass&lt;/tt&gt; method. That method returns a Recipe class (not an object!), often descended from the PackageRecipe superclass.

&lt;p&gt;
If the original source component, &lt;tt&gt;testtar:source&lt;/tt&gt; in this case, does not provide it's own recipe, the recipe class returned by the recipe factory is used to build the package. All of the normal recipe rules apply for that class; it must have the right name attribute, it must specify a version string, and so on. From this point on, it's just a normal build. If the source component did include it's own recipe, the class returned by the factory gets called &lt;tt&gt;FactoryRecipeClass&lt;/tt&gt; and the source component's own recipe is then loaded. The source component's recipe file will then create it's own recipe class using &lt;tt&gt;FactoryRecipeClass&lt;/tt&gt; as it's superclass, which will be used to drive the build.

&lt;p&gt;
One last point: the factory knows a bit about the recipe it's supposed to build. The name of the package being built (&lt;tt&gt;testtar&lt;/tt&gt; in this case) is available as &lt;tt&gt;self.name&lt;/tt&gt; and the path to all of the source files is &lt;tt&gt;self.sources&lt;/tt&gt;. It can also open any of the source files by using &lt;tt&gt;self.openSourceFile(path)&lt;/tt&gt;, so it can inspect the files in the source component to decide how to proceed.

&lt;p&gt;
An example of a very simplistic recipe factory is in &lt;a href="http://oot.rpath.org"&gt;oot.rpath.org&lt;a&gt; as &lt;a href="http://www.rpath.org/rbuilder/repos/oot/files?t=factory-archive%3Asource;v=/oot.rpath.org%40factory%3Atest/1204309229.846%3A1.0-1;f="&gt;
factory-archive:source&lt;/a&gt;, and a source component which uses it is in the same repository
as &lt;a href="http://www.rpath.org/rbuilder/repos/oot/files?t=testtar%3Asource;v=/oot.rpath.org%40factory%3Atest/1204309377.883%3A1.0-1;f="&gt;
testtar:source&lt;/a&gt;. Factories could be used in a large number of different ways, and I think it will take some experimentation to find out what works well and what doesn't.

&lt;p&gt;
Get all of this? I know it's a bit complicated, but it's really very powerful.&lt;/a&gt;&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:19535</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/19535.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=19535"/>
    <title>Update on the tilt</title>
    <published>2008-01-17T19:29:39Z</published>
    <updated>2008-01-17T19:29:39Z</updated>
    <content type="html">&lt;p&gt;
I've had my Windows Mobile-based AT&amp;T &lt;a href="http://www.wireless.att.com/cell-phone-service/cell-phone-details/?device=AT%26T+Tilt(TM)&amp;amp;q_sku=sku1060009"&gt;Tilt&lt;/a&gt; for a couple of months now; here's an update on how well it's doing for me.

&lt;p&gt;
First off, it's gotten very stable. When I first got the device I did registry hacking and the like and got the phone off the tracks somehow. Before Christmas (I don't remember when) I reinstalled it and it's been solid ever since. I've given up on most registry tweaking, but I'm running more third party apps than I did before (and a ton more than I used on my old PalmOS Treo) and it's been just fine. I leave lots of apps running in the background and it stays responsive. Score one point for Windows Mobile.

&lt;p&gt;
Now to take one point away from Microsoft. Almost uniformly, their apps are
terrible. I say "almost" because there might be one I like that I can't
remember off the top of my head. Outlook is probably the least bad of them, and
it can be safely described as adequate.

&lt;p&gt;
Fortunately, there are tons of high quality third party apps available for
Windows Mobile. After spending a bit, the phone is incredibly useful. I
interact with purchased applications almost entirely, and the phone is a joy to
use. Here is a list of the apps I consider must-haves.

&lt;ol&gt;

&lt;li&gt;&lt;a href="www.spbsoftwarehouse.com"&gt;Spb Software&lt;/a&gt; makes a pile of apps
which every phone should have. &lt;a href="http://www.spbsoftwarehouse.com/products/pocketplus/?en"&gt;Spb Pocket
Plus&lt;/a&gt; is the first of these. It gives you great control over the home
(Today) screen on the phone with an easy to configure launcher. It does a pile
of other things (like multiple tabs for IE), but the Today plugin in is a
must-have.

&lt;li&gt;&lt;a href="http://www.spbsoftwarehouse.com/images/phonesuite/1stpage.jpg"&gt;Spb
Phone Suite&lt;/a&gt; gives a dial-by-photo plugin for the Today screen, but it's
real value is support for multiple phone profiles. My phone now switches itself
to vibrate during meetings (which it knows about because it syncs my calendar
with Zimbra), and turns off the ringer at night (while allowing time-based
alarms to still go off). No more getting up to ignore a text message at 2am!
&lt;li&gt;&lt;a href="http://www.jotto.no/fff/index.html"&gt;Finger Friendly Friends&lt;/a&gt;
is an alternate contact lookup tool which makes dialing by name a breeze. It
shows a qwerty keyboard on the screen, but it's not picky about how close you
get to the letter you meant. As long as you're near, it finds the right name
in your contact list. I can't imagine life without it.

&lt;li&gt;&lt;a href="https://buy.garmin.com/shop/shop.do?pID=11413"&gt;Garmin Mobile·
XT&lt;/a&gt; makes the Tilt a great GPS. Reception is good, voice callouts work
well, data entry is pretty easy... In short, it makes carrying a separate
GPS worthless.

&lt;li&gt;Microsoft Live Search is really good at finding addresses and phone
numbers. It's also free, which makes it a must-have.

&lt;/ol&gt;

&lt;p&gt; 
I'm still evaluating &lt;a href="http://www.opera.com/products/mobile/"&gt;Opera
Mobile&lt;/a&gt; over Internet Explorer. There are also replacements for Outlook
I may take a look at. I also have other bits (a Sudoku game, Google maps,
etc) which I've installed but aren't critical.

&lt;p&gt;
Overall, after spending some cash on apps this phone works great. Kudos to
Microsoft for encouraging such a vibrant development community. Shame on
Microsoft for needing it to make their phones usable.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:19227</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/19227.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=19227"/>
    <title>Open Wireless</title>
    <published>2008-01-15T14:10:19Z</published>
    <updated>2008-01-15T14:10:19Z</updated>
    <content type="html">&lt;p&gt;
I've left my personal wireless network wide open for as long as I had it. I always appreciate finding a network connection to use, and felt like I should reciprocate. I've had neighors thank me, and I don't have to hand out keys to house guests. Once in a while I wonder if I'm crazy doing this, so it's nice to see Bruce Schneier &lt;a href="http://www.schneier.com/blog/archives/2008/01/my_open_wireles.html"&gt;defend the practice&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:19003</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/19003.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=19003"/>
    <title>ewtroan @ 2008-01-07T10:05:00</title>
    <published>2008-01-07T15:17:02Z</published>
    <updated>2008-01-07T15:17:02Z</updated>
    <content type="html">&lt;p&gt;
Nathan and I went out for dinner Friday night and tried a restaurant which got great reviews in the local paper. &lt;a href="http://redpalacenc.com/"&gt;Red Palace&lt;/a&gt; is in a mediocre area in a crumbling strip mall, and focuses on Szechuan food. I thought it was a good sign that it claimed one style of Chinese cooking instead of the normal everything under the sun approach, so off we went.

&lt;p&gt;
In case you don't live in central North Carolina, take my word for it that the Chinese food around here is pretty mediocre (I used to think it was awful, but after moving to Charlottesville for a year I realized it wasn't all that bad). I've eaten out enough in New York and San Francisco to know this, but it's not so bad here that I avoid it. When I was in Shanghai last year, I had two good Szechuan meals which gave me something to compare against.

&lt;p&gt;
With that background, let me say that Red Palace held it's own. It was easily the best Chinese food I've had in Raleigh, some of the best I've had in the United States, and right in between the  two restaurants I went to in Shanghai. We shared the chicken corn soup, stir fried green beans, kung pao chicken, and shredded pork in garlic sauce. The soup was forgettable, but the entrees were uniformly excellent. If you find yourself in Raleigh, give Red Palace a try.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:18804</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/18804.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=18804"/>
    <title>Kindle</title>
    <published>2007-12-04T22:35:03Z</published>
    <updated>2007-12-04T22:35:03Z</updated>
    <content type="html">&lt;p&gt;
&lt;a href="http://diveintomark.org/archives/2007/11/19/the-future-of-reading"&gt;Brilliant.&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:18403</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/18403.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=18403"/>
    <title>Faster is better</title>
    <published>2007-11-02T21:08:29Z</published>
    <updated>2007-11-02T21:08:29Z</updated>
    <content type="html">&lt;p&gt;
After watching my Delta flight pull away from the gate in JFK without me (Delta: thank you for letting me watch the door close on my international flight because you got me there more than three hours late and couldn't hold the connection 90 seconds for me) I wound up with a free week in Raleigh. I mean free. I had one eight minute meeting all week.

&lt;p&gt;
So, what did I do with all of this time? Primarily, I got to work on code. Gafton came down to Raleigh for the tail end of the week, so on Thursday we huddled and did more code. The results? The Conary 2.0 tree is now faster. Dramatically faster. For instance, a simple glibc clone has dropped from 90s to 30s (yes, a 200% improvement). Group commit operations were sped up by 75%. Table sizes in the database were reduced (which should help the "looking up pathIds" slowness). Shadows times were sliced by about half.

&lt;p&gt;
What did we do? Lots of stuff.

&lt;ul&gt;
&lt;li&gt;Turns out that Conary didn't represent unchanged files properly. Fixing this in a backwards compatible way was a bit of a hack, but doing it avoided a ton of file stream merging on commits.
&lt;li&gt;We didn't use bulk loads in postgres, which led to *lots* of round trips. Gafton opened up that API for us.
&lt;li&gt;Committing absolute changesets for shadows and promotes led to a lot of unnecessary work. Fixed that.
&lt;li&gt;Promote was getting individual files (lots at a time, but still) so it now gets changesets when that looks like a better choice.
&lt;li&gt;Promote was recompressing file contents. No good reason for it other than our not having the right API's in place to avoid it.
&lt;/ul&gt;

&lt;p&gt;
I'm sure I missed stuff, but the bottom line is we're feeling pretty motivated to get Conary 2.0 out the door!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:17791</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/17791.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=17791"/>
    <title>Tilt</title>
    <published>2007-10-21T14:03:58Z</published>
    <updated>2007-10-21T14:17:04Z</updated>
    <content type="html">&lt;p&gt;
After six months of waffling, I took the plunge and switched mobile phones. My Treo has long since become a source of &lt;a href="http://ewtroan.livejournal.com/2007/08/24/"&gt;constant irritation&lt;/a&gt;, mostly (if not entirely) due to Palm OS. A few months ago I tried a BlackBerry and returned it after two days (and knew I was going to return it after one) and since then I've been just carping about my cell phone.

&lt;p&gt;
Inspired by &lt;a href="http://blogs.conary.com/index.php/gafton/2007/10/08/tilted_kaiser"&gt;Gafton's lead&lt;/a&gt;, two days ago I went to the AT&amp;amp;T (Cingular) store and bought a Tilt (HTC's Kaiser). This meant switching away from Verizon, which I had mixed feelings about. Verizon's network has always been great, their EVDO coverage (which I used constantly while I traveled) has been quite good, and they're the first cell phone company I didn't hate (having been through BellSouth (yes, now AT&amp;amp;T), Sprint, SunCom, and AT&amp;amp;T (the old TDMA network). The wide range of GSM phones available and  the international compatibility of GSM have just become overwhelming. I don't know how Verizon is going to continue to compete with their much more limited phone selection.

&lt;p&gt;
So what do I think? Well, in no particular order

&lt;ul&gt;
&lt;li&gt;It's heavy. It's listed as 0.3oz heavier than my 700p and I have to pay attention to tell the difference between it and my Treo when I'm holding both, but somehow it just seems heavy. Gafton's description of it as &lt;it&gt;dense&lt;/it&gt; holds.
&lt;li&gt;It's big. It's a tad thicker than my old Treo (and I mean a tad; it's hard to see) and it's size is almost the same as the Treo without the antenna. Somehow, it feels bigger.
&lt;li&gt;The screen is great. Having that much screen real estate while browsing and reading email is really nice.
&lt;li&gt;The keyboard is okay. Not nearly as good as the Treo's. I can't reach across it with my thumbs so I have to change my typing pattern though.
&lt;li&gt;Mobile IE blows. Blazer blows too, but seemingly less.
&lt;li&gt;The phone is a little laggy on some operations, but not overwhelming so. I notice but it doesn't annoy me (mostly when opening and closing the keyboard).
&lt;li&gt;The phone ships with 100MB of free RAM. What a joke (6 gig microSDHC card is being shipped Monday).
&lt;li&gt;The available apps are overwhelming. I'll have to start digging through it.
&lt;li&gt;Voice quality makes the Treo seem like a two cans and a string phone.
&lt;li&gt;Bluetooth pairing is a little touchy. I've always had to refresh a couple of times during the device scan, which I never had to do with the Treo.
&lt;li&gt;Coverage at home is about the same as Verizon, which is to say 3G is questionable. I'd rather fall back to EDGE than 1xRTT though!
&lt;li&gt;Cingular 3G is less laggy than EVDO.
&lt;li&gt;GPS on the phone is just cool. A little slow to find satellites, but works well once it's locked on.
&lt;li&gt;WiFi setup is annoyingly complex, involving running a magic program to avoid AT&amp;amp;T's proxy. Seems like there is a better answer waiting to be found.
&lt;li&gt;The UI of PalmOS is so nice. The UI of Windows is so, well, Windows.
&lt;/ul&gt;

&lt;p&gt;
Overall, I expect to keep the phone. I little part of me thinks the Blackjack might have been a better choice given the size. I'm still learning the Windows mobile thing (I can't believe they've been actively developing it for 8 years and it still sucks while Apple managed the iPhone on their second try [I'm counting the Newton as their first]), but we'll see how I adjust.

&lt;p&gt;
As for my wife, she got a KRZR. Nice form factor and plays music well (which she wants for work). It's a little odd putting the microSD card in with the battery, but I don't expect to change it much since the phone will give USB mass storage access to the card.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:17603</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/17603.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=17603"/>
    <title>Rain</title>
    <published>2007-10-16T20:27:33Z</published>
    <updated>2007-10-16T20:27:33Z</updated>
    <content type="html">Not only is it weird to see rain (living in the midst of an extreme drought as I do), but it's even weirder to watch it rain out one window of a Starbuck's but not the other.&lt;br /&gt;&lt;br /&gt;(okay, this is twittery, but I was up at 4am to catch a flight)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:17257</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/17257.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=17257"/>
    <title>Verizon Privacy Intrustion</title>
    <published>2007-10-15T14:41:33Z</published>
    <updated>2007-10-15T14:41:33Z</updated>
    <content type="html">&lt;p&gt;
If you're on Verizon Wireless, make sure you read &lt;a href="http://www.rcrnews.com/apps/pbcs.dll/article?AID=/20071012/FREE/71012004/1002/FREE"&gt;this&lt;/a&gt;. Verizon wants to share your call records with any company in it's ownership web. Not total minutes, but who you called and who called you.

&lt;p&gt;
After AT&amp;amp;T's &lt;a href="http://blogs.conary.com/index.php/mkj/2007/10/01/consumers_not_sheep"&gt;own gaffe&lt;/a&gt; I was hoping Verizon wouldn't do anything this stupid. At any rate, you need to call 1-800-333-9956 to opt out of this. At least that part was easy; just press some buttons on the telephone to avoid it.

&lt;p&gt;
If Google means they're not evil and restrains themselves from these sorts of privacy incursions (not that there record is any good) I'm rooting for them in the upcoming bandwith auction.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:16968</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/16968.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=16968"/>
    <title>Gadgets New and Old</title>
    <published>2007-09-19T21:29:13Z</published>
    <updated>2007-09-19T21:29:32Z</updated>
    <content type="html">&lt;p&gt;
A couple of weeks ago I visited a prospect who had an &lt;b&gt;old&lt;/b&gt; fax machine in their office. &lt;b&gt;Old&lt;/b&gt; as in 1974. It was the first digital fax machine every made. It was a &lt;a href="http://farm2.static.flickr.com/1250/1409476664_026b0d532c_o.jpg"&gt;freestanding machine coming&lt;/a&gt; from the floor so a bit more than counter height. All in all, a pretty impressive piece of machinery. My favorite part? Easily the rotary dial.

&lt;p&gt;
&lt;center&gt;
&lt;a href="http://www.flickr.com/photo_zoom.gne?id=1409476690&amp;amp;size=o"&gt;&lt;img src="http://farm2.static.flickr.com/1106/1409476690_6fd6223f42_m.jpg"&gt;&lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;
Just to prove to myself that technology has come a long way in the last 33 years, I went out and bought an mp3 player this week. Rather than join the unthinking masses (you know who you are!) and buy an iPod I thought a bit, and realized that:

&lt;ol&gt;
&lt;li&gt;I'm likely to use this thing only at the gym
&lt;li&gt;The gym broadcasts TV signals
&lt;li&gt;I own a bluetooth headset
&lt;li&gt;I don't use iTunes
&lt;/ol&gt;

&lt;p&gt;
This list made it pretty obvious that I wanted something with an FM receiver and bluetooth. I'd been looking for ages, but it turns out that bluetooth mp3 players are extremely rare. Samsung has had one for a while, but it's not available in the US (somehow Canada gets it though; go figure). The answer? Of all places, &lt;a href="http://www.bestbuy.com"&gt;Best Buy&lt;/a&gt; has a house brand, &lt;a href="http://www.insignia-products.com"&gt;Insignia&lt;/a&gt;, which just came out with a bluetooth enabled mp3 (and ogg, etc) player with an FM receiver.

&lt;p&gt;
Always one to try &lt;a href="http://ewtroan.livejournal.com/16800.html"&gt;new technology which can't possibly work well&lt;/a&gt; I ran right out and &lt;a href="http://www.bestbuy.com/site/olspage.jsp?skuId=8452863&amp;amp;type=product&amp;amp;id=1183767792576"&gt;bought one&lt;/a&gt;. Not only was it $20 cheaper for some reason, but the thing actually works! The bluetooth worked right away, it appears as a USB mass storage device, and it works as advertised. Nice screen, nice form factor, lightweight... I couldn't have asked for much more. I haven't tried the FM receiver yet (I don't go to the gym that often!) but it was nice to get something that lived up to it's promise.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:16800</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/16800.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=16800"/>
    <title>Palm</title>
    <published>2007-08-24T13:34:54Z</published>
    <updated>2007-08-24T13:34:54Z</updated>
    <content type="html">&lt;p&gt;
Amazing. &lt;a href="http://www.engadget.com/"&gt;Engadget&lt;/a&gt; took the time to write a 
&lt;a href="http://www.engadget.com/2007/08/21/dear-palm-its-time-for-an-intervention/"&gt;well thought out open letter&lt;/a&gt; to Palm suggesting some reasons the company's performance
has been seen as &lt;a href="http://chart.finance.yahoo.com/c/2y/p/palm"&gt;less than impressive&lt;/a&gt;.
The final thought was to "Stop keeping us in the dark" so that the loyal legions of Palm users would have some idea when the next generation device was going to become available, and when an
update which doesn't &lt;a href="http://www.palminfocenter.com/news/9496/palm-removes-verizon-treo-700-updaters/"&gt;break
people's phones&lt;/a&gt; would become available.

&lt;p&gt;
To their credit, Palm did take the time to &lt;a href="http://blog.palm.com/palm/2007/08/thanks-engadget.html"&gt;respond&lt;/a&gt;, but they said absolutely nothing in their response other than &lt;a href="http://images.southparkstudios.com/media/images/703/703_image_01.jpg"&gt;"Nothing to see here, move along"&lt;/a&gt;.

&lt;p&gt;
I've been using Palm products since he Palm VII ages ago, and I've gone through Treo 650p and now a Treo 700p. The update Palm gave barely works, the email program syncs horribly, the phone will freeze up for no reason, and... Oh, never mind. If Palm &lt;a href="http://www.palm.com/us/products/mobilecompanion/foleo/index.html?creativeID=rd_foleo"&gt;doesn't care&lt;/a&gt; about making smartphones that work I don't know why I do either. Mark me down in the "anything but Palm" category.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:16586</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/16586.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=16586"/>
    <title>California Driving</title>
    <published>2007-01-19T05:20:46Z</published>
    <updated>2007-01-19T05:20:46Z</updated>
    <content type="html">&lt;p&gt;
I made a swing through silicon valley this week, visiting customers, partners, and prospects. I haven't been out here in a while, and the list of people to see really piled up. I ended up having fifteen meetings in two and a half days. From the start of the first meeting to the end of the last was 52.5 hours (including sleep!). Pretty good productivity!

&lt;p&gt;
I owe a big thank you to google maps for getting me to all of my meetings. Running it across Verizon EVDO on my Treo 700p made sure I knew where I was going more often than not. Rushing to the car after a meeting, typing in the next address, and following the map proved incredibly practical. GPS synchronization would be ideal of course, but until that happens, google maps was really pretty incredible.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:16174</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/16174.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=16174"/>
    <title>Derived Packages</title>
    <published>2007-01-15T18:51:23Z</published>
    <updated>2007-01-15T21:15:30Z</updated>
    <content type="html">&lt;p&gt;
&lt;a href="http://blogs.conary.com/index.php/mkj"&gt;Michael Johnson&lt;/a&gt; and I spent a good hunk of last week finishing off derived packages. It finally got pushed into the &lt;a href="http://hg.rpath.com/conary-1.1"&gt;Conary 1.1&lt;/a&gt; tree Friday afternoon and should make it into a released Conary soon. Since I think this is one of the most interesting things to make it into Conary in a while, let me talk about what it does.

&lt;p&gt;
Derived packages are meant to answer the &amp;ldquo;I just need to change &lt;i&gt;foo&lt;/i&gt;; why do I need to recompile the whole thing?&amp;rdquo; question. That could be &amp;ldquo;I just want to remove some of these scsi modules from the kernel&amp;rdquo; or &amp;ldquo;how do I change /etc/httpd/httpd.conf?&amp;rdquo;. Our standard answer to this has been to shadow the trove, make those changes in the recipe, and rebuild. Of course, rebuilding all of apache to change a config file was a bit heavy handed, and rebuilding the kernel is even worse. 

&lt;p&gt;
To address these needs (and it turns out, others as well), we added a new kind of package which inherits everything from another package, and then allows modifications to the inherited contents. When it's all done, a new package gets spit out with those changes.

&lt;p&gt;
This should be much easier to see with an example. I'm going to walk you through the steps of changing httpd.conf since that's such a common case.

&lt;p&gt;
First of all, we still need to shadow apache. I want to show the merge here, so I'm starting with an older version of httpd to let that step work.

&lt;pre&gt;
bash# cvc shadow oot.rpath.org@oot:devtest httpd:source=conary.rpath.com@rpl:1/2.0.55-7
bash# cvc co httpd=oot.rpath.org@oot:devtest
bash# cd httpd
&lt;/pre&gt;

Now I'm going to erase the files we don't need anymore. We're going change httpd.conf and the recipe, so those can stay.

&lt;pre&gt;
bash# cvc remove index.html Makefile.ssl modssl-req.conf httpd.init.patch
&lt;/pre&gt;

Go ahead and edit httpd.conf. Make whatever changes you like; I'm just changing a comment at the top to prove I did something. The recipe needs to be modified as well since it's not building from source anymore. It's now a DerivedPackageRecipe which does nothing but install a new httpd.conf.

&lt;pre&gt;
class Httpd(DerivedPackageRecipe):
    name = 'httpd'
    version = '2.0.55'

    def setup(r):
        r.addSource('httpd.conf', macros=True)
        r.Install('httpd.conf', '%(sysconfdir)s/httpd/conf/')
&lt;/pre&gt;

&lt;p&gt;
Most of the magic here is in the changed class of the package; making it a DerivedPackageRecipe tells conary to look for the latest httpd 2.0.55 on the parent branch of this shadow. The rest of this (all two lines) add &lt;tt&gt;httpd.conf&lt;/tt&gt; as a source file and then installs it into the derived package.

&lt;p&gt;
Committing and cooking this as normal gives an httpd package with our new config file. If you're curious, here are some links:

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.rpath.org/rbuilder/repos/oot/troveInfo?t=httpd%3Asource;v=/conary.rpath.com%40rpl%3Adevel//1//oot.rpath.org%40oot%3Adevtest/1168876674.328%3A2.0.55-7.0.1"&gt;Source Package&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.rpath.org/rbuilder/repos/oot/getFile?path=httpd.recipe;pathId=f2b95b15bf77e1bed3f0e155b9d458f3;fileId=28fbe063e66984b34b1560567b5c0a6176319b8a;fileV=/conary.rpath.com%40rpl%3Adevel//1//oot.rpath.org%40oot%3Adevtest/2.0.55-7.0.1"&gt;Modified recipe&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.rpath.org/rbuilder/repos/oot/troveInfo?t=httpd;v=/conary.rpath.com%40rpl%3Adevel//1//oot.rpath.org%40oot%3Adevtest/1168876674.328%3A2.0.55-7.0.1-1"&gt;Built httpd trove&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.rpath.org/rbuilder/repos/oot/getFile?path=httpd.conf;pathId=b100aa737b1f6fe184943b47390743d9;fileId=7b20998d37518b48210d2eea81eb43e7dffdbbaf;fileV=/conary.rpath.com%40rpl%3Adevel//1//oot.rpath.org%40oot%3Adevtest/2.0.55-7.0.1-1"&gt;Modified httpd.conf&lt;/a&gt; (look at the top of the file to see the change)
&lt;/ul&gt;

&lt;p&gt;
So, two lines to change the config files. A little bit easier than rebuilding the entire package from source. A nice feature of this is file versions make it easy to see what files have changed:

&lt;pre&gt;
bash# conary rq httpd:runtime=oot.rpath.org@oot:devtest --file-versions --full-versions
/etc/httpd/conf/httpd.conf    /conary.rpath.com@rpl:devel//1//oot.rpath.org@oot:devtest/2.0.55-7.0.1-1
/etc/httpd/conf/magic    /conary.rpath.com@rpl:devel/2.0.54-2-2
&lt;/pre&gt;

&lt;p&gt;
(Yeah, I snipped that output a bit) You can see from this that httpd.conf is a local modification while the magic file is inherited from upstream (unfortunately there is a bit of a problem in how file versions are calculated for files which multiple flavors on a shared path which makes this less impressive; Mihai is fixing!).

&lt;p&gt;
Merging to a new upstream version is pretty easy with this model. Since the recipe is completely new, there is no patch merging that needs to be done. Instead, conary just updates the version to reflect the new version we're deriving from.

&lt;pre&gt;
bash# cvc merge
bash# cvc diff
(working version) Mon Jan 15 14:00:39 2007 (no log message)

httpd.recipe: changed
Index: httpd.recipe
====================================================================
contents(sha1)
inode(mtime)
--- httpd.recipe /conary.rpath.com@rpl:devel//1//oot.rpath.org@oot:devtest/2.0.55-7.0.1
+++ httpd.recipe @NEW@
@@ -1,6 +1,6 @@
 class Httpd(DerivedPackageRecipe):
     name = 'httpd'
-    version = '2.0.55'
+    version = '2.0.59'

     def setup(r):
         r.addSource('httpd.conf', macros=True)
&lt;/pre&gt;

&lt;p&gt;
Commit, cook, and you have rPath's new httpd package with your configuration changes.

&lt;p&gt;
Right now the actions and policy objects which derived packages support are a bit limited. You can create new component (but not packages), move files between components, remove, install, and patch files in the build root, change file requirements, and a few other things. That list will certainly grow in the future though!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:15915</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/15915.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=15915"/>
    <title>Conary Journaling</title>
    <published>2007-01-02T15:20:19Z</published>
    <updated>2007-01-02T18:00:29Z</updated>
    <content type="html">&lt;p&gt;
First off, happy new year to everyone. 2006 was certainly a momentous year for me both personally and professionally, with a new baby arriving at home and momentum &lt;a href="http://www.forbes.com/business/2006/12/09/information-2007-predictions-sneakpeek_sp07_19_daniellyons_information.html"&gt;starting to build&lt;/a&gt; for rPath. I hope everyone reading this had a good 2006 and has a great 2007 lined up.

&lt;p&gt;
Right before the Christmas holiday (literally; at about 3:30 the Friday before Christmas) I committed a set of &lt;a href="http://hg.rpath.com/conary/?cs=b196761f8597"&gt;journaling&lt;/a&gt; &lt;a href="http://hg.rpath.com/conary/?cs=430e2fde3ce7"&gt;patches&lt;/a&gt; to Conary. While this sounds boring, it's actually really important.

&lt;p&gt;
Conary, just like every other packaging system out there, has to deal with Unix filesystems lacking any atomic operations which work on multiple files simultaneously. What this means is that if you're halfway through a updating a package and the user's doberman trips over the power cord and shuts off the machine, some of the files in that package will have been updated and some will not have been. As for the database, whether it reflects the new package or the old one isn't really important; either way it doesn't reflect what's on the filesystem. Without vastly different atomic properties in the filesystem, this isn't all that easy to fix.

&lt;p&gt;
On standard servers, this is not normally that big of a deal (a sysadmin just logs in, redoes the operation which he was in the middle of, and life goes on). For an appliance, however, it could be a much bigger problem. These types of catastrophic failures leave depenendeny problems (so conary might not run any more!) as well as internal inconsistencies (a half conary 1.0.31/half conary 1.1.12 system simply won't work). In short, there are open windows for unrecoverable package installation inconsistencies. Unrecoverable is never a nice word.

&lt;p&gt;
A while ago, msw, dugan, and I were tossing around some ideas on how to fix this. We realized that a basic journal would help a lot, where only invertible operations were performed and those operations were recorded in the journal. If something failed unexpectedly (out of disk space, etc) we'd roll back the journal and the filesytem would return to normal. If a catastrophic failure occured, the journal would be left on the system and conary would know not only that something went awry, but how to fix it.

&lt;p&gt;
While I was out sick with something-or-other, I started working on this. It actually went pretty quickly, with most of the work done in less than a day and another day being spent on test cases. The result is you can &lt;tt&gt;kill -9&lt;/tt&gt; Conary at a random point in the update, run &lt;tt&gt;conary revert&lt;/tt&gt; (which conary will tell you to do), and your filesystem will be put back however it was. How cool is that?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:15723</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/15723.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=15723"/>
    <title>Extreme Flextime</title>
    <published>2006-12-12T22:12:51Z</published>
    <updated>2006-12-12T22:12:51Z</updated>
    <content type="html">&lt;p&gt;&lt;a href="http://www.businessweek.com"&gt;BusinessWeek&lt;/a&gt; has a great &lt;a href="http://www.businessweek.com/magazine/content/06_50/b4013001.htm"&gt;article&lt;/a&gt; this week on how &lt;a href="http://www.bestbuy.com"&gt;Best Buy&lt;/a&gt; is changing it's internal culture to move away from a traditional workday to flextime on steroids. They're calling it &lt;b&gt;ROWE&lt;/b&gt;, or &lt;it&gt;Results Only Work Environment&lt;/it&gt;. The basic idea is as long as you can measure what's people are accomplishing, where and when they accomplish it doesn't matter. So far, they're seeing good productivity growth, a great increase in retention, and enormous increases in job satisfaction. A pretty good set!

&lt;p&gt;
I've never been a hard-nosed boss when it comes to schedules and vacations, but I admit that I haven't gone nearly as far as ROWE. I think a big reason for it is I've found it hard to measure performance and productivity for developers, so face-time has meant something to me. Reading this recent article has me thinking more about about how &lt;a href="http://www.rpath.com"&gt;rPath&lt;/a&gt; could measure developers to give them more choices in how they divide up their lives. I spent the afternoon with my four year old today (my excuse is a much-needed recovery from the return trip from &lt;a href="http://ewtroan.livejournal.com/2006/12/09/"&gt;Shanghai&lt;/a&gt;) and realized that I'd trade some afternoon time at work for more evening time at work, and I'd welcome others to do it, if I was convinced all of our goals would be met as well as (or better than!) they are now. I think &lt;a href="http://issues.rpath.com"&gt;our&lt;/a&gt; &lt;a href="http://www.atlassian.com/software/jira/"&gt;JIRA&lt;/a&gt; deployment will be the lynch pin of any of our efforts, since it has the basic tools for letting us quantify performance.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:15500</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/15500.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=15500"/>
    <title>Shanghai</title>
    <published>2006-12-09T09:33:19Z</published>
    <updated>2006-12-09T09:44:58Z</updated>
    <content type="html">&lt;p&gt;
Monday morning I left Raleigh; a mere 24 hours after taking off I landed in Shanghai (okay, so maybe it was a bit more). That made it around 7:00 Tuesday night. Xiaowen was waiting for me at the airport, and she got me to a hotel and we had dinner. Four days later I'm sitting on the 37th floor of my hotel in Pudong (the new business district on the eastern side of the river from "classic" Shanghai), and while I miss my family terribly, I've had a great time.

&lt;p&gt;
&lt;img src="http://static.flickr.com/126/317674869_dfe0126a76_m.jpg"&gt;

&lt;p&gt;
First, I have to say that all of the people I've interacted with have been great. While the English hasn't always been top notch, it's been consistently better than my Chinese! If weren't for the nearly constant escort I'd probably still be sitting at the airport looking for something to eat! Instead, I've had huge meals (which I'm sure I'll regret in a few days) and seen at least a little bit of the city.

&lt;p&gt;
The highlight was today's trip to see the &lt;a href="http://www.era-shanghai.com"&gt;Shanghai Acrobats&lt;/a&gt;. It was a &lt;a href="http://www.cirquedusoleil.com"&gt;Cirque du Soleil&lt;/a&gt; style show; less theatrical but probably a little more impressive physically (I'm not entirely sure how to really judge that though). It was really amazing to watch the performance. If you're ever in Shanghai, I strongly recommend it. Buy tickets ahead of time though; I waited until the last minute and was fortunate that someone was trying to return a single ticket when Xiaowen went to buy ours. She graciously bought the ticket for me, helped me get to the show, and gave me her cell phone in case I got hopelessly lost on the way back. Someone I managed (following the flood of people turned out to be a good plan!) and now consider myself a veteran of the city.

&lt;p&gt;
I'm here one more day, and while I'm looking forward to going home I sure hope to come back to Shanghai. Thanks to Xiaowen and the rest of my hosts (who, unfortunately, I can't really mention without breaking an NDA) for helping me enjoy my week here.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:15218</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/15218.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=15218"/>
    <title>Email clients, rMake, and blog notice</title>
    <published>2006-12-05T23:58:01Z</published>
    <updated>2006-12-05T23:58:01Z</updated>
    <content type="html">&lt;p&gt;
Last week I did my biannual review of email clients looking for something to replace &lt;a href="http://www.washington.edu/pine/"&gt;pine&lt;/a&gt;. Everything I look at seems to be harder to use, slower, or not much better than the client I've ben using since 1992. After getting annoyed at something pine did, I stated looking around to see if anything had changed.

&lt;p&gt;
The first stop was &lt;a href="http://www.mutt.org"&gt;mutt&lt;/a&gt;. Frankly, it can probably do everything I need if I spend enough time learning to configure it. After playing with it a while though, I didn't find anything it did that I hadn't already configured pine for. There just didn't seem to be enough bang to bother.

&lt;p&gt;
The other mail client I spent some time with was &lt;a href="http://sylpheed.sraoss.jp/en/"&gt;sylpheed&lt;/a&gt;. I'd used sylpheed for a few months back in 2002 and generally liked it; I don't really remember why I stopped using it. It is easy to configure for multiple mailboxes, handles imap over ssh nicely, will use the mailbox layout I want, has an offline mode, uses gtkhtml for reasonable html mail rendering, and seems fast.

&lt;p&gt;
While I was playing with &lt;a href="http://www.claws-mail.org/"&gt;sylpheed-claws&lt;/a&gt;, a feature-rich fork of the main branch, I decided to build the latest version (mostly to get the gtkhtml plug in working). Updating the recipe was easy; that took all of two minutes. The bigger questions was, how to build the recipe for contrib?

&lt;p&gt;
You have to understand something here -- I'm incredibly lazy with my home system. I almost never update it, so it's running an *ancient* version of rPath Linux (so old it was called Specifix Linux). It's had updates applied here and there, but it's mostly on &lt;tt&gt;conary.rpath.com@rpl:devel&lt;/tt&gt; and is a real hodgepodge; not the ideal system to build packages for contrib!

&lt;p&gt;
Enter &lt;a href="http://wiki.rpath.com/wiki/rBuilder:rMake"&gt;rMake&lt;/a&gt;, an rPath project I hadn't actually used. It works on top of Conary, and provides clean builds in a carefully constructed chroot. Needless to say, I didn't expect it to work on the out of date system I had to tru it on. I can't being to tell you how surprised I was to see "conary update rmake; rmake build sylpheed.recipe" just work. It literally &lt;b&gt;just worked&lt;/b&gt;. A full chroot environment was installed, sylpheed was built, I could instlall the test build easily, and commit it when I was done. Dugan is really doing a fantastic job with rMake; if you haven't tried it yet, you should.

&lt;p&gt;
As for my email client? I do have sylpheed-claws installed, and it works fine. I still seem to be using pine most of the time though; old habits die hard.

&lt;p&gt;
On a completely unrelated note, one of the things which I find hard about finding the time to blog is the feeling that I'm talking to myself. Of course, this is a chicken and egg thing as who bothers to read a blog which is mostly quiescent? In any case, it's nice to be &lt;a href="http://searchopensource.techtarget.com/originalContent/0,289142,sid39_gci1233083,00.html"&gt;noticed&lt;/a&gt;
once in a while!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:14917</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/14917.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=14917"/>
    <title>Of Oracle and Linux</title>
    <published>2006-10-26T23:33:37Z</published>
    <updated>2006-10-27T00:29:10Z</updated>
    <content type="html">&lt;p&gt;I just can't resist adding my voice to the cacophony surrounding Oracle's &lt;a href="http://www.oracle.com/technologies/linux/index.html?pageregion=ocom_hp_a_main_1_Linux_102506"&gt;announcement&lt;/a&gt;
of enterprise support for a Red Hat compatible Linux distribution.

&lt;p&gt;My take is a little different then what's being written. I don't disagree with &lt;a href="http://blogs.ingres.com/davedargo/2006/10/25/"&gt;many&lt;/a&gt; of the comments which are coming out, but I do think
they miss the big picture a bit.

&lt;p&gt;
I think there is a bigger message in all of this than Oracle being annoyed that Red Hat bought JBoss. Like it
or not, Oracle's application server has hardly been a resounding success in the marketplace (two minutes on google dug up a resounding 2.4% market share in 2005); it just doesn't make sense for Oracle to alienate a partner over a product which
competes with such an insignificant portion of their revenue stream. This could be a warning shot to Red Hat not to buy a database business like MySQL (which Red Had is an investor in). This is certainly possible, and I don't doubt that the powers that be at Oracle would hate to see such a matchup, but this move likely made such a pair up more likely since Red Hat has very little to lose now. After all, what's Oracle going to do about it now, enter the Linux business?

&lt;p&gt;
So what is the answer? Well, I haven't been receiving fat consultation dollars from anyone in California, so this is just a guess, but I think Oracle doesn't feel like they can compete with Microsoft without having full control over their stack. Now, I'm &lt;a href="http://news.com.com/Softwares+stack+wars/2100-1012_3-6062557.html"&gt;hardly&lt;/a&gt;
&lt;a href="http://www.eweek.com/article2/0,1895,1950195,00.asp"&gt;alone&lt;/a&gt; in thinking this; this was such a popular idea over the last few months I'm a bit shocked that this idea got lost in all of the "Oracle to Kill Red Hat" sensationalism.

&lt;p&gt;
Let's spend a little time in Oracle's shoes. Think about who you worry about competing with. Red Hat who has never taken a dime in revenue from you and you've built a pretty good partnership with? Probably not. How about Microsoft, who has the number two SQL server in the world, and full control over the world's most popular development and deployment environments and could probably buy you if they tried hard enough? Right, probably Microsoft. Microsoft keeps entering
&lt;a href="http://www.microsoft.com/dynamics/crm/default.mspx"&gt;markets&lt;/a&gt; which are important to Oracle. How is Oracle supposed to compete with them for developers and installations?

&lt;p&gt;
All of a sudden having a full solution stack starts to look pretty important. Not just to run Oracle apps (which a
&lt;a href="http://en.wikipedia.org/wiki/Software_appliance"&gt;software appliance&lt;/a&gt; product would address, but to give
Oracle sales reps the ability compete product for product with Microsoft in the enterprise. Partnering with Red Hat
gave them some of that, but this is a clash of the Titan's and Red Hat just isn't in that league. Besides, who would
trust a third part with something so strategic to their future?

&lt;p&gt;
So Oracle was left with a buy versus build decision. You can argue all you want about which would have been better, why
they chose to build, and so on. Once they did decide to build though, I can't imagine Larry Ellion's competitive
juices allowing the goal be anything but the number one position in the enterprise Linux market. How often do we see Oracle play for second?

&lt;p&gt;
Finally, what does this mean for everyone else in the software industry? To me, this highlights that building products
on somebody else's stack leaves you vulnerable. Oracle products running on Microsoft left them vulnerable to SQL Server
(and now Microsoft Dynamics). This logic applies to every other ISV; trusting someone else's platform just opens the door for them to compete with you. Does anyone think BEA is excited about running on Red Hat Enterprise Linux now that Red Hat competes with them using JBoss? Who wants to sell a directory server on Suse Linux Enterprise Server knowing that Novell
has Novell Directory Services right behind it? Like it or not, controlling the full stack provides a stronger
competitive position then trusting someone else's platform.

&lt;p&gt;
Linux is the perfect system software component of an ISVs stack. It's robust, well maintained, and has a license which means that it can never be taken away from you. Nobody can hold an ever-increasing royalty rate over an ISVs head backed by the threat of taking away a core piece of their solution. Linux is Open Source, which lets people use it and breathe easily. I think Oracle's announcement yesterday was &lt;a href="http://www.ingres.com/faqs/FAQs_Icebreaker.html"&gt;another&lt;/a&gt;
step towards software vendors taking control over their solutions.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:14635</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/14635.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=14635"/>
    <title>Good month</title>
    <published>2006-08-29T17:44:14Z</published>
    <updated>2006-08-29T18:50:23Z</updated>
    <content type="html">&lt;p&gt;
It's been a good month for us here at &lt;a href="http://www.rpath.com/"&gt;rPath&lt;/a&gt;. We won an award for &lt;a href="http://gridtech.blogspot.com/2006/08/grid-winner-is-rpath-at-linux-world.html"&gt;grid computing&lt;/a&gt; at LinuxWorld. While that might seem a bit different from how you think of our stuff, it actually matches up nicely with some work we're doing with the &lt;a href="http://www.rpath.com/corp/news-events-pr5-23-06.html"&gt;Department of Energy&lt;/a&gt;. We also announced a &lt;a href="http://www.rpath.com/corp/news-events-pr7-26-06-1.html"&gt;couple&lt;/a&gt; of &lt;a href="http://www.webpronews.com/topnews/topnews/wpn-60-20060828IngresChristensProjectIcebreaker.html"&gt;customers&lt;/a&gt;.

&lt;p&gt;
Just today, we've gotten great press in a couple of places, with &lt;a href="http://www.networkworld.com/"&gt;Network World&lt;/a&gt; calling rPath us one of the top ten
&lt;a href="http://www.networkworld.com/news/2006/082806-open-source.html?ts"&gt;open source companies to watch&lt;/a&gt; and &lt;a href="www.eweek.com"&gt;eWeek&lt;/a&gt; having some
&lt;a href="http://www.eweek.com/article2/0,1759,2009420,00.asp"&gt;nice things to say&lt;/a&gt; about
us as well. Finally, &lt;a href="www.desktoplinux.com"&gt;Desktop Linux&lt;/a&gt; mentioned the eWeek article and added some &lt;a href="http://www.eweek.com/article2/0,1759,2009420,00.asp"&gt;kind words&lt;/a&gt; of their own! It's nice to be noticed.

&lt;p&gt;
The next version of Conary will handle files moving between troves properly. This turned out to be a big deal, as troves are being built in distros independently of where they were derived from, breaking updates. Conary now detects that case and handles to transparently thanks to work Dave and I did over the last couple of weeks (he works fast, I work slow).</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:14405</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/14405.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=14405"/>
    <title>Modeling new T-shirts</title>
    <published>2006-07-23T00:33:59Z</published>
    <updated>2006-07-23T00:33:59Z</updated>
    <content type="html">&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;img src="http://static.flickr.com/72/195741278_add02d5da7_o.jpg"&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
We just got a shipment of kids T-shirts in at work. While the size labels don't seem quite right (both shirts seem about one size smaller than they claim), they fit well enough for now. I managed to get Loren and Ian to hold still to show off the new wares!
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:14276</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/14276.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=14276"/>
    <title>Things to do in Utah</title>
    <published>2006-07-12T15:45:24Z</published>
    <updated>2006-07-12T15:45:24Z</updated>
    <content type="html">&lt;p&gt;
My (extended family) and I spent the holiday week in Park City, Utah and had a blast. The weather was fantastic (mid 70s during the day), we ate at some &lt;a href="http://www.grapparestaurant.com/"&gt;great restaurants&lt;/a&gt; thanks to our babysitters (aka Grandma and Grandpa).

&lt;p&gt;
Some of the highlights of the trips were:

&lt;ol&gt;
&lt;li&gt;The kids enjoyed &lt;a href="http://www.childmuseum.org/"&gt;The Children's Museum of Utah&lt;/a&gt; quite a bit. While it's a bit small (and really out of the way) it was good for an hour of two of fun for both of them. Finding a Chick-Fil-A for lunch afterwards in Salt Lake gave the kids a good taste of home as well!
&lt;li&gt;The &lt;a href="http://www.hoglezoo.org/"&gt;Hogle Zoo&lt;/a&gt; was on the way back to Park City, and is a nice place. They just opened an Asian Highlands section which houses a bunch of different kinds of cats. The only disappointment there was that the &lt;a href="http://www.bigcatrescue.org/pallas_cat.htm"&gt;pallas cat&lt;/a&gt; exhibt wasn't ready yet. My wife has worked with them at NC State and was hoping to see another colony. Next time!
&lt;li&gt;My two oldest sons and my dad are all train freaks, so the &lt;a href="http://www.hebervalleyrr.org/"&gt;Hever Valley Railroad&lt;/a&gt; was a huge hit. It's an old steam train giving three and a half hour rides (round trip). The engine was promptly dubbed "Thomas" by my two year old (despite being back!) and my four year old informed us we were riding in "Claribel", which our coach car did look like. I was worried that the trip would be too long for them, but it was just about right.
&lt;li&gt;After the train ride, we took the suggestion of one of the conductor's and headed over to &lt;a href="http://www.swissalpsinn.com/corn/dkhome.htm"&gt;Dairy Keen&lt;/a&gt; for lunch. It's a fast food restaurant in Heber City which had great burgers for the adults and high-quality chicken fingers for the kids. Oh, and the fries were delicious as well.
&lt;li&gt;Finally, &lt;a href="http://www.parkcitymountain.com/summer/index.html"&gt;Park City Resort&lt;/a&gt; has a set of summer activities. The alpine slide is a bobsled-ish ride you can take the kids on, the few rides they had were big hits, and Loren fell in love with the miniature golf (he played four times on the trip). I was disappointed I couldn't ride the 50+ mph zip ride, but I couldn't get away from the kids for long enough to make that happen.
&lt;/ol&gt;

&lt;p&gt;
Park City proved to be a great summertime destination. Now I need to get there when the slopes are open!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:13909</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/13909.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=13909"/>
    <title>Back from Europe</title>
    <published>2006-06-26T14:03:39Z</published>
    <updated>2006-06-26T14:03:39Z</updated>
    <content type="html">Late Thursday night I returned from my first trip to Europe since 2000. For someone who made a point of going to Europe every year or two for most of his twenties, taking this much time away made returning a bit of a jolt (traveling overseas with my horde of kids has never seemed worth the trouble).&lt;br /&gt;&lt;br /&gt;Anyway, I spent a couple of days in Geneva with Jes Sorensen. I've seen him at OLS the last couple of years, but things are so frantic there it's hard to get much time together. He gave me a place to sack out and we it was great to hang out with a good friend.&lt;br /&gt;&lt;br /&gt;After that, I went to Paris (well, Charles de Gaulle airport) to spend some time at the Ubuntu conference. I didn't have any agenda, I just wanted to see what all of the fuss is about. Well, now I know. The Ubuntu group is bringing more energy and creative thought to building Linux distributions then I've seen in a long time. It's clear that they're trying to bring Linux to the desktop and they have aligned themselves with great people to try and make that happen. Hard to know if they will succeed, but they have the best shot of any group I've yet seen.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:13623</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/13623.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=13623"/>
    <title>Password callouts</title>
    <published>2006-05-12T20:39:51Z</published>
    <updated>2006-05-12T20:39:51Z</updated>
    <content type="html">&lt;p&gt;
If you've been reading conary-commits at all, you'll know I've been spending my time deep in the repository authentication code. So far, all of that work has been general cleanup. It needed to get done, but it was incredibly unsatisfying. Today I got to do something which actually added value.

&lt;p&gt;
Basically all of our customers have asked for a way to use a centralized password database. We store user account information and passwords in our repositories, which gave users one more place to store passwords. Wouldn't it be nice if we could resolve passwords against LDAP/NIS/whatever else. Instead of trying to build all of that in, we decided to add support to the repository for calling arbitrary HTTP GET URLs for password verification.

&lt;p&gt;
The idea is you give the repository a URL like &lt;tt&gt;http://pwcheck.my.org/check&lt;/tt&gt;. When a user comes in, the repository grabs the content from &lt;tt&gt;http://pwcheck.my.org/check?user=USERNAME;password=PASSWORD&lt;/tt&gt;. If an error occurs, the request fails. This URL is expected to provide an XML file which either allows or denies the request. Here's what the file should look like:

&lt;p&gt;
&lt;code&gt;
&amp;lt;auth valid="true"/&amp;gt;
&lt;/code&gt;

&lt;p&gt;
If the &lt;tt&gt;valid&lt;/tt&gt; attribute is anything other than &lt;tt&gt;true&lt;/tt&gt; or &lt;tt&gt;1&lt;/tt&gt;, the password is rejected. If the XML parsing (or any other error) occurs, it's also rejected. This lets folks define their own user validation scheme through a nice and simple API.

&lt;p&gt;
Doing this callout for every request might not be all that fast though. To alleviate that problem, I also added an &lt;tt&gt;authCacheTimeout&lt;/tt&gt; configuration item for the server, which species (in seconds) how long a set of credentials should be considered valid. Failed lookups aren't stored in the cache.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ewtroan:13476</id>
    <link rel="alternate" type="text/html" href="http://ewtroan.livejournal.com/13476.html"/>
    <link rel="self" type="text/xml" href="http://ewtroan.livejournal.com/data/atom/?itemid=13476"/>
    <title>Colin William</title>
    <published>2006-05-09T15:01:58Z</published>
    <updated>2006-05-09T15:05:41Z</updated>
    <content type="html">&lt;table&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
My wife and I had our third son yesterday at 4:30pm. Colin William came in at 7lb, 13oz and 19.5 inches long. Mom and baby are both doing great, and I'm thrilled to have another member of the family.
&lt;/td&gt;
&lt;td&gt;
&lt;img src="http://static.flickr.com/40/143449398_a96f6b22a7.jpg?v=0"&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</content>
  </entry>
</feed>
