<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" gd:etag="W/&quot;CEINSX0_eyp7ImA9WhdREEg.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040</id><updated>2011-07-30T15:03:18.343-04:00</updated><category term="linux" /><category term="nostalgia" /><category term="logging" /><category term="xml" /><category term="solr" /><category term="bluetooth" /><category term="tags" /><category term="advice" /><category term="java" /><category term="jetty" /><category term="verizon" /><category term="network" /><category term="eclipse" /><category term="evdo" /><category term="ubuntu" /><category term="vnc" /><category term="fios" /><category term="laptop" /><category term="kids" /><category term="database" /><category term="gnome" /><title>Non-volatile memory</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/nonvolatilememory" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="nonvolatilememory" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.155449</geo:lat><geo:long>-77.074876</geo:long><entry gd:etag="W/&quot;DU8CSXk-eyp7ImA9Wx5RF0s.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-1690880040927002703</id><published>2010-08-25T16:14:00.003-04:00</published><updated>2010-08-25T16:24:28.753-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-25T16:24:28.753-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jetty" /><category scheme="http://www.blogger.com/atom/ns#" term="logging" /><title>Request logs rolling with suffixes from Jetty</title><content type="html">It seemed simple enough. The goal: get jetty to log requests to a file such as &lt;code&gt;request.log&lt;/code&gt; and rotate that file on a daily basis to something with a suffix. &lt;br /&gt;
&lt;p/&gt;By default Jetty wants to rename request logs something like &lt;code&gt;mm_dd_yy_request.log&lt;/code&gt;, this is all well and good, but it complicates the logic of any tool you might use to sync and remove log files. For example log4j's &lt;code&gt;RollingFileAppender&lt;/code&gt; will append numeric suffixes like .1 to the end of logs it has closed and rotated out, but with Jetty's default configuration, one has to get a little tricky to figure out what request log is still open. It's not as easy as grabbing &lt;code&gt;request.log.*&lt;/code&gt; to grab the out-of-rotation logs.&lt;br /&gt;
&lt;p/&gt;I discovered the solution in the code of &lt;code&gt;RolloverFileOutputStream&lt;/code&gt;, the class in jetty-util that Jetty's &lt;code&gt;NCSARequestLog&lt;/code&gt; class uses internally to write the log files. When logfile appending is turned off and &lt;code&gt;RolloverFileOutputStream&lt;/code&gt; attempts to open a new log where a file with the same name already exists, &lt;code&gt;RolloverFileOuputStream&lt;/code&gt; will rename the existing file by appending the date, format specified by the system property &lt;code&gt;ROLLOVERFILE_BACKUP_FORMAT&lt;/code&gt;, to the existing logfile name. This means that the request.log is the live, open log and files named like request.log.yyyyMMdd-HHmmss are the logs that are out of rotation.&lt;br /&gt;
&lt;p/&gt;So to achieve this, modify the &lt;code&gt;RequestLog&lt;/code&gt; entry in &lt;code&gt;jetty.xml&lt;/code&gt; to look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-size: xx-small;"&gt;    &amp;lt;Ref id="RequestLog"&amp;gt;
      &amp;lt;Set name="requestLog"&amp;gt;
        &amp;lt;New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog"&amp;gt;
          &amp;lt;Arg&amp;gt;&amp;lt;SystemProperty name="jetty.logs" default="./logs"/&amp;gt;/request.log&amp;lt;/Arg&amp;gt;
          &amp;lt;Set name="retainDays"&amp;gt;31&amp;lt;/Set&amp;gt;
          &amp;lt;Set name="append"&amp;gt;false&amp;lt;/Set&amp;gt;
          &amp;lt;Set name="extended"&amp;gt;false&amp;lt;/Set&amp;gt;
          &amp;lt;Set name="LogTimeZone"&amp;gt;GMT&amp;lt;/Set&amp;gt;
          &amp;lt;Set name="ignorePaths"&amp;gt;
            &amp;lt;Array type="java.lang.String"&amp;gt;
              &amp;lt;Item&amp;gt;/solr/ping&amp;lt;/Item&amp;gt;
            &amp;lt;/Array&amp;gt;
          &amp;lt;/Set&amp;gt;
        &amp;lt;/New&amp;gt;
      &amp;lt;/Set&amp;gt;
    &amp;lt;/Ref&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
