<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/'>
<channel>
  <title>Satya</title>
  <link>http://satyap.livejournal.com/</link>
  <description>Satya - LiveJournal.com</description>
  <lastBuildDate>Sun, 19 Jul 2009 15:14:36 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>satyap</lj:journal>
  <lj:journalid>787205</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>http://l-userpic.livejournal.com/16281970/787205</url>
    <title>Satya</title>
    <link>http://satyap.livejournal.com/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/172135.html</guid>
  <pubDate>Sun, 19 Jul 2009 15:14:36 GMT</pubDate>
  <title>Netscaler-based content-switcher with Shibboleth support</title>
  <link>http://satyap.livejournal.com/172135.html</link>
  <description>&lt;p&gt;
Notes on setting up a content-switching Citrix Netscaler with Shibboleth support.
I use Netscaler 9, I think.
&lt;/p&gt;
&lt;p&gt;
Assume two servers, S1 and S2, that I want to present as
www.example.com. They have Shibboleth. I want SSL and non-SSL both.
&lt;/p&gt;
&lt;p&gt;
Set up Shibboleth Service Providers on both servers. The Host can be S1 and S2,
doesn&apos;t matter. Set the HandlerURL to /S1Shibboleth.sso or something, rather
than /Shibboleth.sso. Some way to distinguish them is needed.
&lt;/p&gt;
&lt;p&gt;
On the Netscaler device, set up S1 and S2 as servers/services with their real
internal IP. Call these s1-int and s2-int. Type HTTP, port 80. Set up similar
ones called s1-int-ssl and s2-int-ssl with type SSL, port 443.
&lt;/p&gt;
&lt;p&gt;
Set up load balancers, of types and port HTTP/80 and SSL/443, called s1-lb,
s2-lb, s1-lb-ssl, s2-lb-ssl. Their IPs can be private 10-subnet IPs. The s1 IP
is same for both SSL and non-SSL, and the s2 IP is also the same (but different
from s1&apos;s). Example: set s1-lb and s1-lb-ssl as 10.0.0.4, and set s2-lb and
s2-lb-ssl as 10.0.0.5. Add the services s1-int s1-int-ssl etc. to the
appropriate load balancers. You&apos;ll need SSL certificates to associate with each
one.
&lt;/p&gt;
&lt;p&gt;
Set up content switching policies for your apps on s1 and s2. (See Netscaler
manual.) Set up policies for the /S1Shibboleth.sso and /S2Shibboleth.sso as
well!
&lt;/p&gt;
&lt;p&gt;
Set up two content switchers: www-ext and www-ext-ssl. Add all the policies to
each one, the targets being the appropriate load balancers. That should do it.
I don&apos;t think you need to set up Apache on the boxes any different. Using S1 as
the ServerName should be fine.
&lt;/p&gt;
&lt;p&gt;
You&apos;ll need SSL certificates for the SSL vservers. See the Netscaler manual.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/07/netscaler_content_switcher.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/07/netscaler_content_switcher.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/172135.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/171968.html</guid>
  <pubDate>Wed, 15 Jul 2009 15:00:44 GMT</pubDate>
  <title>Elaborate security is not better security</title>
  <link>http://satyap.livejournal.com/171968.html</link>
  <description>&lt;p&gt;
I&apos;ve been trying to set up an online account to access a mutual fund brokerage.
&lt;/p&gt;
&lt;p&gt;
The registration page asks for my social and account number, among a few other unimportant details. Strike zero point five.
&lt;/p&gt;
&lt;p&gt;
Then they deliver the next set of instructions through a web-based &quot;secure&quot; system called zixmail. Third-party, strike one. And haven&apos;t they heard of PGP, GPG, and so forth?
&lt;/p&gt;
&lt;p&gt;
Okay. The &quot;email&quot; contains instructions for first login, which do NOT tell me where to go. Anti-phising, or just lame? Anyway, the web site has at least 3 different logins, each slightly different. I&apos;m not even sure I&apos;m using the right one (mutual funds, brokerage, or managed investment? Who knows.)
&lt;/p&gt;
&lt;p&gt;
The login name involves my last name and social. The password involves my
mother&apos;s name and my date of birth. Strike two. Naturally, I use slightly different names
on each site. It doesn&apos;t work. I call to have it reset. It doesn&apos;t work. They
reset again. It works.
&lt;/p&gt;
&lt;p&gt;
At least that was the initial password. I&apos;m asked to change it, and new
password must be between 8-12 characters, CANNOT contain special characters
(strike 2.5). The instructions include &quot;not contain any special characters. For example, AA-BB-CC&quot;. I didn&apos;t know what to make of that.
&lt;/p&gt;
&lt;p&gt;
After passing that hurdle, it asked for security questions four. 
I could pick a question each, out of 4 different lists (one per security question). I happened to pick two questions that had the same answer. Bzzt. The rules say:
1. All four questions must be answered.
2. All four answers must be unique.
3. Answers must contain minimum of 3 alphanumeric characters.
4. Answers must contain only alphanumeric characters and spaces. So I had violated rule 2. Sigh.
&lt;/p&gt;
&lt;p&gt;
After getting through all that, they wanted me to set up a personalized
security passphrase and an image from their image library.
(The security phrase must be between 3-50 characters.)
This is for anti-phishing purposes.
&lt;/p&gt;
&lt;p&gt;
Now is all that stuff actually going to protect my account? Maybe. Better than
just username+password, plus a one-time pad that they snail-mail to me? Heck,
no. (The US Treasury does that one-time pad thing. It&apos;s cool, but then they
fail with their random-order on-screen keyboard thing.)
&lt;/p&gt;
&lt;p&gt;

Go go gadget Schneier. Debunk this!
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/07/elaborate_security_is_not_better.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/07/elaborate_security_is_not_better.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/171968.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/171740.html</guid>
  <pubDate>Mon, 06 Jul 2009 20:33:09 GMT</pubDate>
  <title>Rails and Sybase</title>
  <link>http://satyap.livejournal.com/171740.html</link>
  <description>&lt;p&gt;
I just spent 4 hours trying to get Ruby on Rails to talk to Sybase. This is Rails 2.1-ish on Ubuntu 9.04, installed from the debian system (not gems).
&lt;/p&gt;
&lt;p&gt;
It wouldn&apos;t work.
&lt;/p&gt;
&lt;p&gt;
No matter what.
&lt;/p&gt;
&lt;p&gt;
I tried installing the sybase adapter:
  &lt;/p&gt;
&lt;pre&gt;  gem install activerecord-sybase-adapter -s http://gems.rubyonrails.org
&lt;/pre&gt;
&lt;p&gt;
Nope. And that&apos;s after freetds was already installed. It wasn&apos;t a freetds error
-- it kept yelling about activerecord versions, just like odbc below.
&lt;/p&gt;
&lt;p&gt;
I tried the odbc driver:
&lt;/p&gt;
&lt;pre&gt;    gem install activerecord-odbc-adapter
&lt;/pre&gt;
&lt;p&gt;
It kept pulling in activerecord 2.3.2 (remember, I have 2.1.0 from Ubuntu&apos;s
debs). And then borking on mismatched versions.
&lt;/p&gt;
&lt;p&gt;
Note that those two gem commands work. The breakage happens when you try to
actually access something, such as User.find(:first) from script/console:
&lt;/p&gt;
&lt;pre&gt;Gem::Exception: can&apos;t activate activerecord (&amp;gt;= 2.0.2, runtime), already
activated activerecord-2.1.0
&lt;/pre&gt;
&lt;p&gt;
This is because those gems pull in a gem version of activerecord, which is
2.3.2. The apt-get version is 2.1.0. So I ripped out rails and installed it as a gem:
&lt;/p&gt;
&lt;pre&gt;
sudo apt-get remove rails
sudo gem install -V rails activerecord-odbc-adapter odbc-rails
# (takes a long time)
sudo apt-get autoremove
sudo apt-get install irb libdbd-odbc-ruby
&lt;/pre&gt;
&lt;p&gt;
(You&apos;ll need ruby-dev if you want to install a gem like &apos;mysql&apos;, which I do. What, you think Sybase is my database of choice? Hah! Oh wait, the mysql gem won&apos;t install. WTF? Oh, ok, I can apt-get install libdbd-mysql-ruby, and that gets me a find() on a mysql database. If that hadn&apos;t worked, I&apos;d be yelling.)
&lt;/p&gt;
&lt;p&gt;

