<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4695461192314112143</id><updated>2012-02-16T19:40:10.650-07:00</updated><category term='knoxville xmas08 mobile pic'/><category term='tech audio'/><category term='postgresql'/><category term='Egypt Internet Obama Mubarak'/><category term='animation'/><category term='spectrum'/><category term='graphing'/><category term='ebay shame phone nyt'/><category term='plotting'/><category term='link'/><category term='ssh syntax'/><category term='R'/><category term='frequency'/><title type='text'>Life in Code</title><subtitle type='html'>Work-products and stray thoughts from the Land of Entrapment</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>92</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4404996188870933832</id><published>2011-10-29T00:13:00.000-07:00</published><updated>2011-10-29T00:13:23.797-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>SQL Koan</title><content type='html'>It's not &lt;b&gt;that&lt;/b&gt; profound, but I sure do like it: a simple, elegant example of a self-join that gives a truth table for the &lt;a href="http://wiki.postgresql.org/wiki/Is_distinct_from"&gt;NOT DISTINCT FROM&lt;/a&gt; operator. &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  WITH x(v) AS (VALUES (1),(2),(NULL))
  SELECT l.v, r.v, l.v = r.v AS equality,
    l.v IS NOT DISTINCT FROM r.v AS isnotdistinctfrom
  FROM x l, x r;
&lt;/pre&gt;  &lt;br /&gt;
Thanks to &lt;a href="http://postgresql.1045698.n5.nabble.com/SELF-LEFT-OUTER-JOIN-SELF-JOIN-including-NULL-values-tp2843950p2843982.html"&gt;Sam Mason&lt;/a&gt; via the PostgreSQL - general mailing list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4404996188870933832?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4404996188870933832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/10/sql-koan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4404996188870933832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4404996188870933832'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/10/sql-koan.html' title='SQL Koan'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-24008354536114511</id><published>2011-10-28T21:42:00.000-07:00</published><updated>2011-10-28T21:42:43.941-07:00</updated><title type='text'>Why can't ads be more fun?</title><content type='html'>The worst part about advertisements these days, in my not-so-humble opinion, is the degree to which they belittle the user.  Well-endowed lady wants to be my Facebook friend?  "Click here to confirm request." Riiight.  Lonely singles near me?  Yeah, sure.  &lt;a href="http://www.wired.com/magazine/2011/09/mf_scareware/all/1"&gt;OH GOOD LORD, A THREAT HAS BEEN IDENTIFIED!&lt;/a&gt;  Oh, wait, y'all really &lt;b&gt;are&lt;/b&gt; evil!  On the infrequent occasions that I do watch TV, the ads are less flagrantly insidious, but they're nonetheless relentlessly patronizing.&lt;br /&gt;
&lt;br /&gt;
The second-worst part of ads, IMNSHO, is the brute-force repetition.  The same inane 30 seconds once?  I can do that, but five times in an hour?  You've got to be kidding me.  Nope, no kidding here.  Just 30 seconds of the &lt;b&gt;same&lt;/b&gt; inanity, again and again.&lt;br /&gt;
&lt;br /&gt;
Consequently, I find unique and intelligent ads rather inspiring. I know, it shouldn't be this way.  One might thing that unique and inspiring would be more common amongst something so prevalent.  Anyway...&lt;br /&gt;
&lt;br /&gt;
Some of the GEICO ads that have played on &lt;a href="http://hulu.com"&gt;Hulu&lt;/a&gt; lately have managed to avoid the "worst part".  They're short and playful, vaguely reminiscent of &lt;a href="http://en.wikipedia.org/wiki/Adult_swim"&gt;[adult swim]&lt;/a&gt; commercials. "Is the sword mightier than the pen" is my current favorite; I still sometimes chuckle when I see it.  They still fail occasionally in the repetition department.  If you're a large international corporation, how hard is it to make more than a handful of moderately-entertaining 30-second spots?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which brings me back to banner ads.  I just saw this at the top of &lt;a href="http://arstechnica.com"&gt;ars technica&lt;/a&gt; today for the first time, and it really caught my eye.  I don't read or write &lt;a href="http://en.wikipedia.org/wiki/Javascript"&gt;Javascript&lt;/a&gt;, but I found myself puzzling through it and then following &lt;a href="http://heinz.cmu.edu/c/heinz-mism-code.html?utm_campaign=mism-june2011&amp;utm_medium=banner&amp;utm_source=wired-ars&amp;utm_content=code"&gt;the link&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-130qNWKZNiM/TquCFTkJovI/AAAAAAAABC0/UcGtKFRlJSc/s1600/5333546_Ad-2-Banner.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="49" width="400" src="http://4.bp.blogspot.com/-130qNWKZNiM/TquCFTkJovI/AAAAAAAABC0/UcGtKFRlJSc/s400/5333546_Ad-2-Banner.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
At the top of the page, I find this banner, which visually reminds me where I came from, that I've come to the right place, and gives me another little puzzle.  Neat.  Thank you, Heinz College of Carnegie Mellon.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-3a6i63FsgVQ/TquCL4Rq2xI/AAAAAAAABDA/_7YIUIVuja0/s1600/banner_code.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="59" width="400" src="http://3.bp.blogspot.com/-3a6i63FsgVQ/TquCL4Rq2xI/AAAAAAAABDA/_7YIUIVuja0/s400/banner_code.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
None of this is revolutionary, but I &lt;b&gt;do&lt;/b&gt; hope it is evolutionary.  Ads don't &lt;b&gt;have&lt;/b&gt; to be boring, and I'm guessing that interesting and intelligent ads are more effective even as they're less painful and insulting.  My guess is that a generational change-over in marketing departments and their managers is underway, and will be slow.  Still, I look forwards to a new generation of more modern advertising approaches that gives me something to &lt;b&gt;think&lt;/b&gt; while my eyeballs are held hostage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-24008354536114511?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/24008354536114511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/10/why-cant-ads-be-more-fun.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/24008354536114511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/24008354536114511'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/10/why-cant-ads-be-more-fun.html' title='Why can&apos;t ads be more fun?'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-130qNWKZNiM/TquCFTkJovI/AAAAAAAABC0/UcGtKFRlJSc/s72-c/5333546_Ad-2-Banner.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7718340907347319497</id><published>2011-10-06T20:28:00.000-07:00</published><updated>2011-10-06T20:28:03.207-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><category scheme='http://www.blogger.com/atom/ns#' term='spectrum'/><category scheme='http://www.blogger.com/atom/ns#' term='frequency'/><category scheme='http://www.blogger.com/atom/ns#' term='R'/><category scheme='http://www.blogger.com/atom/ns#' term='graphing'/><title type='text'>FFT / Power Spectrum Box-and-Whisker Plot with Gggplot2</title><content type='html'>I have a bunch of time series whose power spectra (FFT via &lt;b&gt;R&lt;/b&gt;'s &lt;b&gt;spectrum()&lt;/b&gt; function) I've been trying to visualize in an intuitive, aesthetically appealing way.  At first, I just used lattice's &lt;b&gt;bwplot&lt;/b&gt;, but the spacing of the X-axis here really matters.  The spectra's frequencies aren't regularly-spaced categories, which is the default of &lt;b&gt;bwplot&lt;/b&gt;. If all the series are of the same length, then the coefficients of the are all estimated at the same frequencies, and one can use &lt;b&gt;plyr&lt;/b&gt;'s split-apply-combine magic to compute the distribution of coefficients at each frequency.&lt;br /&gt;
&lt;br /&gt;
I spent some time trying to faithfully reproduce the plotting layout of the figures produced by, e.g. &lt;b&gt;spectrum(rnorm(1e3))&lt;/b&gt; with respect to the axes. This was way more annoying than i expected...&lt;br /&gt;
&lt;br /&gt;
To include a generic example, I started looking around for easily generated, interesting time series.  The &lt;a href="http://en.wikipedia.org/wiki/Logistic_map"&gt;logistic map&lt;/a&gt; is &lt;a href="http://helmingstay.blogspot.com/2011/10/bat-country.html"&gt;so damned easy to compute&lt;/a&gt; and generally pretty interesting, capable of producing a range of frequencies.  Still, I was rather surprised by the final output.  Playing with these parameters produces a range of serious weirdness -- apparent ghosting, interesting asymmetries, etc..  &lt;br /&gt;
&lt;br /&gt;
Note that I've just used the logistic map for an interesting, self-contained example.  You can use the exact same code to generate your own &lt;b&gt;spectrum()&lt;/b&gt; box-and-whisker plot by substituting your matrix of time series for &lt;b&gt;mytimeseries&lt;/b&gt; below.  Do note here that series are by row, which is not exactly standard.  For series by column, just change the margin from 1 to 2 in the call to &lt;b&gt;adply&lt;/b&gt; below.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;## box-and-whisker plot of FFT power spectrum by frequency/period
## vary these parameters -- r as per logistic map
## see http://en.wikipedia.org/wiki/Logistic_map for details
logmap = function(n, r, x0=0.5) { 
    ret = rep(x0,n)
    for (ii in 2:n) {
        ret[ii] = r*ret[ii-1]*(1-ret[ii-1])
    }
    return(ret)
}

## modify these for interesting behavior differences
rfrom = 3.4
rto = 3.7
rsteps=200
seqlen=1e4

require(plyr)
require(ggplot2)

mytimeseries = aaply(seq(from=rfrom, to=rto, length.out=rsteps), 1,
function(x) {
       logmap(seqlen, x)
})

## you can plug in any array here for mytimeseries
## each row is a timeseries
## for series by column, change the margin from 1 to 2, below
logspec = adply( mytimeseries, 1, function(x) {
       ## change spec.pgram parameters as per goals
       ret = spectrum(x, taper=0, demean=T, pad=0, fast=T, plot=F)
       return( data.frame(freq=ret$freq, spec=ret$spec))
})

## boxplot stats at each unique frequency
logspec.bw = ddply(logspec, 'freq', function(x) {
           ret = boxplot.stats(log10(x$spec));
           ## sometimes $out is empty, bind NA to keep dimensions correct
           return(data.frame(t(10^ret$stats), out=c(NA,10^ret$out)))
})

## plot -- outliers are dots
## be careful with spacing of hard returns -- ggplot has odd rules
## as close to default "spectrum" plot as possible
ggplot(logspec.bw, aes(x=1/(freq)))  +  geom_ribbon(aes(ymin=X1,
ymax=X5), alpha=0.35, fill='green')  +
       geom_ribbon(aes(ymin=X2, ymax=X4), alpha=0.5, fill='blue') +
geom_line(aes(y=X3))  +
       geom_point(aes(y=out), color='darkred') +
       scale_x_continuous( trans=c('inverse'), name='Period')  +
       scale_y_continuous(name='Power', trans='log10')
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Following my nose further on the logistic map example, I also used the &lt;b&gt;animate&lt;/b&gt; package to make a movie that walks through the power spectrum of the map for a range of r values.  Maybe one day I'll set this to music and post it to Youtube!  Though I think some strategic speeding up and slowing down in important parameter regions is warranted for a truly epic tour of the logistic map's power spectrum.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;require(animation)
saveVideo({
       ani.options(interval = 1/5, ani.type='png', ani.width=1600, ani.height=1200)
        for (ii in c(seq(from=3.2, to=3.5, length.out=200), seq(from=3.5, to=4, length.out=1200))) {
            spectrum(logmap(1e4, ii), taper=0, demean=T, pad=0, fast=T, sub=round(ii, 3))
        }
},  video.name = "logmap2.mp4", other.opts = "-b 600k")
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7718340907347319497?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7718340907347319497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/10/fft-power-spectrum-box-and-whisker-plot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7718340907347319497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7718340907347319497'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/10/fft-power-spectrum-box-and-whisker-plot.html' title='FFT / Power Spectrum Box-and-Whisker Plot with Gggplot2'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4521763603264605491</id><published>2011-10-06T16:49:00.001-07:00</published><updated>2011-10-06T16:49:58.702-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spectrum'/><category scheme='http://www.blogger.com/atom/ns#' term='frequency'/><category scheme='http://www.blogger.com/atom/ns#' term='R'/><category scheme='http://www.blogger.com/atom/ns#' term='plotting'/><title type='text'>Bat Country</title><content type='html'>I've spent a lot of time thinking about and using R's &lt;b&gt;spectrum()&lt;/b&gt; function and the &lt;a href="http://en.wikipedia.org/wiki/Fast_Fourier_transform"&gt;Fast Fourier Transform&lt;/a&gt; (FFT) in the last 5+ years.  Lately, they've begun to remind me a little of a &lt;a href="http://en.wikipedia.org/wiki/Theremin#Operating_principles"&gt;Theremin&lt;/a&gt;: simple to use, difficult to master.&lt;br /&gt;
&lt;br /&gt;
While prepping a figure for the &lt;a href="http://addictedtor.free.fr/graphiques/"&gt;R Graph Gallery&lt;/a&gt; (which is awesome, by the way), I ran across this curious example -- its striking visual appearance was definitely &lt;b&gt;not&lt;/b&gt; what I was expecting. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tvmt2B3r29s/To4zzA8NmbI/AAAAAAAABCk/GZIIk1aGtCo/s1600/batcountry.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="400" src="http://2.bp.blogspot.com/-tvmt2B3r29s/To4zzA8NmbI/AAAAAAAABCk/GZIIk1aGtCo/s400/batcountry.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I decided to use the &lt;a href="http://en.wikipedia.org/wiki/Logistic_map#Behavior_dependent_on_r"&gt;logistic map&lt;/a&gt; to generate an ensemble of time series with a range of frequencies.  The logistic map goes through characteristic period doubling, and then exhibits broad-spectrum "noise" at the onset of chaos.  And it's &lt;b&gt;really&lt;/b&gt; easy to compute.  So, I can tune my time series to have a range of frequency distributions. &lt;br /&gt;
&lt;br /&gt;
In this example, I'm in the periodic regime (r=3.5, period 4) . So why am I getting this Batman motif?&lt;br /&gt;
&lt;br /&gt;
Actually, it's weirdly simple. This is an artifact of the (default) tapering that R's &lt;b&gt;spectrum()&lt;/b&gt; function applies to the series before the FFT is computed.  In theory, the Fourier Transform assumes an infinite-length sequence, while in practice the FFT assumes the series is circular -- in essence, gluing the beginning and end of the series together to make a loop. If the series is not perfectly periodic, though, this gluing introduces a sharp discontinuity. Tapering is typically applied to reduce or control this discontinuity, so that both ends gently decline to zero.  When the series is genuinely periodic, though, this does some &lt;b&gt;weird&lt;/b&gt; effects. In essence, the taper &lt;a href="http://en.wikipedia.org/wiki/Transfer_function"&gt;transfers power&lt;/a&gt; from the fundamental frequencies in a curious way.  Note that the fundamental period is 4, as seen by the peak at frequency 1/4, with a strong harmonic at period 2, frequency 1/2.&lt;br /&gt;
&lt;br /&gt;
Zero-padding has a similar effect.  If your series is zero (or relatively small) at both ends, then you could glue it together without introducing discontinuities, but peaks near the beginning and the end will still be seen as near by, resulting in spurious peaks.  In any case, &lt;b&gt;R&lt;/b&gt; pads your series by default (fast=T) unless the length of the series is highly composite (i.e. it can be factored into many small divisors).  Below, it turns out that a series of length &lt;b&gt;1e5&lt;/b&gt; is composite enough that &lt;b&gt;R&lt;/b&gt; doesn't pad it.  &lt;b&gt;1e5&lt;/b&gt;?  Totally different results.&lt;br /&gt;
&lt;br /&gt;
If I understand this correctly, both padding and tapering are attempts to reduce or control &lt;a href="http://en.wikipedia.org/wiki/Spectral_leakage"&gt;spectral leakage&lt;/a&gt;.  We've constructed an example where no spectral leakage is expected from the original time series, which closely fits the assumptions of the FFT without modification.&lt;br /&gt;
&lt;br /&gt;
The moral?  Know thy functions (and their default parameter values, and their effects)!&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;## using R -- 
## logistic map function:
logmap = function(n, r, x0=0.5) { 
    ret = rep(x0,n)
    for (ii in 2:n) { 
        ret[ii] = r*ret[ii-1]*(1-ret[ii-1])
    }
    return(ret)
}