And at starup of your jetty instance, do something like:&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-size: xx-small;"&gt;java -DROLLOVERFILE_BACKUP_FORMAT=yyyyMMdd-HHmmss -jar start.jar&lt;/span&gt;&lt;/pre&gt;And Viola! New log messages are written to &lt;code&gt;request.log&lt;/code&gt; and logs are rolled out to &lt;code&gt;request.log.somenicesuffixhere.&lt;/code&gt;&lt;br /&gt;
&lt;p/&gt;As for the &lt;code&gt;ignorePaths&lt;/code&gt; stanze in the configuration above, you probably don't need it in your configuration. It's handy for me to skip logging health checks.&lt;br /&gt;
&lt;p/&gt;Also as for syncing the logs off the individual machines they're written to, rsync's &lt;code&gt;--remove-sent-files&lt;/code&gt; option is pretty handy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-1690880040927002703?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/1690880040927002703/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=1690880040927002703" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/1690880040927002703?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/1690880040927002703?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2010/08/request-logs-rolling-with-suffixes-from.html" title="Request logs rolling with suffixes from Jetty" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DU8MR3s9cSp7ImA9Wx5RF0s.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-3744197046812750223</id><published>2010-08-01T13:33:00.001-04:00</published><updated>2010-08-25T16:24:46.569-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-25T16:24:46.569-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="laptop" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Changing Laptop Screen Brightness from the command-line</title><content type="html">My new Dell Studio 15's laptop screen is great. It is bright, and by bright I mean that on full brightness I can use it outside on a sunny day with my sunglasses on and still read the screen comfortably. This brightness is great except for cases when I don't want it so bright, like when I'm working in a darker room. One night I discovered that the lower third of my vision had a dark blind spot after doing some work while watching a movie. That can't be good. &lt;br /&gt;
&lt;br /&gt;
Problem is, I don't always remember to adjust the brightness, and from what I can tell, it always boots into Ubuntu af full brightness, so I dug around for a way to change the brightness automatically. Thanks to google I found a post over on &lt;a href="http://www.linuxscrew.com/2007/10/25/ajust-lcd-brightness-from-command-line-works-at-dell-1501/"&gt;LinuxScrew&lt;/a&gt; that talks about changing the brightness for a dell inspiron 1501. Turns out the Studio 15 has a similar method using /proc. Cat'ing the file shows me the acceptable brightness levels:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-size: xx-small;"&gt;# cat /proc/acpi/video/M86/LCD/brightness 
levels:  6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 100
current: 100
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
Echo'ing something to the file (as root) sets the value:&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-size: xx-small;"&gt;# echo -n 18 &gt; /proc/acpi/video/M86/LCD/brightness 
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
There's lots of places to go with this, but for now I'm going to pop it into &lt;code&gt;rc.local&lt;/code&gt; and run with it.&lt;br /&gt;
&lt;br /&gt;
No more blind spots, excellent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-3744197046812750223?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/3744197046812750223/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=3744197046812750223" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/3744197046812750223?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/3744197046812750223?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2010/08/changing-laptop-screen-brightness-from.html" title="Changing Laptop Screen Brightness from the command-line" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DU4FSH85cSp7ImA9Wx5RF0s.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-944843495555384954</id><published>2010-07-27T16:47:00.001-04:00</published><updated>2010-08-25T16:25:19.129-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-25T16:25:19.129-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="solr" /><category scheme="http://www.blogger.com/atom/ns#" term="jetty" /><title>Serving content with Solr's Jetty instance.</title><content type="html">When prototyping with Solr 1.4.x, I've found it useful to serve webpages, javascript and images using the Jetty server used by Solr's example instance. Doing so is straightforward:&lt;br /&gt;
&lt;br /&gt;
Create a directory named &lt;code&gt;contexts&lt;/code&gt; in the Solr &lt;code&gt;examples&lt;/code&gt; directory which contains the &lt;code&gt;etc&lt;/code&gt; and &lt;code&gt;start.jar&lt;/code&gt; files. Create a context definition file inside this directory. It can be named anything, I commonly call it &lt;code&gt;root-context.xml&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The file contains the following:&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;Configure class="org.mortbay.jetty.webapp.WebAppContext"&amp;gt;
  &amp;lt;Set name="contextPath"&amp;gt;/&amp;lt;/Set&amp;gt;
  &amp;lt;Set name="resourceBase"&amp;gt;&amp;lt;SystemProperty name="jetty.home" default="."/&amp;gt;/contexts/root&amp;lt;/Set&amp;gt;
  &amp;lt;Set name="defaultsDescriptor"&amp;gt;&amp;lt;SystemProperty name="jetty.home" default="."/&amp;gt;/etc/webdefault.xml&amp;lt;/Set&amp;gt;