I stuck this in ~/odbc and ran &quot;odbcinst -i -s -d ~/odbc&quot; (I have tdsodbc and unixodbc, dunno how much of that is required):
&lt;/p&gt;
&lt;pre&gt;[d]
Description     = d server, name elided
Driver      = /usr/lib/odbc/libtdsodbc.so
Server=fqdn.example.com
Port=4100
TDS Version      = 5.0
[a]
Description     = a server, name elided
Driver      = /usr/lib/odbc/libtdsodbc.so
Server=fqdn2.example.com
Port=4100
TDS Version      = 5.0
&lt;/pre&gt;
&lt;p&gt;
Test with this command:
isql -v d user pass
 where d is the &apos;d&apos; from the odbc file, and user and pass are the actual ones.
&lt;/p&gt;
&lt;p&gt;
Oh, and you have to add /var/lib/gems/*/bin to your path. * is 1.8 in my case.
And remove the symlinks from my vendor/ directory, and maybe regenerate a few files with &quot;rails .&quot;, as I was doing this to an existing project.
&lt;/p&gt;

&lt;p&gt;Update: Formatting!&lt;/p&gt;
&lt;p&gt;Update: Added the Gem::Esception error as google-bait.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/07/rails_and_sybase.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/07/rails_and_sybase.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/171740.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/171479.html</guid>
  <pubDate>Sat, 13 Jun 2009 04:25:05 GMT</pubDate>
  <title>Ruby on Rails instance variables explained</title>
  <link>http://satyap.livejournal.com/171479.html</link>
  <description>&lt;p&gt;
Instance variables (@foo, for example) are a Ruby concept, not Rails. But it&apos;s
a little confusing in the Rails&apos; Model-View-Controller paradigm.
&lt;/p&gt;
&lt;p&gt;
Consider that in
pure Ruby, an instance variable is available to an object (which is
*instantiated* from a class). The instance variable can be used and
changed by any methods of the object. This is unlike non-@ variables, which are
limited to the scope where they&apos;re defined:
&lt;/p&gt;

&lt;pre&gt;
def ex1
   foo=1 # defined within the ex1 method
end

def ex2
    if @foo==1
        bar=1
    end
    bar # nil, because it&apos;s out of scope
end

def ex3
    @foo=1 # remains defined after ex3 returns
end
&lt;/pre&gt;

&lt;p&gt;
Now here&apos;s my point: in Rails, instance variables defined in a
controller method are available to the view, but not to any models
called from that method. Why?
&lt;/p&gt;
&lt;p&gt;
Because a Rails view is NOT a separate class. It&apos;s a template and it&apos;s
part of the current controller object. A model is a separate class.
&lt;/p&gt;
&lt;p&gt;
That&apos;s all. It&apos;s a simple point, but it can be confusing at first to
those not familiar with Ruby or Object Oriented Programming.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/06/rails_instance_variables.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/06/rails_instance_variables.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/171479.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/171100.html</guid>
  <pubDate>Sat, 13 Jun 2009 04:21:29 GMT</pubDate>
  <title>ActiveRecord::find() in Ruby on Rails</title>
  <link>http://satyap.livejournal.com/171100.html</link>
  <description>&lt;p&gt;
When I first started with Ruby on Rails, it took me some time to figure
this out. ActiveRecord&apos;s find() method will return two different kinds of objects
when you call it with :first versus :all.
&lt;/p&gt;
&lt;p&gt;
find(:first) returns a single object. find(:all) returns an array. If no
records are found (perhaps because conditions didn&apos;t match), find(:first)
returns nil, while find(:all) returns the empty array. find(:all, :limit
=&amp;gt; 1) returns an array, perhaps with a single object in it. find(:first,
:limit =&amp;gt; 1) or even :limit =&amp;gt; 2, returns a single object (or nil).
&lt;/p&gt;
&lt;p&gt;
The result of find(:first) can be checked with the nil? method, and the
result of find(:all) can be checked with the nil? as well as empty?
method (but nil? should return false if the find() actually was executed).
&lt;/p&gt;
&lt;p&gt;
In perl terms, find(:first) always returns a scalar, find(:all) always
returns a list.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/06/ar_find_in_rails.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/06/ar_find_in_rails.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/171100.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/170819.html</guid>
  <pubDate>Fri, 05 Jun 2009 18:52:28 GMT</pubDate>
  <title>Shibboleth 2 on Ubuntu 9.04</title>
  <link>http://satyap.livejournal.com/170819.html</link>
  <description>I recently tried to install Shibboleth as a Service Provider on Ubuntu 9.04.
Shibboleth 1.3 is End-of-lifed June 2010, so the shibboleth-users mailing list advised me -- strongly -- to use Shibboleth 2. Well, Ubuntu 9.04 doesn&apos;t have the packages for it. Debian Lenny does. So here&apos;s how you get a Shibboleth 2 SP (Service Provider) on Ubunt 9.04:

&lt;p&gt;Remove libapache2-mod-shib and auto-loaded packages, if you had them
installed. Then, install some of the packages required by the shib2 module:&lt;/p&gt;
&lt;pre&gt;
aptitude install libsaml2 unixodbc opensaml2-schemas xmltooling-schemas
&lt;/pre&gt;
&lt;p&gt;and dependencies. The aptitude command will take care of the dependencies.&lt;/p&gt;

&lt;p&gt;
Download
and install the following. These are the shib2 package from Debian lenny (current stable).
&lt;/p&gt;
&lt;pre&gt;
http://ftp.us.debian.org/debian/pool/main/s/shibboleth-sp2/shibboleth-sp2-schemas_2.1.dfsg1-2_all.deb
http://ftp.us.debian.org/debian/pool/main/s/shibboleth-sp2/libshibsp1_2.0.dfsg1-4_i386.deb
http://ftp.us.debian.org/debian/pool/main/s/shibboleth-sp2/libapache2-mod-shib2_2.0.dfsg1-4_i386.deb
&lt;/pre&gt;
&lt;p&gt;
Or go find them yourself, since the particular versions listed are sure to be
obsolete after this article is posted. You want shibboleth-sp2-schemas
libshibsp1 libapache2-mod-shib2, in that order. Download the .deb files and run
&lt;/p&gt;
&lt;pre&gt;
dpkg -i shibboleth-sp2-schemas*.deb libshibsp1*.deb libapache2-mod-shib2*.deb
&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/06/shibboleth2.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/06/shibboleth2.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/170819.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/170675.html</guid>
  <pubDate>Tue, 02 Jun 2009 02:53:14 GMT</pubDate>
  <title>Ruby on Rails and option_groups</title>
  <link>http://satyap.livejournal.com/170675.html</link>
  <description>&lt;p&gt;
Ruby on Rails rocks my socks again. I had a need for a drop-down with options from many &quot;question sets&quot;. I did this in the controller:
&lt;/p&gt;
&lt;pre&gt;
@disclosure_questions=QuestionSet.find(:all,
        :conditions =&amp;gt; [&apos;is_screener=?&apos;, false], 
        :include =&amp;gt; [:questions])
&lt;/pre&gt;

&lt;p&gt;So QuestionSet was my outer collection, and each one has many questions, hence the include.&lt;/p&gt;

Then in my view I did this:
&lt;pre&gt;
&amp;lt;select name=&quot;disclosure_id&quot;&amp;gt;
&amp;lt; option_groups_from_collection_for_select(
        @disclosure_questions, &apos;questions&apos;, &apos;title&apos;, &apos;id&apos;, &apos;number&apos;)
%&amp;gt;
&amp;lt;select&amp;gt;
&lt;/pre&gt;

&lt;p&gt;
Which says, make option groups from the disclosure_questions, which is a
collection of QuestionSet. The sub-groups are composed of questions, which is a
method called on each QuestionSet (by virtue of has_many). title is an
attribute of QuestionSet, and id and number are attribute of each question. 
&lt;/p&gt;
&lt;p&gt;
More help at the &lt;a href=&quot;http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html&quot;&gt;Rails API site&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/06/rails_option_groups.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/06/rails_option_groups.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/170675.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/170456.html</guid>
  <pubDate>Fri, 15 May 2009 23:56:12 GMT</pubDate>
  <title>Pidgin logs archiver</title>
  <link>http://satyap.livejournal.com/170456.html</link>
  <description>&lt;p&gt;
I wrote a little script to archive my pidgin logs in a sepaarte directory. 4
lines, but took 45 minutes to write. Use at own risk. This should be under the
&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/us/&quot;&gt;Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.&lt;/a&gt; But should this script do anything, or not do something, don&apos;t hold me responsible. In fact, don&apos;t use this at all.
&lt;/p&gt;

&lt;pre&gt;
YEAR=2008
DEST=/home/whatever/chatlogs/$YEAR

# Copy the directory structure.
find . -type d -exec mkdir -p &quot;$DEST/{}&quot; \;

# Copy the files starting with the year.
find . -name $YEAR*.txt -exec mv &quot;{}&quot; $DEST/{} \;

# For the rmdirs, we could use -exec command + instead of -exec command ; but we don&apos;t because
# this script simply doesn&apos;t run very often.

# Remove any extra directories we made, go depth-first
find $DEST -depth -type d -exec rmdir --ignore-fail-on-non-empty {} \;

# Remove any empty directories in case we took away all the files, go depth-first
find . -depth -type d -exec rmdir --ignore-fail-on-non-empty {} \;
&lt;/pre&gt;

&lt;p&gt;
It should not be run from the .purple/logs directory, or wherever.
After that&apos;s done, you can not go tar cz (create, compress with gzip) the directory.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/05/pigdin_log_archive.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/05/pigdin_log_archive.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/170456.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/170155.html</guid>
  <pubDate>Sat, 09 May 2009 15:45:56 GMT</pubDate>
  <title>Ruby on Rails auto_link bug</title>
  <link>http://satyap.livejournal.com/170155.html</link>
  <description>&lt;p&gt;
In Ruby on Rails, the auto_link helper takes a string and automatically
links URLs and email addresses in the string, producing output suitable
for a web page. Today we had a URL that ended in a query string, with a
slash in the string, like so: .../end?tag=/mom
&lt;/p&gt;
&lt;p&gt;
auto_link wouldn&apos;t recognize the slash as part of the link and ended the
link at the &quot;tag=&quot; part. After some googling, I located
action_view/helpers/text_helper.rb and added the slash before the dash
in the regexp for the query string. This is in a constant called
AUTO_LINK_RE.
&lt;/p&gt;
&lt;p&gt;
Update: 
&lt;a href=&quot;http://blog.swivel.com/code/2009/06/rails-auto_link-and-certain-query-strings.html&quot;&gt;Swivel
blog&lt;/a&gt; has a better way to fix this, with an initializer.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/05/rails_auto_link.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/05/rails_auto_link.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/170155.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/169751.html</guid>
  <pubDate>Thu, 30 Apr 2009 01:40:42 GMT</pubDate>
  <title>Javascript programming</title>
  <link>http://satyap.livejournal.com/169751.html</link>
  <description>&lt;p&gt;
I spent most of last weekend programming in Javascript (or ECMAscript). I don&apos;t ordinarily do
that, but I do have a couple of 
&lt;a href=&quot;http://www.mozilla.com/en-US/firefox/&quot;&gt;Firefox&lt;/a&gt;
&lt;a href=&quot;https://addons.mozilla.org/&quot;&gt;extensions&lt;/a&gt; and a couple of 
&lt;a href=&quot;http://en.wikipedia.org/wiki/Greasemonkey&quot;&gt;Greasemonkey&lt;/a&gt;
scripts to my name. I was writing scripts for the web-based 
&lt;a href=&quot;http://www.pardus.at/&quot;&gt;Pardus&lt;/a&gt;
game.
It&apos;s pretty heavy (for me) Javascript programming and DOM (Document Object
Model) manipulation.
All the stuff I just mentioned is on my &lt;a href=&quot;http://pardus.butterfat.net/&quot;&gt;Pardus Auto-mapper&lt;/a&gt; page.
Usually I just do Ruby on Rails with some light Prototype/Scriptaculous
javascripting. But this is about writing apps with just the client (Firefox).
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/04/javascript_gm_pardus.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/04/javascript_gm_pardus.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/169751.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/169578.html</guid>
  <pubDate>Thu, 09 Apr 2009 00:36:55 GMT</pubDate>
  <title>Custom library path in Ruby</title>
  <link>http://satyap.livejournal.com/169578.html</link>
  <description>&lt;p&gt;
To add a custom or additional library path to a Ruby program:
$LOAD_PATH.unshift File.dirname(__FILE__) + &apos;/../lib&apos;
&lt;/p&gt;
&lt;p&gt;
This &quot;unshifts&quot; onto the LOAD_PATH list, the full path to the lib
directory, relative to the current file (which is the ruby program).
Current file&apos;s location is guven by calling dirname on __FILE__.
&lt;/p&gt;
&lt;p&gt;
This was useful for me when I was trying to get railroad to run from my
home directory. (&lt;a href=&quot;http://railroad.rubyforge.org/&quot;&gt;Railroad&lt;/a&gt; is a utility to graph Ruby on Rails&apos;
model/controller relations, very useful, I recommend it.)
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/04/ruby_custom_library_path.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/04/ruby_custom_library_path.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/169578.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/169218.html</guid>
  <pubDate>Thu, 09 Apr 2009 00:33:38 GMT</pubDate>
  <title>The Internet on South Park</title>
  <link>http://satyap.livejournal.com/169218.html</link>
  <description>&lt;p&gt;
I just watched the South Park episode &quot;Over logging&quot;. In it, they showed &quot;The
Internet&quot; to be a giant Linksys router (the blue plastic SOHO type, such as
WRT54G, with wireless -- I&apos;m a dork, yes). It was a lot like &lt;a href=&quot;http://en.wikipedia.org/wiki/Stargate&quot;&gt;Stargate&lt;/a&gt;,
underground bunker and all.  They should have also had a caption saying &quot;This
is what many people actually believe&quot;, because this *is* what many people actually believe. &quot;I mean, have you ever *seen* The Internet?&quot; They flash a similar
caption when telling the story of the Book of Mormon and of Sci-- I mean, the
Super Adventure Club. Oh come on, it would have been funny.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/04/internet_on_south_park.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/04/internet_on_south_park.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/169218.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/169141.html</guid>
  <pubDate>Wed, 25 Feb 2009 00:05:29 GMT</pubDate>
  <title>Pro tip: fatherly advice</title>
  <link>http://satyap.livejournal.com/169141.html</link>
  <description>&lt;p&gt;
My father gave me two pieces of advice, and one skill:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Always be presentable,&lt;/li&gt;
&lt;li&gt;Use the right tool for the job, and&lt;/li&gt;
&lt;li&gt;Riding a bicycle&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
&lt;b&gt;Always be presentable&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
He really meant, &quot;Shave!&quot;, but it also applies to general appearance: you never
know what kind of opportunities will present themselves when you&apos;re wearing
ratty shorts and a torn-up shirt. He didn&apos;t mean wander around with a suit and
tie at all times, of course. This comes in useful, in the literal sense, when
you suddenly get a meeting scheduled and... oh, good, you&apos;ve shaved today!
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Use the right tool for the job&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
Literally, he meant don&apos;t use a flat-blade screwdriver for turning a
Philips-head screw, but he also meant in general. You can&apos;t approach a problem
with a mind-set that doesn&apos;t fit a problem. I&apos;ve been struggling with a
particular construction problem, that I just fixed (or vastly simplified, we&apos;ll
find out after the... stuff... dries) by going out and getting the right $5 tool.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Riding a bicycle&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
He forced me to learn to ride a bicycle, which became my primary transport for
years in college and the first few years of work. Everyone should learn to ride
a bicycle, and swim. Then you can compete in triathlons (he doesn&apos;t say that,
I&apos;m saying that). Yeah, no deeper lesson here, except: learn to ride.
&lt;/p&gt;
&lt;p&gt;
The examples I use are literal, because those are the contexts we encontered
them in. He&apos;s a technical/mechanical person, an electronics guy, so that&apos;s what
we usually talk about. Soldering, hanging drywall, and stuff. Except we didn&apos;t
have drywall.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/02/tip_fatherly_advice.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/02/tip_fatherly_advice.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/169141.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/168922.html</guid>
  <pubDate>Sun, 22 Feb 2009 01:01:01 GMT</pubDate>
  <title>Making PDFs with JasperReports and Rails 1</title>
  <link>http://satyap.livejournal.com/168922.html</link>
  <description>&lt;p&gt;
Here&apos;s part 1 of how to produce a nice PDF in a Ruby on Rails application using
JasperReports, a Java code library.
&lt;/p&gt;
&lt;p&gt; Overview: &lt;/p&gt;

&lt;p&gt; The development: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set up your Rails application to produce XML for the data to be filled into the template.&lt;/li&gt;
&lt;li&gt;Make the PDF template using iReport. iReport produces a .jasper file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; The execution: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your Rails application produces XML.&lt;/li&gt;
&lt;li&gt;A small Java program puts the XML and the template together using the JasperReports libraries. It returns the PDF.&lt;/li&gt;
&lt;li&gt;Your Rails application accepts the PDF and stores or serves it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Setting up the template and building the XML should usually be done at the same time.
Since I&apos;m not doing a full tutorial on JasprReports, I&apos;ll cover things briefly and without screenshots. I&apos;ll mostly cover the stuff that&apos;s specific to using an XML data source.
&lt;/p&gt;
&lt;p&gt;
First, get your Rails app to somehow return an XML file.  Stick a method in the
model to build the xml, call the method something like build_xml(). This will
take a list of ids of the records that you want in the PDF. I give it a list of
ids or an array of grade report data structures because I usually produce a
grade report for a given student. By giving this method multiple student ids or data structures, I
can produce a whole set of reports in a
single PDF file.
&lt;/p&gt;
&lt;p&gt;
By giving it an array of data, each element being one student&apos;s grade data,
the caller is agreeing to fetch the data from the database. By giving it ids,
the builder methods will fetch the data as well as building XML. I do something like this:
I put a method in Student class to get the data, and I call that method, and send what it returns to build_xml.
&lt;/p&gt;

&lt;pre&gt;
def self.build_xml(grades)
    buffer=&quot;&quot;
    xm=Builder::XmlMarkup.new()
    xm.instruct! 
    buffer += xm.grades do
        grades.each do |c|
            build_single_xml(xm, c)
        end
    end
    return buffer
end
&lt;/pre&gt;

&lt;p&gt;
build_xml declares a buffer where the XML data will accumulate. xm is the
builder object. instruct! puts in the declaration that this is an XML document.
xm.grades produces a &quot;grades&quot; XML element, and the block inside it produces the
contents of that element. We loop over the array of &quot;grades&quot;, calling
build_single_xml for each. build_single_xml builds each student&apos;s grade report
data. So, our XML is going to look like:
&lt;/p&gt;

&lt;pre&gt;
&amp;lt;grades&amp;gt;
    &amp;lt;student id=&quot;&quot;&amp;gt;
        ...data...
    &amp;lt;/student&amp;gt;
    ...repeat for each student...
&amp;lt;/grades&amp;gt;
&lt;/pre&gt;

&lt;p&gt;
Notice that each student&apos;s id is included as an attribute.
&lt;/p&gt;
&lt;p&gt;
I won&apos;t cover how to generate all the XML at this point. Let&apos;s turn to the JasperReports template... in part2.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/02/jasper_rails_pdf_1.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/02/jasper_rails_pdf_1.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/168922.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/168474.html</guid>
  <pubDate>Thu, 19 Feb 2009 02:51:35 GMT</pubDate>
  <title>Craigslist scams with a laptop</title>
  <link>http://satyap.livejournal.com/168474.html</link>
  <description>&lt;p&gt;
I recently posted a laptop for sale on craigslist. I got several responses
right away, but none of the ones I contacted got back to me. Here are some of
the responses. I most cases I answered the questions asked or asked them when
they&apos;d like to come look at it. The more scammy-sounding ones:
&lt;/p&gt;

&lt;blockquote&gt;
Do you still have these item for sale please let me know? thanks
&lt;/blockquote&gt;

&lt;blockquote&gt;
Hello Seller is this item available if so i will like to know the
condition and i am willing to pay u by Pay Pal i will be waiting to
hear from u as soon as possible
&lt;/blockquote&gt;

&lt;p&gt;
I also got one offer for half the price I listed, and a couple of emails asking
me to call a (local) phone number.  These were legitimate, I think. Lots of
them asked if it was still available (and nothing else). A couple wanted to
know about battery life and the OS. All of them got answers.
&lt;/p&gt;

&lt;p&gt;
Another asked for a couple of details and did reply to me when I responded,
though they declined to buy. I thanked them for at least having the courtesy to
communicate properly.
Oh, here&apos;s a beauty:
&lt;/p&gt;

&lt;blockquote&gt;
Thanks for your reply and am glad to know that it is still available for
sale.However i have some few questions on the products your selling.
&lt;br /&gt;
1,I would like to know the reason you are selling it..?
&lt;br /&gt;
2,What is the current condition of the item..?
&lt;br /&gt;
3,How much would you take last for it, though am okay with the listed
price..?
&lt;br /&gt;
4,Do you have the original box for it and the receipt..?
&lt;br /&gt;
5,Would you please allow me to pay through paypal even though i would cover
the shipping because am currently not local at the moment,Am participating
in a research project and i would like to purchase this item from you on
behalf of my colleague whose computer crashed.
&lt;br /&gt;
&lt;br /&gt;

If you do not have a PayPal account, you can do so by going to
www.PayPal.com and set up your account it is
free,easy and guarantees transaction safety.Once you send me your paypal
email account, I will send you the payment for your item as well as $100 USD
to cover shipping vai USPS EXPRESS MAIL INTL.
&lt;br /&gt;
I would be glad if my request is favorably consider.
&lt;br /&gt;
Thanks
&lt;/blockquote&gt;

&lt;p&gt;
Shipping? *International*? No thanks. Here&apos;s another one that at first just
asked if I have it, and after I said yes, came back with this:
&lt;/p&gt;

&lt;blockquote&gt;
Nice hearing back from you, I would be happy to purchase it from you. I&apos;m
shipping this international to my friend, and I think it would be less
costly if we could ship it straight from you to him. I&apos;m ready to pay you
the total amount of $250,for the item and $100 the shipping fees ,via USPS
EXPRESS MAIL INTERNATIONAL (EMS) and i will pay you via paypal if that would
be acceptable. Please reply and include your paypal email address if you are
interested. Thank you and God Bless you.....
&lt;/blockquote&gt;

&lt;p&gt;The &quot;total amount&quot; of $250 is wrong, it&apos;s more than what I had posted.
That&apos;s in addition to the other things wrong with this message.&lt;/p&gt;

&lt;p&gt;
A few days later I re-posted the laptop. This time I said explicitly that I
want cash, and local pickup, and no exceptions. Almost immediately I got a
couple of emails asking if I still had it. Then I got this gem:
&lt;/p&gt;

&lt;blockquote&gt;
I am very glad to hear back from you. I am a University Senior lecturer
residing in [New York]. I came across this ad on Craigslist and
thinking of my Son&apos;s Birthday coming up soon, I would love to get an
awesome present for him, which he really wants, he was currently
transferred from USA to West Africa with his team on a research on Human
development under world Health Organization.I&apos;ll be paying you through
PayPal,it&apos;s secure and protects two parties in a transaction. I will
forward my son&apos;s residential address to you for shipping as soon as the
payment reaches you. Please kindly get back to me ASAP,so that i can make
the payment there.
&lt;br /&gt;
NB: I will be paying you $200 for item and i will include $100 to cover up
the cost price for the shipping fee. Get back to me with your PayPal email
asap.
&lt;br /&gt;
&lt;br /&gt;
Regard,
&lt;br /&gt;
&lt;br /&gt;
Sent from my iPhone
&lt;/blockquote&gt;

&lt;p&gt;
And then this one. I never mentioned anything about being &quot;loaded&quot;:
&lt;/p&gt;

&lt;blockquote&gt;
INTERESTED IN YOUR DELL LAPTOP.  WHAT DO YOU MEAN EXACTLY LOADED??  REASON
FOR SELLING??  ANYTHING WRONG??  SLOW??
&lt;/blockquote&gt;

&lt;p&gt;
And this one:
&lt;/p&gt;

&lt;blockquote&gt;
I am [name deleted] by name and will like to buy your
item as a birthday gift which will be commencing very soon and will
like to buy it which i will highly elated want you to help me to ship
it to her directly over there which i will be responsible for the
shipping cost via Usps Expres mail service,so i will be glad to pay you
securely via Paypal or via Cash money order which will be deliver to
your at your doorstep in cash,so i will be offering you $350 for it
including the shipping cost via Usps express mail as mentioned above
and if this is okay by you,you can send me your paypal email address
with your full name as appear on your account and if you feel you
prefer cash money order for immediate delivery...you can mail me the
details below...
&lt;br /&gt;
&lt;br /&gt;
Your full name:
&lt;br /&gt;
Your home address as you will like to be the receiver...
&lt;br /&gt;
Hope to hear back from you soon.
&lt;br /&gt;
God Bless.....
&lt;/blockquote&gt;

&lt;p&gt;
Okay, dude. I am not going to ship this laptop anywhere, especially not when
you&apos;re offering me such juicy bait: nearly double the price I quoted.
&lt;/p&gt;

&lt;p&gt;
I eventually got a couple of responses that were local, and sold it to the
first one I got.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/02/cl_scams.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/02/cl_scams.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/168474.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/168256.html</guid>
  <pubDate>Sat, 14 Feb 2009 15:24:55 GMT</pubDate>
  <title>To-do lists and food plans</title>
  <link>http://satyap.livejournal.com/168256.html</link>
  <description>&lt;p&gt;
Based on some stuff I posted on identi.ca, and that JaredW. Smith also posted,
here are a couple of lifehacks.
&lt;/p&gt;
&lt;p&gt;
(Lifehack: an adjustment to your habit that makes life easier.)
&lt;/p&gt;
&lt;p&gt;
I maintain a spreadsheet with a daily plan of what I&apos;m going to have for lunch
and dinner. It&apos;s not in any great detail, just two entries every day, for about
a week in advance, each entry being something like &quot;pasta&quot; or &quot;KCJI&quot; or
&quot;leftover chinese&quot;. That helps me plan what to buy, keeps me from too quickly
repeating, lets me track where I ate and when, and helps prevent situations
where various different leftovers are piling up in the fridge. This plan should be flexible, though, so you can switch stuff around based on immediate needs and wants.
&lt;/p&gt;
&lt;p&gt;
I have a TODO list on my desktop. A program called tomboy, which is available
in at least Debian and Ubuntu, lets me put short sticky-notes style windows on
my desktop. Tomboy is actually a personal desktop wiki, and there are other sticky note programs out there. A simple text file may work better for some.
&lt;/p&gt;
&lt;p&gt;
The key is, to-do list should contain items to do *today*, and other immediate
stuff. Otheriwse stuff just stays on it forever. &quot;Exercise&quot; isn&apos;t a TODO list
item. &quot;laundry&quot;, &quot;treadmill&quot;, &quot;clean oven&quot; are TODO list items. Those are the
&quot;things I need to do today&quot;. Sure, you can also have things like &quot;fix that bug
in that program&quot;, but if you don&apos;t get to it soon, remove it from this list.
And yes, you can use a personal bug-tracking system for this, as well.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/02/todo_and_food_plans.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/02/todo_and_food_plans.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/168256.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/168161.html</guid>
  <pubDate>Mon, 09 Feb 2009 22:15:36 GMT</pubDate>
  <title>Did I go to Wando?</title>
  <link>http://satyap.livejournal.com/168161.html</link>
  <description>&lt;p&gt;
A 10-second-long transaction at the bank, and the girl at the counter asks me,
did I go to Wando (high school)? No? A brother? Any family member? Which is weird, because
&lt;em&gt;I&apos;m not from around here&lt;/em&gt;! (And it&apos;s fairly obvious.)
&lt;/p&gt;
&lt;p&gt;
I&apos;ve had a lot of strange questions, but that&apos;s a first.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/02/wando.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/02/wando.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/168161.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/167736.html</guid>
  <pubDate>Mon, 02 Feb 2009 23:28:04 GMT</pubDate>
  <title>Charleston County Recycling news</title>
  <link>http://satyap.livejournal.com/167736.html</link>
  <description>&lt;p&gt;
I received the Charleston County recycling newsletter last week, and it
brought up some questions. I emailed them and they answered -- every
single question was answered, in full, in a reasonable manner. Now
that&apos;s service.
&lt;/p&gt;
&lt;p&gt;
First, plastic window envelopes. You can rip out the plastic and recycle
the paper parts. Yay!
&lt;/p&gt;
&lt;p&gt;
Then, paper with confidential information: You can shred and drop off the
shredded paper at a drop-site.
&lt;/p&gt;
&lt;p&gt;
So yeah, as long as the contamination is kept to a minimum, they&apos;ll
accept paper in any form.
&lt;/p&gt;
&lt;p&gt;
#1 and #2 plastics are only taken in bottle form because that&apos;s what the
vendors want.  Oh, and they don&apos;t take recyclables #3-#7 because there isn&apos;t a
market for it.  Shipping it elsewhere would just raise our taxes, and we won&apos;t
stand for that, right?
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/02/charleston_county_recycling.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/02/charleston_county_recycling.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/167736.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/167506.html</guid>
  <pubDate>Sat, 31 Jan 2009 17:26:52 GMT</pubDate>
  <title>Yahoo domain names fiasco</title>
  <link>http://satyap.livejournal.com/167506.html</link>
  <description>&lt;p&gt;
I have a domain at Yahoo Small Business that expires next month. Since Yahoo
now charges about $30 or more per year, I decided to transfer the domain to
Dotster.
&lt;/p&gt;
&lt;p&gt;
I always set up &lt;a href=&quot;http://en.wikipedia.org/wiki/Whois&quot;&gt;whois&lt;/a&gt; privacy for my domains, so that a Whois database
lookup (this is public information) returns a placeholder postal address, email
address, and phone and fax numbers instead of my own. Yahoo and Dotster both
claim that they will forward anything received at these points of contact to
me, as long as it doesn&apos;t look spammy. Yahoo contracts with MelbourneIT for
this, by the way.
&lt;/p&gt;
&lt;p&gt;
Unfortunately, the contact information that Yahoo puts into the Whois system
isn&apos;t tagged. Everyone using the Whois privacy &quot;feature&quot; gets the same details.
How does Yahoo distinguish between them? It doesn&apos;t. When I requested a domain
transfer via Dotster, Dotster sent an email to the administrative contact,
which was Yahoo&apos;s placeholder address. I never saw that email. Only by turning
the Whois privacy off, and asking Dotster to re-send the request, did I get
Dotster&apos;s email. In the meantime my private information is exposed to the world
of domain criminals.
&lt;/p&gt;
&lt;p&gt;
Dotster&apos;s private registration *does* use tagging, the email address listed is
something random. So they can forward real requests to me. I have tested this
successfully.
&lt;/p&gt;
&lt;p&gt;
In the meantime, I did a Whois lookup for a domain I had cancelled several
months ago. To my surprise and dismay, Whois showed my personal information for
this cancelled domain!
The technical contact was listed as MelbourneIT, so I contacted them and asked
to have my information removed immediately. They asked me to contact Yahoo.
Yahoo asked me to call them. I did, and had the information removed.
Apparently, at Yahoo Small Business, &quot;cancelling&quot; your domain does NOT mean
&quot;de-registering&quot;! Horrible. I&apos;ll never be using Yahoo Small Business again.
I&apos;ll be avoiding anything by MelbourneIT, too.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://blog.myplaceinthecrowd.org/2007/01/25/yahoo-private-domain-registration-if-it%e2%80%99s-broken-don%e2%80%99t-fix-it/&quot;&gt;I&apos;m not the only one with this problem.&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/01/yahoo_domains.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/01/yahoo_domains.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/167506.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/167174.html</guid>
  <pubDate>Thu, 22 Jan 2009 17:20:05 GMT</pubDate>
  <title>BoingBoing article on pneumatic tubes</title>
  <link>http://satyap.livejournal.com/167174.html</link>
  <description>&lt;p&gt;
I saw this title on Boing Boing
&quot;&lt;a href=&quot;http://www.boingboing.net/2009/01/11/pneumatic-tubebased.html&quot;&gt;Pneumatic
tube-based postal systems of the late 19th century&lt;/a&gt;&quot;, but first I saw the
word &quot;portal&quot; instead of &quot;postal&quot; and thought they were making some &lt;a href=&quot;http://en.wikipedia.org/wiki/Portal_(video_game)&quot;&gt;Portal&lt;/a&gt;(the
game)-related joke.
Too bad they weren&apos;t.
&lt;/p&gt;

&lt;p&gt;
Insert your own &lt;a href=&quot;http://en.wikipedia.org/wiki/Series_of_tubes&quot;&gt;intertubes&lt;/a&gt; joke here.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/01/bb_postal_tubes.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/01/bb_postal_tubes.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/167174.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/167080.html</guid>
  <pubDate>Wed, 07 Jan 2009 04:29:59 GMT</pubDate>
  <title>Sansa E200P playlist</title>
  <link>http://satyap.livejournal.com/167080.html</link>
  <description>I have a Sansa Sandisk E200P music device that shows up as a USB mass storage device under Linux.
After much digging around, I found a couple of web sites and eventually realised that the playlist format is 
&quot;&lt;a href=&quot;http://schworak.com/programming/music/playlist_m3u.asp&quot;&gt;extended M3U&lt;/a&gt;&quot;
(and these are DOS ASCII files, acording to a &lt;a href=&quot;http://forums.sandisk.com/sansa/board/message?board.id=sansafuse&amp;amp;thread.id=4391&quot;&gt;forum post&lt;/a&gt;). So I wrote a script that will build playlists. You will need perl and the ability to edit simple perl code.

&lt;a href=&quot;http://www.thesatya.com/code/sansa.txt&quot;&gt;Sansa playlist maker&lt;/a&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/01/sansa_playlist.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/01/sansa_playlist.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/167080.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/166887.html</guid>
  <pubDate>Mon, 05 Jan 2009 05:49:34 GMT</pubDate>
  <title>Kino downgrade</title>
  <link>http://satyap.livejournal.com/166887.html</link>
  <description>I use kino for video editing. The newest version which comes with Ubuntu
Intrepid Ibex (8.10), version 1.3.1, has some bugs related to scene splitting. 
After trying (not very hard) and failing to get the kino devs to acknowledge 
&lt;a href=&quot;http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=2458569&amp;amp;group_id=14103&amp;amp;atid=114103&quot;&gt;the bug&lt;/a&gt;, I tried
to compile kino on my box. Mistake.

First I had to apt-get install about 100 packages (really, I counted and there
were definitely over 100). Then it complained that frame.h was including libavcodec/avcodec.h and a couple of others, which couldn&apos;t be found.
Some googling turned up 
&lt;a href=&quot;http://www.mail-archive.com/fedora-list@redhat.com/msg10758.html&quot;&gt;a laugh at Redhat&lt;/a&gt;

&lt;blockquote&gt;
&quot;Why is it that every decent multimedia production tool always requires stuff  to build its tarball that is not part of the fedora repositories?&quot;
&lt;/blockquote&gt;

and then &lt;a href=&quot;http://article.gmane.org/gmane.comp.video.kino.devel/3371&quot;&gt;this&lt;/a&gt;,
which said to reference avcodec.h and so on, i.e. remove the libavcodec/
directory qualifier from the #include lines in frame.h
However, the compiled kino segfaulted when I tried to run it.

Then it occurred to me to go grab an *older* debian package, one which I know
works -- the one from Ubuntu Hardy (8.04)!  See, so far I&apos;d been trying to find
*newer* packages.
I added Hardy main to the apt sources.list file, and got synaptic to &quot;Force
version&quot; for kino to Hardy, then locked kino&apos;s version.

Too bad it still screws up the scene splits, though. After pinning (&quot;force
version&quot; is also known as &quot;pinning&quot;) various packages, I could not fix the problem.
Eventually I tried editing a recently-captured video file. It kept the scene splits. So, apparently, my old files have some issue that makes them lose the scene split data after a kino FX operation. Weird. This confusion arose because I&apos;ve only edited old files since the Ubuntu upgrade. Sigh. What a waste of time.
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/01/kinodowngrade.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/01/kinodowngrade.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/166887.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/166472.html</guid>
  <pubDate>Thu, 01 Jan 2009 16:25:53 GMT</pubDate>
  <title>Recycling packaging material</title>
  <link>http://satyap.livejournal.com/166472.html</link>
  <description>Based on a post at 
&lt;a href=&quot;http://www.gogreencharleston.org/2008/12/08/recycle-your-amazoncom-packaging/&quot;&gt;Go Green Charleston blog&lt;/a&gt;, I had some thoughts:

&lt;p&gt;
I got a large number of packages this year. I freecycled all the boxes and packing material (including peanuts and brown paper) to a family that&apos;s moving to New Jersey. There were 2 small air bubble bags that went with it. The best part: I bought two new computer cases which came with those custom tall, thin, boxes. Well, this family has two computers they&apos;re moving, so those boxes and their foam padding came in handy!
&lt;/p&gt;

&lt;p&gt;
Now the treadmill I bought has a ton of waste, where can I recycle it?
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;several plastic bags with no recycling number (the biggest problem)&lt;/li&gt;
&lt;li&gt;bits of foam packing material (trash, a few pieces saved for later re-use)&lt;/li&gt;
&lt;li&gt;plastic ties (trash)&lt;/li&gt;
&lt;li&gt;metal bits (can these be recycled somewhere in Charleston county?)&lt;/li&gt;
&lt;li&gt;cardboard (recyclable)&lt;/li&gt;
&lt;li&gt;wood! (where can I recycle this, short of leaving it outside to decompose?)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Update: Plastic bags went to the grocery store. I think they know how to sort
them out. The metal bits will be taken to a recycling drop-site, and are in my
car now. The cardboard was recycled, and I still have the wood. I *could*
build a shelf, but why?
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2009/01/recyclingpackaging.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2009/01/recyclingpackaging.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/166472.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/166188.html</guid>
  <pubDate>Wed, 24 Dec 2008 15:51:13 GMT</pubDate>
  <title>Build notes for the Windows/Game system</title>
  <link>http://satyap.livejournal.com/166188.html</link>
  <description>&lt;p&gt;
Objective: a sub-$200 (in new parts) gaming computer capable of playing
a not-too-demanding modern game like Battlefield 2 without a lot of lag.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/&quot;&gt;Pictures are
here&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;

    &lt;li&gt;AMD Sempron 64 3800+ Manila 2.2GHz Socket AM2 Single-Core Processor
Model SDA3800CNBOX - Retail $29.99&lt;/li&gt;

    &lt;li&gt;Kingston 2GB (2 x 1GB) 240-Pin DDR2 SDRAM DDR2 800 (PC2 6400) Dual
Channel Kit Desktop Memory Model KVR800D2K2/2GR - Retail $22.99&lt;/li&gt;

    &lt;li&gt;Antec NSK4480B Black 0.8mm cold-rolled steel construction ATX Mid
Tower Computer Case 380W Power Supply - Retail $69.99&lt;/li&gt;

    &lt;li&gt;JetWay JM26GT4 AM2 NVIDIA GeForce 6100 Micro ATX AMD Motherboard -
Retail $39.99&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Subtotal    $162.96&lt;/li&gt;
&lt;li&gt;Tax     $0.00&lt;/li&gt;
&lt;li&gt;UPS 3 DAYS     $35.56&lt;/li&gt;
&lt;li&gt;Order Total     $198.52&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I&apos;ll be using the old 80GB IDE hard drive in this one, with a 20GB Windows
partition and the rest for data. I&apos;ll also be using an nVidia GeForce
6600LE that I bought for the other computer and didn&apos;t use (since the
other one had an HDMI-to-DVI adapter). The 6600 is supposed to be better
than the 6100, and anyway the on-board one supposedly uses system RAM
instead of dedicated VRAM.
&lt;/p&gt;

&lt;p&gt;
The AMD CPU is about $40-$50 cheaper than a comparable Intel CPU. My
alternative was the Intel Wolfdale E5200 at $82, but it is dual-core
unlike this AMD Sempron. That dictated the choice of motherboard, which
is simply the cheapest one with AMD support and a PATA connection. I
want analog video out (VGA) anyway, because of the way I have the shared
monitor hooked up.
&lt;/p&gt;

&lt;p&gt;
2GB for the RAM, because 1 isn&apos;t enough and Windows XP is supposed to
choke on anything more than 3. Since the board and RAM are dual-channel,
2GB it is.
&lt;/p&gt;

&lt;p&gt;
With the IDE hard drive and IDE DVD drive, I made sure to get a case
where all the drives mount in the same direction. But I still had to use
the long cable I bought for the other build. Apparently it works with
everything but the DVD burner I have, and I need DVD burning in my
primary Linux box, and I don&apos;t need it in my game box. So the game box
has a DVD-ROM drive in it and seems to work with the long PATA cable.
Antec supposedly makes good cases, so there we go, it&apos;s the cheapest
Antec case that fulfills my needs.
&lt;/p&gt;

&lt;p&gt;
I will install the CPU and RAM on the motherboard first, before opening
the case. But I will need to open the case to ground myself.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/&quot;&gt;&lt;img src=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/xpb0880_pre.jpg&quot; width=&quot;160&quot; height=&quot;120&quot; alt=&quot;Case opens from top&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
The case opens at the top with 2 thumbscrews. Sharp-ish edges as noted
in the reviews, but come on, it&apos;s a steel case. Be careful.
The side panels lift up and out, and even the front panel is fairly easy
to remove as long as you can pull the panel while releasing each of the
6 tabs, tightest one first in lockpicker-style.
&lt;/p&gt;

&lt;p&gt;
The case contains the usual spare hardware, screws and so on, and a
power cable. It has a rear 120mm fan with speed control switch, a CPU
duct, and no other fans besides the PSU (power supply). There is a bracket for a front
80mm fan, and the ability to mount one under the side duct.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/&quot;&gt;&lt;img src=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/xpb0883_pre.jpg&quot; width=&quot;160&quot; height=&quot;120&quot; alt=&quot;Case content details&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
Cute. There&apos;s a loose piece of 8-inch cable tie in there. There&apos;s a
plastic wrap-tie in the screws pouch, along with a case badge and an
unexplained metal bracket.
&lt;/p&gt;

&lt;p&gt;
With this 380W PSU, I have to watch my power consumption. I&apos;m not
sticking anything complex in there. Besides the inventory above, it&apos;s
going to be a hard drive, an optical drive, and an nVidia GeForce 6600.
&lt;/p&gt;

&lt;p&gt;
The hard drive cage is detachable, which is good because there are no
drive trays. It&apos;s hard to screw in a hard drive while supporting it with
one hand inside a cramped box. Eww, the 5.25&quot; optical drive bays have
pop-off metal covers. At least the gap left by them will be covered by
the front panels more-modern re-attachable plastic covers.
&lt;/p&gt;

&lt;p&gt;
Isn&apos;t this nice: the front plate bezel pops off completely. I can stick
an air filter in there, but who&apos;s going to clean it, and when? The case
has several air holes. I&apos;d like to cover those with filters, but again
who&apos;s going to clean/change them? Hmm, front panel comes apart into two
pieces. Handy.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/&quot;&gt;&lt;img src=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/xpb0886_pre.jpg&quot; width=&quot;160&quot; height=&quot;120&quot; alt=&quot;AMD nVidia motherboard&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
Motherboard box comes with the usual manual, driver disk, back plate,
2 SATA and 1 PATA cables, and the board. This board takes 24pin ATX
power (with the last 4 pins covered by a removeable tab, what&apos;s up with
that?) plus 4-pin power connection, plus CPU power connection.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/&quot;&gt;&lt;img src=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/xpb0888_pre.jpg&quot; width=&quot;160&quot; height=&quot;120&quot; alt=&quot;CPU and motherboard&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
I have broken the seal on the CPU box. As usual with current CPU retail
boxes, it&apos;s filled mostly with heatsink and manual. I hope it comes
pre-greased, as I don&apos;t have any thermal grease. It does come
pre-greased. Adding the HSF (heatsink-fan combo) is a little easier on
this than on the Intel board, maybe because I&apos;m doing it before
inserting into the case.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/&quot;&gt;&lt;img src=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/xpb0889_pre.jpg&quot; width=&quot;160&quot; height=&quot;120&quot; alt=&quot;CPU and HSF installed&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
The RAM was a little hard to get out of it&apos;s packaging, but it&apos;s in
there now. It&apos;s uncomfortably close to the CPU, and I&apos;m worried about
heat. AMD CPUs have historically run pretty hot. The Northbridge
heatsink is also pretty close to the CPU.
&lt;/p&gt;

&lt;p&gt;
Case feels pretty light with all the panels off. The stock back panel
(over the rear mobo connectors) is
wedged in real good, had to hammer on it with the handle of a large pair of scissors.
Unlike the other Zotac board, this mobo one has just 6 screw holes for attaching to the case.
&lt;/p&gt;

&lt;p&gt;
Okay, the metal grilles over the 5.25&quot; bays are practically impossible
to break off by hand. Only the top bay is open and given that this is an
all-PATA system with a board that has only 1 PATA connector, I need to
make sure the IDE cables will fit with the optical drive in the top bay.
I don&apos;t want to use the extra-long cable I have because I suspect it has
issues.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/&quot;&gt;&lt;img src=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/xpb0890_pre.jpg&quot; width=&quot;160&quot; height=&quot;120&quot; alt=&quot;Screw access holes&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
It&apos;s not easy to detach the hard drive cage as there are two screws
under it, in an awkward position even with the case laying on its side
and not full of dust. The cage does have metal tabs, so you don&apos;t have
to use one hand to awkwardly hold up the drive while using a second to
hold the screw and a third to turn the screwdriver. There are holes in
the right-side of the case for hard drive screw access. The hard drive
bays have silicone grommets, and the long screws necessary are included
with the case. A long magnetic screwdriver is also needed to get in from
the right.
&lt;/p&gt;

&lt;p&gt;
When I am ruler of the universe all PCI and similar cards will have
handles to pull them out.
&lt;/p&gt;

&lt;p&gt;
Oh, neat, the rear slot covers pull out. I thought they would have to be
broken off, since they lack screws. But they&apos;re just held in place by
friction. With the video card installed, I notice that the large
heatsink on the GPU (Graphics Processing Unit) and VRAM (Video RAM) is
below the card when the case is in its operating position. Anyone else
notice that heat rises? I guess it&apos;s supposed to be more of a radiator
and spreader than a convective cooler, but still.
&lt;/p&gt;

&lt;p&gt;
I knew I did something stupid: badge on front of case has been glued
upside down.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/&quot;&gt;&lt;img src=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/xpb0898_pre.jpg&quot; width=&quot;160&quot; height=&quot;120&quot; alt=&quot;Build complete&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
Due to the CPU duct and the way the side panel closes (it slides down
from above by about half an inch) it&apos;s a little hard to close,
especially with my big IDE cable in there. The duct helps move the
cables away from the CPU and the video card, though, but I should route
them better. Which I have now done. The side panel closes a little
easier now. Sure, the fan wires are taped to the bottom of the PSU, but
who cares.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/&quot;&gt;&lt;img src=&quot;http://www.thesatya.com/albums/misc/xpbuild2008/xpb0897_pre.jpg&quot; width=&quot;160&quot; height=&quot;120&quot; alt=&quot;CPU duct and panel grille&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
I&apos;ve added a few air filter swatches inside the side panel grille and
in the CPU duct.
&lt;/p&gt;

&lt;p&gt;
This power supply, an Antec Earthwatts 380W, also has a hard switch on
the back. Powering up....
&lt;/p&gt;

&lt;p&gt;
Well, that&apos;s interesting. My ancient Windows XP boot CD does not
recognize the on-board network adapter. Oh, well. Either it&apos;ll be  on
the motherboard&apos;s disc or I can find a generic one online and transfer
visa USB. Here&apos;s a hint, though, my XP disc may not work on new
computers much longer. Or are modern CPUs still capable of emulating
8086 and Pentium?
&lt;/p&gt;

&lt;p&gt;
Interesting, XP detected the network right after installing the drivers
from the mobo disc. No reboot needed. But I don&apos;t think it&apos;s doing very
well with the video -- dragging a window is slow and jerky. Bet it
doesn&apos;t have the drivers. (Yes, installing the drivers made it much
better.)
&lt;/p&gt;

&lt;p&gt;
How bad is it to reverse the polarity of the electron flow across a
photon emitter? Translation: I plugged in the power LED backwards   
&lt;/p&gt;

&lt;p&gt;
Downloaded the nVidia drivers. 80 megabytes, sigh. Installing now.
My standard loadout for a Windows system includes Firefox, AVG Free,
and Zonealarm free, and I&apos;m adding WinSCP to this system. I also
installed a motherboard monitoring app from the mobo disc, as well as
sound, network, and System Management Bus (SM Bus) drivers. Eventually
the Windows Device Manager stopped showing yellow exclamations or red
whatevers.
&lt;/p&gt;

&lt;p&gt;
Also downloaded the latest Quicktime, because Septerra Core keeps
crashing on startup. I wonder what else is missing or unsupported. 
&lt;/p&gt;

&lt;p&gt;
New system doesn&apos;t feel very fast, despite turning off all the eyecandy
stuff that Windows brings in (the equivalent of turning off Compiz, I
guess). Battlefield 2 seems to run better.
&lt;/p&gt;

&lt;p&gt;
According to the mobo monitor, system temperature is about 85
degrees Fahrenheit and CPU varies about 90-96 Fahrenheit.
According to my wattmeter it takes 60 to 90 watts and about 750mA.
&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2008/12/new_windows.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2008/12/new_windows.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/166188.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://satyap.livejournal.com/166102.html</guid>
  <pubDate>Sat, 20 Dec 2008 04:16:35 GMT</pubDate>
  <title>CD-ROM on ubuntu Ibex</title>
  <link>http://satyap.livejournal.com/166102.html</link>
  <description>Google-bait: On Ubuntu Ibex 8.10, with an IDE (PATA) CDROM/CD-RW drive, the drive is detected just fine,
dvd+rw-mediainfo sees it, but on trying to mount it with Gnome I get messages
like &quot;Unable to mount media&quot; and other things implying that there is no disc in
the drive, as if the disc is not sensed. Adding this to /etc/fstab solves the problem:

&lt;pre&gt;
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thesatya.com/blog/2008/12/cdrom_on_ubuntu_ibex.html&quot;&gt;Cloned&lt;/a&gt;
    from 
    &lt;a href=&quot;http://www.thesatya.com/blog/&quot;&gt;Satya&apos;s 
    website&lt;/a&gt;
    (&lt;a href=&quot;http://www.thesatya.com/cgi-bin/blogcomm.pl?url=/blog/2008/12/cdrom_on_ubuntu_ibex.html&quot;&gt;post comment&lt;/a&gt;)
    &lt;/p&gt;</description>
  <comments>http://satyap.livejournal.com/166102.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