## compare:
spectrum(logmap(1e5, 3.5), main='R tapers to 0.1 by default')
spectrum(logmap(1e5, 3.5), taper=0, main='No taper')
spectrum(logmap(1e5+1, 3.5), taper=0, main='Non-composite length, fast=T pads by default')
spectrum(logmap(1e5, 3.5), taper=0.5, sub='Lots of padding approximately recovers "correct" results')
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4521763603264605491?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4521763603264605491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/10/bat-country.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4521763603264605491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4521763603264605491'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/10/bat-country.html' title='Bat Country'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-tvmt2B3r29s/To4zzA8NmbI/AAAAAAAABCk/GZIIk1aGtCo/s72-c/batcountry.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-2860532005387876173</id><published>2011-06-18T20:49:00.013-07:00</published><updated>2011-07-10T14:02:47.140-07:00</updated><title type='text'>Efficient loops in R -- the complexity versus speed trade-off</title><content type='html'>I've &lt;a href="http://helmingstay.blogspot.com/2011/05/problems-with-plyr-memorycomplexity.html"&gt;written before&lt;/a&gt; about the up- and downsides of the &lt;a href="http://cran.r-project.org/web/packages/plyr/index.html"&gt;plyr&lt;/a&gt; package -- I love it's simplicity, but it can't be mindlessly applied, no pun intended.  This week, I started building a agent-based model for a large population, and I figured I'd use something like a binomial per-timestep birth-death process for between-agent connections.  &lt;br /&gt;
&lt;br /&gt;
My ballpark estimate was 1e6 agents using a weekly timestep for about 50 years.  This is a stochastic model, so I'd like to replicate it at least 100 times.  So, I'll need at least 50*50*100 = 250,000 steps.   I figured I'd be happy if I could get my step runtimes down to ~1 second -- dividing the 100 runs over 4 cores, this would give a total runtime of ~17.5 hours.  Not short, but not a problem.&lt;br /&gt;
&lt;br /&gt;
At first, I was disheartened to see the runtime of my prototype step function stretching into the minutes.  What's going on?  Well, I'd used &lt;b&gt;plyr&lt;/b&gt; in a &lt;b&gt;very&lt;/b&gt; inappropriate way -- for a very large loop.  I began to investigate, and discovered that writing an aesthetically unappealing &lt;b&gt;while&lt;/b&gt; gave me a 30+x speed-up.  &lt;br /&gt;
&lt;br /&gt;
All of which got me thinking -- how expensive are loops and function calls in R?  Next week I'm leading a tutorial in R and C++ using the wonderful &lt;a href="http://cran.r-project.org/web/packages/Rcpp/index.html"&gt;Rcpp&lt;/a&gt; and &lt;a href="http://cran.r-project.org/web/packages/inline/index.html"&gt;inline&lt;/a&gt; packages here at &lt;a href="http://tuvalu.santafe.edu/events/workshops/index.php/Complex_Systems_Summer_School_2011"&gt;Santa Fe Institute's 2011 Complex Systems Summer School&lt;/a&gt;.  Might this make a nice example?&lt;br /&gt;
&lt;br /&gt;
It does, and in spades.  Below are the test functions, and you can see that the code complexity increases somewhat from one to the other, but outcomes are identical, again with 30+x speedup for each subsequent case.  Here, I'm using the native &lt;a href="http://cran.r-project.org/doc/manuals/R-exts.html#The-R-API"&gt;R API&lt;/a&gt;.  I also tested using Rcpp to import &lt;b&gt;rbinom()&lt;/b&gt;, but that ended up taking twice as long as the naive &lt;b&gt;while&lt;/b&gt; loop.&lt;br /&gt;
&lt;br /&gt;
So, the moral of the story seems to be that if you can write a long loop in pure C++, it's a really easy win.  &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt; -- The &lt;b&gt;as&lt; double &gt;(y);&lt;/b&gt; in &lt;b&gt;src&lt;/b&gt; below doesn't seem to copy-and-paste correctly for some reason. If &lt;b&gt;testfun2&lt;/b&gt; doesn't compile, check to make sure this bit pasted correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;The pure R function definitions&lt;/h3&gt;&lt;pre&gt;## use aaply -- the simplest code
require(plyr)
testfun0 &lt;- function(x, y)  aaply(x, 1, function(x) rbinom(1, x, y)

## rewrite the above as an explicit loop
testfun1 = function(nrep, x, y) {
    ## loop index
    ii&lt;-0;
    ## result vector
    ret&lt;-rep(0, nrep);
    while(ii &lt; nrep) {
        ii&lt;-ii+1;
        ## how many successes for each element of bb?
        ret[ii] &lt;- rbinom(1, x[ii], y)
    }
    return(ret)
}
&lt;/pre&gt;
&lt;h3&gt;Rcpp function definitions (with lots of comments)&lt;/h3&gt;&lt;pre&gt;## define source code as string, pass to inline
src &lt;-  ' 
    // Cast input parameters to correct types
    // clone prevents direct modification of the input object
    IntegerVector tmp(clone(x));
    double rate = as&lt; double &gt;(y); 
    // IntegerVector inherits from STL vector, so we get standard STL methods
    int tmpsize = tmp.size(); 
    // initialize RNG from R set.seed() call
    RNGScope scope; 
    // loop
    for (int ii =0; ii &lt; tmpsize; ii++) {
        // Rf_rbinom is in the R api
        // For more details, See Rcpp-quickref.pdf, "Random Functions"
        // also, Rcpp provides "safe" accessors via, e.g., tmp(ii)
        tmp(ii) = Rf_rbinom(tmp(ii), rate);
    };
    // tmp points to a native R object, so we can return it as-is
    // if we wanted to return, e.g., the double rate, use:
    // return wrap(rate)
    return tmp;
'

require(inline)
## compile the function, inspect the process with verbose=T
testfun2 = cxxfunction(signature(x='integer', y='numeric'), src, plugin='Rcpp', verbose=T)

## timing function
ps &lt;- function(x) print(system.time(x))
&lt;/pre&gt;
&lt;h3&gt;The tests&lt;/h3&gt;&lt;pre&gt;## Input vector
bb &lt;- rbinom(1e5, 20, 0.5)
## test each case for 2 different loop lengths 
for( nrep in c(1e4, 1e5)){
    ## initialize RNG each time with the same seed
    ## plyr
    set.seed(20); ps(cc0&lt;- testfun0(nrep[1:nrep], bb, 0.1))
    ## explicit while loop
    set.seed(20); ps(cc1&lt;- testfun1(nrep, bb, 0.1))
    ## Rcpp
    set.seed(20); ps(cc2&lt;- testfun2(bb[1:nrep], 0.1))
    print(all.equal(cc1, cc2))
}


## output
   user  system elapsed 
  3.392   0.020   3.417 
   user  system elapsed 
  0.116   0.000   0.119 
   user  system elapsed 
  0.000   0.000   0.002 
[1] TRUE
   user  system elapsed 
 37.534   0.064  37.601 
   user  system elapsed 
  1.228   0.000   1.230 
   user  system elapsed 
  0.020   0.000   0.021 
[1] TRUE
&lt;/pre&gt;
&lt;h3&gt;Postlude&lt;/h3&gt;After posting this to the very friendly &lt;a href="http://lists.r-forge.r-project.org/pipermail/rcpp-devel/"&gt;Rcpp-devel&lt;/a&gt; mailing list, I got an in-depth reply from Douglas Bates pointing out that, in this case, the performance of vanilla &lt;b&gt;apply()&lt;/b&gt; beats the &lt;b&gt;while&lt;/b&gt; loop by a narrow margin.  He also gives an interesting example of how to use an STL template and an iterator to achieve the same result.  I admit that templates are still near-magic to me, and for now I prefer the clarity of the above.  Still, if you're curious, this should whet your appetite for some of the wonders of Rcpp.

&lt;pre&gt;## Using Rcpp, inline and STL algorithms and containers
 
 ## use the std::binary_function templated struct
inc &lt;-  '
  struct Rb : std::binary_function&lt; double, double, double &gt; {
     double operator() (double size, double prob) const { return ::Rf_rbinom(size, prob); }
  };
'

## define source code as a character vector, pass to inline
 src &lt;-  ' 
     NumericVector sz(x);
     RNGScope scope;
 
     return NumericVector::import_transform(sz.begin(), sz.end(), std::bind2nd(Rb(), as&lt; double &gt;(y)));
'
 
## compile the function, inspect the process with verbose=TRUE
f5 &lt;- cxxfunction(signature(x='numeric', y='numeric'), src, 'Rcpp', inc, verbose=TRUE)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-2860532005387876173?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/2860532005387876173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/06/efficient-loops-in-r-complexity-versus.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2860532005387876173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2860532005387876173'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/06/efficient-loops-in-r-complexity-versus.html' title='Efficient loops in R -- the complexity versus speed trade-off'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4012492419505489991</id><published>2011-06-11T19:29:00.000-07:00</published><updated>2011-06-11T19:29:01.514-07:00</updated><title type='text'>The importance of being unoriginal (and befriending google)</title><content type='html'>&lt;h3&gt;In search of bin counts&lt;/h3&gt;I look at histograms and density functions of my data in R on a regular basis.  I have some idea of the algorithms behind these, but I've never had any reason to go under the hood until now.  Lately, I've been looking using the bin counts for things like Shannon entropy ( in the very nice &lt;a href="http://cran.r-project.org/web/packages/entropy"&gt;entropy&lt;/a&gt; package.  I figured that binning and counting data would either be supported via a native, dedicated R package, or quite simple to code.  Not finding the former ( &lt;texttt&gt;base graphics hist()&lt;/texttt&gt; uses &lt;texttt&gt;.Call("bincounts")&lt;/texttt&gt;, which appears undocumented and has a boatload of arguments ), I naively failed to search for a package and coded up the following.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;myhist = function(x, dig=3)  {
    x=trunc(x, digits=dig);
    ## x=round(x, digits=dig);
    aa = bb = seq(0,1,1/10^dig);
    for (ii in 1:length(aa)) {
        aa[ii] = sum(x==aa[ii])
    };
    return(cbind(bin=bb, dens=aa/length(x)))
}


## random variates
test = sort(runif(1e4))
get1 = myhist(test)
&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;Trouble in paradise&lt;/h3&gt;Truncate the data to a specified precision, and count how many are in each bin.  Well, first I tried &lt;texttt&gt;round(x)&lt;/texttt&gt; instead of &lt;texttt&gt;trunc(x)&lt;/texttt&gt;, which sorta makes sense but gives results that I still don't understand.  On the other hand, &lt;texttt&gt;trunc(x)&lt;/texttt&gt; doesn't take a digits argument?  WTF?  Of course, I could use  &lt;texttt&gt;sprintf(x)&lt;/texttt&gt; to make a character of known precision and convert back to numeric, but string-handling is waaaaaay too much computational overhead.  Like towing a kid's red wagon with a landrover...&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Dear Google...&lt;/h3&gt;An hour of irritation and confusion later, I &lt;a href="http://www.google.com/search?q=cran+bin+counts"&gt;ask google&lt;/a&gt; and, small wonder, the second search result links to the &lt;a href="http://cran.r-project.org/web/packages/ash"&gt;ash&lt;/a&gt; package that contains said tool.  And it runs somewhere between 100 and 1,000 times faster.  It doesn't return the bin boundaries by default, but it's good enough for a quick-and-dirty empirical probability mass distribution.&lt;br /&gt;
&lt;br /&gt;
To be fair, there's something to be said for cooking up a simple solution to a simple problem, and then realizing that, for one reason or another, the problem isn't quite as simple as one first thought.  On the other hand, sometimes we just want answers.  When that's the case, asking google is a pretty good bet. &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;## their method
require(ash)
get2 = bin1(test, c(0,1), 1e3+1)$nc
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4012492419505489991?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4012492419505489991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/06/importance-of-being-unoriginal-and.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4012492419505489991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4012492419505489991'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/06/importance-of-being-unoriginal-and.html' title='The importance of being unoriginal (and befriending google)'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-2458117396878908595</id><published>2011-05-10T03:42:00.000-07:00</published><updated>2011-05-10T03:42:27.996-07:00</updated><title type='text'>Problems with plyr -- the memory/complexity trade-off</title><content type='html'>&lt;h3&gt;Two types of R users&lt;/h3&gt;&lt;br /&gt;
My overwhelming impression from UseR 2010 is that, generally speaking, there are 2 types of regular R users -- those who have heard and are made uncomfortable by the idea of the &lt;b&gt;*apply()&lt;/b&gt; functions, and those who really &lt;em&gt;get&lt;/em&gt; it.  In UNM R programming group that I've been leading for about a year now, I've really tried to get people over the hump and into the second group.  Once there, folks seem to really appreciate the amazing power of vectorization in R, and begin to enjoy writing code.  The conceptual clarity of:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  mymatrix = matrix(1:10, nrow=10)
  apply(mymatrix, 1, sum)
  apply(mymatrix, 2, sum)
 &lt;/pre&gt;&lt;br /&gt;
over the clunky:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  rowSums(mymatrix)
  colSums(mymatrix)
&lt;/pre&gt;&lt;br /&gt;
may not be immediately apparent. Eventually, though, folks go searching for things like &lt;b&gt;rowMedian()&lt;/b&gt; and become frustrated that R doesn't "have all the functions" that they need.  Well, R does, once you grok &lt;b&gt;apply()&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Hadley's Magic Brainchild &lt;/h3&gt;In the last year, I've had some serious &lt;b&gt;ahah!&lt;/b&gt; moments with &lt;a href="http://had.co.nz/plyr/"&gt;plyr&lt;/a&gt;. Lately, I've added the &lt;a href="http://had.co.nz/reshape/"&gt;reshape&lt;/a&gt; package to the mix to achieve some serious R 1-liner Zen.  Multidimensional arrays to long-form dataframes?&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  myarray = array(0, dim=c(3,4,5,6,10), dimnames=list(a=1:3, b=1:4, c=1:5, d=letters[1:6], e=LETTERS[1:10]))
  melt( adply(myarray, 1:4, I))
&lt;/pre&gt;&lt;br /&gt;
Sure.  No problem.  It's really that easy?!&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
An unexpeceted bonus? This way of thinking lends itself nicely to thinking of explicit parallelism.  If you can describe the problem as a single recipe that's done for each "piece" of a whole, then you're one step away from using all the cores on your machine to solve a problem with &lt;a href="http://cran.r-project.org/web/packages/foreach/index.html"&gt;foreach&lt;/a&gt;.  Need to apply some sort of long-running analysis to each element of a list, and want to return the results as a list?  Why write a &lt;b&gt;for&lt;/b&gt; loop when you can do:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;## prep
## warning -- this  may not be fast
## use smaller matrices for smaller machines! 
  nn = 2^20
  rr = 2^10
  mylist = list(a=matrix(rnorm(nn), nrow=rr), b=matrix(rnorm(nn), nrow=rr), c=matrix(rnorm(nn), nrow=rr))

## analysis
  myeigs = foreach( ii = iter(mylist), .combine=c) %do% { print('ping'); return(list(eigen(ii)))}
&lt;/pre&gt;&lt;br /&gt;
and then, once it works, change &lt;b&gt;%do%&lt;/b&gt; to &lt;b&gt;%dopar%&lt;/b&gt;, add the following, and you're off to the races!&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  require(multicore)
  require(doMC)
  ## use the appropriate # of cores, of course
  registerDoMC(cores=4)
  myeigs1 = foreach( ii = iter(mylist), .combine=c) %dopar% { print('ping'); return(list(eigen(ii)))}
&lt;/pre&gt;&lt;br /&gt;
Compared to something like &lt;b&gt;llply&lt;/b&gt;, your &lt;b&gt;dimnames&lt;/b&gt; don't automatically propagate to the results, but I think this is still pretty amazing.  Complete control &lt;em&gt;and&lt;/em&gt; simple parallelism.&lt;br /&gt;
&lt;br /&gt;
Debugging with &lt;b&gt;%dopar%&lt;/b&gt; is tricky, of course, because there are separate stacks for each item (i think), and messages (such as calls to &lt;b&gt;print()&lt;/b&gt;) don't return to the console as you might expect them to.  So, when in doubt, back off to &lt;b&gt;%do%&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;What could possibly go wrong?&lt;/h3&gt;The only problem with all of this is, when tasks are embarassingly parallel, that data also becomes embarassingly parallel to point where it no longer fits into memory.  Thus, I returned today to a long-running bootstrap computation to find R consuming ~7GB RAM, 5+ GB swap, and this message:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Error: cannot allocate vector of size 818.6 Mb
Enter a frame number, or 0 to exit   
...
4: mk.bootrep(zz, 75)
5: mk.boot.R#165: aaply(tmpreps, .margins = 1, function(x) {
6: laply(.data = pieces, .fun = .fun, ..., .progress = .progress, .drop = .dro
7: list_to_array(res, attr(.data, "split_labels"), .drop)
8: unname(unlist(res))
&lt;/pre&gt;&lt;br /&gt;
What's happening is that &lt;b&gt;plyr&lt;/b&gt; is trying to do everything at once. As anyone who's used &lt;b&gt;grep&lt;/b&gt; can tell you, doing one row at a time, or &lt;em&gt;streaming&lt;/em&gt; data is often a much better idea.  I got the intended  results from above by pre-allocating an array and writing each item of my results list into the array in a loop in seconds, and barely broke 3 GB of RAM usage.&lt;br /&gt;
&lt;br /&gt;
Now, nothing here is really news. The dangers of "Growing Objects" is covered in Circle 2 of Burns Statistics' wonderful &lt;a href="http://www.burns-stat.com/pages/Tutor/R_inferno.pdf"&gt;R Inferno&lt;/a&gt;.  Still, &lt;b&gt;plyr&lt;/b&gt; strikes me as an interesting case where reducing conceptual complexity can lead to a rather steep increase in computational complexity. And the most interesting thing of all is that it happens quite suddenly above a certain threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Parting thoughts&lt;/h3&gt;I wonder if there's any major barrier to a &lt;b&gt;stream=TRUE&lt;/b&gt; argument to the &lt;b&gt;plyr&lt;/b&gt; functions -- I haven't thought about it too much, but imagine that you'd also need a finalizer function to prepare the return object to be written/streamed into.  At what point is it easier to just do by hand with a &lt;b&gt;for&lt;/b&gt; loop?    &lt;br /&gt;
&lt;br /&gt;
Honestly, I don't know the answer.  I don't do too many things that break &lt;b&gt;plyr&lt;/b&gt;, but I've learned how important it is to understand when I'm likely exceed its limits.  &lt;b&gt;.variables&lt;/b&gt; in &lt;b&gt;ddply&lt;/b&gt; is another one that I've learned to be careful with.  If, after subdividing your input data.frame, you end up with 1e5 or 1e6 pieces, things start to break down pretty fast.&lt;br /&gt;
&lt;br /&gt;
Honestly, I love writing solutions with the &lt;b&gt;*apply()&lt;/b&gt; family and the &lt;b&gt;ddply&lt;/b&gt; functions. I think it makes code cleaner and more logical.  Watching the light of this dawn in other R users' eyes is truly exciting.  Yet it pays to remember that, like all things, it has its limits.  In this case, one seems to reach the limits suddenly and harshly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-2458117396878908595?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/2458117396878908595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/05/problems-with-plyr-memorycomplexity.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2458117396878908595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2458117396878908595'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/05/problems-with-plyr-memorycomplexity.html' title='Problems with plyr -- the memory/complexity trade-off'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-2423367502919495137</id><published>2011-03-29T04:16:00.000-07:00</published><updated>2011-03-29T04:16:08.581-07:00</updated><title type='text'>Why PKI matters.</title><content type='html'>&lt;a href="https://www.eff.org/deeplinks/2011/03/iranian-hackers-obtain-fraudulent-https"&gt;This article&lt;/a&gt; landed in my inbox this week in a newsletter from the EFF.  I usually don't read them, but the term "meltdown" caught my eye, what with all the nuke new this month.  They also managed to work in "too big to fail", and neither reference was hyperbolic.  The internet depends on a level of trust, and (surprise) there are people working to co-opt that trust.&lt;br /&gt;
&lt;br /&gt;
A number of my friends think I'm a little weird for using &lt;emph&gt;real&lt;/emph&gt; passwords, for not sharing them, etc.  But I read Cryptonomicon and friends; I have at least one box exposed to the real, honest-to-god, jungle-out-there internet;  I have a healthy fear of all the things that could go wrong.  As part of my &lt;a href="http://math.unm.edu/~hwearing/researchgroup/index.html"&gt;lab group's&lt;/a&gt; data entry project, I recently registered my first SSL certificate from &lt;a href="http://www.startssl.com/"&gt;http://www.startssl.com/&lt;/a&gt; (free!), and learned quite a bit about PKI in the process.&lt;br /&gt;
&lt;br /&gt;
Still, reading an article like this really drives home both the complexities and importance of the global PKI system.  Trust is difficult when it's strung across the globe on fiber optics cables, and enforced by our inability to quickly factor very large numbers.  But old-school techniques of impersonation and breaking and entering will always be with us.  I may trust google.com, but how do I know that it's actually them?  PKI.&lt;br /&gt;
&lt;br /&gt;
How cool is that?&lt;br /&gt;
Very.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-2423367502919495137?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/2423367502919495137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/03/why-pki-matters.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2423367502919495137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2423367502919495137'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/03/why-pki-matters.html' title='Why PKI matters.'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-2203959862129751071</id><published>2011-03-20T22:52:00.000-07:00</published><updated>2011-03-20T22:52:50.276-07:00</updated><title type='text'>Looking at the "Curse of Dimensionality" with R, foreach, and  lattice</title><content type='html'>Here are the results of a "Curse of Dimensionality" homework assignment for Terran Lane's &lt;a href="http://www.cs.unm.edu/~terran/classes/cs529-s11"&gt;Introduction to Machine Learning&lt;/a&gt; class.  Pretty pictures, interesting results, and a good exercise in explicit parallelism with R. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-KT6IOV2h7_U/TYbjM8Ro3UI/AAAAAAAAAOU/l72MsimMo5w/s1600/dimcurse2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="305" width="400" src="http://4.bp.blogspot.com/-KT6IOV2h7_U/TYbjM8Ro3UI/AAAAAAAAAOU/l72MsimMo5w/s400/dimcurse2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-UEI2Bu6IQzE/TYbjRWe4DEI/AAAAAAAAAOc/4nGkAE5NbrY/s1600/dimcurse3.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="305" width="400" src="http://2.bp.blogspot.com/-UEI2Bu6IQzE/TYbjRWe4DEI/AAAAAAAAAOc/4nGkAE5NbrY/s400/dimcurse3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
It's neat to see distance scaling linearly with standard deviation, and linearly with the Lth-root for an L-norm metric (e.g. Euclidean = L2 norm).  It took me a while to "get" how the &lt;tt&gt;maximum&lt;/tt&gt; metric worked -- it's simpler than I was trying to make it, though I'm still not sure I can explain it properly.&lt;br /&gt;
&lt;br /&gt;
In general, I'm a big fan of R's &lt;tt&gt;lattice&lt;/tt&gt; package, though I'm never quite happy with the legend/key settings.&lt;br /&gt;
&lt;br /&gt;
The code is below.  One thing that I've learned from this exercise is that I prefer not to have the &lt;tt&gt;foreach&lt;/tt&gt; call in the outermost loop.  For one, error and/or progress reporting from inside a &lt;tt&gt;foreach&lt;/tt&gt; isn't immediately emitted to the console, and it's annoying/confusing to have a long run with no feedback.  Second and less aesthetically, it seems that foreach excels when it has jobs of medium complexity iterated over a medium number of elements.  Too few elements + very complex job means one or more cores will finish early and sit idle.  Too many elements + very simple job means too many jobs will be spawned, and (I'm guessing here) a lot of time will be wasted with job setup and teardown.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;dimcurse = function(dims=1:1e3, .sd=c(1e-2, 0.1, .2, .5, 1), reps=1e3, cores=4,
                    rfun=rnorm, .methods=c('manhattan', 'euclidean', 'maximum'), .verbose=F){
    ## examine distance between 2 points in dims dimensions for different metrics
    ## chosen at random according to rfun (rnorm by default)
    ##
    require(foreach)
    require(doMC)
    registerDoMC
    registerDoMC(cores=cores)
    ## use multicore/foreach on the outside (each sd)
    finret = foreach(ss=iter(.sd), .combine=rbind, .verbose=.verbose) %dopar% {
        ## pre-allocate, don't append/rbind!
        ret = data.frame(.sd=1:(reps*length(dims))*length(methods), .dim=1, .rep=1, .dist=1, method=factor(NA, levels=.methods))
        ii = 1
        for (.dim in dims) {
          for (method in .methods) {
            ## reset .rep counter
            .rep = 1
            while (.rep &lt;= reps) {
                ## 2 points, one per row, randomly chosen
                tmp = matrix(rfun(2*.dim, sd=ss), nrow=2)
                ## calc dist
                mydist = as.numeric(dist(tmp, method=method))
                ## fill return dataframe
                ret[ii, ] = list(ss, .dim, .rep, mydist, method)
                ## update rep counter
                .rep = .rep +1
                ## update ret row counter
                ii = ii +1
            }
          }
        }
        return(ret)
    } ## rbind happens here
    return(finret)
}

&lt;/pre&gt;

For plotting, I've used: 
&lt;pre&gt;xyplot(.dist ~ (.dim)|method, groups=.sd, data =aa, pch='.',
    par.settings=list(background=list(col='darkgrey')), layout=c(3,1),
    scales=list(y=list(relation='free'), alternating=1),
    auto.key=list(space='bottom', columns=5, points=F, lines=T),
    xlab='Dimension', ylab='Distance', main='Distance between 2 N-dimensional points \n drawn from a normal distribution with varying sd (legend) using different metrics (columns)',
)

xyplot(.dist ~ (.dim)|as.character(.sd), groups=method, data =aa, pch='.',
    par.settings=list(background=list(col='darkgrey')), layout=c(5,1),
    scales=list(y=list(relation='free'), alternating=1),
    auto.key=list(space='bottom', columns=3, points=F, lines=T),
    xlab='Dimension', ylab='Distance', main='Distance between 2 N-dimensional points \n drawn from a normal distribution with varying SD (columns) using different metrics (legend)',
)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-2203959862129751071?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/2203959862129751071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/03/looking-at-curse-of-dimensionality-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2203959862129751071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2203959862129751071'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/03/looking-at-curse-of-dimensionality-with.html' title='Looking at the &quot;Curse of Dimensionality&quot; with R, foreach, and  lattice'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-KT6IOV2h7_U/TYbjM8Ro3UI/AAAAAAAAAOU/l72MsimMo5w/s72-c/dimcurse2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-2303763110083314164</id><published>2011-02-24T21:41:00.007-07:00</published><updated>2011-02-24T22:09:12.621-07:00</updated><title type='text'>snow and ssh -- secure inter-machine parallelism with R</title><content type='html'>I just threw a post up on Revolutions, which got &lt;a href="http://blog.revolutionanalytics.com/2011/02/packages-for-by-group-processing-in-r.html"&gt;a lot longer than I planned&lt;/a&gt;. And got me thinking.  And reading (see refs in previous post).  And trying.  Turns out that it was &lt;em&gt;way&lt;/em&gt; easier than I thought!  &lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;The problem:&lt;/h3&gt;From the &lt;a href="http://blog.revolutionanalytics.com/2011/02/packages-for-by-group-processing-in-r.html"&gt;blog post&lt;/a&gt;:&lt;br /&gt;
"&lt;br /&gt;
OpenSSH is now available on all platforms. A sensible solution is to have *one* cluster type -- ssh. Let ssh handle inter-computer connection and proper forwarding of ports, and for each machine to connect to a local port that's been forwarded.&lt;br /&gt;
&lt;br /&gt;
... It seems like most of the heavy lifting is done by foreach, and that engineering a simple makeSSHcluster and doSSH to forward ports, start slaves, and open socket connections should be tractable.&lt;br /&gt;
&lt;br /&gt;
... the SSHcluster method would require minimal invasion on those machines -- just ability to execute ssh and Rscript on the remote machines -- not even login privileges are required!&lt;br /&gt;
"&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Requirements: &lt;/h3&gt;R must be installed on both machines, as well as the &lt;a href="http://cran.r-project.org/package=snow"&gt;snow&lt;/a&gt; package.  On the machine running the primary R session (henceforth referred to as &lt;tt&gt;thishost&lt;/tt&gt;, the &lt;a href="http://cran.r-project.org/web/packages/foreach/index.html"&gt;foreach&lt;/a&gt; and doSNOW packages must be installed, as well as an ssh client.  On &lt;tt&gt;remotehost&lt;/tt&gt;, Rscript must be installed, an ssh server must be running, and the user must have permissions to run Rscript and read the R libraries.  Note that Rscript is far from a secure program to allow untrusted users to run.  For the paranoid, place it in a chroot jail...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Step-by-step: &lt;/h3&gt;The solution here piggy-backs on existing snow functionality.  All commands below are to be run from &lt;tt&gt;thishost&lt;/tt&gt;, either from commandline (shown by &lt;tt&gt;$&lt;/tt&gt;) or the R session in which work is to be done (shown by &lt;tt&gt;\&gt;&lt;/tt&gt;).  You will need to replace &lt;tt&gt;remotehost&lt;/tt&gt; with the hostname or ip address of &lt;tt&gt;remotehost&lt;/tt&gt;, but &lt;tt&gt;localhost&lt;/tt&gt; should be entered verbatim.&lt;br /&gt;
&lt;br /&gt;
Note that the ssh connections are much easier using &lt;a href="http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html"&gt;key-based authentication&lt;/a&gt; (which you were using already, right?), and a key agent so you don't have to keep typing your key password again and again.  Even better, set up an &lt;a href="http://kimmo.suominen.com/docs/ssh/#config"&gt;.ssh/config&lt;/a&gt; file for host-specific aliases and configuration.&lt;br /&gt;
&lt;br /&gt;
Now, onto the code!&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ ssh -f -R 10187:localhost:10187 remotehost sleep 600  ## 10 minutes to set up connection

&gt; require(snow); require(foreach); require(doSNOW);
&gt; cl = makeCluster(rep('localhost',3), type='SOCK', manual=T)  ## wait for 3 slaves

## Use ssh to start the slaves on remotehost and connect to the (local) forwarded port

$ for i in {1..3}; 
$  do ssh -f remotehost "/usr/lib64/R/bin/Rscript ~/R/x86_64-pc-linux-gnu-library/2.12/snow/RSOCKnode.R 
$       MASTER=localhost PORT=10187 OUT=/dev/null SNOWLIB=~/R/x86_64-pc-linux-gnu-library/2.12"; 
$ done

## R should have picked up the slaves and returned.  If not, something is wrong.
## Back up and test ssh connectivity, etc.

&gt; registerDoSNOW(cl)

&gt;  a &lt;- matrix(1:4e6, nrow=4)
&gt;  b &lt;- t(a)
&gt;  bb &lt;-   foreach(b=iter(b, by='col'), .combine=cbind) %dopar%
&gt;    (a %*% b)
&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;Conclusions? &lt;/h3&gt;This is a funny example of %dopar%; it's minimal and computationally useless, which is nice for testing.  Still, it allows you to directly test the communication costs of your setup by varying the size of &lt;tt&gt;a&lt;/tt&gt;.  In explicit parallelism, gain is proportional to &lt;tt&gt;(computational cost)/(communication cost)&lt;/tt&gt;, so the above example is exactly what you &lt;em&gt;don't&lt;/em&gt; want to do.&lt;br /&gt;
&lt;br /&gt;
Next up:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Write an R function that uses calls to &lt;tt&gt;system&lt;/tt&gt; to set the tunnel up and spawn the slave processes, with string substitution for &lt;tt&gt;remotehost&lt;/tt&gt;, etc.   &lt;/li&gt;
&lt;li&gt;Set up a second port and socketConnection to read each slave's stdout to pick up errors. Perhaps call &lt;tt&gt;warning()&lt;/tt&gt; on the output? Trouble-shooting is &lt;em&gt;so&lt;/em&gt; much easier when you can see what's happening!&lt;/li&gt;
&lt;li&gt;Clean up the path encodings for SNOWLIB and RSOCKnode.R.  R &lt;em&gt;knows&lt;/em&gt; where it's packages live, right?&lt;/li&gt;
&lt;li&gt;As written, a little tricky to roll multiple hosts into the cluster (including &lt;tt&gt;thishost&lt;/tt&gt;).  It seems possible to chose port numbers sequentially within a range, and connect each new &lt;tt&gt;remotehost&lt;/tt&gt; through a new port, with slaves on &lt;tt&gt;thishost&lt;/tt&gt; connecting to a separate, non-forwarded port.&lt;br /&gt;
&lt;/ul&gt;Those are low-hanging fruit.  It would be nice to cut out the dependency on &lt;tt&gt;snow&lt;/tt&gt; and &lt;tt&gt;doSNOW&lt;/tt&gt;.  The &lt;tt&gt;doSNOW&lt;/tt&gt; package contains a single 1-line function.  On the other hand, the &lt;tt&gt;snow&lt;/tt&gt; package hasn't been updated since July 2008, and a google search show up &lt;a href="http://www.google.com/search?q=snow+socketconnect+port+10187+cannot+be+opened"&gt;many confused users&lt;/a&gt; and few success stories (with the exception of this &lt;a href="https://stat.ethz.ch/pipermail/r-sig-hpc/2009-April/000147.html"&gt;very helpful thread&lt;/a&gt;, which led me down this path in the first place).  &lt;br /&gt;
&lt;br /&gt;
+1 if you'd like to see a doSSH package.&lt;br /&gt;
+10 if you'd like to help!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-2303763110083314164?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/2303763110083314164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/02/snow-and-ssh-secure-inter-machine.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2303763110083314164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2303763110083314164'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/02/snow-and-ssh-secure-inter-machine.html' title='snow and ssh -- secure inter-machine parallelism with R'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-2564551568358947056</id><published>2011-02-24T17:52:00.004-07:00</published><updated>2011-02-24T19:41:59.529-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh syntax'/><title type='text'>ssh port forwarding</title><content type='html'>Is it just me, or is the openssh port forwarding syntax *really* confusing?&amp;nbsp; Every time I have to work through examples afresh.&amp;nbsp; It's ridiculously powerful -- who can argue with key-based authentication on a user-land vpn, and it's available for all major OSes.&amp;nbsp; Still, I wish I *really* understood the syntax.&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I suppose practice makes perfect.&amp;nbsp; I'm working on a small project now.&amp;nbsp; With any luck, examples to come.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
&lt;a href="http://www.openssh.org/faq.html#2.11"&gt;Openssh FAQ&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://magazine.redhat.com/2007/11/06/ssh-port-forwarding/"&gt;Red Hat Magazine&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-2564551568358947056?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/2564551568358947056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/02/ssh-port-forwarding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2564551568358947056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2564551568358947056'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/02/ssh-port-forwarding.html' title='ssh port forwarding'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6054491416959666920</id><published>2011-02-03T02:55:00.001-07:00</published><updated>2011-02-03T02:55:54.051-07:00</updated><title type='text'>Postgreql Hacks -- firing a trigger "for each transaction"</title><content type='html'>&lt;h3&gt;The problem&lt;/h3&gt;I spent today learning about triggers in postgresql - there are triggers "for each statement" and "for each row".  I went searching for triggers "for each transaction", and found a few other folks with the same question but no compelling answer.&lt;br /&gt;
&lt;br /&gt;
My use case is this - I have 2 tables, a parent (entries) and child (reports), with a one-to-many relationship.  I need to add multiple reports for one entry in a single transaction, and then update the associated entry if the transaction succeeds. Here are the table definitions:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;create schema transtest;
set searchpath to transtest,public;
    -- it's nice to have a sandbox
    -- remember to reset searchpath when done

create table myents ( id serial primary key, sum integer);
    -- the entries table
create table myrecs ( id serial primary key, entid integer references myents (id), cases integer);
    -- the reports table, many reports per entry
create table myids ( id integer primary key references myents (id));
    -- table used to store trigger state
&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;The solution&lt;/h3&gt;It appears that deferred constraint triggers are *almost* "per transaction".  But constraint triggers are *always* for each row.  Yet Postgresql 9.0 allows conditions on triggers - so all I need is to store some state of whether to fire the trigger or not for each row. First, the function that I'll be using in the condition: &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;-- function for when-clause (condition) in trigger
-- add id to the "to-do" list if it's not there already
-- return True only if it's been added to the least
create or replace function f_condition(myid integer) returns boolean as $_$
    DECLARE
        myret boolean := True;
        newid integer;
    BEGIN
        RAISE NOTICE 'Return Value here is %', myret;
        select count(*) into newid from myids where id = myid;
        if newid &gt; 0 then -- id is there, return False 
           myret := False; 
        else    -- add id to queue, return True
            insert into myids (id) values (myid);
        end if;
        return myret;
    END;
$_$ language plpgsql;
&lt;/pre&gt;&lt;br /&gt;
Next, the trigger function, which will clean up after the above function when it's done:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;-- trigger function to rebuild myent.sum for this myrecs.id
create or replace function f_refresh() returns trigger as $_$
    DECLARE
        mysum integer;
        myid integer;
    BEGIN
        IF (TG_OP = 'DELETE') THEN
            myid := OLD.entid;
        ELSE 
            myid := NEW.entid;
        END IF;
        RAISE NOTICE 'Return Value here is %', myid;
        select sum(cases) into mysum from myrecs where entid = myid;
            -- compute entry sum from records and update it.
            -- PL/pgSQL rules on queries are quirky.  Read the docs.
        update myents set sum = mysum where id = myid;
        delete from myids where id = myid;
            -- clean up
    RETURN NULL;
    END;
$_$ language plpgsql;
&lt;/pre&gt;&lt;br /&gt;
Finally, the trigger definitions using the above.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;-- only fire trigger once per myent.id using when clause (condition)
-- eval is deferred until transaction concludes
create constraint trigger t_cache after insert or update 
    on myrecs initially deferred for each row 
    when ( f_condition(NEW.entid) )  -- comment out for pre pg 9.0
    execute procedure f_refresh();

-- need 2, one for each for NEW (insert and update) and OLD (delete)
create constraint trigger t_cache_del after delete
    on myrecs initially deferred for each row 
    when ( f_condition(OLD.entid) )
    execute procedure f_refresh();
&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;The test&lt;/h3&gt;All software needs to be tester, right? &lt;br /&gt;
I don't have pg9.0 yet, and it won't hit Ubuntu mainline until Ubuntu Natty, but it looks easy enough to install via a &lt;a href=http://www.dctrwatson.com/2010/09/installing-postgresql-9-0-on-ubuntu-10-04/&gt;backports repo&lt;/a&gt;.  So, this isn't fully tested.  Comment out the "when" lines in the trigger defines and it will work, albeit running once per row *after* the commit.&lt;br /&gt;
&lt;br /&gt;
In any event, here goes!  The sum should be zero until after the commit.  If the &lt;tt&gt;when&lt;/tt&gt; clause works correctly, then the trigger should only fire (and emit a notice) once. Likewise, the &lt;tt&gt;myids&lt;/tt&gt; table should be empty.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;insert into myents (sum) VALUES ( 0);
begin;
    insert into myrecs (entid, cases) VALUES ( 1, 0), (1, 1), (1,2);
    select * from myents;  -- 0
    select * from myids;   -- entid from above
commit;
select * from myents;   -- new sum
select * from myids;   -- empty
&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;References -- Postgresql Docs:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=http://www.postgresql.org/docs/9.0/static/plpgsql-trigger.html&gt;Trigger Procedures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=http://www.postgresql.org/docs/9.0/static/sql-createtrigger.html&gt;Create Trigger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=http://www.postgresql.org/docs/9.0/static/plpgsql.html&gt;PL/pgSQL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6054491416959666920?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6054491416959666920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/02/postgreql-hacks-firing-trigger-for-each.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6054491416959666920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6054491416959666920'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/02/postgreql-hacks-firing-trigger-for-each.html' title='Postgreql Hacks -- firing a trigger &quot;for each transaction&quot;'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7470082011840762327</id><published>2011-02-02T03:15:00.002-07:00</published><updated>2011-02-02T03:20:05.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Egypt Internet Obama Mubarak'/><title type='text'></title><content type='html'>I've been obsessively following Egypt for the past few days.  Both the BBC and Al Jazeera have excellent coverage, as well as Google Realtime.  After days of seeing  BBC's "Have your say" links on the BBC ( and reading tech and business stories to boot ), I sent one in.  Here goes:

### Begin Comments
The latest comments from both Mubarak and Obama indicate that change is on the horizon.  How close the horizon actually is seems to be the biggest question on people's minds.

Several days ago, in the space of minutes, some 80 million people vanished from the internet  (see http://www.renesys.com/blog/).  This likely happened at direct orders from the current regime - who else wields such power?  This is one of the most significant "black marks" against the current regime - a totalitarian attempt to curtail information flow.

A resumption of basic information services is an absolutely prerequisite to any transition.  If the current regime is serious about stability, they will "turn the lights back on" ASAP.  The fact that they haven't done so yet casts serious doubt on their intentions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7470082011840762327?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7470082011840762327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2011/02/ive-been-obsessively-following-egypt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7470082011840762327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7470082011840762327'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2011/02/ive-been-obsessively-following-egypt.html' title=''/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6158116731573744654</id><published>2010-06-06T20:32:00.003-07:00</published><updated>2010-06-06T21:07:52.860-07:00</updated><title type='text'>User Interface Zen</title><content type='html'>Before Apple made pretty screens on cellphonesand album art that you could flip through, there was Synaptics.  Have you ever seen someone drawing on a pad bound to a laptop in a coffeeshop? Synaptics.  Have them you ever done a 2-fingered scroll?  Synaptics.

I was a perennial hater of laptop touchpads.  Imprecise, too much work.  A mouse gives wide sweeps, high precision. Then i slowly worked myself up to almost-full-time keyboard usage, a long barrage of shortcuts that i could fire off without ever lifting my fingers, frame after frame of text editor, browser, google scholar, google maps, and back.  I've always really *liked* keyboards, and now i absolutely depend upon them.

Re-enter the 2.2 pound netbook.  That's right - the 1kg laptop.  Alright, it has an annoyingly small battery compared to a very slightly larger 2.8 pound laptop, and the weight gain is more or less obviated by the more frequent need to carry a 0.3 pound charger.  Whatever.  It still lasts for twice as long as my "real" laptop (a thinkpad t61 that i would *never* put in my lap, whose screen and keyboard i nonetheless adore ).

Point is...

The touchpad has come a long way.  So far, in fact, that touchpads are now officially cool, as far as i can tell.  With 2 fingers, i can now give a *lot* of information, while moving my fingers less than a mouse.  The secret, from my point of view, is synaptics, and more specifically, synclient.

Under ubuntu, the following sets thresholds of two finger motions, adds rules for "two finger tap as middle click" (Xwindows paste), and disables end scrolling (otherwise known as the devil).

I'm using an Asus 1005HAB (N270, $250 @ Best Buy with WinXP, after some deliberation, and some pretty aweful "the customer is a retard" corporate customer service.  As an extended sidenote, do yourself a favor and remove the "rescue partition" before it wipes your computer clean with a random, unconfirmed hard drive repartition when you accidentally boot into it with grub).  It's the model with the little bumps on a touchpad that is flush with the case.  I'm surprised at how not-annoying the bumps are.  After turning up the sensitivity, it's, um, magic?  I think "scroll down" and it suddenly happens.  The wonders of multitouch.  The happiness of the not-a-huge-tome laptop!

Here's my multitouch script:

&lt;span style="font-size:85%;"&gt;#!/bin/bash
##
synclient EmulateTwoFingerMinZ=5
synclient EmulateTwoFingerMinW=10
synclient VertTwoFingerScroll=1
synclient HorizTwoFingerScroll=1
synclient VertScrollDelta=75
synclient HorizScrollDelta=100
synclient JumpyCursorThreshold=100
synclient VertEdgeScroll=0
synclient HorizEdgeScroll=0
synclient TapButton2=2
synclient TapButton3=3
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6158116731573744654?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6158116731573744654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2010/06/user-interface-zen.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6158116731573744654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6158116731573744654'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2010/06/user-interface-zen.html' title='User Interface Zen'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-8940190619317280931</id><published>2010-04-20T23:51:00.003-07:00</published><updated>2010-04-21T01:15:41.303-07:00</updated><title type='text'>Little R == r</title><content type='html'>There's &lt;a href="http://cran.r-project.org/"&gt;big R&lt;/a&gt;, the R that I use to do most my work, the environment that makes pretty graphics, et. al.
It's like &lt;a href="http://www.mathworks.com/matlabcentral/newsreader/view_thread/55484"&gt;matlab&lt;/a&gt;, only cooler.  Or more cool. Or less uncool.  You can see my prejudices here.

Today i discovered little R.  It's like big R, only little.
Holy shit.

Dirk gives a thorough rundown here &lt;a href="http://dirk.eddelbuettel.com/code/littler.html"&gt;http://dirk.eddelbuettel.com/code/littler.html&lt;/a&gt;
Suffice to say, for someone who's been using pipes and #!/usr/bin constructs for years (though not quite yet decades), this is cooler than cool.  One might say, super-cool.

It's also a nice intro to R for some of the systems geeks out there.  Need a million random numbers uniformly distributed between 0 and 1, specified to 7 decimal points? Need it in a file?  Need it fast?  r can help:

time r -q -e 'for (i in rnorm(1e6)) cat(sprintf("%1.7f\n", i))' &gt;&gt; randomnums

Or perhaps you have a million numbers in some file that you would like to plot as a histogram, fast, every day, in an automated fashion, from the command line...

cat randomnums | r  -e 'myrandoms &lt;- as.numeric(readLines()); png(filename="myplot.png"); plot(histogram(myrandoms)); dev.off()' &gt;/dev/null

 No, it won't mungle strings with the ease of perl, but it can chew a spreadsheet and spit it out *fast*.  And since it's a stream, you can always pipe it to/from perl.  If you ask me, pretty fucking cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-8940190619317280931?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/8940190619317280931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2010/04/little-r-r.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8940190619317280931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8940190619317280931'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2010/04/little-r-r.html' title='Little R == r'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-5880224340376735614</id><published>2010-04-07T20:02:00.002-07:00</published><updated>2010-04-07T20:07:32.083-07:00</updated><title type='text'>The new face of CouchSurfing</title><content type='html'>Really?  I've gotten a few borderline disrespectful CS requests lately (my profile is &lt;a href="http://www.couchsurfing.org/people/helmingstay/"&gt;here&lt;/a&gt;). Sure, young and inexperienced, have mercy on them, etc. etc.  Nonetheless, I think it's time for a bit of gentle schooling...

&lt;span style="font-size:130%;"&gt;The Request&lt;/span&gt;

&gt;USERNAME: ***
&gt;GENDER: Male
&gt;AGE: 23
&gt;LOCATION: United States - New York - ***
&gt;
&gt;ARRIVAL DATE: 4/9/10
&gt;DEPARTURE DATE: 4/13/10
&gt;NUMBER OF PEOPLE: 1
&gt;ARRIVING VIA: Plane
&gt;
&gt;Hi,
&gt;
&gt;My name is  *** ***. I'm going to Albuquerque this weekend to attend a seminar at the **** Institute. I know it's short notice, but I was wondering if you would be able to host. It's a lot of last minute planning, I just created this account because my girlfriend suggested I use couchsurfing to try to find a place to stay, so sorry that my profile isn't very extensive.
&gt;
&gt;Thanks!
&gt;
&gt;***


&lt;span style="font-size:130%;"&gt;My Reply&lt;/span&gt;

First rule of a successful couchsearch - read the profile of the person that you're addressing.

Second rule of a successful couchsearch - tell the person what specifically about them you think would make you a good match.  what do you bring to the table?  What about them interests you?

Third rule of a successful couchsearch - add relevant information and a picture or 2 to your profile.  A couchsearch is asking someone to take time out of a busy life to provide you with a place to stay.  It makes sense to reciprocate the effort by spending some time to write out a real, decent profile that tells your prospective host something about who you are.

Good luck!
christian&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-5880224340376735614?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/5880224340376735614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2010/04/new-face-of-couchsurfing.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5880224340376735614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5880224340376735614'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2010/04/new-face-of-couchsurfing.html' title='The new face of CouchSurfing'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6013461276974009658</id><published>2010-01-13T03:44:00.006-07:00</published><updated>2010-01-13T03:50:47.516-07:00</updated><title type='text'>Postgres + PL/R = magic information swiss army knife</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_wVbbIGLpjWE/S02kpC61-uI/AAAAAAAAAJ8/qYrmAmeeUDk/s1600-h/plotlogistic.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 479px; height: 318px;" src="http://1.bp.blogspot.com/_wVbbIGLpjWE/S02kpC61-uI/AAAAAAAAAJ8/qYrmAmeeUDk/s400/plotlogistic.png" alt="" id="BLOGGER_PHOTO_ID_5426174151116585698" border="0" /&gt;&lt;/a&gt;
I just wrote up an extensive example using PL/R to build a logistic map for a range of values of r.  The end result is a pretty picture generated within the database and handed back to the webserver.  Very cool.

For complete details, see &lt;a href="http://www.joeconway.com/web/guest/pl/r/-/wiki/Main/Bytea+Graphing+Example"&gt;http://www.joeconway.com/web/guest/pl/r/-/wiki/Main/Bytea+Graphing+Example&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6013461276974009658?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6013461276974009658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2010/01/postgres-plr-magic-information-swiss.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6013461276974009658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6013461276974009658'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2010/01/postgres-plr-magic-information-swiss.html' title='Postgres + PL/R = magic information swiss army knife'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/S02kpC61-uI/AAAAAAAAAJ8/qYrmAmeeUDk/s72-c/plotlogistic.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7886113405358935407</id><published>2009-10-27T02:37:00.001-07:00</published><updated>2009-10-27T02:37:10.344-07:00</updated><title type='text'>thesis take 7 part 2</title><content type='html'>human agriculture, which is central to human ecological dominance, in fact relies upon ecosystem disturbance. &lt;p&gt;as humans stabilize niches against disturbance, characteristic changes in species abundance and guild specialization may be expected. using two model guild strategies for exploiting disturbance (fire and flood), i aim to characterize the effect of disturbance supression. negotiation of abiotic and intra-guild constraints are the primary mechanisms of ecological prosperity that are considered.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7886113405358935407?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7886113405358935407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/thesis-take-7-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7886113405358935407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7886113405358935407'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/thesis-take-7-part-2.html' title='thesis take 7 part 2'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-8559023374450005319</id><published>2009-10-27T02:28:00.001-07:00</published><updated>2009-10-27T02:28:09.502-07:00</updated><title type='text'>thesis topic  take 7</title><content type='html'>environmental disturbance is a key ecological determinant of species composition. long lives and lack of motility in woody plants can lead to characteristic relationships to disturbance, either through close life-cycle coupling to dominant abiotic disturbance (i.e. flooding), or through biotic forcing of disturbance (i.e. fire).&lt;br&gt;these relationships to disturbance are mediated by nutrient and organism cycling, yielding causal, fitness-driven mechanisms of species abundance in woody plants. woody plants provide a fundamental, irreplacable ecosystem service of energy production. driven by intra-guild competition and abiotic limitations such as water, nitrogen, and phosporus, many woody plants have adapted to exploit a priori disturbance, or to drive new disturbance.&lt;p&gt;contrary to contemporary memes, many terrestrial ecosystems have been subject forceful stabilization as a result of human activity. humans supression of fire and flooding has ecological consequences, especially for woody plan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-8559023374450005319?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/8559023374450005319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/thesis-topic-take-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8559023374450005319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8559023374450005319'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/thesis-topic-take-7.html' title='thesis topic  take 7'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4339265344559809004</id><published>2009-10-24T17:34:00.001-07:00</published><updated>2009-10-24T17:34:47.772-07:00</updated><title type='text'>biking and pixing and blogging</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SuOdJ_G7RlI/AAAAAAAAAIs/zBgryDmpC0Q/s1600-h/1024091833-787773.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SuOdJ_G7RlI/AAAAAAAAAIs/zBgryDmpC0Q/s320/1024091833-787773.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5396329573404853842" /&gt;&lt;/a&gt;&lt;/p&gt;dont try this at home, kids. weird downtown industrial scene, not much traffic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4339265344559809004?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4339265344559809004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/biking-and-pixing-and-blogging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4339265344559809004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4339265344559809004'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/biking-and-pixing-and-blogging.html' title='biking and pixing and blogging'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SuOdJ_G7RlI/AAAAAAAAAIs/zBgryDmpC0Q/s72-c/1024091833-787773.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-595007256243541973</id><published>2009-10-16T01:47:00.001-07:00</published><updated>2009-10-16T01:47:53.212-07:00</updated><title type='text'>bonus pic - tincture making</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_wVbbIGLpjWE/StgzOY8bGnI/AAAAAAAAAIk/uaq12c-gD7Y/s1600-h/1016090240-773213.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_wVbbIGLpjWE/StgzOY8bGnI/AAAAAAAAAIk/uaq12c-gD7Y/s320/1016090240-773213.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5393116876083239538" /&gt;&lt;/a&gt;&lt;/p&gt;this is percolation, michael moore (the herbalist) style, easily the most irritating method imaginable, but the man is right. it works. well. this is a ridiculous amount of coltsfoot. if you got lung issues, lemme know... &lt;p&gt;the herb is soaked for some time, and then packed into the cut bottle with a coffee filter below and above, not too tight, not too loose, then alcohol is poured on top, and it seeps through and carries the goodness away with it. the cap on the bottom is screwed just so, such that one or two drops a second leave one bottle asnd enter the other. &lt;p&gt;this particular batch is pretty bitter. the color tells me that it more-or-less worked as advertised. one outstanding question is whether &amp;quot;waste&amp;quot; of alcohol or plant matter by using excess of each is preferable. tincture-making is a fine line between the two. depends on the plant (and the booze), i suppose...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-595007256243541973?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/595007256243541973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/bonus-pic-tincture-making.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/595007256243541973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/595007256243541973'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/bonus-pic-tincture-making.html' title='bonus pic - tincture making'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wVbbIGLpjWE/StgzOY8bGnI/AAAAAAAAAIk/uaq12c-gD7Y/s72-c/1016090240-773213.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-462876719974358888</id><published>2009-10-16T01:38:00.001-07:00</published><updated>2009-10-16T01:38:42.416-07:00</updated><title type='text'>baseline</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/StgxEoCEytI/AAAAAAAAAIc/dr9AhPWGrtA/s1600-h/1016090235-722418.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/StgxEoCEytI/AAAAAAAAAIc/dr9AhPWGrtA/s320/1016090235-722418.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5393114509311527634" /&gt;&lt;/a&gt;&lt;/p&gt;the sg of water should be 1.0000000.  it&amp;#39;s close enough. sanitizer water in the pot in the background. the decidedly unsexy part of brewing - keeping everything clean. ive got some strange strains living down here...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-462876719974358888?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/462876719974358888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/baseline.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/462876719974358888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/462876719974358888'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/baseline.html' title='baseline'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/StgxEoCEytI/AAAAAAAAAIc/dr9AhPWGrtA/s72-c/1016090235-722418.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6509712326834692878</id><published>2009-10-16T01:33:00.001-07:00</published><updated>2009-10-16T01:33:59.646-07:00</updated><title type='text'>it floats!</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/Stgv93NqibI/AAAAAAAAAIU/5wv5a9k24k0/s1600-h/1016090230-739647.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/Stgv93NqibI/AAAAAAAAAIU/5wv5a9k24k0/s320/1016090230-739647.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5393113293615958450" /&gt;&lt;/a&gt;&lt;/p&gt;here&amp;#39;s the sweet-and-sour water getting tested with the hydrometer in the test tube. the higher the hydrom floats, the denser the liquid, the more sugar is dissolved in it... specific gravity, s.g. = 1.15... that&amp;#39;s a *lot* of sugar. my fingres are sticky nasty now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6509712326834692878?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6509712326834692878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/it-floats.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6509712326834692878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6509712326834692878'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/it-floats.html' title='it floats!'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/Stgv93NqibI/AAAAAAAAAIU/5wv5a9k24k0/s72-c/1016090230-739647.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-1075756653917144442</id><published>2009-10-16T01:27:00.001-07:00</published><updated>2009-10-16T01:27:29.962-07:00</updated><title type='text'>my new favorite toy</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/StgucREx4FI/AAAAAAAAAIM/k-YjEjH5mPg/s1600-h/1016090223-749963.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/StgucREx4FI/AAAAAAAAAIM/k-YjEjH5mPg/s320/1016090223-749963.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5393111616930832466" /&gt;&lt;/a&gt;&lt;/p&gt;it&amp;#39;s a laser thermometer - some real star trek shit! im cooling the honey water in a sink of cold water. it&amp;#39;s not perfect, but pointing the magic yellow thing at the surface and pressing the button gives me the temp within a few degrees. 90 degF is definitely too high for the yeasties.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-1075756653917144442?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/1075756653917144442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/my-new-favorite-toy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1075756653917144442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1075756653917144442'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/my-new-favorite-toy.html' title='my new favorite toy'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/StgucREx4FI/AAAAAAAAAIM/k-YjEjH5mPg/s72-c/1016090223-749963.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6367180338884697027</id><published>2009-10-16T01:20:00.001-07:00</published><updated>2009-10-16T01:20:11.692-07:00</updated><title type='text'>scales  how i love thee</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/Stgsu7YDAzI/AAAAAAAAAIE/QjrSB-FtU4g/s1600-h/1016090217-711693.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/Stgsu7YDAzI/AAAAAAAAAIE/QjrSB-FtU4g/s320/1016090217-711693.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5393109738500326194" /&gt;&lt;/a&gt;&lt;/p&gt;measuring out acid blend - 2.5 g tartaric, 4 g malic acid, conservative for 2+ gallons, but more can always be added later. the acid is tasty in it&amp;#39;s own right, but it gives the yeasties a leg-up during the ferment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6367180338884697027?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6367180338884697027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/scales-how-i-love-thee.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6367180338884697027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6367180338884697027'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/scales-how-i-love-thee.html' title='scales  how i love thee'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/Stgsu7YDAzI/AAAAAAAAAIE/QjrSB-FtU4g/s72-c/1016090217-711693.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-8464499747182983141</id><published>2009-10-16T00:50:00.000-07:00</published><updated>2009-10-16T00:51:00.024-07:00</updated><title type='text'>more sugar == more alcohol</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_wVbbIGLpjWE/Stgl5A7Q6DI/AAAAAAAAAH8/lMfQu2gjWIQ/s1600-h/1016090147-760025.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_wVbbIGLpjWE/Stgl5A7Q6DI/AAAAAAAAAH8/lMfQu2gjWIQ/s320/1016090147-760025.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5393102215207512114" /&gt;&lt;/a&gt;&lt;/p&gt;some extra honey that was crystallized  (~500g) and some priming sugar (corn, 140g) into a quart of water). need ~12% alcohol for it to be delf preserving. honey makes tasty brew, in any case. this is the last of my *easy* fermentables. time to buy a new bag of sugar...&lt;p&gt;This message has been sent using the picture and Video service from Verizon Wireless!&lt;p&gt;To learn how you can snap pictures and capture videos with your wireless phone visit &lt;a href="http://www.verizonwireless.com/picture"&gt;www.verizonwireless.com/picture&lt;/a&gt;.&lt;p&gt;Note: To play video messages sent to email, Quicktime@ 6.5 or higher is required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-8464499747182983141?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/8464499747182983141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/more-sugar-more-alcohol.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8464499747182983141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8464499747182983141'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/more-sugar-more-alcohol.html' title='more sugar == more alcohol'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wVbbIGLpjWE/Stgl5A7Q6DI/AAAAAAAAAH8/lMfQu2gjWIQ/s72-c/1016090147-760025.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6667744330882545373</id><published>2009-10-16T00:46:00.001-07:00</published><updated>2009-10-16T00:46:42.920-07:00</updated><title type='text'>prickly pear wine from the student ghetto</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/Stgk4rrvmHI/AAAAAAAAAH0/-FeSCiIQ5SA/s1600-h/1016090141-702921.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/Stgk4rrvmHI/AAAAAAAAAH0/-FeSCiIQ5SA/s320/1016090141-702921.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5393101109993642098" /&gt;&lt;/a&gt;&lt;/p&gt;1 gallon fresh prickly pear juice, 1 gallon water, 1kg sugar (good stuff, not the ghetto smiths bleached shit), a pinch of vitamin c (1.5g), a few dashes of diammonium phosphate (8g), some yeast energizer (1g), all cooled to 25 degC. bubbled in oxygen for 2 minutes. specific gravity is 1.065... potential alcohol @ 9%, way too low. must add more sugar.  &lt;p&gt;This message has been sent using the picture and Video service from Verizon Wireless!&lt;p&gt;To learn how you can snap pictures and capture videos with your wireless phone visit &lt;a href="http://www.verizonwireless.com/picture"&gt;www.verizonwireless.com/picture&lt;/a&gt;.&lt;p&gt;Note: To play video messages sent to email, Quicktime@ 6.5 or higher is required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6667744330882545373?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6667744330882545373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/10/prickly-pear-wine-from-student-ghetto.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6667744330882545373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6667744330882545373'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/10/prickly-pear-wine-from-student-ghetto.html' title='prickly pear wine from the student ghetto'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/Stgk4rrvmHI/AAAAAAAAAH0/-FeSCiIQ5SA/s72-c/1016090141-702921.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4787293985074143279</id><published>2009-08-30T01:26:00.001-07:00</published><updated>2009-08-30T01:26:03.237-07:00</updated><title type='text'>of a few things large and many things small</title><content type='html'>reading Robinson&amp;#39;s Red Mars reminds me of a basic and oft-under (or un-) appreciated principle of ecology: change in the ecospere tends to flow from small to large, and not vise versa.&lt;p&gt;sure, planets have colided. asteroids caused massive turnover in earth species composition. nonetheless, where did life come from? the smallest of units, testing a galaxy of possibilities, some succeeding, some aggregating.&lt;p&gt;the little things. we dream grand dreams of galaxies, of control. seen from a plane, humans&amp;#39; works are not vast. none but our roads and our lights warrant note. points and lines.&lt;p&gt;ozone hole; global warming; oxygen atmosphere: consequences of small units, people and plants and refridgerators, units repeated to vast proportions over time, an inflation of individually insignificant individuals that, together over time, effects nontrivial change.&lt;p&gt;this is the law of history as well as ecology. the pyramids, slaves. democracy with it&amp;#39;s masses, intel&amp;#39;s chips.&lt;p&gt;small isn&amp;#39;t trivial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4787293985074143279?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4787293985074143279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/08/of-few-things-large-and-many-things.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4787293985074143279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4787293985074143279'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/08/of-few-things-large-and-many-things.html' title='of a few things large and many things small'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-5528464570765801181</id><published>2009-08-07T17:11:00.001-07:00</published><updated>2009-08-07T17:11:49.070-07:00</updated><title type='text'>classroom economics experiments</title><content type='html'>i&amp;#39;ve been thinking lately about inflation and the meaning of money lately. i think a classroom experiment with monopoply money and a real lemonade stand would be great. folks draw some sort of income (perhaps making the lemonade and selling it to the vendor), vendors get paid a fixed turn-based wage. if the resale price of lemonade rises 10% every turn, the &amp;quot;real value&amp;quot; of money immediately becomes apparent.&lt;p&gt;as an added capitalist spin, savings might be used to buy a stand or &amp;quot;manufacturing plant&amp;quot;, and employees are hired from the participants. finally, adding or removing money from the system, a bank with a savings rate...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-5528464570765801181?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/5528464570765801181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/08/classroom-economics-experiments.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5528464570765801181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5528464570765801181'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/08/classroom-economics-experiments.html' title='classroom economics experiments'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-5376675946576758525</id><published>2009-07-23T08:29:00.001-07:00</published><updated>2009-07-23T08:29:18.926-07:00</updated><title type='text'>Albany  NY</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmiBztWLsmI/AAAAAAAAAHs/WGOOKVBBrY4/s1600-h/0723091125-758927.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmiBztWLsmI/AAAAAAAAAHs/WGOOKVBBrY4/s320/0723091125-758927.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361678081730523746" /&gt;&lt;/a&gt;&lt;/p&gt;Mo says, &amp;quot;an owl and a bunny went to Albany&amp;quot;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-5376675946576758525?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/5376675946576758525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/albany-ny.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5376675946576758525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5376675946576758525'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/albany-ny.html' title='Albany  NY'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SmiBztWLsmI/AAAAAAAAAHs/WGOOKVBBrY4/s72-c/0723091125-758927.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7332659784511945937</id><published>2009-07-23T06:25:00.001-07:00</published><updated>2009-07-23T06:25:22.731-07:00</updated><title type='text'>A view of the Hudson</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_wVbbIGLpjWE/Smhkwg6tU7I/AAAAAAAAAHk/r_rihmnYSe4/s1600-h/0723090849-722733.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_wVbbIGLpjWE/Smhkwg6tU7I/AAAAAAAAAHk/r_rihmnYSe4/s320/0723090849-722733.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361646141017248690" /&gt;&lt;/a&gt;&lt;/p&gt;It&amp;#39;s a *very* pretty ride, and we both got seats on the good (west) side of the train. It&amp;#39;s amazing how quickly a city of millions gives way to a  sparsely-populated expanse of water and trees. Sailboats are scattered picturesquely about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7332659784511945937?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7332659784511945937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/view-of-hudson.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7332659784511945937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7332659784511945937'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/view-of-hudson.html' title='A view of the Hudson'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wVbbIGLpjWE/Smhkwg6tU7I/AAAAAAAAAHk/r_rihmnYSe4/s72-c/0723090849-722733.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-3754248399175645025</id><published>2009-07-23T06:18:00.001-07:00</published><updated>2009-07-23T06:18:52.897-07:00</updated><title type='text'>Safely on the train</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_wVbbIGLpjWE/SmhjPIgjWXI/AAAAAAAAAHc/lHZ4mjPQun8/s1600-h/0723090826-732898.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_wVbbIGLpjWE/SmhjPIgjWXI/AAAAAAAAAHc/lHZ4mjPQun8/s320/0723090826-732898.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361644468017781106" /&gt;&lt;/a&gt;&lt;/p&gt;after a half-mad rush through the subway. Morning rush hour was, thankfully, merciful. Epic confusion in Penn Station of the &amp;quot;where in god&amp;#39;s name anre the amtrack trains&amp;quot; variety in the *dead midst* of morning rush hour. Nonetheless, success with minutes to spare! No assigned seating, and Mo and i get split, which is probably for the best at this point. We&amp;#39;re both borderline hungover, dangerously caffeinated, and tragically sleep-deprived. But we are safe, and the train is spacious and relaxed, and the aforementioned pbr begins to sing its sweet siren song from the bag, otherwise known as &amp;quot;late lunch&amp;quot;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-3754248399175645025?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/3754248399175645025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/safely-on-train.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3754248399175645025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3754248399175645025'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/safely-on-train.html' title='Safely on the train'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wVbbIGLpjWE/SmhjPIgjWXI/AAAAAAAAAHc/lHZ4mjPQun8/s72-c/0723090826-732898.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-270791356526824461</id><published>2009-07-23T06:08:00.001-07:00</published><updated>2009-07-23T06:08:06.009-07:00</updated><title type='text'>A last look @ Williamsburg</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmhgtvIDOKI/AAAAAAAAAHU/llvlUxMTFB0/s1600-h/0723090721a-786010.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmhgtvIDOKI/AAAAAAAAAHU/llvlUxMTFB0/s320/0723090721a-786010.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361641695245187234" /&gt;&lt;/a&gt;&lt;/p&gt;We eat a hurried few bites in front of our heap of bags. Very pretty morning, the air is misty and thick. We&amp;#39;re told that a tropical depression is in-bound, that it will starting raining around noon and continue for days. We&amp;#39;ll be safely on the train by then. Good timing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-270791356526824461?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/270791356526824461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/last-look-williamsburg.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/270791356526824461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/270791356526824461'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/last-look-williamsburg.html' title='A last look @ Williamsburg'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SmhgtvIDOKI/AAAAAAAAAHU/llvlUxMTFB0/s72-c/0723090721a-786010.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6564421368253954813</id><published>2009-07-23T05:55:00.001-07:00</published><updated>2009-07-23T05:55:56.360-07:00</updated><title type='text'>The swank Williamsburg Apt</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_wVbbIGLpjWE/Smhd3Li4B7I/AAAAAAAAAHM/BvaBJTwp3DA/s1600-h/0723090659-756361.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_wVbbIGLpjWE/Smhd3Li4B7I/AAAAAAAAAHM/BvaBJTwp3DA/s320/0723090659-756361.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361638558957832114" /&gt;&lt;/a&gt;&lt;/p&gt;Where we stayed. Very cozy, replete with romantic fire escape to sit on in the cool evening air.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6564421368253954813?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6564421368253954813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/swank-williamsburg-apt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6564421368253954813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6564421368253954813'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/swank-williamsburg-apt.html' title='The swank Williamsburg Apt'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wVbbIGLpjWE/Smhd3Li4B7I/AAAAAAAAAHM/BvaBJTwp3DA/s72-c/0723090659-756361.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-320053793344583531</id><published>2009-07-23T05:52:00.001-07:00</published><updated>2009-07-23T05:52:30.362-07:00</updated><title type='text'>Some of our luggage</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmhdDjbziXI/AAAAAAAAAHE/LjRG21thXYw/s1600-h/0723090659a-750363.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmhdDjbziXI/AAAAAAAAAHE/LjRG21thXYw/s320/0723090659a-750363.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361637672017430898" /&gt;&lt;/a&gt;&lt;/p&gt;that we will haul on our backs through the tunnels to Penn Station. Amomng other indispensables? 9 cans of pbr. Not light.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-320053793344583531?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/320053793344583531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/some-of-our-luggage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/320053793344583531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/320053793344583531'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/some-of-our-luggage.html' title='Some of our luggage'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SmhdDjbziXI/AAAAAAAAAHE/LjRG21thXYw/s72-c/0723090659a-750363.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-2306193650850488712</id><published>2009-07-23T04:23:00.001-07:00</published><updated>2009-07-23T04:23:07.109-07:00</updated><title type='text'>Good morning sunshine</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmhIGzlCCXI/AAAAAAAAAG8/vIFcijR-TsE/s1600-h/0723090658b-787110.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmhIGzlCCXI/AAAAAAAAAG8/vIFcijR-TsE/s320/0723090658b-787110.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361614638146521458" /&gt;&lt;/a&gt;&lt;/p&gt;After a few hours of sleep, we crawl towards breakdast, Penn station, and Canada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-2306193650850488712?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/2306193650850488712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/good-morning-sunshine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2306193650850488712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2306193650850488712'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/good-morning-sunshine.html' title='Good morning sunshine'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SmhIGzlCCXI/AAAAAAAAAG8/vIFcijR-TsE/s72-c/0723090658b-787110.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-3665762072475531571</id><published>2009-07-22T16:42:00.001-07:00</published><updated>2009-07-22T16:42:16.300-07:00</updated><title type='text'>Happy Hour</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/Smej2KP2xyI/AAAAAAAAAG0/YYrTd6zhmu4/s1600-h/0722091937-736301.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/Smej2KP2xyI/AAAAAAAAAG0/YYrTd6zhmu4/s320/0722091937-736301.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361434032266987298" /&gt;&lt;/a&gt;&lt;/p&gt;We savor the peace of having not killed each other during the long, hot day. Cold Brooklyn Brewery lager and smoking on the non-smoking, zoo-cage patio is the perfect pairing with this moment of foot-blissed circumspection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-3665762072475531571?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/3665762072475531571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/happy-hour.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3665762072475531571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3665762072475531571'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/happy-hour.html' title='Happy Hour'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/Smej2KP2xyI/AAAAAAAAAG0/YYrTd6zhmu4/s72-c/0722091937-736301.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-1649588184687293252</id><published>2009-07-22T16:36:00.001-07:00</published><updated>2009-07-22T16:36:50.828-07:00</updated><title type='text'>I didn't take this picture</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmeikhewukI/AAAAAAAAAGs/8aQHB1f5Jbo/s1600-h/0722091824-710829.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmeikhewukI/AAAAAAAAAGs/8aQHB1f5Jbo/s320/0722091824-710829.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361432629754247746" /&gt;&lt;/a&gt;&lt;/p&gt;It&amp;#39;s actually a still frame from the Matrix, a scene that ended up on the editing room floor. Mo was too fast for the cameras. From what I&amp;#39;ve heard, technology is catching up. Until then we&amp;#39;ll have to settle for Keanu and special effects...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-1649588184687293252?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/1649588184687293252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/i-didnt-take-this-picture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1649588184687293252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1649588184687293252'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/i-didnt-take-this-picture.html' title='I didn&apos;t take this picture'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SmeikhewukI/AAAAAAAAAGs/8aQHB1f5Jbo/s72-c/0722091824-710829.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-3735865446945233927</id><published>2009-07-22T16:33:00.001-07:00</published><updated>2009-07-22T16:33:08.009-07:00</updated><title type='text'>Rush hour</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmehtCWmbkI/AAAAAAAAAGk/TBT01ysR4zM/s1600-h/0722091819-788010.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmehtCWmbkI/AAAAAAAAAGk/TBT01ysR4zM/s320/0722091819-788010.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361431676505714242" /&gt;&lt;/a&gt;&lt;/p&gt;to Brooklyn on the L. I got some annoyed looks for pointing a camera at folks. See previous post r.e. subway confrontation avoidance...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-3735865446945233927?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/3735865446945233927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/rush-hour.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3735865446945233927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3735865446945233927'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/rush-hour.html' title='Rush hour'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SmehtCWmbkI/AAAAAAAAAGk/TBT01ysR4zM/s72-c/0722091819-788010.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4391750434395334343</id><published>2009-07-22T16:29:00.001-07:00</published><updated>2009-07-22T16:29:54.693-07:00</updated><title type='text'>Rachael's Hypothesis</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_wVbbIGLpjWE/Smeg8rzWdQI/AAAAAAAAAGc/Eg96khckbvM/s1600-h/0722091822a-794694.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_wVbbIGLpjWE/Smeg8rzWdQI/AAAAAAAAAGc/Eg96khckbvM/s320/0722091822a-794694.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361430845818565890" /&gt;&lt;/a&gt;&lt;/p&gt;of New Yorkers&amp;#39; fetish with shoes is that everyone looks down while riding the subway, and this makes shoes a dominant mode of slef-expression. I lose in this game, but my feet don&amp;#39;t ache too bad after a long day&amp;#39;s stroll...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4391750434395334343?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4391750434395334343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/rachaels-hypothesis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4391750434395334343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4391750434395334343'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/rachaels-hypothesis.html' title='Rachael&apos;s Hypothesis'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wVbbIGLpjWE/Smeg8rzWdQI/AAAAAAAAAGc/Eg96khckbvM/s72-c/0722091822a-794694.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-1870843469105022123</id><published>2009-07-22T16:26:00.001-07:00</published><updated>2009-07-22T16:26:50.343-07:00</updated><title type='text'>Subwyas don't kill people</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmegOnQAsbI/AAAAAAAAAGU/Jj6MV4q9G-Q/s1600-h/0722091823-710344.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmegOnQAsbI/AAAAAAAAAGU/Jj6MV4q9G-Q/s320/0722091823-710344.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361430054322614706" /&gt;&lt;/a&gt;&lt;/p&gt;People kill people (or themselves), as the saying goes.&lt;p&gt;Ok, i&amp;#39;m a big fat train dork. Sense of power, hint of danger as the beast rushes up with a gust of air, smell of electric motors and oil, the subterranean labyrinth. I&amp;#39;d definitely rather live here than in the Mall of America in some post-apocalyptic future? Seen &amp;quot;Dark Days&amp;quot;? If not, it will in all likelyhood forever change the way you see subway tunnels. Oh, and there&amp;#39;s a book from the late 80s or early 90s, &amp;quot;Slake&amp;#39;s something&amp;quot;... &lt;p&gt;This message has been sent using the picture and Video service from Verizon Wireless!&lt;p&gt;To learn how you can snap pictures and capture videos with your wireless phone visit &lt;a href="http://www.verizonwireless.com/picture"&gt;www.verizonwireless.com/picture&lt;/a&gt;.&lt;p&gt;Note: To play video messages sent to email, Quicktime@ 6.5 or higher is required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-1870843469105022123?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/1870843469105022123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/subwyas-dont-kill-people.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1870843469105022123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1870843469105022123'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/subwyas-dont-kill-people.html' title='Subwyas don&apos;t kill people'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SmegOnQAsbI/AAAAAAAAAGU/Jj6MV4q9G-Q/s72-c/0722091823-710344.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7262173338266763839</id><published>2009-07-22T16:16:00.001-07:00</published><updated>2009-07-22T16:16:49.489-07:00</updated><title type='text'>Trash</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/Smed4SLu9VI/AAAAAAAAAGM/Bv3Gj1_19Kg/s1600-h/0722091813b-709490.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/Smed4SLu9VI/AAAAAAAAAGM/Bv3Gj1_19Kg/s320/0722091813b-709490.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361427471687152978" /&gt;&lt;/a&gt;&lt;/p&gt;I can respect a city that leaves large piles of trash lying conspicuously around before removal.&lt;p&gt;Years ago (2004?) i was wandering through Central Park, up towards Harlem i think, and i discovered the Park&amp;#39;s composting facilities. It was a 5 year old&amp;#39;s dream, a leaf pile the size of a castle (albeit shredded and rapidly decomposing), french drain-style aeration pipes threaded throughout. It was spring, cold still, with the last crocuses and the first daffodils blooming, and there was a great quantity of microbially-warmed air pouring forth from this mountain of leaves. It totally changed the way i saw Central Park *and* composting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7262173338266763839?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7262173338266763839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/trash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7262173338266763839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7262173338266763839'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/trash.html' title='Trash'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/Smed4SLu9VI/AAAAAAAAAGM/Bv3Gj1_19Kg/s72-c/0722091813b-709490.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7378549283975134307</id><published>2009-07-22T16:10:00.001-07:00</published><updated>2009-07-22T16:10:16.514-07:00</updated><title type='text'>A counting clock</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_wVbbIGLpjWE/SmecWGkttlI/AAAAAAAAAGE/ztehEE5lnnY/s1600-h/0722091813-716514.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_wVbbIGLpjWE/SmecWGkttlI/AAAAAAAAAGE/ztehEE5lnnY/s320/0722091813-716514.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361425784943523410" /&gt;&lt;/a&gt;&lt;/p&gt;Looking south past union station. The clock is counting something awefully fast... microseconds since Bush left office?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7378549283975134307?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7378549283975134307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/counting-clock.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7378549283975134307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7378549283975134307'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/counting-clock.html' title='A counting clock'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wVbbIGLpjWE/SmecWGkttlI/AAAAAAAAAGE/ztehEE5lnnY/s72-c/0722091813-716514.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7714521133615388989</id><published>2009-07-22T16:06:00.001-07:00</published><updated>2009-07-22T16:06:33.997-07:00</updated><title type='text'>Not Square</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_wVbbIGLpjWE/SmebehtPkgI/AAAAAAAAAF8/i97irCZTXT0/s1600-h/0722091706-793998.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_wVbbIGLpjWE/SmebehtPkgI/AAAAAAAAAF8/i97irCZTXT0/s320/0722091706-793998.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361424830154379778" /&gt;&lt;/a&gt;&lt;/p&gt;I have this thing for oblique-cornered buildings - fond memories from Prince Ave in Athens? ABQ is pretty square; we don&amp;#39;t have these...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7714521133615388989?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7714521133615388989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/not-square.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7714521133615388989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7714521133615388989'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/not-square.html' title='Not Square'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wVbbIGLpjWE/SmebehtPkgI/AAAAAAAAAF8/i97irCZTXT0/s72-c/0722091706-793998.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6718173845577576714</id><published>2009-07-22T16:01:00.001-07:00</published><updated>2009-07-22T16:01:24.828-07:00</updated><title type='text'>Hiding from the sun</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_wVbbIGLpjWE/SmeaRM5BajI/AAAAAAAAAF0/nEtKsS7utW8/s1600-h/0722091705b-784829.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_wVbbIGLpjWE/SmeaRM5BajI/AAAAAAAAAF0/nEtKsS7utW8/s320/0722091705b-784829.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361423501716711986" /&gt;&lt;/a&gt;&lt;/p&gt;As it beat down upon us. Found an unairconditioned goodwill to try on polyester blazers in - downright swampy! Scored some good clothes for cheap, though. This is our idea of souvenirs - things we can wear, &amp;quot;yeah, i went shopping in downtown Manhattan last summer&amp;quot;... not the pinnacle of fashion, goodwill, but it will suffice for us!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6718173845577576714?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6718173845577576714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/hiding-from-sun.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6718173845577576714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6718173845577576714'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/hiding-from-sun.html' title='Hiding from the sun'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wVbbIGLpjWE/SmeaRM5BajI/AAAAAAAAAF0/nEtKsS7utW8/s72-c/0722091705b-784829.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4918253535956339393</id><published>2009-07-22T15:56:00.001-07:00</published><updated>2009-07-22T15:56:13.858-07:00</updated><title type='text'>Looking Uptown</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmeZDaZllWI/AAAAAAAAAFs/aUQ0j2DPQW0/s1600-h/0722091705-773859.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SmeZDaZllWI/AAAAAAAAAFs/aUQ0j2DPQW0/s320/0722091705-773859.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361422165313164642" /&gt;&lt;/a&gt;&lt;/p&gt;Big roads, big buildings. Saw a ghostbike near here. Mo was wondering how often people get killed on bikes in Manhattan. Now we know - 14 in 2008. Per capita, I&amp;#39;m guessing that&amp;#39;s less than ABQ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4918253535956339393?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4918253535956339393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/looking-uptown.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4918253535956339393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4918253535956339393'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/looking-uptown.html' title='Looking Uptown'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SmeZDaZllWI/AAAAAAAAAFs/aUQ0j2DPQW0/s72-c/0722091705-773859.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-3170553279558208099</id><published>2009-07-22T11:45:00.001-07:00</published><updated>2009-07-22T11:45:45.073-07:00</updated><title type='text'>Credit Unions Weather Financial Storm</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_wVbbIGLpjWE/SmdeWQ7rCdI/AAAAAAAAAFk/Apk1JX3Pneg/s1600-h/0722091443-745074.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_wVbbIGLpjWE/SmdeWQ7rCdI/AAAAAAAAAFk/Apk1JX3Pneg/s320/0722091443-745074.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361357618003249618" /&gt;&lt;/a&gt;&lt;/p&gt;Whether Ukrainia weathers Putin remains to be seen...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-3170553279558208099?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/3170553279558208099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/credit-unions-weather-financial-storm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3170553279558208099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3170553279558208099'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/credit-unions-weather-financial-storm.html' title='Credit Unions Weather Financial Storm'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wVbbIGLpjWE/SmdeWQ7rCdI/AAAAAAAAAFk/Apk1JX3Pneg/s72-c/0722091443-745074.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-3004758733238176822</id><published>2009-07-22T11:00:00.001-07:00</published><updated>2009-07-22T11:00:22.382-07:00</updated><title type='text'>The Daylilies of Stuyvesant Square @ 15th st &amp; Perlman</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/SmdTtvh9rGI/AAAAAAAAAFc/sqZbplLRClg/s1600-h/0722091319-722383.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/SmdTtvh9rGI/AAAAAAAAAFc/sqZbplLRClg/s320/0722091319-722383.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361345926726003810" /&gt;&lt;/a&gt;&lt;/p&gt;We made it to Manhattan, all 3 minutes away by the L train. A break in the shade, cool breeze moving in. I haven&amp;#39;t seen so many nice trees all in the same place in a long time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-3004758733238176822?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/3004758733238176822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/daylilies-of-stuyvesant-square-15th-st.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3004758733238176822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3004758733238176822'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/daylilies-of-stuyvesant-square-15th-st.html' title='The Daylilies of Stuyvesant Square @ 15th st &amp; Perlman'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/SmdTtvh9rGI/AAAAAAAAAFc/sqZbplLRClg/s72-c/0722091319-722383.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-8723230965225928551</id><published>2009-07-22T10:56:00.001-07:00</published><updated>2009-07-22T10:56:05.023-07:00</updated><title type='text'>Williamsburg Coffeehouse Bathroom</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/SmdStYGue8I/AAAAAAAAAFU/1LnuT-JzTeU/s1600-h/0722091252-765023.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/SmdStYGue8I/AAAAAAAAAFU/1LnuT-JzTeU/s320/0722091252-765023.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361344820926118850" /&gt;&lt;/a&gt;&lt;/p&gt;Public restrooms rare - this one came with coffee, a nice window-seat view of the street, and sweet ipod hipster music that was accidentally stopped when i asked who a song was by... Looking @ music schedule in the Viilage Voice makes me want time/$$ to see shows. Cool stuff, $10. Pocket flask? $6 pints are rough!&lt;p&gt;8am train out of Penn Station tomorrow, so no late night tonight. Still jet/sleep-schedule-lagged...&lt;p&gt;Picked up a 6 pack of Dogfish Head 60min IPA last night for $13, warm 12pk of pbr for $9 on Bedford St. Cold pbr was a dollar more. Strangely enough, i saw 12pks of warm natural light for $6.50 today in RiteAid. What? Beer that fell off the back of the truck? This is Brooklyn, after all. $0.50 a beer even for the cheapest of packaged corporate swill seems a little odd.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-8723230965225928551?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/8723230965225928551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/williamsburg-coffeehouse-bathroom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8723230965225928551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8723230965225928551'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/williamsburg-coffeehouse-bathroom.html' title='Williamsburg Coffeehouse Bathroom'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/SmdStYGue8I/AAAAAAAAAFU/1LnuT-JzTeU/s72-c/0722091252-765023.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4212843045082041740</id><published>2009-07-22T07:27:00.001-07:00</published><updated>2009-07-22T07:27:55.158-07:00</updated><title type='text'>this one's for mike d</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/Smch60wLyyI/AAAAAAAAAFM/F3aV2lU1SPw/s1600-h/0722091025-775160.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/Smch60wLyyI/AAAAAAAAAFM/F3aV2lU1SPw/s320/0722091025-775160.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361291175884737314" /&gt;&lt;/a&gt;&lt;/p&gt;Brooklyn bug, replete with authentic art.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4212843045082041740?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4212843045082041740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/this-ones-for-mike-d.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4212843045082041740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4212843045082041740'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/this-ones-for-mike-d.html' title='this one&apos;s for mike d'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/Smch60wLyyI/AAAAAAAAAFM/F3aV2lU1SPw/s72-c/0722091025-775160.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4740587534783627596</id><published>2009-07-21T19:31:00.001-07:00</published><updated>2009-07-21T19:31:34.157-07:00</updated><title type='text'>Alive if damp at Laguardia</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/SmZ6BtLmpuI/AAAAAAAAAFE/jqyKww7gVXE/s1600-h/0721092227-794158.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/SmZ6BtLmpuI/AAAAAAAAAFE/jqyKww7gVXE/s320/0721092227-794158.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361106576157877986" /&gt;&lt;/a&gt;&lt;/p&gt;We&amp;#39;re in NYC! Yay! Awesome seatmate advised us extensively. Life is good, if blearyily sleep-deprived.&lt;p&gt;This message has been sent using the picture and Video service from Verizon Wireless!&lt;p&gt;To learn how you can snap pictures and capture videos with your wireless phone visit &lt;a href="http://www.verizonwireless.com/picture"&gt;www.verizonwireless.com/picture&lt;/a&gt;.&lt;p&gt;Note: To play video messages sent to email, Quicktime@ 6.5 or higher is required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4740587534783627596?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4740587534783627596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/alive-if-damp-at-laguardia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4740587534783627596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4740587534783627596'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/alive-if-damp-at-laguardia.html' title='Alive if damp at Laguardia'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/SmZ6BtLmpuI/AAAAAAAAAFE/jqyKww7gVXE/s72-c/0721092227-794158.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-1386509780852432091</id><published>2009-07-21T13:04:00.001-07:00</published><updated>2009-07-21T13:04:08.449-07:00</updated><title type='text'>Houston Airport Smokers Lounge</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_wVbbIGLpjWE/SmYfOLBZvFI/AAAAAAAAAE8/vLkU7phx9Dc/s1600-h/0721091453-748450.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_wVbbIGLpjWE/SmYfOLBZvFI/AAAAAAAAAE8/vLkU7phx9Dc/s320/0721091453-748450.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5361006734768454738" /&gt;&lt;/a&gt;&lt;/p&gt;yes, that would be outside. &lt;p&gt;It amazes me that the city of choice for NASA mission control and a major hub airport is so perpetually overcast. Air like peanut butter, with some hot, dirty mopwater mixed in for good measure.&lt;p&gt;Continental staff is a rather moribund crew. Our 1.5 hr layover has magically extended itself an hour - its shaping up to be a long day, what with impromptu going away party and all. Still, if we get there i&amp;#39;ll be happy.&lt;p&gt;Traveling with green machine, trying to download MTA subway maps.  I forgot my credit card sized MTA map at home. Alas. I *did* remember my passport, which is still valid (&amp;#39;til 2016, which makes me wonder what the world will look like then...). &lt;p&gt;Cool-looking Brooklyn couchsurfers and a big bag of homemade snacks for the airport wait &amp;#39;til then. Not Texas, here we come!&lt;p&gt;This message has been sent using the picture and Video service from Verizon Wireless!&lt;p&gt;To learn how you can snap pictures and capture videos with your wireless phone visit &lt;a href="http://www.verizonwireless.com/picture"&gt;www.verizonwireless.com/picture&lt;/a&gt;.&lt;p&gt;Note: To play video messages sent to email, Quicktime@ 6.5 or higher is required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-1386509780852432091?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/1386509780852432091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/houston-airport-smokers-lounge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1386509780852432091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1386509780852432091'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/houston-airport-smokers-lounge.html' title='Houston Airport Smokers Lounge'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wVbbIGLpjWE/SmYfOLBZvFI/AAAAAAAAAE8/vLkU7phx9Dc/s72-c/0721091453-748450.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4495237862756654207</id><published>2009-07-21T09:57:00.001-07:00</published><updated>2009-07-21T09:57:26.328-07:00</updated><title type='text'>thus we begin!</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/SmXzdlInl2I/AAAAAAAAAE0/nr2BE7JIwcQ/s1600-h/0721091055-746329.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/SmXzdlInl2I/AAAAAAAAAE0/nr2BE7JIwcQ/s320/0721091055-746329.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5360958620964460386" /&gt;&lt;/a&gt;&lt;/p&gt;houston to nyc to montreal and back, lord willing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4495237862756654207?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4495237862756654207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/07/thus-we-begin.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4495237862756654207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4495237862756654207'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/07/thus-we-begin.html' title='thus we begin!'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/SmXzdlInl2I/AAAAAAAAAE0/nr2BE7JIwcQ/s72-c/0721091055-746329.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-9003438791019141255</id><published>2009-06-25T23:02:00.004-07:00</published><updated>2009-06-25T23:20:19.196-07:00</updated><title type='text'>What my violin really sound (and look) like</title><content type='html'>I've been trying to spend some time with the violin on a semi-regular basis.  When it's more regular, it sounds less bad.  I have a vague idea when i'm playing whether i'm horrible or tolerable, but listening to one's own self is a whole other thing.

Today it was raining, so i had to play indoors.  I hooked up rosegarden and set a cheap but remarkably effective gooseneck headset mic in the middle of the room and started playing.  You don't really want to hear it, trust me.  I'm trying to play more longingly minor keys because i like the sounds of them.  They sound like i feel a lot of the time.  Still, my fingers don't really know where they are.  While i'm playing, the "music in my head" cancels out many of these mistakes before they reach my ear.  In the recording i can "see" where i'm trying to go, but i hear all the mistakes quite clearly, too!

I was checking on the web to see if Rosegarden has a spectogram viewer inside it when i found this wonderful tool for audio visualizion - &lt;a href="http://www.sonicvisualiser.org/"&gt;sonic visualizer.&lt;/a&gt; I haven't been this impressed with audio software since, oh, rosegarden?  It's currently devouring 100% of one of the cores of my CPU rendering the full 10 minute spectrograph as i write this, but it updates to the current view very quickly.  It's user controls are *smooooooth*.

Here's a spectrograph view of 15-odd seconds (don't know why the time axis isn't labeled here...), with frequency and amplitude scales shown on the left.  I never really thought about it, but the harmonics are more widely spaced for high notes, accounting for the perceived "pureness" of the tone?  You can see the vibrato, too.  Pretty cool.  Click on the image to see it in decent-resolution.

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_wVbbIGLpjWE/SkRm3sBdyCI/AAAAAAAAAEM/n5xuKT4pz9c/s1600-h/viol-practice-spec.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 668px; height: 225px;" src="http://2.bp.blogspot.com/_wVbbIGLpjWE/SkRm3sBdyCI/AAAAAAAAAEM/n5xuKT4pz9c/s400/viol-practice-spec.png" alt="" id="BLOGGER_PHOTO_ID_5351515364119136290" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-9003438791019141255?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/9003438791019141255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/06/what-my-violin-really-sound-and-look.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/9003438791019141255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/9003438791019141255'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/06/what-my-violin-really-sound-and-look.html' title='What my violin really sound (and look) like'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wVbbIGLpjWE/SkRm3sBdyCI/AAAAAAAAAEM/n5xuKT4pz9c/s72-c/viol-practice-spec.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7405063528773854420</id><published>2009-06-19T17:29:00.010-07:00</published><updated>2011-06-04T21:46:59.149-07:00</updated><title type='text'>Lattice magic - top-to-bottom plotting order in xyplot</title><content type='html'>I've been wondering about this for a while - an alternative to as.table that fills from top-to-bottom first.  Working with paired timeseries, it's much easier to compare vertically, with time-axis already aligned. Deepayan's method is fast and general, and that's awesome...  &lt;a href="http://tolstoy.newcastle.edu.au/R/e2/help/07/07/21213.html"&gt;&lt;br /&gt;
&lt;br /&gt;
From R-help:  &lt;/a&gt;  Hi, Using library(lattice), is there any way to tell xyplot to plot panels top to bottom, then left to right (i.e. panels are appended vertically, then horizontally). as.table changes the plot direction from left-to-right then top-to-bottom, to right-to-left then bottom- to-top, but that's not quite what I want to do. Thanks Yan  &lt;br /&gt;
&lt;br /&gt;
Deepayan says: &lt;br /&gt;
&lt;pre&gt;&gt; tmp.tr3 &lt;- xyplot(y ~ x | a, data=tmp, as.table=TRUE)  &lt;/pre&gt;

Another high level option is to change the rule determining how packets are chosen for a given panel in the layout.  &lt;pre&gt;print(tmp.tr3,  packet.panel = function(layout, row, column, ...) { 
    layout &lt;- layout[c(2, 1, 3)]
    packet.panel.default(layout = layout, row = column, column = row, ...) 
})
&lt;/pre&gt;   
This effectively transposes the layout, which (along with as.table=TRUE) is what you want.  &lt;br /&gt;
-Deepayan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7405063528773854420?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7405063528773854420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/06/lattice-magic-top-to-bottom-plotting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7405063528773854420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7405063528773854420'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/06/lattice-magic-top-to-bottom-plotting.html' title='Lattice magic - top-to-bottom plotting order in xyplot'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-5449134265202490181</id><published>2009-06-15T02:13:00.006-07:00</published><updated>2009-06-15T02:40:28.171-07:00</updated><title type='text'>Obfuscated SQL</title><content type='html'>I've finally learned to create views early and often in postgres... They're like variables (with lazy evaluation).  Only different.  A lot different, in ways that make as much sense to me as conjugating weird tenses in french.

Here i've used multiple views stacked atop each other.  It's not the fastest way, but for hundreds of thousands of records, it's fast enough.

I have multiple loggers in different wells. Every well has its own datum.  Every file belongs to a logger, which in turn belongs to a well, and requires the correct datum.  I've had to join and union several different subqueries and views.  It's a god-aweful mess, but i think i finally got it.

&lt;pre class="PROGRAMLISTING"&gt;
--here's the magic: v_sourcedat
--matches source files to datums
create or replace view v_sourcedat as
        select  unit_id||well_num as well, datum_m, gw.sn, source
                from v_loggerdat wd,
                ( SELECT tmp.sn, min(tmp."time")::date AS start,
                        tmp.source FROM tmp_gwdata tmp
                        GROUP BY tmp.source, tmp.sn)
                gw
                where gw.sn = wd.sn::int
                and gw.source not in (select source from v_sourcetowell)
        union select unit_id||well_num as well, datum_m, gwo.sn, source
                from v_loggerdat wd,
                (select * from v_sourcetowell)
                gwo
                where gwo.well = wd.unit_id||well_num
        order by well;

-- using v_sourcedat, as above
-- the final data
create or replace view v_gwdata_4hr as
        SELECT datum.well, datum.sn, gw."time",
                gw.dtw::numeric(10,4) - datum.datum_m::numeric(10,4) AS dtw,
                gw.dtwsd, gw.temp, gw.tempsd
        FROM v_sourcedat datum
        JOIN gwdata_4hr gw using (source)
        WHERE gw.temp &lt;&gt; 3::numeric
        AND gw.dtw &gt; (-0.5) AND gw.dtw &lt; 4.5
        AND gw."time" &lt; '2010-01-01 00:00:00'::timestamp without time zone
        ORDER BY datum.well, datum.sn, gw."time";
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-5449134265202490181?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/5449134265202490181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/06/obfuscated-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5449134265202490181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5449134265202490181'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/06/obfuscated-sql.html' title='Obfuscated SQL'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4473038859808876556</id><published>2009-06-12T07:27:00.001-07:00</published><updated>2009-06-12T07:27:37.652-07:00</updated><title type='text'>flying standby</title><content type='html'>After a long and futile day at the airport yesterday watching summer afternoon thunderstorms make a hash of my travel plans, i booked for the 6am out of ABQ.&lt;p&gt;A brief list of miraculous events proceed:&lt;br&gt;1. Megan graciously and unexpectedly offers to drop me off at the god-aweful hour of 5am.&lt;p&gt;2. My alarm fails to wake me at the even more god-aweful hour of 4:30, but a gate-change triggers a call from Southwest at 5:20am. I&amp;#39;m obviously late.&lt;p&gt;3. There&amp;#39;s leftovers in BAM&amp;#39;s fridge, and megan spots me a V8.&lt;p&gt;4. At security, i&amp;#39;m shuttled into the pilot/express line. I fly through security despite an irrationally long 5:40am &amp;quot;normal&amp;quot; line.&lt;br&gt; &lt;br&gt;5. I don&amp;#39;t feel like a total zombie...&lt;p&gt;6. Pressure-induced condensation vortex from turbelence in the streamline off the wing during descent braking.&lt;br&gt; &lt;br&gt;7. belgian waffle with real butter&lt;p&gt;8. getting on the plane from denver to baltimore.&lt;p&gt;it&amp;#39;s shaping up to be areally nice day. i&amp;#39;m sure i&amp;#39;ll keel over eventually, in a safe place...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4473038859808876556?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4473038859808876556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/06/flying-standby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4473038859808876556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4473038859808876556'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/06/flying-standby.html' title='flying standby'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7333084302974664908</id><published>2009-06-06T18:16:00.009-07:00</published><updated>2009-06-15T02:21:22.594-07:00</updated><title type='text'>Postgresql Poetry? Aggregate median with PL/R</title><content type='html'>No, no poetry yet, but i think i'm getting closer to thinking like a query planner.  Today i learned aggregates.

Have i mentioned how much i love the postgresql documentation?

Unknownst to myself before today, postgres's aggregates are smart - they process as a stream when at all possible - so average keeps track of the running sum and number, and calculates the average at the end.

Which makes median tricky.  It depends on the length of input.  I have a median implimentation in PL/Perl that queries the table directly, asking it for length, and then extracts the needed records.  While this is efficient, it's much closer to magic than i'm comfortable with.

Armed with PL/R, I create a median function with the proper type, and then I create the aggregate using that function as the final calc, and a simple accumulator as the transistion function.  This isn't very efficient when the "group by" clause give large groups to be passed into the aggregate function, since the whole group has to be stored in memory.  But for lots of small groups (say, aggregating 4 samples per hour or 24 samples per day over a year or two), it gives ~20% performance gains.  Throw a "limit 5" clause in, and the performance gain increases to ~100%.

&lt;a href="http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgresql_plr_tut02"&gt;Here's a link to some truly amazing stuff folks are doing with PL/R.&lt;/a&gt;

-- sql code follows
-- first create the function, then the aggregate
&lt;pre class="PROGRAMLISTING"&gt;
CREATE OR REPLACE FUNCTION median(vals numeric[]) RETURNS float AS '
median(vals)
' LANGUAGE 'plr' STRICT;

CREATE AGGREGATE median (numeric)
(
sfunc = array_append,
stype = numeric[],
initcond = '{}',
finalfunc = median
);

--And usage
select sn, median(dtwm), count(dtwm), date_trunc('day', timestamp) as day from
gwdata where timestamp &lt; '2003-01-01' group by sn, day limit 5;   
-- sn  | median | count |          day  -----+--------+-------+------------------------  
-- 5526 |   1.59 |    24 | 2002-12-26 00:00:00-07  
-- 5539 | 1.7605 |    24 | 2002-02-27 00:00:00-07  
-- 5522 |  0.737 |    24 | 2001-10-03 00:00:00-07  
-- 5517 |   0.96 |    24 | 2001-11-05 00:00:00-07  
-- 5513 | 1.3855 |    24 | 2001-09-07 00:00:00-07  
-- Time: 247.126 ms     

-- Here's the PL/Perl median() function.  
-- Much less straightforwards, included for historical interest BEGIN { strict-&gt;import(); }
my ($tname,$cname) = @_;
my $SQL = "SELECT count($cname) AS t FROM $tname";
my $rc = spi_exec_query($SQL);
my $total = $rc-&gt;{rows}[0]{'t'};
$total &lt; offset =" ($total-1)/2;" sql = "SELECT $cname AS median FROM $tname     ORDER BY $cname OFFSET $offset LIMIT 1" sql = "SELECT avg($cname) AS median FROM   (SELECT $cname FROM $tname    ORDER BY $cname      OFFSET $offset LIMIT 2   ) AS foo" rc =" spi_exec_query($SQL);"&gt;{rows}[0]{median};
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7333084302974664908?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7333084302974664908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/06/postgresql-poetry-aggregate-median-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7333084302974664908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7333084302974664908'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/06/postgresql-poetry-aggregate-median-with.html' title='Postgresql Poetry? Aggregate median with PL/R'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-3785913885454937835</id><published>2009-06-01T22:31:00.004-07:00</published><updated>2009-06-01T22:40:04.758-07:00</updated><title type='text'>Dear google - "a driver is not registered for the url sdbc:postgresql"</title><content type='html'>I have an openoffice database project built around a postgresql database using the &lt;a href="http://dba.openoffice.org/drivers/postgresql/index.html"&gt;postgresql sdbc driver&lt;/a&gt;, Everything worked really well on my old machine.  Why doesn't it work on the new one? Does the driver not work for openoffice 3? Is it a jaunty issue? I followed the instructions and read the f@#$*'ing manual!

The error message is the title of this post - google doesn't give a fix, per se, and shows just a few hits, but reveals that it's a 32/64 bit issue.

Well then.  There appears to be a jaunty package, openoffice.org-sdbc-postgresql.  Does that work in and of itself (after i uninstall the bad 32 bit one)?  Nope.  But executing
### dpkg -L  openoffice.org-sdbc-postgresql | grep zip
shows me where the file i need is, and executing
### unopkg add `dpkg -L  openoffice.org-sdbc-postgresql | grep zip`
installed it for me.  Everything works - hoorah!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-3785913885454937835?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/3785913885454937835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/06/driver-is-not-registered-for-url.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3785913885454937835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3785913885454937835'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/06/driver-is-not-registered-for-url.html' title='Dear google - &quot;a driver is not registered for the url sdbc:postgresql&quot;'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-5264319888579086792</id><published>2009-05-25T19:32:00.005-07:00</published><updated>2009-05-28T16:25:44.879-07:00</updated><title type='text'>If only it were that simple... Enforced upgrade from feisty to jaunty</title><content type='html'>Pl/R abjectly refuses to build under Intrepid (8.10).  No package for it, requires postgresql source, and even then it fails.  But wait!  There's a Jaunty package.  A good excuse to upgrade (and postpone real work for another few hours)?  Can it be done over a remote ssh without knocking the box over?

On the upside, Oh My Lord, the campus network is Mad-Fast.

The new ubuntu install tools (do-release-upgrade) helpfully inform me:

"You have to download a total of 1735M. This download will take about
3 hours 40 minutes with a 1Mbit DSL connection and about 2 days 19
hours with a 56k modem. "

Um, yeah.  5 minutes later...

Done http://ftp.osuosl.org jaunty/main postgresql-contrib-8.3 8.3.7-1
[81%] 9469kB/s 35s

Holy mother-of-wow.  I love my campus, and i highly recommend ftp.osuosl.org for West Coasters looking for a screaming mirror.

Of course, unpacking takes a while.
First problems arise therein:

"dpkg: libjack0: dependency problems, but removing anyway as you request:
stk depends on libjack0 (&gt;= 0.109.2); however:
Package libjack0 is to be removed.
mplayer depends on libjack0 (&gt;= 0.109.2); however:
Package libjack0 is to be removed."

NOOOOoooo!  Give me back my libjack!  This is a work computer, and libjack is definitely not for work, though the psychic relief of multitrack recording with  rosegarden definitely helps.  What gives?

Total upgrade takes ~50 minutes.  At last:

System upgrade is complete.

Restart required

To finish the upgrade, a restart is required.
If you select 'y' the system will be restarted.

Continue [yN] y


Broadcast message from xian@ocimum
  (/dev/pts/2) at 20:19 ...

The system is going down for reboot NOW!

It goes down, and doesn't come back up.  Looks like i'll be driving into the lab today...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-5264319888579086792?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/5264319888579086792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/05/if-only-it-were-that-simple-enfoced.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5264319888579086792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5264319888579086792'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/05/if-only-it-were-that-simple-enfoced.html' title='If only it were that simple... Enforced upgrade from feisty to jaunty'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-5713594022357221490</id><published>2009-05-22T21:16:00.007-07:00</published><updated>2009-06-01T22:31:07.300-07:00</updated><title type='text'>Exploits in Brute Repetition - RODBC and Postgresql and Postgis and UnixODBC and Ubuntu</title><content type='html'>Database admin will make me old before my time...
It's a wicked-cool toolchain, but byzantine to say the least.

This is the third time i've gone through this as a fresh installation, and it sucks every time. Here i'm installing the database engine, setting up the database, adding db user, and restoring a dump.   This time, I've documented it... May you never have to do this from scratch through the google-tron!

#!/bin/bash
## steps to create frs database from scatch on ubuntu
## with system user as cluser superuser
## postgis setup included for package postgresql-8.3
sudo apt-get install postgresql-8.3 postgresql-8.3-postgis
sudo -u postgres createuser --superuser $USER
sudo -u postgres psql -c "alter role $USER encrypted password '*****'"
createdb $DB
createlang plpgsql $DB
psql -d $DB -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql
psql -d $DB -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql

## http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=441797
## postgis version issues...
# cd /usr/lib/postgresql/
# ln -s 8.3 8.2
# sudo ln -s  liblwgeom.so.1.3  liblwgeom.so.1.2
# time psql -d frs -f db.full-2008-06-24
#  psql -d frs -f /usr/share/postgresql-8.3-postgis/lwpostgis_upgrade.sql

## odbc
sudo apt-get install r-cran-rodbc
sudo apt-get install unixodbc psqlodbc
sudo odbcinst -i -d -f /usr/share/psqlodbc/odbcinst.ini.template
sudo su
cat /usr/share/doc/odbc-postgresql/examples/odbc.ini.template &gt;&gt;~/.odbc.ini

### edit the latter - name used to call by, db, passwd, etc.
### unixODBC doesn't do ident authentication???
exit
chmod 600 ~/.odbc.ini

### tune the server
### suggestions here: http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server
### and here: http://www.postgresql.org/docs/current/static/runtime-config-resource.html
### this machine has 4gb ram, services small number of concurrent connections
sudo vi /etc/postgresql/8.3/main/postgresql.conf
sudo sysctl -w kernel.shmmax=268435456
sudo sysctl -w kernel.shmall=4194304
sudo vi /etc/sysctl.conf
## set shmmax and shmall across reboots

# pulling data from postgres into R using a custom function - not too shabby for a half a million records!
#  system.time((tmp=query('v_dtw',  clause="limit 500000" )))
#   user  system elapsed
# 25.502  18.277  46.285&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-5713594022357221490?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/5713594022357221490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/05/exploits-in-brute-repetition-rodbc-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5713594022357221490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5713594022357221490'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/05/exploits-in-brute-repetition-rodbc-and.html' title='Exploits in Brute Repetition - RODBC and Postgresql and Postgis and UnixODBC and Ubuntu'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-8503827528525566384</id><published>2009-05-19T19:23:00.002-07:00</published><updated>2009-05-19T20:19:09.337-07:00</updated><title type='text'>Adventures in R Recursion</title><content type='html'>Spent the day on the coffee shop patio fielding OLPC questions - from "Wow, that's cool, what is it?" to "Where can i get one?" I demonstratively poured some tea on the keyboard at one point for waterproof emphasis to "coooool"s.  Good times.

Installed R on the green machine (which is now runing &lt;a href="http://www.olpcnews.com/forum/index.php?topic=4053.new"&gt;happy-fun-times modified ubuntu.&lt;/a&gt;
Spent time working out of Venables and Ripley's "S Programming" book - trying to keep some finals week brain momentum going...
Plunking example code into the green machine. I kept the screen backlight off, just using sunlight and low battery while the sun was up.  When i took a break from coding, i could hit the power button to put it to sleep.

So, i worked through some recursion examples, in the meantime discovering my own knowledge-gaps in indexing ( this[-index] is the compliment of this[index] for a numeric index vector, whereas this[!index] is the compliment for a logical index vector) and list packing.

Also, found a test example of "=" not the same as "&lt;-"

a=1:10
&gt; index1 = a&gt;2 ; any(index2&lt;-(a&gt;2)) ; identical(index1, index2)
[1] TRUE
[1] TRUE
&gt; index1 = a&gt;5 ; any(index2=(a&gt;5)) ; identical(index1, index2)
[1] TRUE
[1] FALSE
### index2 assignment isn't made... why?!

I find recursion confusing; debugging recursive functions is especially so!  The fruits of my labor are here, with examples of all of the above...

mk.recur = function(a,lim=5, fac=2){
## takes a numeric vector, returns a list of numeric vectors
## with elements greater than lim, multiplied by fac recursively
   if(any(index&lt;-a&gt;lim)) {ret=list(a[index])}
   if(length(a[!index])==0) {return(ret)}
   ret=append(ret, Recall(fac*a[!index], lim, fac))
   return(ret)
}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-8503827528525566384?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/8503827528525566384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/05/adventures-in-r-recursion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8503827528525566384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8503827528525566384'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/05/adventures-in-r-recursion.html' title='Adventures in R Recursion'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-3367957078774426841</id><published>2009-05-12T23:41:00.001-07:00</published><updated>2009-05-12T23:41:12.810-07:00</updated><title type='text'>the trigonometry of seeing and being seen (and watching it all happen)</title><content type='html'>in day-to-day exchanges, we often indicate our attention to each other, whether or not we&amp;#39;re actually listening. a nod of a head, &amp;quot;uhuh&amp;quot;, raised eyebrows, smirks &amp;amp; frowns &amp;amp; winks. all these are directional; their target is clear.&lt;p&gt;at a distance, it&amp;#39;s harder to know whether he&amp;#39;s checking you out or reading your shirt. when 2 people are in close conversation, it&amp;#39;s trivial to tell that they&amp;#39;re &amp;quot;gazing into each other&amp;#39;s eyes&amp;quot;.&lt;p&gt;basic trigonometry shows that the farther the distance, the less the angle. further, to watch a watcher watching is even trickier - i&amp;#39;m uncertain of the angle between watcher, watched, and me, let alone where their eyes point.&lt;p&gt;all of this makes it devilishly hard to tell if someone&amp;#39;s checking someone other than you out (and which part) if they&amp;#39;re sufficiently far away from either. yet two people from afar notice quickly if they&amp;#39;re checking each other out - i know where i am in space.&lt;p&gt;try it. i bet the best you can tell is whether someone&amp;#39;s looking at you or not...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-3367957078774426841?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/3367957078774426841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/05/trigonometry-of-seeing-and-being-seen.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3367957078774426841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3367957078774426841'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/05/trigonometry-of-seeing-and-being-seen.html' title='the trigonometry of seeing and being seen (and watching it all happen)'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-2625916152740481440</id><published>2009-04-24T01:07:00.001-07:00</published><updated>2009-04-24T01:07:10.574-07:00</updated><title type='text'>grading tests is good for something</title><content type='html'>amazing revelation - they always seem so at the time.&lt;p&gt;bloodflow takes a while to catch up with thought. i do the same thing over &amp;amp; over for 5 minutes, and im in the groove.&lt;p&gt;fMRI tells me so.&lt;p&gt;same thing for an hour and im toast. i reckon it&amp;#39;s some combination of glucose supply and metabolic waste. ah, the likitations of the flesh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-2625916152740481440?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/2625916152740481440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/04/grading-tests-is-good-for-something.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2625916152740481440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2625916152740481440'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/04/grading-tests-is-good-for-something.html' title='grading tests is good for something'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6101370051193586769</id><published>2009-04-06T17:03:00.001-07:00</published><updated>2009-04-06T17:05:01.187-07:00</updated><title type='text'>fieldwork</title><content type='html'>Woke up at 6 am - the earliest in 6 months maybe? Spent the day in the field picking up all those aging, half-broken groundwater loggers and bringing them home for good.  No more Bosque del Apache, which is kinda sad. No more Lemitar, which is really nice.

No more Southern NM mosquitos!

Workday in the sun makes boy happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6101370051193586769?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6101370051193586769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/04/fieldwork.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6101370051193586769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6101370051193586769'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/04/fieldwork.html' title='fieldwork'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-9044190507860584503</id><published>2009-03-26T23:09:00.009-07:00</published><updated>2009-03-26T23:29:16.137-07:00</updated><title type='text'>A delicate operation</title><content type='html'>I formalized my Current Research Statement today for a fellowship that I'm not, at this moment, a smashing candidate for.  I beat my head against the conclusion, and i'm still not exactly happy with it, but i attached it and pressed send nonetheless.

It's amazing how many errors go unchecked until i print it out and see it on paper...

As always, seeing it in latex makes me happy (though i'm not sure how i feel about this ultra-low-res blogger pic - click for something that doesn't make your eyes bug out!):

&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/ScxwIPQpzhI/AAAAAAAAAD8/IPWY6W53Rko/s1600-h/pibbs1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 179px; height: 252px;" src="http://4.bp.blogspot.com/_wVbbIGLpjWE/ScxwIPQpzhI/AAAAAAAAAD8/IPWY6W53Rko/s400/pibbs1.jpg" alt="" id="BLOGGER_PHOTO_ID_5317748546855357970" border="0" /&gt;&lt;/a&gt;


&lt;a href="http://2.bp.blogspot.com/_wVbbIGLpjWE/ScxwfoexGdI/AAAAAAAAAEE/jvs82BTN_CY/s1600-h/pibbs2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 184px; height: 258px;" src="http://2.bp.blogspot.com/_wVbbIGLpjWE/ScxwfoexGdI/AAAAAAAAAEE/jvs82BTN_CY/s400/pibbs2.jpg" alt="" id="BLOGGER_PHOTO_ID_5317748948762434002" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-9044190507860584503?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/9044190507860584503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/03/delicate-operation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/9044190507860584503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/9044190507860584503'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/03/delicate-operation.html' title='A delicate operation'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/ScxwIPQpzhI/AAAAAAAAAD8/IPWY6W53Rko/s72-c/pibbs1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-1001218276641499262</id><published>2009-03-23T21:17:00.003-07:00</published><updated>2009-03-23T21:46:00.128-07:00</updated><title type='text'>Getting out of town, getting blown around</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_wVbbIGLpjWE/SchkwZARMSI/AAAAAAAAADk/ntpCYYaKccM/s1600-h/wxStationGraphAll.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 310px; height: 400px;" src="http://1.bp.blogspot.com/_wVbbIGLpjWE/SchkwZARMSI/AAAAAAAAADk/ntpCYYaKccM/s400/wxStationGraphAll.gif" alt="" id="BLOGGER_PHOTO_ID_5316610142619382050" border="0" /&gt;&lt;/a&gt;
We managed to get out of town for 2 nights.   The first night we found an awesome flat-bottomed spruce hollow, sheltered and moist with plenty of firewood, a few miles away from the VLA.  It was magical to look down on the VLA on the drive out of the mountains.

The second day was terribly windy.
Gusts to 45 miles an hour?  Sounds about right.  The car wobbling around on the highway.  Somehow we managed to find a strangely sheltered camp spot in the middle of the woods - some quirk of local topography sent the wind whistling over our heads - to cook our mac-n-cheese and snuggle into bed with the sake.

We booked it back home today to get M. to class. I still have a head cold, so today hasn't been too productive otherwise.

Here's where we went:
&lt;a href="http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=87106&amp;amp;daddr=Forest+Rd+549%2FNM-52+to:34.114292,-109.493866+to:US-191+to:87106&amp;amp;hl=en&amp;amp;geocode=%3B%3BFfSKCAIdlkF5-Q%3BFaQOGQId8rZ7-Q%3B&amp;amp;mra=ls&amp;amp;sll=35.160337,-108.132935&amp;amp;sspn=1.609939,3.523865&amp;amp;ie=UTF8&amp;amp;ll=34.800272,-107.882996&amp;amp;spn=1.617033,3.523865&amp;amp;t=h&amp;amp;z=9"&gt;http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=87106&amp;amp;daddr=Forest+Rd+549%2FNM-52+to:34.114292,-109.493866+to:US-191+to:87106&amp;amp;hl=en&amp;amp;geocode=%3B%3BFfSKCAIdlkF5-Q%3BFaQOGQId8rZ7-Q%3B&amp;amp;mra=ls&amp;amp;sll=35.160337,-108.132935&amp;amp;sspn=1.609939,3.523865&amp;amp;ie=UTF8&amp;amp;ll=34.800272,-107.882996&amp;amp;spn=1.617033,3.523865&amp;amp;t=h&amp;amp;z=9&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-1001218276641499262?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/1001218276641499262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/03/getting-out-of-town-getting-blown.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1001218276641499262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1001218276641499262'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/03/getting-out-of-town-getting-blown.html' title='Getting out of town, getting blown around'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/SchkwZARMSI/AAAAAAAAADk/ntpCYYaKccM/s72-c/wxStationGraphAll.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-648843627249070246</id><published>2009-03-18T21:36:00.001-07:00</published><updated>2009-03-18T21:36:56.401-07:00</updated><title type='text'>the most exciting part of my spring break</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/ScHL6KMNRjI/AAAAAAAAADc/1RltCGMDT7A/s1600-h/0318092230-716402.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/ScHL6KMNRjI/AAAAAAAAADc/1RltCGMDT7A/s320/0318092230-716402.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5314753235302303282" /&gt;&lt;/a&gt;&lt;/p&gt;is not grading genetics 202 exams. something like 250 tests at about 30 tests an hour (counting setup overhead... hopefully data entry won&amp;#39;t blow that average too much) gives me 8 hours of grading. yep, sounds about right. 8 hours of numbing repetition, some students bright, some cleuless, most somewhere in the middle.&lt;p&gt;in an interview, the famous evolutionary biologist remarked that patience is necessary for science (manipulative paraphrase, that). paint me red and call me a scientist in training. patience and repitition are by no means my strong points!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-648843627249070246?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/648843627249070246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/03/most-exciting-part-of-my-spring-break.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/648843627249070246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/648843627249070246'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/03/most-exciting-part-of-my-spring-break.html' title='the most exciting part of my spring break'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/ScHL6KMNRjI/AAAAAAAAADc/1RltCGMDT7A/s72-c/0318092230-716402.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6559905542197985361</id><published>2009-03-17T19:02:00.001-07:00</published><updated>2009-03-17T19:02:42.432-07:00</updated><title type='text'>waiting for a sandwich</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/ScBWQjtT6OI/AAAAAAAAADU/Fe_BM9f82dc/s1600-h/0317091956a-762433.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/ScBWQjtT6OI/AAAAAAAAADU/Fe_BM9f82dc/s320/0317091956a-762433.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5314342402760370402" /&gt;&lt;/a&gt;&lt;/p&gt;i&amp;#39;m presented with this jem of modern commerce. yes, the white can on the right actually says &amp;quot;free cocaine&amp;quot;...  what will these folks think of next? fat-free heroin?&lt;p&gt;its the little breaks in life, waiting in line, for laundry, short enough to pause but not long enough to do anything useful, that sends these strange little missives out into the ether...&lt;p&gt;and yes, the lack of cut-and-paste on this phone is truly a sorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6559905542197985361?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6559905542197985361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/03/waiting-for-sandwich.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6559905542197985361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6559905542197985361'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/03/waiting-for-sandwich.html' title='waiting for a sandwich'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/ScBWQjtT6OI/AAAAAAAAADU/Fe_BM9f82dc/s72-c/0317091956a-762433.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-3024621028596414943</id><published>2009-02-12T00:01:00.001-07:00</published><updated>2009-02-12T00:01:40.370-07:00</updated><title type='text'>darwin continued - see previous post first!</title><content type='html'>It gets weirder. Evidence that females prefer manly men when fertile, and caring men when not... Females, like the nest-robber bird, can see big gains by capturing the choicest &amp;quot;extra-marital&amp;quot; sperm for babies, and getting the hubby to feed and cloth them.&lt;p&gt;&amp;quot;choice&amp;quot; men, for their part, can gain from this arrangement if they can detect fertile women.... or they can lose, unless they guard the &amp;quot;old lady&amp;quot; from the &amp;quot;wolves&amp;quot;. my quotes.&lt;p&gt;the cost-benefit matrix is pretty simple - all women benefit from one caregiver and one or more hunks, same person or different. some men benefit from caring for one female, some from sleeping with many and caring for one or none, and some take care of others&amp;#39; kids!&lt;p&gt;Darwin&amp;#39;s are examples of theories so clearly articulated as to be self-evident to the receptive listener (though he provided heaps of evidence in support thereof). Here too i see sense. The bar is the microcosm, &amp;amp; experiment bears it out. My fave - fertile fems prefer smell of symmetric males.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-3024621028596414943?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/3024621028596414943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/02/darwin-continued-see-previous-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3024621028596414943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/3024621028596414943'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/02/darwin-continued-see-previous-post.html' title='darwin continued - see previous post first!'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-9090332640845995442</id><published>2009-02-11T23:44:00.000-07:00</published><updated>2009-02-11T23:46:47.748-07:00</updated><title type='text'>Darwin Day  Dr. Thornberg  and the evolution of human female sexuality</title><content type='html'>By luck or by fate, his talk was moved and i managed to catch it today, the day before Darwin&amp;#39;s 200th birthday. It&amp;#39;s still blowing my mind.&lt;p&gt;Jumping ahead, humans are the only known species in which females don&amp;#39;t advertise fertility, In fact, it seems they hide it.&lt;p&gt;What better place to observe female fertility concealment and mate guarding by males than at a bar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-9090332640845995442?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/9090332640845995442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/02/darwin-day-dr-thornberg-and-evolution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/9090332640845995442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/9090332640845995442'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/02/darwin-day-dr-thornberg-and-evolution.html' title='Darwin Day  Dr. Thornberg  and the evolution of human female sexuality'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6035373571265165705</id><published>2009-02-11T20:19:00.005-07:00</published><updated>2009-02-11T20:54:49.677-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech audio'/><title type='text'>Xiph.org -- Ogg's ugly step-child lives on</title><content type='html'>For years i compressed music into ogg vorbis, before ultimately admitted loosing the device-war.  Ipods don't play ogg, which sucks.  But i have no control over Apple.  (I can tell old age is coming quickly, since i don't really care too much about things i can't control anymore.  It's the things i can control that i can regret at my own leisure).

Drawing similarities between ogg's parent organization, &lt;a href="http://xiph.org/"&gt;Xiph.org&lt;/a&gt;, and OLPC, is tempting.  They both promised to save the world in the face of sta&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;tic, property-ized,  inferior technology (mp3 for the former, something more amorphous for the XO).  They both were non-profits that, to an arguable extent, over-sold and under-delivered.

The OLPC is (mostly) dead.  Long live Pixel Qi.
Ogg Vorbis is (mostly) dead.  Long live Flac.

Flac is my new favorite format.  The compressor is blazing fast compared to lossy compressors like mp3 and ogg vorbis - limited, seemingly, by disk I/O.  As a format, it seems to do everything better than WAV, while consuming a fraction of the space.  I can't seek through them, they can't contain the most basic of meta-data, let alone real honest-to-god ID3 tags.  With blank DVDs the price they are, and lossy audio codec wars heating back up with AAC, AAC+, etc., i'm stashing "the goods" away in lossless flac for future transcoding to whatever the heck i want, as needed.

-----
edit:
The above is a bit too harsh on Xiph.org, i suppose.  After peering around, the have a plethora of codex alive and kicking - Speex, OggPCM, a low latency format, and HARK! Theora just hit 1.0 with a &lt;a href="http://blog.mozilla.com/blog/2009/01/26/in-support-of-open-video/"&gt;$100,000 grant from Mozilla&lt;/a&gt;.  Holy crap!

So where does that put us? The ipod video *definitely not* supporting Theora?  I'm not talking about the Ipod because i have one or love one.  I'm talking about it because people buy them and use them in shockingly large numbers.  Firefox is capturing marketshare, and is a good vehicle to consume Theora on.  Still, what format plays on the device that fits in someone's pocket has a huge impact on the usefulness of the format -- and i don't expect lossless video, really ever.  What would be the point?

What i really want is programmable hardware.  I don't want use my laptop as a phone or an alarm clock!  But I can't really program my alarm clock, let alone my phone, and that really bugs me. 

So, as a final and decidedly asymptotic aside, i want to mention that intel just announced an upgrade of it's Rio Rancho, NM chip fab to 35nm process (yes, there's sometimes real news in the Albuquerque Journal after all...).  I mention this to highlight how few nanometers there are between 35 and 0!  The race towards high transistor density is grinding towards completion.

I hope (though i'm not holding my breath) that we're approaching a new era of *smarter* hardware, not just blazing fast oh-my-god-so-much-in-a-tiny-package hardware -- and my first criteria of smart is *programmable*, making the format wars obsolete.  How'd'ya think big brother would feel about that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6035373571265165705?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6035373571265165705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/02/xiphorg-oggs-ugly-step-child-lives-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6035373571265165705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6035373571265165705'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/02/xiphorg-oggs-ugly-step-child-lives-on.html' title='Xiph.org -- Ogg&apos;s ugly step-child lives on'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-1231559428993724459</id><published>2009-02-05T14:01:00.000-07:00</published><updated>2009-02-05T14:02:20.959-07:00</updated><title type='text'>sleep cont</title><content type='html'>1 dropperful, twice a day. It&amp;#39;s deep red, a tastes a bit like sunshine, in an earthy sort of way.&lt;p&gt;Superifially, i feel more relaxed. I&amp;#39;m still not &amp;quot;thirsty&amp;quot; for sleep, 6 or 7 hours seems to do me, which is a bit surprising.  This morning, though, the dreams.  I was in a hurricane in coastal alaska. Don&amp;#39;t ask me how... Not scary, more like thrilling, watching the waves build. Then the eye came over, and i ran out into the sudden clear, giddy. I&amp;#39;ve always wanted to see the eye of a hurricane. &lt;p&gt;I feel refreshed. The sun&amp;#39;s out. I&amp;#39;m glad that, so it seems, the worst is over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-1231559428993724459?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/1231559428993724459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/02/sleep-cont.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1231559428993724459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/1231559428993724459'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/02/sleep-cont.html' title='sleep cont'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-8134726213062057423</id><published>2009-02-05T13:57:00.001-07:00</published><updated>2009-02-05T13:57:42.918-07:00</updated><title type='text'>On Seasons and Sleep</title><content type='html'>&amp;quot;Sleeping is my hobby&amp;quot;&lt;p&gt;That quote from one of my bosses. I tend to concur. In the runOup to the winter solstice, i found myself with an insatiable hunger for sleep. 9 to 10 solid hours, day after day. It was magical &amp;amp; comforting &amp;amp; confusing all at once. I could weather a single night of 5 hours of sleep once a week perhaps, and then i had to hibernate. Any less sleep &amp;amp; i soon became a zombie, walking brain-dead.&lt;p&gt;The sun started coming back, the weather became mild, and the semester started. That last one, i&amp;#39;m sure, affected me most in the short-term. The sudden rush of people, ideas, and deadlines was pure overstimulation. For days at a time, i was awake at night, restless. I lay in bed, closed my eyes, and opened them a few hours later. It&amp;#39;s not that i was &amp;quot;trying&amp;quot; to go to sleep, There was simply little sleep to be had, and little rest in the sleep that came.&lt;p&gt;I started to fall apart a bit.&lt;p&gt;I started on St. john&amp;#39;s wort tincture last sunday. Frsh stuff, made in town.&lt;p&gt;t&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-8134726213062057423?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/8134726213062057423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/02/on-seasons-and-sleep.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8134726213062057423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/8134726213062057423'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/02/on-seasons-and-sleep.html' title='On Seasons and Sleep'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4049911461107717478</id><published>2009-02-03T22:11:00.007-07:00</published><updated>2009-02-03T23:26:24.237-07:00</updated><title type='text'>What i use, and how</title><content type='html'>I've been trying to set up my first dual-screen set up, and make it ultra-sweet.  I'm using ubuntu and openbox, and i find myself searching for and rediscovering sites and techniques, along with new ones.  So, here's a quick document of what i'm using on my desktop!

First off, my two favorite desktop art sites are here - sooooo nice
&lt;a href="http://www.pixelgirlpresents.com/"&gt;http://www.pixelgirlpresents.com/&lt;/a&gt;
&lt;a href="http://www.deviantart.com/"&gt;http://www.deviantart.com/&lt;/a&gt;

There's a nice nvidia card in this machine, so I can use the "nvidia-settings" program to set up twinview super-quick to have 2 separate X displays. To run a program on a particular one, i just precede the command with DISPLAY=:0.0

One remarkable discovery was switch2, which handles gtk themes.  I'm a black-background fanatic. i can't believe i didn't find this earlier.  i always assumed that the window manager handled coloring inside windows, but *obvious in retrospect* that's the application's job, with help from gtk.  Yeeesh, learn something profound with each new install!  I picked up some themes from here:
&lt;a href="http://www.gnome-look.org/index.php?xsortmode=high&amp;amp;page=0&amp;amp;xcontentmode=100"&gt;http://www.gnome-look.org&lt;/a&gt;/, though it took me a while to figure out how to use them.... sigh.  I settled on a theme called "kore".  I really like it's Qt firefox buttons, and rounded everything.


I'm using .xsession to start and position everything - using gdm, I select the "Run Xclients script".  This is ***far*** from counter-intuitive.  So, here's my xsession, that points out a lot of the programs i settled on...

DISPLAY=:0.1 openbox &amp;amp;   #### i have to start one on each display
#DISPLAY=:0.1 ggl-gtk &amp;amp;   ### google applets, don't work for some reason
xmodmap -e 'keycode 66 = Control_L' &amp;amp;   # Make capslock a control key
xmodmap -e 'clear Lock' &amp;amp;
xmodmap -e 'add Control = Control_L' &amp;amp;
#DISPLAY=:0.1 gkrellm -c c2&amp;amp;
DISPLAY=:0.0 feh --bg-center ~/.config/openbox/Underwater-City_1600.jpg   ###from pixelgirlpresents.com
DISPLAY=:0.0 fbpanel &amp;amp;   ### supports transparency!
DISPLAY=:0.0 gkrellm &amp;amp;   ### all-in-one monitoring!
DISPLAY=:0.0 firefox &amp;amp;
xscreensaver --nosplash    ### i use this to lock screen
DISPLAY=:0.1 xfce4-terminal --geometry 85x31+0+0 --hide-borders --hide-menubar &amp;amp;  ### look ma! a terminal!!!
#DISPLAY=:0.1 xfce4-terminal &amp;amp;
DISPLAY=:0.0 amarok --display :0.0 &amp;amp;
DISPLAY=:0.0 exec openbox

Here's the interesting screen

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SYkytTmziUI/AAAAAAAAAC8/LjGnQPlqyhY/s1600-h/MyScreenshot2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SYkytTmziUI/AAAAAAAAAC8/LjGnQPlqyhY/s400/MyScreenshot2.png" alt="" id="BLOGGER_PHOTO_ID_5298822190516635970" border="0" /&gt;&lt;/a&gt;

and here's where i do all the work - no borders, no scroll bar, just the tab indicators at the top.  the mouse wheel and Ctrl-Shift-Up still scrolls, and the X paste buffer does it's duty. Hmmm, looks like gkrellmd is doing WAY more work than it needs to... For my part, real work was obviously lacking so far today!  Yeesh, let me count the ways i'm not doing work... 1,2,3,4, a, b, .... -

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_wVbbIGLpjWE/SYkzfo_Y_SI/AAAAAAAAADM/r_4bYTON9yM/s1600-h/MyScreenshot1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_wVbbIGLpjWE/SYkzfo_Y_SI/AAAAAAAAADM/r_4bYTON9yM/s400/MyScreenshot1.png" alt="" id="BLOGGER_PHOTO_ID_5298823055250357538" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4049911461107717478?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4049911461107717478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/02/what-i-use-and-how.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4049911461107717478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4049911461107717478'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/02/what-i-use-and-how.html' title='What i use, and how'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SYkytTmziUI/AAAAAAAAAC8/LjGnQPlqyhY/s72-c/MyScreenshot2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-5312598479442425761</id><published>2009-01-25T15:03:00.009-07:00</published><updated>2009-01-25T18:15:29.802-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ebay shame phone nyt'/><title type='text'>Tech Withdrawal and the Ebay Wall of Shame</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SX0Oh_eBhcI/AAAAAAAAAC0/tU544xO9-N8/s1600-h/Screenshot-crop.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 244px;" src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SX0Oh_eBhcI/AAAAAAAAAC0/tU544xO9-N8/s400/Screenshot-crop.png" alt="" id="BLOGGER_PHOTO_ID_5295404713993405890" border="0" /&gt;&lt;/a&gt;
I bought a used LG vx9800 phone on ebay from a flesh-and-blood human (not a mega-seller) a few months ago. I love it, and I've become melded to it, borg-style, since then.

I lost my phone charger about 2 weeks ago.  My phone died a few days later.  A day or two after that, I started retracing my steps to find it, to no avail. Now i'm, for all practical purposes, a cripple.  I'm reading scientific papers and hitting upon words i don't know, and I have no google sms dictionary to rescue me. I can't send myself deadline reminders, or post half-useless ruminations from the coffee-shop while waiting for an electrical outlet to free up.  As it stands now, I'm running an electrical cable to my laptop across a busy coffeeshop isle, and i have to re-plug it in after it's kicked out every 5 or 10 minutes...

In a desperate attempt to return my life to normalicy, I turn to ebay to get a decent-priced charger.  Yet I made the not-uncommon mistake of going too cheap.  3 chargers for $10, shipping included.  I figure if one's a lemon, then I still have 2, which allows me to lose one and still have a phone.

Nope.  They all suck.  Sure, I know they're going to be ultra-cheap, but they should work, right?  Wrong.  They're effectively designed *not* to charge my phone.  Within 5 minutes of charging, the phone says "charge complete", and it's obviously not.
( I should point out that a bad charger can be worse than no charger at all (in a sense).  A mis-behaved charger can overload and overheat the battery, essentially destroying it in a surprisingly short period of time.)



In short, I should have known better.

On a related note, ebay's profits from ebay.com are down steeply for the year ( see &lt;a href="http://www.nytimes.com/2009/01/22/technology/companies/22ebay.html"&gt;here&lt;/a&gt;).  Paypal and the more recently acquired skype, along with advertising, are holding the dogs at bay for now ( see &lt;a href="http://www.nytimes.com/2008/10/07/technology/07ebay.html"&gt;here&lt;/a&gt; ).

It's shit like like this that is eating ebay alive from the inside.  Here's where I bought my charger.
&lt;a href="http://feedback.ebay.com/ws/eBayISAPI.dll?ViewFeedback2&amp;amp;userid=accstation&amp;amp;ftab=AllFeedback&amp;amp;_trksid=p3911.c0.m198"&gt;From the looks of it, they're rapidly shoveling ultra-cheap Asian electronics to market, getting a 99.2% approval rating on enormous volume, which means lots of unhappy folks in absolute numbers.&lt;/a&gt;

Here's one good post that addresses their current crisis ( see &lt;a href="http://bits.blogs.nytimes.com/2008/01/24/john-donahoes-plan-to-save-ebay-better-search/"&gt;here&lt;/a&gt; ), but it looks like a *lot* of folks, both buyers and sellers, are pretty pissed off ( see &lt;a href="http://bits.blogs.nytimes.com/2007/12/17/the-depth-of-ebays-problems-2-angry-sellers/"&gt;here&lt;/a&gt; )
Looking back in time, things get even weirder.  Ebay purchased a 25% stake in Craigslist and then sued them??? ( see &lt;a href="http://www.nytimes.com/2008/04/22/technology/22cnd-ebay.html"&gt;here&lt;/a&gt; ).  I've drawn heavily from the NYT here, but the WSJ isn't free...

My best ebay purchases, over time, have been second-hand electronics.  I regularly include the word "used" in my search terms.  There are some great deals out there on second-hand 70's electronics (provided it doesn't cost $50 to ship - an well-made 1970s reciever/amp can easily weigh 40+ pounds). It's like going to a great big yardsale that's open at times other than Saturday from 6am-2pm.

What's the lesson here?  I re-ordered 2 OEM (original equipment manufacturer) chargers - i.e. they're made by LG.  We'll see if this works any better.  Still, it's another week before I get the rest of my life back. How many more days before my outgoing voicemail message that pleads, "the fastest way to contact me is to send a text message to this number" once again becomes true?  How many days before I'm carrying a 5.2 oz dictionary in my backpack?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-5312598479442425761?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/5312598479442425761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/tech-withdrawal-and-the-ebay-wall-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5312598479442425761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5312598479442425761'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/tech-withdrawal-and-the-ebay-wall-of.html' title='Tech Withdrawal and the Ebay Wall of Shame'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SX0Oh_eBhcI/AAAAAAAAAC0/tU544xO9-N8/s72-c/Screenshot-crop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4507880047457708902</id><published>2009-01-12T20:04:00.000-07:00</published><updated>2009-01-12T20:07:22.972-07:00</updated><title type='text'>why i'm nocturnal</title><content type='html'>from time to time, especially after a long interlude of relative peace &amp;amp; self-determination (like the one after the holidays), i forget just how much i dislike crowds &amp;amp; traffic.&lt;p&gt;then i wake up one day relatively early &amp;amp; leave my cave relatively early in order to accomplish some grand &amp;amp; useful task in pursuit of the higher good, something that involves a business establishment that closes @ 5pm, or requires sunlight.&lt;p&gt;the onslaught, the horror! where did all these people come from, and where are they going?!&lt;p&gt;today i checked the groundwater wells down by the river. i can&amp;#39;t do it after sunset, not at all. trust me. i tried. it&amp;#39;s much warmer in the day, too, &amp;amp;very peaceful and pretty.&lt;p&gt;getting there is murder, tho.&lt;p&gt;i go to winnings for coffee and breakfast. its packed. people are talking to me. i&amp;#39;m talking back. why?! i just want to eat and read the paper.&lt;p&gt;next, bumper-to-bumper traffic on the one ways. where are so my folks going @ 3pm? interstate construction.&lt;p&gt;ick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4507880047457708902?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4507880047457708902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/why-im-nocturnal.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4507880047457708902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4507880047457708902'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/why-im-nocturnal.html' title='why i&apos;m nocturnal'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4707362299521159517</id><published>2009-01-09T17:36:00.000-07:00</published><updated>2009-01-09T17:38:30.234-07:00</updated><title type='text'>The best/worst sunset in town</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SWfuBir0c0I/AAAAAAAAACk/picSpNAbNDs/s1600-h/0109091706-710236.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SWfuBir0c0I/AAAAAAAAACk/picSpNAbNDs/s320/0109091706-710236.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5289457997627814722" /&gt;&lt;/a&gt;&lt;/p&gt;Few things hightlight the mind&amp;#39;s eyes ability to filter and highlight like cellphone pics. Here&amp;#39;s an especially dramatic one taken of the East Mountains at sunset, with a luminously full moon hanging overhead.&lt;p&gt;This intersection of Lomas and 12th gives one of the best views of the mountains in downtown. Too bad its framed by powerlines and 6 lanes of rush-hour traffic and fumes.&lt;p&gt;Somehow my mind and my eye are very good at picking out and focusing on the wonder of the sunset-peach-colored mountains and bits of cloud in the distance. I&amp;#39;d linger, but the fumes of ABQ&amp;#39;s numerous beaters, and the frantic pace of the intersection, are harder to ignore. Instead, i snap a picture and trot away down quiet, house-lined 12th which, pleasant as it is, lacks the view.&lt;p&gt;This pic looks nothing like what i saw.&lt;p&gt;Human eyes are mechanical and informational wonders (see new years post!), functioning in a wider range of lighting than any camera, and responding faster. Cell cameras are the opposite...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4707362299521159517?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4707362299521159517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/bestworst-sunset-in-town.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4707362299521159517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4707362299521159517'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/bestworst-sunset-in-town.html' title='The best/worst sunset in town'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SWfuBir0c0I/AAAAAAAAACk/picSpNAbNDs/s72-c/0109091706-710236.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4300956356068124896</id><published>2009-01-09T17:25:00.001-07:00</published><updated>2009-01-09T18:41:11.680-07:00</updated><title type='text'>google text</title><content type='html'>i've been having a lot of fun with google's sms search engine (see &lt;a href="http://sms.google.com/"&gt;http://sms.google.com&lt;/a&gt;). it sounds so simple as to be trivial, but its really groovy.&lt;p&gt;example: text "w zipcode" to 46645, and get this ( for 9 jan 2009):
&lt;/p&gt; Weather:
Albuquerque, NM 87106
42F, Cloudy
Wind: N 19 mph
Hum: 42%
Fri: 25F-54F, Mostly Sunny
Sat: 22F-47F, Mostly Sunny
Sun: 25F-47F, Clear&lt;p&gt;"w", of course, stands for weather. "d" is define, etc. exactly what "etc." is, though, can be ambiguous. &lt;/p&gt;&lt;p&gt;i send two msgs, "help" and "info" and get useful summaries on how to use the system in response (the wonders of self-describing software!), and i learn that a search for "current movie city" should give me local showtimes.&lt;/p&gt;&lt;p&gt;unless, of course, the current movie is a particular oliver stone flick named "w."&lt;/p&gt;&lt;p&gt;it's an great question - how much is the software expected to infer from context, and how much contextual info is the user expected to provide?  personally,  with a specialized interface like txtmsg where brevity is a virtue, i really like the "keyword query" model, where the keyword can be abbrev to a single letter.&lt;/p&gt;&lt;p&gt;google, if you're listening use m for movie! 20-some letters await good context assignments...
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4300956356068124896?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4300956356068124896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/google-text.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4300956356068124896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4300956356068124896'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/google-text.html' title='google text'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4167911632393990307</id><published>2009-01-07T22:59:00.000-07:00</published><updated>2009-01-07T23:00:26.270-07:00</updated><title type='text'>Real Good Food - Que Huong Vietnaemese</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SWWWeg6aeaI/AAAAAAAAACU/iSKtj8gLDmo/s1600-h/0107091900-726273.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SWWWeg6aeaI/AAAAAAAAACU/iSKtj8gLDmo/s320/0107091900-726273.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5288798788391696802" /&gt;&lt;/a&gt;&lt;/p&gt;We&amp;#39;re cold. It&amp;#39;s windy. We need hot salty spicy noodle soup, so we go looking for Cafe Da Lat. It&amp;#39;s disappeared off the north side of central and, presumably, the face of Albuquerque.&lt;p&gt;Just across the street from Talin, hark! Vietnamese with tons of neon beer signs and lots of cars parked in a small lot. Bingo!&lt;p&gt;Big, exciting menu. Cheap as all get-out, fast service, *strong tea*, and really good hot noodle soup.&lt;p&gt;No take out menu. Just a business vard that says &amp;quot;the best vietnamese food in town&amp;quot;. So far, i agree...&lt;br&gt;262-0575&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4167911632393990307?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4167911632393990307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/real-good-food-que-huong-vietnaemese.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4167911632393990307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4167911632393990307'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/real-good-food-que-huong-vietnaemese.html' title='Real Good Food - Que Huong Vietnaemese'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SWWWeg6aeaI/AAAAAAAAACU/iSKtj8gLDmo/s72-c/0107091900-726273.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-2950736692705365369</id><published>2009-01-05T20:35:00.001-07:00</published><updated>2009-01-05T20:41:36.729-07:00</updated><title type='text'>Vintage Cookbooks from Internet Archive</title><content type='html'>With my foray back into getting the XO to work, I've been obsessing about ebooks lately.
Enter the internet archive.  For an illuminating glimpse, check this out:
&lt;a href="http://internetarchive.wordpress.com/2008/03/03/vintage-cookbooks/"&gt;http://internetarchive.wordpress.com/2008/03/03/vintage-cookbooks/&lt;/a&gt;, and more generally,&lt;a href="http://www.archive.org/details/texts"&gt; http://www.archive.org/details/texts&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-2950736692705365369?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/2950736692705365369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/vintage-cookbooks-from-internet-archive.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2950736692705365369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/2950736692705365369'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/vintage-cookbooks-from-internet-archive.html' title='Vintage Cookbooks from Internet Archive'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7971983192915623011</id><published>2009-01-05T18:24:00.001-07:00</published><updated>2009-01-05T19:51:38.028-07:00</updated><title type='text'>You can learn a lot from the tabloids...</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/SWKy86MNBbI/AAAAAAAAACM/hM9-PtDnBaM/s1600-h/1204082337-707110.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/SWKy86MNBbI/AAAAAAAAACM/hM9-PtDnBaM/s320/1204082337-707110.jpg" alt="" id="BLOGGER_PHOTO_ID_5287985671968720306" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;Myself, I thought she was too fucked up to care...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7971983192915623011?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7971983192915623011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/you-can-learn-lot-from-tabloids.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7971983192915623011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7971983192915623011'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/you-can-learn-lot-from-tabloids.html' title='You can learn a lot from the tabloids...'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/SWKy86MNBbI/AAAAAAAAACM/hM9-PtDnBaM/s72-c/1204082337-707110.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6742875315533258728</id><published>2009-01-05T18:20:00.000-07:00</published><updated>2009-01-05T18:21:19.872-07:00</updated><title type='text'></title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SWKyD6AspmI/AAAAAAAAACE/qDN-P-lFDxY/s1600-h/1222081637-779874.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SWKyD6AspmI/AAAAAAAAACE/qDN-P-lFDxY/s320/1222081637-779874.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5287984692667917922" /&gt;&lt;/a&gt;&lt;/p&gt;the wall of &amp;quot;do we get to leave today?&amp;quot;&lt;p&gt;everything&amp;#39;s looking clear so far...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6742875315533258728?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6742875315533258728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/wall-of-we-get-to-leave-today.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6742875315533258728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6742875315533258728'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/wall-of-we-get-to-leave-today.html' title=''/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SWKyD6AspmI/AAAAAAAAACE/qDN-P-lFDxY/s72-c/1222081637-779874.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7877998506893450619</id><published>2009-01-05T18:19:00.003-07:00</published><updated>2009-01-05T19:50:43.871-07:00</updated><title type='text'>WHERE AM I?</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_wVbbIGLpjWE/SWKxszUfkFI/AAAAAAAAAB8/EgAxsEOcXw8/s1600-h/1222081829-787083.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_wVbbIGLpjWE/SWKxszUfkFI/AAAAAAAAAB8/EgAxsEOcXw8/s320/1222081829-787083.jpg" alt="" id="BLOGGER_PHOTO_ID_5287984295734906962" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;HIA --- HOUSTON GEORGE BUSH INTERNATIONAL&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7877998506893450619?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7877998506893450619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/hia-you-are-here.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7877998506893450619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7877998506893450619'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/hia-you-are-here.html' title='WHERE AM I?'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wVbbIGLpjWE/SWKxszUfkFI/AAAAAAAAAB8/EgAxsEOcXw8/s72-c/1222081829-787083.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7947514464376623406</id><published>2009-01-05T18:17:00.002-07:00</published><updated>2009-01-05T19:27:26.878-07:00</updated><title type='text'></title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_wVbbIGLpjWE/SWKxPgHeZbI/AAAAAAAAAB0/jnNmtkAmWPw/s1600-h/1222081642-770607.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_wVbbIGLpjWE/SWKxPgHeZbI/AAAAAAAAAB0/jnNmtkAmWPw/s320/1222081642-770607.jpg" alt="" id="BLOGGER_PHOTO_ID_5287983792363824562" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;the first in a series of xmas cellphone airport photos&lt;p&gt;An airport terminal in Houston aka HAI - oh-so-post-modern and, i imagine, rather difficult to vacuum.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7947514464376623406?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7947514464376623406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/first-in-series-of-xmas-cellphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7947514464376623406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7947514464376623406'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/first-in-series-of-xmas-cellphone.html' title=''/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/SWKxPgHeZbI/AAAAAAAAAB0/jnNmtkAmWPw/s72-c/1222081642-770607.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4446701948875083074</id><published>2009-01-05T17:46:00.004-07:00</published><updated>2009-01-05T19:48:27.359-07:00</updated><title type='text'>An Lutheran-American Xmas Eve</title><content type='html'>The Xmas Eve Candlelight and Carols service:
a right &amp;amp; proper time &amp;amp; place to greet Pride in our hearts' anteroom as it hangs its hat upon our imagined dignity.&lt;p&gt;a family, holding a hand-lettered sign, on a sidewalk by a stoplight amidst a TN big-box Xmas wonderland. i walk past, across a fast food parking lot, the only other pedestrian on Xmas eve, as a warm, light mist falls. traffic in the fading light. all parties feign nonchalance.&lt;/p&gt;&lt;p&gt;Xmas: putative season of humility. Our gifts are surely never given to impress, to inflate our own imagined goodness!
So plump with self-satisfaction that we easily and unironically ignore our last nagging inclinations towards largess and contrition.&lt;/p&gt;&lt;p&gt;And the Xmas carols! Written for leaner, darker times?  These songs, out of childhood, now echos and simulcrums of hope. The Culture of Now, superbowl and starbucks and &lt;a href="http://wiki.answers.com/Q/How_many_cars_are_there_in_the_US"&gt;more than 100 million cars&lt;/a&gt; in 50 states, already has its own answers, priced to move for the holiday season.&lt;/p&gt;&lt;p&gt;My pride helps me safely scoff.
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In Cynic am i cloaked;
&lt;/li&gt;&lt;li&gt;Untouchable;
&lt;/li&gt;&lt;li&gt;Judging but unJudgeable:
&lt;/li&gt;&lt;/ul&gt;i'm a culture-hero. Like a super-hero, only hip-er.&lt;p&gt;Rising above it all... (and whatever is it?)
Is this why we drink and smoke and fuck? Our culture, historically lacking in uncommercialized transpersonal alternatives. Like fish into a cave. we've slowly blinded to the strength of our self-affirmations. Tag,we're it.&lt;/p&gt;&lt;p&gt;In pain, we suddenly question our inalienable rightness, our moral superiority. Recessions breed innovation; depressions are lulls in which listeners hear troubadours above the Now Culture Roar. Even then it lies, hungry, in wait.&lt;/p&gt;Wine &amp;amp; Communion Wafers: to me the taste, give or take, of roman/spanish/dutch/german/english pillage and war, &amp;amp; the ovens of imperial entitlement. It sounds ridiculous until i try to "eat and drink - this is the body and blood of the lord god, given for you" with a stright face. No one else is laughing.

A touch of evil, not unlike bitters, is useful in treating ethical constipation and moral flatulence:
&lt;ul&gt;&lt;li&gt;a hint of naked envy;&lt;/li&gt;&lt;li&gt;a dram of guiltless gluttony;&lt;/li&gt;&lt;li&gt;an ounce of unapologetic lust;&lt;/li&gt;&lt;li&gt;a pinch of piracy?&lt;/li&gt;&lt;/ul&gt;Stomachics for our putatively immortal souls, purging us of a great excess of ourselves.&lt;p&gt;My favorite part of church is that we don't clap for each other.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4446701948875083074?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4446701948875083074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/american-lutheran-xmas-this-is-right.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4446701948875083074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4446701948875083074'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/american-lutheran-xmas-this-is-right.html' title='An Lutheran-American Xmas Eve'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-150450761058071337</id><published>2009-01-03T19:31:00.002-07:00</published><updated>2009-01-03T20:39:35.525-07:00</updated><title type='text'>OLPC: Why Sugar Sucks - A Really Long List</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SWAfxilXeqI/AAAAAAAAABs/SbbUueEp-rw/s1600-h/0103091919-758344.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SWAfxilXeqI/AAAAAAAAABs/SbbUueEp-rw/s320/0103091919-758344.jpg" alt="" id="BLOGGER_PHOTO_ID_5287260898490546850" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;Why OLPC Software Sucks&lt;p&gt;olpc's "sugar" operating system takes the cake for the most unresponsive OS ever, and that's saying a lot!
this is a pic of me trying to open an activity bundle, an ".xo" file. As i type this, nothing has changed. ctlr-alt-f2-ing over to a real, honest-to-god terminal shows me that unzip has eaten my XO's rather limited AMD GEODE processor for now. WTF?&lt;/p&gt;&lt;p&gt;Steps to cause users great software discomfort:&lt;/p&gt;&lt;p&gt;1. Use redhat's fedora core, and alter it almost beyond recognition - the result is "sugar", an awkward operaring system that steals valuable devel time from the OSS world.&lt;/p&gt;&lt;p&gt;2. insist that every previously-written piece of software must be "sugarized" to work with XO. Generate buzz and intial devel activity that result in lots of orphaned software projs. &lt;/p&gt;&lt;p&gt;3. write a new browser. nevermind many decent ones already exist.&lt;/p&gt;&lt;p&gt;4. Refuse to play nice with anyone, or admit mistakes *ever*&lt;/p&gt;&lt;p&gt;I've been trying to use sugar for about a year now. It's still terrible. It's more terrible than i can summarize in the requisite 1000 characters of an MMS, so i now continue my diatribe from the green machine itself.
&lt;/p&gt;&lt;p&gt;Other things i hate:&lt;/p&gt;&lt;p&gt;* No man pages - the most flagrant sign that "it just plays linux on TV"&lt;/p&gt;&lt;p&gt;* No swap, since it has a flash "hard drive" that would be degraded by swap's frequent writing. Too bad linux on 256MB ram *really* needs swap. Eric's &lt;a href="http://www.mail-archive.com/sugar@lists.laptop.org/msg06680.html"&gt;performance hacks&lt;/a&gt;, especially the incredible &lt;a href="http://code.google.com/p/compcache/"&gt;compcache&lt;/a&gt; greatly alleviate this evil (keep an eye on compcache - changing the nature of linux computing!).  Still, it's non-trivial to permanently enable compcache. Another example of "it just plays linux on TV"&lt;/p&gt;&lt;p&gt;* No mp3 capability by default; installation must be done via commandline.  I'm no fan of mp3. I used ogg for years before i finally admitted defeat.  We're stuck in an mp3 world.  As such. the XO is a victim of idealogical zealotry.&lt;/p&gt;&lt;p&gt;* Battery life - claims of 10-12 hours were a major selling point for me. A year later. sugar's best power saving features are still *experimental*, for god's sake!  3.5 hours today from full charge, 1/3 of that with backlight off, reading by sunllight.&lt;/p&gt;&lt;p&gt;* No hibernate, nor the possibility of it. On my  thinkpad, i can press a button and suspend my machine to disk, leave it my backpack for weeks, and get my in-use desktop back with the press of a button.  With OLPC's emphasis on power, i thought the XO could at least match this feat.&lt;/p&gt;&lt;p&gt;Nope. At best, it goes sleep. Leave it asleep on the shelf for a month or two, and the battery gets so dead that it WON'T CHARGE. A special EC program (batman.fth) must be used to flash the battery. All this requires an easily-obtained developer's key.  What's secure about requiring this key???
&lt;/p&gt;&lt;p&gt;* Ebook reading still not functional.  Flipping through pdfs is painfully slow. Hit the wrong button and *surprise* you're at the end of the book, you've lost your place, and it will take 5 or 10 minutes to get back.
&lt;/p&gt;&lt;p&gt;Overall, the XO's software sucks.  Bad.
&lt;/p&gt;&lt;p&gt;The hardware is amazing. I've put the keyboard under running water.  It's 3 pounds, had a nice handle, and a small powerwart. I can read the screen in DAYLIGHT!
&lt;/p&gt;&lt;p&gt;So what's a geek to do?  Buy a 16gb SDHC sandisk extreme II (15mb/s) card ($40 at writing) and install ubuntu.  That's what i'm doing.
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-150450761058071337?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/150450761058071337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/why-olpc-software-sucks-olpc-operating.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/150450761058071337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/150450761058071337'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/why-olpc-software-sucks-olpc-operating.html' title='OLPC: Why Sugar Sucks - A Really Long List'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SWAfxilXeqI/AAAAAAAAABs/SbbUueEp-rw/s72-c/0103091919-758344.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-4724601915913224363</id><published>2009-01-03T13:58:00.001-07:00</published><updated>2009-01-03T17:20:58.004-07:00</updated><title type='text'></title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SV_RvDB-ztI/AAAAAAAAABk/OzBWfqvuw1A/s1600-h/0103091343-780194.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_wVbbIGLpjWE/SV_RvDB-ztI/AAAAAAAAABk/OzBWfqvuw1A/s320/0103091343-780194.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5287175093753925330" /&gt;&lt;/a&gt;&lt;/p&gt;blunt objects; &lt;br&gt;eye trauma;&lt;br&gt;orbital fracture:&lt;p&gt;file under things not to do on new year&amp;#39;s eve.&lt;p&gt;after 2 days of seeing double (vertical displacement) a sore left eye, and numbness on that side of my nose, i started to wonder if a doctor might have some wisdom. it was fri the 2nd of this new year, not a holiday per se, so i should be able to schedule some non-emergency visit, right?&lt;p&gt;wrong on all accounts. another case of &amp;quot;go ask google&amp;quot;. after talking to a very nice soul @ NewMexNurseHotline (24/7/365&amp;amp;free!), calling the still-closed UNM student health center, &amp;amp; pres. hospital, the emer room was still my only &lt;em&gt;official&lt;/em&gt; option.

&lt;p&gt;30 min of google later, i have found my symptoms and causes described exactly. the eyeball rests in an orb of fragile bones that tend to crack before the eyeball pops under sudden pressure (lucky for us... im not sure popped eyeballs heal so gracefully). unless severe, it heals itself.&lt;p&gt;so i scheduled an eye exam for next week. i need new glasses anyway.

oh, and here's my &lt;a href="http://emedicine.medscape.com/article/1218283-treatment"&gt;self-diagnosis&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-4724601915913224363?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/4724601915913224363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2009/01/blunt-objects-eye-trauma-orbital.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4724601915913224363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/4724601915913224363'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2009/01/blunt-objects-eye-trauma-orbital.html' title=''/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wVbbIGLpjWE/SV_RvDB-ztI/AAAAAAAAABk/OzBWfqvuw1A/s72-c/0103091343-780194.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-7324355678185321817</id><published>2008-12-30T21:28:00.002-07:00</published><updated>2008-12-30T21:53:35.109-07:00</updated><title type='text'>Why blog?</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_wVbbIGLpjWE/SVr03ykT77I/AAAAAAAAABc/XAcu5QvGb6Y/s1600-h/spindrifter-2004-right_1600-795380.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_wVbbIGLpjWE/SVr03ykT77I/AAAAAAAAABc/XAcu5QvGb6Y/s320/spindrifter-2004-right_1600-795380.jpg" alt="" id="BLOGGER_PHOTO_ID_5285806351976755122" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;This is the picture i have on my desktop.  I wish i could remember
where i found it, because i love it, and someone else made it, and i
wish i could give them credit for it.&lt;p&gt;&lt;h2&gt;Are blogs inherently narcissistic?  &lt;/h2&gt;
As a *nix technologist, i use google to fix 75% of my problems *very*
quickly.  Google just finds the already-published answers, many of
which come from personal blogs, short write-ups of problems solved.

&lt;h3&gt;It's like stone soup &lt;/h3&gt;

As an aside, I read a lot of newspapers.  There's a huge, ongoing conversation about how newspapers *create* news, while bloggers move it around, pick out the nice parts, etc. Are bloggers destroying newspapers?  I reckon it's a question worth asking, but with respect to technology, it's a null one.  

&lt;p&gt; Personal observation in general, and micro-problem-solving in particular, is where blogs excel.  I'm a little embarrassed that i started so late, but i've gotten to the point in my life where, more and more, i use technology to solve a clear-and-present problem. I need it to fit me.  

&lt;h3&gt; Enter cellphone blogging. &lt;/h3&gt;
I need it to be simple, to work as near the speed-of-thought as possible. Keybindings are a great example.  I learn new firefox and vim keybindings because they allow me to work *much* more rapidly, with much less thought, once my fingers finally learn them.

&lt;p&gt; Sometimes computers are a pain to find, or there's no internet access, or my battery's down, or i only have time to check my email and run.  On the other hand, my cellphone can stay on for days without a charge, (finally!) has a thumb keyboard and camera attached, and can almost always send pix messages. Alternately, I can use my laptop with gmail; then i get a real keyboard and firefox's spellchecker, and i can compose a well thought-out email quickly and easily. 
 
&lt;p&gt;I don't want a blog to take time out of my life.   Rather, i want to put a little bit of effort into it here and there to make my life better. For me, these are the things of which speed-of-thought blogging is made.  Only now do i enjoy tossing things into this vast and mercurial stone soup cauldron.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-7324355678185321817?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/7324355678185321817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2008/12/why-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7324355678185321817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/7324355678185321817'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2008/12/why-blog.html' title='Why blog?'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wVbbIGLpjWE/SVr03ykT77I/AAAAAAAAABc/XAcu5QvGb6Y/s72-c/spindrifter-2004-right_1600-795380.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-5346598943086198042</id><published>2008-12-30T19:24:00.001-07:00</published><updated>2008-12-30T20:08:50.593-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_wVbbIGLpjWE/SVrhW-UtEfI/AAAAAAAAABI/UoAbZdu0KQk/s1600-h/snowcar1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_wVbbIGLpjWE/SVrhW-UtEfI/AAAAAAAAABI/UoAbZdu0KQk/s400/snowcar1.jpg" alt="" id="BLOGGER_PHOTO_ID_5285784897475908082" border="0" /&gt;&lt;/a&gt;
&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_wVbbIGLpjWE/SVrX3SkiLMI/AAAAAAAAAAg/-KqrNBlt5rE/s1600-h/1230081919-769114.jpg"&gt;
&lt;/a&gt;&lt;/p&gt;which way is south?&lt;p&gt;snow is still on the ground on the north side of this massive 4-wheeled thing that never moves, after 3 days of relatively warm and sunny weather.&lt;/p&gt;&lt;p&gt;this still gives me a moment of pause - unexpectedly logical, a trick, like navigating by moss on the north side of trees.&lt;/p&gt;&lt;p&gt;*edit* my cellphone camera doesn't have the best auto-exposure... i had to pull the pic into digikam, which does have some really nice auto-adjust tools, and then re-post it.  you can see the car, the shadow of the tree, the sidewalk, and the faint crust of crunchy snow on the grass, right?
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-5346598943086198042?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/5346598943086198042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2008/12/which-way-is-south-snow-is-still-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5346598943086198042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5346598943086198042'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2008/12/which-way-is-south-snow-is-still-on.html' title=''/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wVbbIGLpjWE/SVrhW-UtEfI/AAAAAAAAABI/UoAbZdu0KQk/s72-c/snowcar1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-5757368498434983700</id><published>2008-12-30T16:26:00.001-07:00</published><updated>2008-12-30T20:14:46.182-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='knoxville xmas08 mobile pic'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrjNoqfTwI/AAAAAAAAABQ/UPk73kopO1Y/s1600-h/linens1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrjNoqfTwI/AAAAAAAAABQ/UPk73kopO1Y/s400/linens1.jpg" alt="" id="BLOGGER_PHOTO_ID_5285786936066133762" border="0" /&gt;&lt;/a&gt;first post from phone - 1000 chars is a big upgrade from twitter for some stuff.&lt;p&gt;next: &lt;a href="http://www.x14n.org/"&gt;www.x14n.org&lt;/a&gt;... automagic link interpretation!
&lt;/p&gt;&lt;p&gt;finally, the knoxville *linens'n'things*, post-pillage by holiday shoppers.  the fixtures are for sale!&lt;/p&gt;&lt;p&gt;*edit* - i'm so stoked that actually works.  verizon "pix text" to go@blogger.com can get pics from phone to blog just fine, with auto-link-detection.  life is sweet. I did have to afteredit the image to rotate it...
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-5757368498434983700?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/5757368498434983700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2008/12/first-post-from-phone-1000-chars-is-big.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5757368498434983700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/5757368498434983700'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2008/12/first-post-from-phone-1000-chars-is-big.html' title=''/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrjNoqfTwI/AAAAAAAAABQ/UPk73kopO1Y/s72-c/linens1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4695461192314112143.post-6344455623688832262</id><published>2008-12-30T15:47:00.000-07:00</published><updated>2008-12-30T15:51:52.155-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='link'/><title type='text'>first post</title><content type='html'>crosspost: &lt;a href="http://www.twitter.com/prosopis"&gt;http://www.twitter.com/prosopis&lt;/a&gt;

annoying - links not autorecognized... what's up with that? I *really* hate having to click a toolbar button to change text.  Yes, I'm a text-input primadonna.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4695461192314112143-6344455623688832262?l=helmingstay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://helmingstay.blogspot.com/feeds/6344455623688832262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://helmingstay.blogspot.com/2008/12/first-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6344455623688832262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4695461192314112143/posts/default/6344455623688832262'/><link rel='alternate' type='text/html' href='http://helmingstay.blogspot.com/2008/12/first-post.html' title='first post'/><author><name>xian</name><uri>http://www.blogger.com/profile/01991290472959345882</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_wVbbIGLpjWE/SVrcjHVpasI/AAAAAAAAAAo/ABIOXYM2My4/S220/eye.jpg'/></author><thr:total>0</thr:total></entry></feed>