&amp;lt;/Configure&amp;gt;&lt;/span&gt;&lt;/pre&gt;In the &lt;code&gt;contexts&lt;/code&gt; directory, create a directory named &lt;code&gt;root&lt;/code&gt; and place your content there. Voila -- once you launch the solr instance with &lt;code&gt;java -jar start.jar&lt;/code&gt;, everything placed in the root directory is available under &lt;code&gt;http://yourhostname:8983&lt;/code&gt;, while solr is availble at &lt;code&gt;http://yourhostname:8983/solr&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-944843495555384954?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/944843495555384954/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=944843495555384954" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/944843495555384954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/944843495555384954?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2010/07/serving-content-with-solrs-jetty.html" title="Serving content with Solr's Jetty instance." /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQBQnY_fip7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-7953842032448676024</id><published>2010-05-21T08:52:00.001-04:00</published><updated>2010-07-08T17:59:13.846-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T17:59:13.846-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="advice" /><title>A Useful Hint to Young Engineers</title><content type="html">When I visited Thomas Edison's lab in Orange, NJ last winter, I spotted a clipping in one of the displays:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;"&lt;span style="font-weight:bold;"&gt;A Useful Hint to Young Engineers&lt;/span&gt; -- 'The man for whom every employer of men is searching, everywhere and always is the man who will accept the responsibility for the work he has to do -- who will not lean at every point upon his superior for additional instructions, advice or encouragement.&lt;br /&gt;
&lt;br /&gt;
There is no more valuable subordinate than the man to whom you can give a piece of work and then forget about it, in the confident expectation that the next time it is brought to your attention it will come in the form of a report that the thing has been done. When this master quality is joined to the executive power, loyalty and common sense, the result is a man whom you can trust. On the other hand, there is no greater nuisance to a man heavily burdened with the direction of affairs than the weak-backed assistant who is continually trying to get his chief to do his work for him, on the feeble idea that he thought the chief would like to decide this or [that]."&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Gender bias aside, a useful hint indeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-7953842032448676024?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/7953842032448676024/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=7953842032448676024" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/7953842032448676024?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/7953842032448676024?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2010/05/useful-hint-to-young-engineers.html" title="A Useful Hint to Young Engineers" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQDQH05fSp7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-182867322435470442</id><published>2010-01-09T16:25:00.002-05:00</published><updated>2010-07-08T17:59:31.325-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T17:59:31.325-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Ubuntu 9.10 and sticky java dialog boxes.</title><content type="html">I'm running Ubuntu 9.10 in my laptop and have been suffering from an unusual problem. The buttons on dialog boxes created by the eclipse ide 'stick'. When I click on any button in a dialog, it gets stuck in the down position and never activates. The only solution is to tab over to the button if possible and activate it with the return key. Very irritating.&lt;br /&gt;
&lt;br /&gt;
I finally tracked down the fix today. The problem is caused by something related to the way in which GDK renders its windows in the latest version. The solution is to set the environment variable GDK_NATIVE_WINDOWS=1 prior to launching eclipse. Apparently this is also a problem on newer versions of Fedora as well. Indeed it is probably an issue with anything running gdk 2.18 or newer, where the switch to 'client side windows' was made.&lt;br /&gt;
&lt;br /&gt;
I've fixed this by renaming eclipse to eclipse.bin and placing the following script named eclipse in the same directory:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="border: 1px solid rgb(153, 153, 153); margin: 1em 7px; padding: 12px; overflow: auto; font-size: 13px;"&gt;&lt;pre&gt;#!/bin/bash
BASE=$(dirname $0)
export GDK_NATIVE_WINDOWS=1
exec $BASE/eclipse.bin&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
don't forget to chmod +x it so that it is executable. You'll also have to rename eclipse.ini to eclipse.bin.ini -- eclipse finds its ini based on the binary name. &lt;br /&gt;
&lt;br /&gt;
sheesh.&lt;br /&gt;
&lt;br /&gt;
For an explanation of what GDK_NATIVE_WINDOWS is all about, check out the post &lt;a href="http://blogs.gurulabs.com/dax/2009/10/what-gdk-native.html"&gt;"What GDK_NATIVE_WINDOWS=1"&lt;/a&gt; means over on Dax's blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-182867322435470442?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/182867322435470442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=182867322435470442" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/182867322435470442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/182867322435470442?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2010/01/ubuntu-910-and-sticky-java-dialog-boxes.html" title="Ubuntu 9.10 and sticky java dialog boxes." /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQMRHczcSp7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-3901217832654676996</id><published>2008-09-03T11:48:00.001-04:00</published><updated>2010-07-08T17:59:45.989-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T17:59:45.989-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>GUID vs. Auto-Increment Primary Keys.</title><content type="html">This all started off from reading &lt;a href="http://betterexplained.com/articles/the-quick-guide-to-guids/"&gt;yet another wonderful post over at Better Explained&lt;/a&gt;, which is currently my favorite blog of the moment. My Google reader starred items list overflows with entries to-read from this blog. I wanted to brush up on the semantics of GUIDs/UUIDs because I'm currently implementing RDF output for one of our products from work and keeping the object URIs unique and consistent is a good thing. I'm using a simple MD5 hash for that.&lt;br /&gt;
&lt;br /&gt;
The interesting aspect that cem out of this is the discussion of using GUIDs as database primary keys. We'd tried that a couple years ago but abandoned the implementation for a number of reasons.&lt;br /&gt;
&lt;br /&gt;
I'll come back and finish this post some day, but I really just want to capture a bunch of links in one place. It would be cool if those social bookmarking services would allow you to cluster a bunch of links together into a single posting. At any rate, I'll use a blog for this instead and see how it works.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000817.html"&gt;Coding Horror: Primary Keys: IDs versus GUIDs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://krow.livejournal.com/497839.html"&gt;Brian "Krow" Aker's Idle Thoughts - Myths, GUID vs Autoincrement&lt;/a&gt;: Excellent discussion here, need to go back and find out if he ever did benchmarks for secondary keys.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mysqlperformanceblog.com/2007/03/13/to-uuid-or-not-to-uuid/"&gt;MySQL Performance Blog: To UUID or not to UUID?&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;The general sentiment here is is that using UUID's instead of auto-incrementing ints decentralizes id assignment, enabling scale and avoiding having to re-key data when it's merged. The tradeoffs related to space are worth it and the performance impact is likely to be minimal&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-3901217832654676996?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/3901217832654676996/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=3901217832654676996" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/3901217832654676996?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/3901217832654676996?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2008/09/guid-vs-auto-increment-primary-keys.html" title="GUID vs. Auto-Increment Primary Keys." /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEIFQXYzeCp7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-5727803457914670949</id><published>2008-08-17T22:44:00.001-04:00</published><updated>2010-07-08T18:01:50.880-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T18:01:50.880-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="nostalgia" /><title>Earthquake in NJ</title><content type="html">Growing up in NJ, earthquakes were unheard of. Back when I was a kid in Bergen County I felt one. It was a Saturday morning, and I was at a friend's house after sleeping there the night before. It lasted long enough for us to realize we didn't know what was going on and to run outside of the house and witness everything moving. &lt;br /&gt;
&lt;br /&gt;
I was thinking about the quake lately and finally managed to track down the event. According to the Lamont-Doherty Earth Observatory of Columbia University, the earthquake occured about 6:04am on October 19th, 1985 and was measured at 4.0 on the Richter scale. Its epicenter was in Ardsley, NY. (40.98N, 73.83W), referred to as the "Ardsley Quake".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-5727803457914670949?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/5727803457914670949/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=5727803457914670949" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/5727803457914670949?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/5727803457914670949?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2008/08/earthquake-in-nj.html" title="Earthquake in NJ" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEMDR3s9fip7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-231083036114862579</id><published>2008-03-16T14:23:00.001-04:00</published><updated>2010-07-08T18:01:16.566-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T18:01:16.566-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>Color Grep</title><content type="html">I was &lt;kbd&gt;grep&lt;/kbd&gt;-ing through some RSS feeds today when it struck me that there's got to be a way to highlight the text that &lt;kbd&gt;grep&lt;/kbd&gt; matches much like the matching text in &lt;kbd&gt;vi&lt;/kbd&gt; or &lt;kbd&gt;less&lt;/kbd&gt; is when searching. Well, it turns out there is.&lt;br /&gt;
&lt;br /&gt;
Just like &lt;kbd&gt;ls&lt;/kbd&gt;, &lt;kbd&gt;grep&lt;/kbd&gt; supports the &lt;kbd&gt;--color&lt;/kbd&gt; option. This means with &lt;kbd&gt;--color=auto&lt;/kbd&gt;, &lt;kbd&gt;grep&lt;/kbd&gt; will colorize the portion of the line that matches when it sends output to a terminal, but avoid adding the color escape sequences when you're sending the output to a file or pipe. Unlike &lt;kbd&gt;ls&lt;/kbd&gt;, which relies on some setup to get it displaying colors properly (see: &lt;kbd&gt;/etc/profile.d/colorls.sh&lt;/kbd&gt; if you don't believe me), setting up &lt;kbd&gt;grep&lt;/kbd&gt; to colorize matches by default is as easy as defining the environment variable &lt;kbd&gt;GREP_OPTIONS='--color=auto'&lt;/kbd&gt; in either your local or system-wide shell startup script.&lt;br /&gt;
&lt;br /&gt;
A typical use-case for me is to pipe the output of grep output to less. If you do this too, keep in mind that the right invocation to get colorized output in less is:&lt;br /&gt;
&lt;br /&gt;
&lt;kbd&gt;grep --color=always foo bar.txt | less -R&lt;/kbd&gt;&lt;br /&gt;
&lt;br /&gt;
The &lt;kbd&gt;-R&lt;/kbd&gt; argument to less allows it to pass ANSI color codes unchanged, and &lt;kbd&gt;--color=always&lt;/kbd&gt; forces grep to colorize its output even though it is going to a pipe.&lt;br /&gt;
&lt;br /&gt;
If you're interested in customizing the color of the highlighted matches, you can set the &lt;kbd&gt;GREP_COLOR&lt;/kbd&gt; environment variable. A good source of example colors is available in the adequately-commented &lt;kbd&gt;/etc/DIR_COLORS&lt;/kbd&gt; that's used for setting up color &lt;kbd&gt;ls&lt;/kbd&gt;. I like &lt;kbd&gt;GREP_COLOR='43;30;01'&lt;/kbd&gt; which gives you a nice black on yellow highlight for the matched text.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-231083036114862579?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/231083036114862579/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=231083036114862579" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/231083036114862579?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/231083036114862579?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2008/03/color-grep.html" title="Color Grep" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEMFSX4_fyp7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-2106839080298033559</id><published>2007-11-04T19:16:00.004-05:00</published><updated>2010-07-08T18:00:18.047-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T18:00:18.047-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tags" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="xml" /><title>del.icio.us and xhtml parsing in java.</title><content type="html">To find the information that del.icio.us knows about any url use &lt;code&gt;http://del.icio.us/url/(url-md5sum)&lt;/code&gt;. The md5 is a standard 32-character md5 string with downcased hex digits. URLs should be properly slash terminated prior to generating the md5, for example, &lt;a href="http://del.icio.us/url/0904d9d994c2d37f07bcf392cb45689f"&gt;http://www.slashdot.org/&lt;/a&gt; but not &lt;a href="http://del.icio.us/url/d602425a7712fc4cd7dfc2b60a79c121"&gt;http://www.slashdot.org&lt;/a&gt;. In some cases people have tagged the urls without the trailing slash.&lt;br /&gt;
&lt;br /&gt;
The html (xhtml really) served by del.icio.us is really clean, so occured to me that the various entries I'm interested in extracting could be retrieved using the same strategy used to identify &lt;a href="http://microformats.org/"&gt;microformats&lt;/a&gt;. That also started me thinking about using xpath expressions to identify and exract the right xhtml nodes.&lt;br /&gt;
&lt;br /&gt;
I didn't have much luck. xhtml is an interesting beast. When following the java Xpath api usage examples, the parser complains about the contents of script tags containing illegal characters, and del.icio.us doesn't wrap their script tag contents contents in a CDATA, which doesn't seem to be required or common practice anyways.&lt;br /&gt;
&lt;br /&gt;
It turns out that a combination of &lt;a href="http://jtidy.sourceforge.net/"&gt;jTidy&lt;/a&gt; and &lt;a href="http://www.dom4j.org/"&gt;dom4j&lt;/a&gt; seems to work reasonably well.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin: 1em 7px; padding: 12px; border: 1px solid #999999; overflow: auto; font-size: 13px;"&gt;&lt;br /&gt;
&lt;pre&gt;InputStream in = new FileInputStream("target/out.xhtml");

Tidy tidy = new Tidy();
tidy.setShowWarnings(false);
tidy.setQuiet(true);
tidy.setXHTML(true);
tidy.setXmlOut(true);
org.w3c.dom.Document domDocument = tidy.parseDOM(in, null);

DOMReader domReader = new DOMReader();
Document doc = domReader.read(domDocument);

List list = doc.selectNodes("//div");

for (int i=0; i &lt; list.size(); i++) {
System.out.println(list.get(i).toString());
}&lt;/pre&gt;

&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-2106839080298033559?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/2106839080298033559/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=2106839080298033559" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/2106839080298033559?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/2106839080298033559?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2007/11/things-i-learned-about-delicious-today.html" title="del.icio.us and xhtml parsing in java." /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQHRHo7fip7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-8016206129514468073</id><published>2007-10-27T22:04:00.001-04:00</published><updated>2010-07-08T17:58:55.406-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T17:58:55.406-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="kids" /><title>Crawling</title><content type="html">&lt;a href="http://3.bp.blogspot.com/_kgO-m_H7GxI/RyPuQGNhqlI/AAAAAAAABAY/292Hqhipccs/s1600-h/IMG_4810.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_" style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="http://3.bp.blogspot.com/_kgO-m_H7GxI/RyPuQGNhqlI/AAAAAAAABAY/292Hqhipccs/s320/IMG_4810.jpg" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;
The twins are almost nine months old now, and we've got our hands full. They're both on the edge of mobility. Owen actually gets around pretty well these days, happilly terrorizing stacks of magazines, cd, photo frames, while Audrey still uses the steamroller technique and often gives up in a show of arm and leg flapping amongst other protesting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nevertheless, we've only begun to child-proof our house. The long and winding road towards child-safety remains to be fully traveled.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_kgO-m_H7GxI/RyPuQmNhqmI/AAAAAAAABAg/3m7zssDrjsg/s1600-h/IMG_4811.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_" style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="http://1.bp.blogspot.com/_kgO-m_H7GxI/RyPuQmNhqmI/AAAAAAAABAg/3m7zssDrjsg/s320/IMG_4811.jpg" border="0" /&gt;&lt;/a&gt;&lt;div style='clear:both; text-align:LEFT'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-8016206129514468073?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/8016206129514468073/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=8016206129514468073" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/8016206129514468073?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/8016206129514468073?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2007/10/crawling.html" title="Crawling" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_kgO-m_H7GxI/RyPuQGNhqlI/AAAAAAAABAY/292Hqhipccs/s72-c/IMG_4810.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQEQXc_fyp7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-5372914053361056763</id><published>2007-08-26T13:57:00.001-04:00</published><updated>2010-07-08T17:58:20.947-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T17:58:20.947-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="kids" /><title>A Picture of the Twins</title><content type="html">&lt;a href="http://4.bp.blogspot.com/_kgO-m_H7GxI/RtG_F0_p6vI/AAAAAAAAA3Y/c-xm8jMHFlA/s1600-h/IMGA0085.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_" style="margin: 0px 10px 10px 0px; clear: both; float: left;" alt="" src="http://4.bp.blogspot.com/_kgO-m_H7GxI/RtG_F0_p6vI/AAAAAAAAA3Y/c-xm8jMHFlA/s320/IMGA0085.JPG" border="0" /&gt;&lt;/a&gt;I've been cleaning out the memory cards on various devices.&lt;br /&gt;
&lt;br /&gt;
Here are Audrey and Owen lying in their crib. They're about 5 months old in this picture. Yes, they're holding hands. How cute is that? Now that they're more mobile, if you were to put them into a crib together one will eventually end up steamrolling the they would start trying to chew on each other's closest extremity. This leads to unhappy babes, which is not a good thing, especially since Owen has his first two teeth -- and they're sharp!&lt;br /&gt;
&lt;br /&gt;
I'm also using this as an excuse to test out posting to a blogger blog via Picassa.&lt;div style="clear: both; text-align: left;"&gt;&lt;a href="http://picasa.google.com/blogger/" target="ext"&gt;&lt;img src="http://photos1.blogger.com/pbp.gif" alt="Posted by Picasa" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="middle" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-5372914053361056763?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/5372914053361056763/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=5372914053361056763" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/5372914053361056763?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/5372914053361056763?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2007/08/picture-of-twins.html" title="A Picture of the Twins" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_kgO-m_H7GxI/RtG_F0_p6vI/AAAAAAAAA3Y/c-xm8jMHFlA/s72-c/IMGA0085.JPG" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkcARHg-eip7ImA9WB9WEkk.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-3761704148380724289</id><published>2007-08-08T10:49:00.000-04:00</published><updated>2007-11-16T16:20:45.652-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-16T16:20:45.652-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="evdo" /><category scheme="http://www.blogger.com/atom/ns#" term="bluetooth" /><category scheme="http://www.blogger.com/atom/ns#" term="verizon" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Verizon Bluetooth EVDO on Ubuntu</title><content type="html">I managed to get my Verizon KRZR k1m connected to my ubuntu laptop via bluetooth for dialup EVDO access. The &lt;a href="http://help.ubuntu.com/community/BluetoothDialup"&gt;BluetoothDialup help page on help.ubuntu.com&lt;/a&gt; was essential to figuring it out, along with the &lt;a href="https://help.ubuntu.com/community/BluetoothDialup/Verizon"&gt;carrier specific information for Verizon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I did not have any luck getting EVDO dialup to work with the k1m connected to the laptop via USB. Apparently the usb configuration on Verizon's k1m doesn't cause the cdc-acm usb driver to load for the device and I ended up getting stuck with uhci instead. So, it appears that I'm out of luck as far as using it over a usb connection is concerned.&lt;br /&gt;&lt;br /&gt;The interesting thing is that the speeds I got via Bluetooth in linux vs. USB using Verizon's access manager software in windows were quite similar. At my location, in the suburbs of the Washington DC area, I managed to get ~480k down and ~128k up. I wonder how that compares to the speeds that others have received elsewhere.&lt;br /&gt;&lt;br /&gt;Now the only minor annoyance is that this doesn't work via NetworkManager at all, and I'm stuck with using pon and poff from the command line. I can set up the call via NetworkManager 's ppp control, but nothing is notified that the ppp connection has succeeded, so I can't for instance use the NetworkManager applet to start my vpn connection once the connection is set up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-3761704148380724289?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/3761704148380724289/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=3761704148380724289" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/3761704148380724289?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/3761704148380724289?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2007/08/verizon-bluetooth-evdo-ubuntu.html" title="Verizon Bluetooth EVDO on Ubuntu" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEMASH87fSp7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-1515927932650288414</id><published>2007-05-11T09:59:00.001-04:00</published><updated>2010-07-08T18:00:49.105-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T18:00:49.105-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="network" /><category scheme="http://www.blogger.com/atom/ns#" term="fios" /><category scheme="http://www.blogger.com/atom/ns#" term="verizon" /><title>FiosTV and Network changes.</title><content type="html">Finally, there's decent tv service in our area.&lt;br /&gt;
&lt;br /&gt;
The incumbent provider's service in this portion of Montgomery County, MD was very poor -- static/poor picture on some channels, often unwatchable video-on-demand despite a couple service visits and more than a couple new cable runs from the curb to my house. It got to a point where I just wasn't willing to invest any more time into working with them to solve the problem.&lt;br /&gt;
&lt;br /&gt;
I never made the jump to satellite. There's too many trees in the south-facing sky on our property, and after having FIOS internet installed about a year ago now, I knew the tv service was around the corner. I kept checking the threads in the &lt;a href="http://www.dslreports.com/forum/vzfiber"&gt;broadband reports forum&lt;/a&gt; for updates on the status of the local verizon cable franchise agreement and &lt;a href="http://www.dslreports.com/forum/remark,17401196"&gt;rollout of installs across the county&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Enter Verizon's FIOS tv service, delivered to the house via fiber. The poor picture is gone, video-on-demand works well, all together a much better experience. I still have to deal with IR Blasters from my Tivo's to the Verizon supplied Motorola STB's but that annoyance is nothing new. Apparently the serial controls are working for some areas, but I haven't gotten around to trying that here yet.&lt;br /&gt;
&lt;br /&gt;
Getting the new hardware that comes with the service working with my home network just the way I wanted was a bit tricky. I don't really have what you'd call a typical network setup and plus, I like to fiddle around to see what's possible.&lt;br /&gt;
&lt;br /&gt;
With the install came 2 motorola set top boxes and a brand new ActionTec MI424-WR router. The thing that sets this router apart from your run-of-the mill hardware  is that it hooks up to both the ethernet and coax drop from the FIOS ONT and provides a 4 port switch to hook your home network into. The set top boxes provided for TV service get their TV signal directly from the ONT, but get guide information and video-on-demand over the IP network via the router, which serves as a bridge between the wan ethernet connection  and the coax running through my house. Data over coax is really referred to as MoCA, a spec from the Multimedia Over Coax Alliance (new to me). Apparently, some new FIOS installs get their internet connectivity over a wan coax connection, and the router can handle bridging between that and a lan ethernet connection as well. Pretty cool. Finally, the router also acts as a wireless access point, supporting the G standard. I've got to give kudos to Verizon/ActionTec for having wireless security configured out of the box with the default wep keys printed on the bottom of the router. It's WEP 64, but better than nothing.&lt;br /&gt;
&lt;br /&gt;
By default this thing is set up to run your network -- assign full on dhcp addresses to your machines, dns, etc you name it. Perfect for the person who wants an easy network install and doesn't want to worry about configuring a thing.&lt;br /&gt;
&lt;br /&gt;
If you dig around on the net for information about this router, you'll see alot of hate tossed in its general direction. There's been some discussion that the ActionTec has a puny NAT table that ruins the performance of some P2P apps.  Also, people love their Linksys WRT54G's. The level of customization you can perform on these really makes them your 'own' router. I recently discovered the incredible &lt;a href="http://www.polarcloud.com/tomato"&gt;Tomato Firmware&lt;/a&gt; and I was pretty dismayed at having to move the thing behind this new ActionTec thing as the FIOS installer required, that and the quick and dirty setup I had in place to make sure everything was working before the installer left was doing double NAT. ugh.  As soon as the guy had left the house, I was switching things around to get that WRT54G out in front again.&lt;br /&gt;
&lt;br /&gt;
Getting everything configured properly to do that was a breeze. Initially, the WRT54G was connected to the WAN via PPPoE and doing NAT for everything behind it. The wan port of the ActionTech was plugged into a LAN port on the WRT54G and getting an IP using dhcp. The STB's were connected to the ActionTech and had no problem getting IP addresses and guide data, but video-on-demand was hosed. Changing the &lt;a href="http://www.dslreports.com/forum/remark,17679150"&gt;ActionTech into a bridge&lt;/a&gt; (I roughly followed that guide) was trivial as well but didn't solve the video-on-demand problem either. I found a posts reporting that &lt;a href="http://www.avsforum.com/avs-vb/showthread.php?s=e80caa389324274e34de0b4e433d4f59&amp;p=9306159&amp;amp;amp;&amp;amp;#post9306159"&gt;video-on-demand works with certain firmware on the WRT54G&lt;/a&gt; v5, but others that suggested it might be a that &lt;a href="http://www.linksysinfo.org/forums/showthread.php?p=299383"&gt;video-on-demand doesn't work with the Tomato Firmware&lt;/a&gt;. I suspect it has something to do with the QoS support in that firmware -- in the ActionTech's default config, specific QoS settings that are specified for the Verizon STB's.&lt;br /&gt;
&lt;br /&gt;
So, I'm back to having the ActionTech out in front, handling pppoe, nat and bridging the ethernet and coax connection. The wrt54g is still behind this, acting more as a simple router than anything else right now -- it's still the default route for most of the machines on my network (other than the STB's a voip phone, tivos and a couple other devices). DHCP, DNS, VPN connections, among other tings, are still handled via my trusty linux box -- that's not going away any time soon.&lt;br /&gt;
&lt;br /&gt;
[UPDATE: I flashed my wrt54g with DD-WRT and I have been running fine with the ActionTech in bridged mode for a couple years. I've added the Verizon DVR and continue to receive all services without the need to reconfigure or any problems. YMMV as my install was performed a long time ago and Verizon may install things differently these days.]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-1515927932650288414?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/1515927932650288414/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=1515927932650288414" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/1515927932650288414?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/1515927932650288414?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2007/05/fiostv-network-changes.html" title="FiosTV and Network changes." /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQGQ3s-eSp7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-6110946473467359040.post-6970775114164887382</id><published>2007-05-07T19:24:00.001-04:00</published><updated>2010-07-08T17:58:42.551-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T17:58:42.551-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vnc" /><category scheme="http://www.blogger.com/atom/ns#" term="gnome" /><title>Anti-aliased fonts in gnome-terminal on Centos 5</title><content type="html">I use vncserver / vncviewer for more than you can imagine, mostly as a reasonable replacement for screen when working off of spotty wireless networks. I was pretty bummed out after upgrading a number of machines to Centos 5, that the fonts in gnome-terminal weren't anti-aliased anymore. I'm a sucker for a smooth-edged Bitsteam Vera Sans Mono.&lt;br /&gt;
&lt;br /&gt;
After digging around a bit, and following a couple red herrings in the form of ~/.fonts.config, or /etc/fonts/.., I found a couple references to &lt;a href="http://lwn.net/Articles/88185/"&gt;anti-aliasing being slow&lt;/a&gt; only with xservers that supported XRender, of course vncserver doesn't implement this extension, so that was a potential clue that something along these lines was the issue. Hmm, I never noticed gnome-terminal being slow unless I was tail -f'ing a webserver log or something else spouting prodigious amounts of output.&lt;br /&gt;
&lt;br /&gt;
Finally, I remembered the gconf tree and finally the tool gconf-editor, which hadn't been installed by default on any of my Centos 5 installs.  One invocation of yum later, I had gconf-editor installed and was poking around in the apps/gnome-terminal folder. It turns out that under there, in the profiles/default folder there's the no_aa_without_render option, which was enabled by default. Unchecking this fixed the problem -- ahh, a nice smooth Bitstream Vera Mono in my gnome-terminal again.&lt;br /&gt;
&lt;br /&gt;
As an aside, I was pretty surprised to see the number of people asking how to turn off anti-aliasing instead of turning it on -- I can understand a &lt;a href="http://izumi.plan99.net/blog/?p=29"&gt;certain affection for Misc-fixed&lt;/a&gt;, but fonts without jagged edges are just so much easier on my eyes. I guess all things being equal, this would probably work on Redhat Enterprise Linux / rhel 5 as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6110946473467359040-6970775114164887382?l=drewfarris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://drewfarris.blogspot.com/feeds/6970775114164887382/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6110946473467359040&amp;postID=6970775114164887382" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/6970775114164887382?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6110946473467359040/posts/default/6970775114164887382?v=2" /><link rel="alternate" type="text/html" href="http://drewfarris.blogspot.com/2007/05/anti-aliased-fonts-for-gnome-terminal.html" title="Anti-aliased fonts in gnome-terminal on Centos 5" /><author><name>Drew Farris</name><uri>http://www.blogger.com/profile/11328638776885954864</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>6</thr:total></entry></feed>

