<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1066178144758611322</id><updated>2011-07-07T18:03:51.616-05:00</updated><category term='Personal'/><category term='Dell Inspiron 9100'/><category term='Communications'/><category term='Graphics'/><category term='Cross-platform'/><category term='Linux'/><title type='text'>The Data Current</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1066178144758611322.post-4542618725558819929</id><published>2008-10-06T18:05:00.002-05:00</published><updated>2008-10-06T18:12:34.876-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>My Overlay</title><content type='html'>&lt;a href="https://launchpad.net/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer;" src="https://launchpad.net/@@/launchpad-logo-and-name-hierarchy.png" border="0" alt="Launchpad" /&gt;&lt;/a&gt;

&lt;p&gt;Last week, I set up an &lt;a href="https://code.launchpad.net/~bberberov/+junk/dev-overlay"&gt;overlay&lt;/a&gt; to store and share some of my &lt;a href="http://en.wikipedia.org/wiki/Ebuild"&gt;ebuilds&lt;/a&gt;.  The overlay is hosted on &lt;a href="https://launchpad.net/"&gt;Launchpad&lt;/a&gt; so you will need &lt;a href="http://bazaar-vcs.org/"&gt;Bazaar&lt;/a&gt; to access it.  Right now it has ebuilds for &lt;a href="http://gambas.sourceforge.net/"&gt;Gambas&lt;/a&gt;, &lt;a href="http://collectd.org/"&gt;collectd&lt;/a&gt; and &lt;a href="http://pyicu.osafoundation.org/"&gt;PyICU&lt;/a&gt; (used in &lt;a href="http://chandlerproject.org/"&gt;Chandler&lt;/a&gt;) and I plan on adding more in the future.&lt;/p&gt;

&lt;p&gt;To start using the overlay, download the &lt;b&gt;overlay.xml&lt;/b&gt; file from the &lt;a href="http://bazaar.launchpad.net/~bberberov/+junk/dev-overlay/files"&gt;overlay's web-based interface&lt;/a&gt; and add it to the &lt;b&gt;overlays&lt;/b&gt; line in /etc/layman/layman.cfg.  After that you can use layman to add it to your list and use it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-4542618725558819929?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/4542618725558819929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=4542618725558819929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/4542618725558819929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/4542618725558819929'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/10/my-overlay.html' title='My Overlay'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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><id>tag:blogger.com,1999:blog-1066178144758611322.post-6634908656841820944</id><published>2008-09-25T12:23:00.000-05:00</published><updated>2008-09-25T12:23:36.086-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Communications'/><title type='text'>New Pipes (Digg Through API and Sourceforge SVN)</title><content type='html'>&lt;a href="http://pipes.yahoo.com/pipes/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer;" src="http://l.yimg.com/us.yimg.com/i/us/pps/logo_1.gif" border="0" alt="Yahoo Pipes" /&gt;&lt;/a&gt;
&lt;p&gt;I use &lt;a href="http://pipes.yahoo.com/pipes/"&gt;Yahoo Pipes&lt;/a&gt; a lot. Many of my pipes are not published because they are just aggregators with filters, specific to my interests.  Lately, I have been trying to create more generic pipes that might be useful to other users, either stand-alone or as sub-pipes.  The following are just two new pipes that I believe are very usable and ready to be published.  I am working on and testing several other pipes, so expect more announcements in the future.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://pipes.yahoo.com/pipes/pipe.info?_id=Tg1E0yzc3BGDvnDUODY80A"&gt;Digg data through API&lt;/a&gt; pipe uses the &lt;a href="http://apidoc.digg.com/"&gt;Digg API&lt;/a&gt; to produce a &lt;a href="http://digg.com/"&gt;Digg&lt;/a&gt; container feed that includes additional information not provided in the standard Digg feeds currently.  This additional information includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Image &lt;a href="http://www.rssboard.org/rss-specification#ltenclosuregtSubelementOfLtitemgt"&gt;enclosure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Original source domain&lt;/li&gt;
&lt;li&gt;Original link&lt;/li&gt;
&lt;li&gt;Submission date&lt;/li&gt;
&lt;li&gt;Container name&lt;/li&gt;
&lt;li&gt;A &lt;a href="http://www.rssboard.org/rss-profile#namespace-elements-content-encoded"&gt;content:encoded&lt;/a&gt; element containing some of the additional information from other elements&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The resulting feeds should be element compatible with the official Digg feeds and should be usable as substitutes of the official feeds.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://pipes.yahoo.com/pipes/pipe.info?_id=qF1nJYWG3RGHt1uA6icw5g"&gt;Sourceforge SVN&lt;/a&gt; pipe creates a feed that lists the last 5 revisions of a &lt;a href="http://sourceforge.net/"&gt;Sourceforge&lt;/a&gt; project with a &lt;a href="http://subversion.tigris.org/"&gt;SVN&lt;/a&gt; repository.  This pipe is specific to projects with an SVN repository and it will not work with a &lt;a href="http://www.nongnu.org/cvs"&gt;CVS&lt;/a&gt; repository.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; The pipe currently does not check to see if the repository has less than 5 revisions and may not work for such repositories.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-6634908656841820944?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/6634908656841820944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=6634908656841820944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/6634908656841820944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/6634908656841820944'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/09/new-pipes-digg-through-api-and.html' title='New Pipes (Digg Through API and Sourceforge SVN)'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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><id>tag:blogger.com,1999:blog-1066178144758611322.post-2823174602044402560</id><published>2008-07-30T06:39:00.004-05:00</published><updated>2008-08-06T06:45:39.305-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Communications'/><title type='text'>Removing Flash-based content from feeds with Yahoo Pipes</title><content type='html'>&lt;a href="http://pipes.yahoo.com/pipes/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer;" src="http://l.yimg.com/us.yimg.com/i/us/pps/logo_1.gif" border="0" alt="Yahoo Pipes" /&gt;&lt;/a&gt;&lt;p&gt;I have not written about &lt;a href="http://pipes.yahoo.com/pipes/"&gt;Yahoo Pipes&lt;/a&gt; in detail on this blog yet, but I thought this was interesting so I am posting about it.  To quickly summarize, Yahoo Pipes allows you to produce feeds or widgets from web-accessible sources in several formats.  I find it very convenient to aggregate and filter &lt;a href="http://en.wikipedia.org/wiki/Web_feed"&gt;feeds&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Recently, I wanted to remove some Flash-based content from a feed that I follow since I am unable to see it in my &lt;a href="http://en.wikipedia.org/wiki/Aggregator"&gt;reader&lt;/a&gt; anyway.  I was trying to use the &lt;a href="http://pipes.yahoo.com/pipes/docs?doc=operators#Regex"&gt;Regex module&lt;/a&gt; to match the tags for the content and replace them with a note stating that they were removed.  Surprisingly, many of my &lt;a href="http://en.wikipedia.org/wiki/Regular_expression"&gt;regular expressions&lt;/a&gt; I was entering were not working and the Flash-based content remained in the feed.  After testing quite a few expressions I finally found one that worked.  Here it is:&lt;/p&gt;
&lt;code&gt;[&lt;][^&lt;]*application/x-shockwave-flash[^&gt;]*[&gt;][&lt;]/[a-z]*[&gt;]&lt;/code&gt;
&lt;p&gt;I still do not understand what was wrong with the other expressions I tried.  Most of them were simpler and more specific than this one, and they should have matched.  Anyway, this works for now.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;UPDATE&lt;/b&gt;: Wired recently published an &lt;a href="http://www.webmonkey.com/tutorial/Start_Data_Plumbing_With_Yahoo_Pipes"&gt;introduction to Pipes&lt;/a&gt; article&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-2823174602044402560?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/2823174602044402560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=2823174602044402560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/2823174602044402560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/2823174602044402560'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/07/removing-flash-based-content-from-feeds.html' title='Removing Flash-based content from feeds with Yahoo Pipes'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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><id>tag:blogger.com,1999:blog-1066178144758611322.post-6984537848700603455</id><published>2008-07-23T14:22:00.024-05:00</published><updated>2008-07-23T16:01:01.280-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>European Trip</title><content type='html'>&lt;p&gt;Recently, I had the opportunity to travel around Europe.  I took many photographs during the trip and here is a small sample of these photographs.&lt;/p&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeHmqeUHDI/AAAAAAAAAD8/c6JhgjkAjVQ/s1600-h/venice_1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeHmqeUHDI/AAAAAAAAAD8/c6JhgjkAjVQ/s200/venice_1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226294990892964914" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_r3hLzDENfFM/SIeHzHMfHqI/AAAAAAAAAEE/1R7ZPoYqQnM/s1600-h/venice_2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_r3hLzDENfFM/SIeHzHMfHqI/AAAAAAAAAEE/1R7ZPoYqQnM/s200/venice_2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226295204761247394" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeH-T9RFkI/AAAAAAAAAEM/6Nv_FR0A95A/s1600-h/venice_3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeH-T9RFkI/AAAAAAAAAEM/6Nv_FR0A95A/s200/venice_3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226295397165635138" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Grand_Canal_of_Venice"&gt;Grand Canal&lt;/a&gt;, Venice, Italy&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Venice"&gt;Venice&lt;/a&gt;, Italy&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Piazza_San_Marco"&gt;Piazza San Marco&lt;/a&gt;, Venice, Italy&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;br /&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_r3hLzDENfFM/SIeFynbvZcI/AAAAAAAAADM/EQJEVOYDj9o/s1600-h/alps_1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_r3hLzDENfFM/SIeFynbvZcI/AAAAAAAAADM/EQJEVOYDj9o/s200/alps_1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226292997212038594" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_r3hLzDENfFM/SIeGKXC639I/AAAAAAAAADU/lkpuFKyTg-4/s1600-h/alps_2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_r3hLzDENfFM/SIeGKXC639I/AAAAAAAAADU/lkpuFKyTg-4/s200/alps_2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226293405129826258" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/San_Bernardino_Pass"&gt;San Bernardino Pass&lt;/a&gt;, Swiss Alps, Switzerland&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/San_Bernardino_Pass"&gt;San Bernardino Pass&lt;/a&gt;, Swiss Alps, Switzerland&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;br /&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_r3hLzDENfFM/SIeHA-zuNcI/AAAAAAAAADs/KELUq753S5M/s1600-h/germany_1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_r3hLzDENfFM/SIeHA-zuNcI/AAAAAAAAADs/KELUq753S5M/s200/germany_1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226294343516435906" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeHSnLQ0rI/AAAAAAAAAD0/S3pelViQ9ZU/s1600-h/gernamy_2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeHSnLQ0rI/AAAAAAAAAD0/S3pelViQ9ZU/s200/gernamy_2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226294646410367666" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hohenschwangau_Castle"&gt;Hohenschwangau Castle&lt;/a&gt;, Germany&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Neuschwanstein_Castle"&gt;Neuschwanstein Castle&lt;/a&gt;, Germany&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;br /&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_r3hLzDENfFM/SIeIL03wn9I/AAAAAAAAAEU/EbZHEvsKd6U/s1600-h/vienna_1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_r3hLzDENfFM/SIeIL03wn9I/AAAAAAAAAEU/EbZHEvsKd6U/s200/vienna_1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226295629339205586" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_r3hLzDENfFM/SIeIYlwruqI/AAAAAAAAAEc/mQPRbrhD0aw/s1600-h/vienna_2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_r3hLzDENfFM/SIeIYlwruqI/AAAAAAAAAEc/mQPRbrhD0aw/s200/vienna_2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226295848621292194" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeImoaAiCI/AAAAAAAAAEk/dPhVmXsK4hg/s1600-h/vienna_3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeImoaAiCI/AAAAAAAAAEk/dPhVmXsK4hg/s200/vienna_3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226296089849661474" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Vienna_University_of_Technology"&gt;Vienna University of Technology&lt;/a&gt;, Vienna, Austria&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Vienna"&gt;Vienna&lt;/a&gt;, Austria&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/St._Stephen%27s_Cathedral%2C_Vienna"&gt;St. Stephen's Cathedral&lt;/a&gt;, Vienna, Austria&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;br /&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_r3hLzDENfFM/SIeGcrSWmRI/AAAAAAAAADc/lJcCSvwfZx0/s1600-h/budapest_1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_r3hLzDENfFM/SIeGcrSWmRI/AAAAAAAAADc/lJcCSvwfZx0/s200/budapest_1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226293719800912146" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeGv7WDPjI/AAAAAAAAADk/eZXqM3cXB9E/s1600-h/budapest_2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_r3hLzDENfFM/SIeGv7WDPjI/AAAAAAAAADk/eZXqM3cXB9E/s200/budapest_2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226294050528902706" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Sz%C3%A9chenyi_Chain_Bridge"&gt;Széchenyi Chain Bridge&lt;/a&gt;, Budapest, Hungary&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hungarian_Parliament_Building"&gt;Hungarian Parliament Building&lt;/a&gt;, Budapest, Hungary&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-6984537848700603455?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/6984537848700603455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=6984537848700603455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/6984537848700603455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/6984537848700603455'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/07/european-trip.html' title='European Trip'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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/_r3hLzDENfFM/SIeHmqeUHDI/AAAAAAAAAD8/c6JhgjkAjVQ/s72-c/venice_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1066178144758611322.post-873987901136015055</id><published>2008-07-01T18:55:00.000-05:00</published><updated>2008-07-01T19:55:28.907-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>What is in Portage (Charts and Maps)</title><content type='html'>&lt;p&gt;While considering new partitioning schemes and filesystem choices for future installs and reinstalls, I realized that I had almost no idea what kind of files were on my system.  I needed to see histograms of file sizes in particular directories in order to make better decisions for partitioning, filesystem selection and filesystem tuning.&lt;/p&gt;
&lt;/p&gt;I started playing with the &lt;b&gt;du&lt;/b&gt; command to try and get some data and after a while I came up with the following:&lt;/p&gt;

&lt;code class="cmd"&gt;find . -type f -execdir du --apparent-size --block-size=512 '{}' \; | grep -o ^[0-9]* | sort -n | uniq -c&lt;/code&gt;

&lt;p&gt;This series of commands produced the data I was looking for and I graphed it using &lt;a href="http://www.openoffice.org/"&gt;OpenOffice&lt;/a&gt; Calc.  Here is a summary of what I got for the directories of &lt;a href="http://en.wikipedia.org/wiki/Portage_%28software%29"&gt;Portage&lt;/a&gt;.  As expected, there were "lots of small files."&lt;/p&gt;
&lt;p&gt;First, the Portage tree (no /distfiles here):&lt;/p&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_r3hLzDENfFM/SGq98KmpzNI/AAAAAAAAABs/dFLYiSULhZ8/s1600-h/portage1.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_r3hLzDENfFM/SGq98KmpzNI/AAAAAAAAABs/dFLYiSULhZ8/s320/portage1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218191959598419154" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_r3hLzDENfFM/SGq-Zb7UGrI/AAAAAAAAAB0/XRFtogUopWk/s1600-h/portage2.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_r3hLzDENfFM/SGq-Zb7UGrI/AAAAAAAAAB0/XRFtogUopWk/s320/portage2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218192462464686770" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;You can clearly see the portion of files less than 2k compared to the rest.  There are a lot of them, but they do not take up the majority of the space.&lt;/p&gt;

&lt;p&gt;Then the Portage cache:&lt;/p&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_r3hLzDENfFM/SGq-wlvnKwI/AAAAAAAAAB8/9Dxa5I0UzRw/s1600-h/edb1.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_r3hLzDENfFM/SGq-wlvnKwI/AAAAAAAAAB8/9Dxa5I0UzRw/s320/edb1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218192860236950274" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_r3hLzDENfFM/SGq_YxUyyRI/AAAAAAAAACE/mXmWw5lFVP8/s1600-h/edb2.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_r3hLzDENfFM/SGq_YxUyyRI/AAAAAAAAACE/mXmWw5lFVP8/s320/edb2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218193550540458258" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Lots of 512b+ to 1k files here, represented by the yellow region.&lt;/p&gt;

&lt;p&gt;Finally, the Portage installed packages database:&lt;/p&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_r3hLzDENfFM/SGrAX06puWI/AAAAAAAAACM/VQqJGUE1D4c/s1600-h/pkg1.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_r3hLzDENfFM/SGrAX06puWI/AAAAAAAAACM/VQqJGUE1D4c/s320/pkg1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218194633836312930" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_r3hLzDENfFM/SGrAlJ4R43I/AAAAAAAAACU/oKpLnKHtsf8/s1600-h/pkg2.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_r3hLzDENfFM/SGrAlJ4R43I/AAAAAAAAACU/oKpLnKHtsf8/s320/pkg2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218194862801806194" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Lots of sub 512b files, but they do not take up a lot of the space.&lt;/p&gt;

&lt;p&gt;In retrospect, I needed to use something better than OpenOffice to graph the data and I will update this post if I get to it.  Since the histograms were quite skewed as you can see from the results above, here are some maps generated by &lt;a href="http://docs.kde.org/kde3/en/kdeaddons/konq-plugins/fsview/index.html"&gt;FSview&lt;/a&gt;  to give you a different view of the directories:&lt;/p&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_r3hLzDENfFM/SGrBG5d92rI/AAAAAAAAACc/sXneyc1sw5g/s1600-h/portage_map.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_r3hLzDENfFM/SGrBG5d92rI/AAAAAAAAACc/sXneyc1sw5g/s200/portage_map.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218195442512026290" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_r3hLzDENfFM/SGrBgqcyuhI/AAAAAAAAACk/p4P8UEx_F3I/s1600-h/edb_map.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_r3hLzDENfFM/SGrBgqcyuhI/AAAAAAAAACk/p4P8UEx_F3I/s200/edb_map.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218195885157169682" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_r3hLzDENfFM/SGrCB9ePsPI/AAAAAAAAACs/nfmYrlrZXdo/s1600-h/pkg_map.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_r3hLzDENfFM/SGrCB9ePsPI/AAAAAAAAACs/nfmYrlrZXdo/s200/pkg_map.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218196457199218930" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;From left to right: the Portage tree, the Portage cache and the Portage installed packages database&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-873987901136015055?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/873987901136015055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=873987901136015055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/873987901136015055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/873987901136015055'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/07/what-is-in-portage-charts-and-maps.html' title='What is in Portage (Charts and Maps)'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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://2.bp.blogspot.com/_r3hLzDENfFM/SGq98KmpzNI/AAAAAAAAABs/dFLYiSULhZ8/s72-c/portage1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1066178144758611322.post-7361099312604608542</id><published>2008-04-22T13:46:00.005-05:00</published><updated>2008-04-22T14:06:42.363-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Bugs...</title><content type='html'>&lt;p&gt;It has been a while since I posted anything on this blog.  Over the last couple of weeks I had to deal with quite a few bugs on my system.  Some of them were caused by the two new &lt;a href="http://www.gentoo.org/proj/en/overlays/userguide.xml"&gt;overlays&lt;/a&gt; I added, the others were just the usual bugs found in testing packages.  Getting everything figured out took much longer than I anticipated and my system was down, recompiling, a lot.  Everything is back up-and-running, for now.  We will see what happens at the next update.&lt;/p&gt;

&lt;p&gt;There are still a couple of outstanding bugs that I have not figured out and some are interfering with getting everything finalized on a few posts I was working on.  I am looking for workarounds in case the bugs are not fixed relatively quickly.&lt;/p&gt;

&lt;p&gt;Meanwhile, I have been working more on the usual; translations. &lt;a href="http://en.wikipedia.org/wiki/Ebuild"&gt;ebuilds&lt;/a&gt;, and some testing.  Autotools &lt;a href="http://www.gnu.org/software/automake/manual/"&gt;[1]&lt;/a&gt; &lt;a href="http://www.gnu.org/software/autoconf/manual/"&gt;[2]&lt;/a&gt; &lt;a href="http://www.gnu.org/software/libtool/manual/"&gt;[3]&lt;/a&gt; &lt;a href="http://www.gnu.org/software/m4/manual/"&gt;[4]&lt;/a&gt; is on my to-learn list now since one ebuild needed me to fix a couple of small issues in its build configuration files.  I will try to get a couple of shorter posts done in the next week, or two , so the blog will not be so stagnant.  Anyway, until the next post.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-7361099312604608542?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/7361099312604608542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=7361099312604608542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/7361099312604608542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/7361099312604608542'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/04/bugs.html' title='Bugs...'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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><id>tag:blogger.com,1999:blog-1066178144758611322.post-6787859407685926197</id><published>2008-04-01T11:51:00.011-05:00</published><updated>2008-06-28T18:03:28.319-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>A simple NTP (Network Time Protocol) server setup</title><content type='html'>&lt;p&gt;A time server provides a convenient way to set the correct time, and maintain the accuracy of the internal clock on your computer.  This tutorial explains how to set up a time server for a local network and eliminate the need for computers to query external time servers directly.  For this tutorial, the NTP server software provided by &lt;a href="http://www.isc.org/"&gt;Internet Systems Consortium&lt;/a&gt;, Inc. (ISC) will be used.  An alternative is the &lt;a href="http://www.openntpd.org/"&gt;OpenNTPD&lt;/a&gt; software, but this tutorial will not cover it.&lt;/p&gt;

&lt;h2&gt;Software Installation&lt;/h2&gt;

&lt;p&gt;On &lt;a href="http://www.gentoo.org/"&gt;Gentoo&lt;/a&gt;, the &lt;a href="http://packages.gentoo.org/package/net-misc/ntp"&gt;ntp&lt;/a&gt; package contains both the NTP server (ntpd) and client utilities.  It needs to be installed on both your time server and every computer that will synchronize to it.&lt;/p&gt;
&lt;p&gt;To install ntp on Gentoo, simply emerge it:&lt;/p&gt;

&lt;code class="cmd"&gt;# emerge ntp&lt;/code&gt;

&lt;p&gt;You may want to verify that the &lt;b&gt;caps&lt;/b&gt; USE flag is set before you begin the emerge so that the ntpd daemon will use Linux capabilities.  Keep in mind that Linux capabilities also have to be enabled in your &lt;a href="http://gentoo-wiki.com/HOWTO_NTP#Root_Permissions"&gt;kernel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; Feisty (7.04) and newer versions also provide a single ntp package:&lt;/p&gt;

&lt;code class="cmd"&gt;$ sudo apt-get install ntp&lt;/code&gt;

&lt;p&gt;But Ubuntu Dapper (6.06LTS) and Edgy (6.10), have separate packages for the client utilities&lt;/p&gt;

&lt;code class="cmd"&gt;$ sudo apt-get install ntp&lt;/code&gt;

&lt;p&gt;and the server.&lt;/p&gt;

&lt;code class="cmd"&gt;$ sudo apt-get install ntp-server&lt;/code&gt;

&lt;p&gt;Check your distribution's package manager to make sure you install the correct package(s).&lt;/p&gt;

&lt;h2&gt;Server Configuration&lt;/h2&gt;

&lt;p&gt;The server in this tutorial will be setup as a standalone server.  It will provide time service to one or more local networks and synchronize its system clock to one or more external time servers.  The NTP documentation discusses additional operating modes, like &lt;a href="http://www.eecis.udel.edu/~mills/ntp/html/assoc.html"&gt;peering&lt;/a&gt;, and more complicated mission-critical setups, but these topics are beyond the scope of this tutorial.&lt;/p&gt;

&lt;p&gt;The main configuration file for the ntpd daemon is ntp.conf.  It is usually installed in /etc, but this may be different on your distribution.  The following steps outline the configuration process for ntpd as a server:

&lt;ol&gt;

&lt;li&gt;
&lt;p&gt;Open your ntp.conf file with a text editor.  The default ntp.conf file should have several commands with locations that may be specific to your system.&lt;/p&gt;

 &lt;ol style="list-style-type: lower-alpha"&gt;
 &lt;li&gt;
 &lt;p&gt;Look for a line containing the &lt;b&gt;driftfile&lt;/b&gt; command.  This command specifies a file that is used by ntpd to improve its timekeeping performance.  It is important that this line is kept enabled.  If your distribution's package does not have a designated driftfile, you should read its documentation, find an appropriate location to store the driftfile, and specify one.&lt;/p&gt;
 &lt;/li&gt;

 &lt;li&gt;
 &lt;p&gt;Look for a line containing the &lt;b&gt;logfile&lt;/b&gt; command.  This command specifies a file where messages are logged, as an alternative to syslog(3).  You may wish to comment it out so that messages are logged by syslog(3) and the log is rotated automatically.&lt;/p&gt;
 &lt;/li&gt;
 &lt;/ol&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;...
driftfile       /var/lib/ntp/ntp.drift
# logfile       /var/log/ntp.log
...&lt;/code&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;Specify one or more &lt;b&gt;server&lt;/b&gt; commands.  The &lt;b&gt;server&lt;/b&gt; command instructs ntpd to periodically query an external time server and synchronize the system clock.  For a list of public time servers check the &lt;a href="http://support.ntp.org/bin/view/Servers/WebHome"&gt;ntp.org website&lt;/a&gt; or search the Internet for time servers provided by institutions in your geographic region.  For example, synchronizing to a time server provided by the National Institute of Standards and Technology's (&lt;a href="http://tf.nist.gov/tf-cgi/servers.cgi"&gt;NIST&lt;/a&gt;) Time and Frequency Division in the United States is specified with the following command:&lt;/p&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;...
server          time.nist.gov
...&lt;/code&gt;

&lt;p&gt;Usually you should specify more than one server for synchronization, in case of network problems outside of your network.  However, ntpd will only use up to three of the specified servers at a time to keep the system clock synchronized.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;(Optional) Use the &lt;b&gt;minpoll&lt;/b&gt; and &lt;b&gt;maxpoll&lt;/b&gt; options with the &lt;b&gt;server&lt;/b&gt; command.  These options define how often your server queries the external time server(s).  The defaults are 6 for &lt;b&gt;minpoll&lt;/b&gt; and 10 for &lt;b&gt;maxpoll&lt;/b&gt;.  The polling period for both &lt;b&gt;minpoll&lt;/b&gt; and &lt;b&gt;maxpoll&lt;/b&gt; is 2&lt;sup&gt;x&lt;/sup&gt; seconds where x is the number specified for the option.  You should manually set these to higher values than the defaults since there is no need to poll the external time server(s) that often. The range of the two options is 4 - 17.&lt;/p&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;...
server          time.nist.gov           minpoll 7 maxpoll 11
...&lt;/code&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use the &lt;b&gt;restrict&lt;/b&gt; command to define the level of access to your time server.  &lt;b style="color: #f00;"&gt;By default, with no restrict commands, the server has no restrictions.&lt;/b&gt;  You may want to read the ntp.conf man page for more information on the available options.&lt;/p&gt;

&lt;p&gt;The &lt;b&gt;default&lt;/b&gt; (0.0.0.0 mask 0.0.0.0 or [::/128]) restrictions should usually be very limiting, like the following:&lt;/p&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;...
restrict -4     default                         noquery nomodify nopeer notrap
restrict -6     default                         ignore
...&lt;/code&gt;

&lt;p&gt;The "-4" and "-6" after the &lt;b&gt;restrict&lt;/b&gt; keyword are address qualifiers that determine whether the following should be resolved to an IPv4 or IPv6 address respectively.&lt;/p&gt;

&lt;p&gt;After the default restrictions are specified, lesser restrictions need to be defined for your local subnets.  The following example illustrates restrictions for the example, local, IPv4 subnets 192.168.0.0/24 and 192.168.1.0/24.&lt;/p&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;...
restrict        127.0.0.1                       nomodify nopeer notrap
restrict        192.168.0.0 mask 255.255.255.0  nomodify nopeer notrap
restrict        192.168.1.0 mask 255.255.255.0  nomodify nopeer notrap
...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(Optional) The NTP server can announce its presence on the network by both broadcasting and multicasting.  Multicasting is covered in the ntp.conf man page and will not be covered here.  To enable the server to announce its presence through broadcasts, use the &lt;b&gt;broadcast&lt;/b&gt; command and specify a broadcast address.&lt;/p&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;...
broadcast       192.168.1.255           minpoll 10
...&lt;/code&gt;

&lt;p&gt;The &lt;b&gt;minpoll&lt;/b&gt; option is not mandatory.  It defines the broadcast frequency in the same way as it did for the &lt;b&gt;server&lt;/b&gt; keyword. You should use it and set it to a reasonable value to reduce broadcast traffic on your targeted broadcast address.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The ntpd daemon should now be configured and can be started.  This is what a complete ntp.conf file might look like:&lt;/p&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;driftfile       /var/lib/ntp/ntp.drift
#logfile        /var/log/ntp.log

server          time.nist.gov           minpoll 6 maxpoll 10
server          time-a.nist.gov         minpoll 6 maxpoll 10
server          time-b.nist.gov         minpoll 6 maxpoll 10

broadcast       192.168.1.255           minpoll 10

restrict -4     default                         noquery nomodify nopeer notrap
restrict -6     default                         ignore

restrict        127.0.0.1                       nomodify nopeer notrap
restrict        192.168.0.0 mask 255.255.255.0  nomodify nopeer notrap
restrict        192.168.1.0 mask 255.255.255.0  nomodify nopeer notrap&lt;/code&gt;


&lt;h2&gt;Client Configuration&lt;/h2&gt;

&lt;p&gt;There are more than a couple of ways to configure ntpd as a simple client.  Three of them are explained in the following sections.&lt;/p&gt;

&lt;h3&gt;DHCP Client Overwrite&lt;/h3&gt;

&lt;p&gt;On Linux, the DHCP client has the ability to overwrite the ntp.conf file with settings that will allow a computer to synchronize to NTP servers that a DHCP server advertises.  If this feature is disabled on your distribution, look at the documentation for your DHCP client to try to enable it.&lt;/p&gt;

&lt;p&gt;To advertise NTP servers with your DHCP server, add the &lt;b&gt;ntp-servers&lt;/b&gt; option to the server's dhcpd.conf configuration file.&lt;/p&gt;

&lt;code class="filename"&gt;/etc/dhcp/dhcpd.conf&lt;/code&gt;
&lt;code class="file"&gt;...
option ntp-servers 192.168.0.1;
...&lt;/code&gt;

&lt;h3&gt;Manually Configured&lt;/h3&gt;
&lt;p&gt;Specify the domain name or IP address of your local time server with the &lt;b&gt;server&lt;/b&gt; command.  For example, if 192.168.0.254 is the IP address of your NTP server:&lt;/p&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;driftfile       /var/lib/ntp/ntp.drift
#logfile        /var/log/ntp.log

server          192.168.0.254

restrict -4     default                         ignore
restrict -6     default                         ignore

restrict        127.0.0.1                       nomodify nopeer notrap
restrict        192.168.0.254                   nomodify nopeer notrap&lt;/code&gt;

&lt;p&gt;You need to make sure that the DHCP client will not overwrite your ntp.conf file.  On Gentoo, you can disable this overwrite by adding &lt;b&gt;nontp&lt;/b&gt; to the DHCP configuration options in /etc/conf.d/net, as shown below.&lt;/p&gt;

&lt;code class="filename"&gt;/etc/conf.d/net&lt;/code&gt;
&lt;code class="file"&gt;...
dhcp_eth0="nontp"
...&lt;/code&gt;

&lt;h3&gt;Broadcast Listening&lt;/h3&gt;

&lt;p&gt;To enable your ntpd daemon to receive broadcasts from a local time server, you need to add the following lines to your ntp.conf file.  Also you have to remove the &lt;b&gt;nopeer&lt;/b&gt; option from the &lt;b&gt;default&lt;/b&gt; restriction, otherwise ntpd will not open a new client connection to the NTP server when it receives a broadcast packet.&lt;/p&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;...
disable auth
broadcastclient

restrict -4     default                         noquery nomodify notrap
...&lt;/code&gt;

&lt;p&gt;Here is what a complete configuration might look like:&lt;/p&gt;

&lt;code class="filename"&gt;/etc/ntp.conf&lt;/code&gt;
&lt;code class="file"&gt;driftfile /var/lib/ntp/ntp.drift
#logfile /var/log/ntp.log

disable auth
broadcastclient

restrict -4     default                         noquery nomodify notrap
restrict -6     default                         ignore

restrict        127.0.0.1                       nomodify nopeer notrap&lt;/code&gt;

&lt;h2&gt;Additional Setup&lt;/h2&gt;

&lt;p&gt;On Gentoo, you may want to enable this option to "set the Hardware Clock to the current System Time during shutdown."&lt;/p&gt;

&lt;code class="filename"&gt;File: /etc/conf.d/clock&lt;/code&gt;
&lt;code class="file"&gt;...
# If you want to set the Hardware Clock to the current System Time
# during shutdown, then say "yes" here.

CLOCK_SYSTOHC="yes"
...&lt;/code&gt;

&lt;h2&gt;Running the Server/Client&lt;/h2&gt;

&lt;p&gt;On Gentoo, simply start the service.&lt;/p&gt;

&lt;code class="cmd"&gt;# /etc/init.d/ntpd start&lt;/code&gt;

&lt;p&gt;You also want to add it to your default runlevel so it will always start automatically at boot.&lt;/p&gt;

&lt;code class="cmd"&gt;# rc-update add ntpd default&lt;/code&gt;

&lt;p&gt;The time server/client will take some time to synchronize to its external provider.  You can check this synchronization process with the ntpq command.  Here is an example of what the output will look like on a working server:&lt;p&gt;
&lt;code class="cmd"&gt;$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+india.colorado. .ACTS.           1 u  357  68m  377   46.433    5.071   0.152
*time-B.timefreq .ACTS.           1 u  585  68m  377   42.934    1.160   8.319
+time.nist.gov   .ACTS.           1 u  396  68m  377   49.633   -0.656   1.736&lt;/code&gt;

&lt;p&gt;The asterisk (*) in front of "time-B.timefreq" indicates that the server is synchronized and is providing time service.&lt;/p&gt;

&lt;p&gt;If your server is broadcasting to a particular subnet, the result of the &lt;b&gt;ntpq&lt;/b&gt; command will have an additional like similar to the following:&lt;/p&gt;

&lt;code class="cmd"&gt; 192.168.1.255   .BCST.          16 u    -  256    0    0.000    0.000   0.001&lt;/code&gt;

&lt;h2&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gentoo-wiki.com/HOWTO_NTP"&gt;Gentoo-wiki: HOWTO NTP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://support.ntp.org/bin/view/Servers/WebHome"&gt;Time servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Network_Time_Protocol"&gt;Wikipedia: Network Time Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.eecis.udel.edu/~mills/ntp/html/index.html"&gt;The Network Time Protocol (NTP) Distribution&lt;/a&gt; by David Mills&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.eecis.udel.edu/~mills/ntp.html"&gt;Network Time Synchronization Research Project&lt;/a&gt; by David Mills&lt;/li&gt;
&lt;li&gt;
MAN Pages
 &lt;ul&gt;
 &lt;li&gt;man ntp.conf&lt;/li&gt;
 &lt;li&gt;man dhcp-options&lt;/li&gt;
 &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
On Gentoo
 &lt;ul&gt;
 &lt;li&gt;/etc/conf.d/net.example&lt;/li&gt;
 &lt;li&gt;/etc/conf.d/clock&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-6787859407685926197?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/6787859407685926197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=6787859407685926197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/6787859407685926197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/6787859407685926197'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/04/simple-ntp-network-time-protocol-server.html' title='A simple NTP (Network Time Protocol) server setup'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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><id>tag:blogger.com,1999:blog-1066178144758611322.post-1943792369265424135</id><published>2008-03-22T18:26:00.003-05:00</published><updated>2008-03-22T20:35:35.014-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Ebuild-ing</title><content type='html'>&lt;p&gt;I have been a little busy and I have not had the time to put up a new post in more than two weeks.  I wanted to learn how to make ebuilds and I have spent most of my time doing that instead of writing.  My first &lt;a href="http://en.wikipedia.org/wiki/Ebuild"&gt;ebuild&lt;/a&gt; had to be rewritten several times and that, along with testing, took most of the last ten days.  I have quite a few posts in the works and hopefully I will finish at least one of them sometime next week.  Meanwhile, I will be splitting my time between more ebuilds, possibly some translations, and everything else.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-1943792369265424135?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/1943792369265424135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=1943792369265424135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/1943792369265424135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/1943792369265424135'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/03/ebuild-ing.html' title='Ebuild-ing'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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><id>tag:blogger.com,1999:blog-1066178144758611322.post-8141235823847705336</id><published>2008-03-07T13:49:00.012-06:00</published><updated>2008-03-28T03:47:24.177-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Some New Graphics</title><content type='html'>&lt;p&gt;I am trying to improve the look of the blog a little and I needed an icon for the feed link.  I looked online and there were plenty of good candidates.  However, I decided to make my own since there does not seem to be a "standard" icon and some of those could be copywrited.&lt;/p&gt;

&lt;p&gt;I fired up &lt;a href="http://www.inkscape.org/"&gt;Inkscape&lt;/a&gt; and got to work.  I made one for RSS and one for Atom.  The easiest way to get images into Blogger is to just add them to a post, so I am doing that.  If anybody likes them, I also have SVGs, and I can see about possibly posting those.&lt;/p&gt;

&lt;div style="text-align: center;"&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_r3hLzDENfFM/R9Gck_jrvKI/AAAAAAAAABY/8jlxJAF24oE/s1600-h/rss.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_r3hLzDENfFM/R9Gck_jrvKI/AAAAAAAAABY/8jlxJAF24oE/s200/rss.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5175089606175734946" /&gt;
&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_r3hLzDENfFM/R9Gc3PjrvLI/AAAAAAAAABg/mmPcvbHCPGQ/s1600-h/atom.png"&gt;
&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_r3hLzDENfFM/R9Gc3PjrvLI/AAAAAAAAABg/mmPcvbHCPGQ/s200/atom.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5175089919708347570" /&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/1066178144758611322-8141235823847705336?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/8141235823847705336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=8141235823847705336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/8141235823847705336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/8141235823847705336'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/03/some-new-graphics.html' title='Some New Graphics'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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://2.bp.blogspot.com/_r3hLzDENfFM/R9Gck_jrvKI/AAAAAAAAABY/8jlxJAF24oE/s72-c/rss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1066178144758611322.post-8786958306784421804</id><published>2008-03-02T22:43:00.010-06:00</published><updated>2008-03-02T23:22:40.008-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cross-platform'/><category scheme='http://www.blogger.com/atom/ns#' term='Communications'/><title type='text'>Pidgin Aliases (Meta Contacts)</title><content type='html'>&lt;a href="http://pidgin.im/"&gt;&lt;img src="http://developer.pidgin.im/attachment/wiki/SpreadPidginAvatars/pidgin.gif?format=raw" /&gt;&lt;/a&gt;
&lt;p&gt;I have been looking for this feature in Pidgin's menus for a while.  However, I found it last week, completely by accident.  Here is a simple how-to on making aliases.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select one of the contacts that you want to group.&lt;/li&gt;
&lt;li&gt;Right-click and select "Expand."&lt;/li&gt;
&lt;li&gt;Now the Alias is expanded you can see that there is one account under it.  Click and drag any other accounts you want to group under the alias.&lt;/li&gt;
&lt;li&gt;You can rename both the accounts and the alias itself by right-clicking on each and selecting "Alias..."&lt;/li&gt;
&lt;li&gt;When you are done, collapse the alias, by right-clicking on it and selecting "Collapse" or clicking on its triangle.&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-8786958306784421804?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/8786958306784421804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=8786958306784421804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/8786958306784421804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/8786958306784421804'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/03/pidgin-aliases-meta-contacts.html' title='Pidgin Aliases (Meta Contacts)'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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><id>tag:blogger.com,1999:blog-1066178144758611322.post-4526754647055271659</id><published>2008-02-25T07:27:00.001-06:00</published><updated>2008-03-02T23:31:42.431-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Synchronize Files with rsync</title><content type='html'>&lt;p&gt;I have been looking for an effective way to synchronize files across machines for quite some time.  I researched online and found quite a few programs that synchronize files.  However, no one program was overwhelmingly better than the rest and had the features I was looking for.  I really needed to implement something, so last week I decided to see what I can do anything with &lt;a href="http://www.samba.org/rsync/"&gt;rsync&lt;/a&gt;.  After about a day, I came up with a simple shell script that worked for me.  It is not glamorous, but it gets the job done.  Here is an explanation of how you can set up something similar.&lt;/p&gt;

&lt;h2&gt;Requirements&lt;/h2&gt;

&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_r3hLzDENfFM/R8KzUKs8q-I/AAAAAAAAAA0/MGrnF970nkU/s1600-h/sync_2008_02_25.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_r3hLzDENfFM/R8KzUKs8q-I/AAAAAAAAAA0/MGrnF970nkU/s320/sync_2008_02_25.png" alt="" id="BLOGGER_PHOTO_ID_5170892481226386402" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The image above illustrates an example computing environment that will be used in this post.  This environment can be expanded, but for the simple shell script to work, the following items are necessary.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Every machine has &lt;a href="http://www.openssh.com/"&gt;ssh&lt;/a&gt; and &lt;a href="http://www.samba.org/rsync/"&gt;rsync&lt;/a&gt; installed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Sync Server is the main synchronization point.  The clients (Laptop, Home and Work Desktop) always synchronize their data to it, and not to each other.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSH is already configured to provide the necessary level of security for the data you are synchronizing.  The proper configuration of the SSH server and clients is beyond the scope of this post.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The clients must use the same top-level synchronization directory.  The Sync Server's top-level synchronization directory can differ from the clients'.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this example, the following directory structure will be used to store the synchronizable data.  Both the clients and the Sync Server use the same top-level synchronization directory.&lt;/p&gt;

&lt;code&gt;/sync/           - the top-level synchronization directory
/sync/mydocs/    - directory for personal documents
/sync/apps/      - directory for application data
/sync/apps/bash/ - directory that holds the synchronization shell script (IMPORTANT)
/sync/apps/ffox/ - copy of your firefox profile, modify your ~/.mozilla/firefox/profiles.ini to point here or use a symlink
/sync/data/      - directory containing other data
/sync/otherdata/ - directory containing data that we do not want to synchronize&lt;/code&gt;

&lt;p&gt;If you have an user account on a restricted server and want to use it as the Sync Server, simply alter your paths to use your home directory.&lt;/p&gt;

&lt;code&gt;~yourlogin/sync/
~yourlogin/sync/mydocs/
~yourlogin/sync/apps/
~yourlogin/sync/apps/bash/
~yourlogin/sync/apps/ffox/
~yourlogin/sync/data/&lt;/code&gt;

&lt;h2&gt;Setup&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create the top-level synchronization directory on all clients and the Sync Server.  Set proper permisions and ownership as appropriate.  The permissions of the files and directories are preserved during synchronization.&lt;/p&gt;

&lt;code class="cmd"&gt;$ mkdir /sync&lt;/code&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;On one of your clients, create the directory that will store the shell script.  In this example, that directory is /sync/apps/bash/.&lt;/p&gt;

&lt;code class="cmd"&gt;$ mkdir /sync/apps
$ mkdir /sync/apps/bash&lt;/code&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Create the following file.  Modify the highlighted portions to your specific configuration.&lt;/p&gt;

&lt;code class="filename"&gt;/sync/apps/bash/bashrc&lt;/code&gt;
&lt;code class="file"&gt;sync_rsync_options='-auv --exclude-from=&lt;span style="color:#f00;"&gt;/sync/apps/bash/sync-exclude&lt;/span&gt;'
sync_directory_up='&lt;span style="color:#f00;"&gt;/sync&lt;/span&gt;/{&lt;span style="color:#f00;"&gt;mydocs&lt;/span&gt;,&lt;span style="color:#f00;"&gt;apps&lt;/span&gt;,&lt;span style="color:#f00;"&gt;data&lt;/span&gt;} &lt;span style="color:#f00;"&gt;sync-server.dns&lt;/span&gt;:&lt;span style="color:#f00;"&gt;/sync&lt;/span&gt;/'
sync_directory_down='&lt;span style="color:#f00;"&gt;sync-server.dns&lt;/span&gt;:&lt;span style="color:#f00;"&gt;/sync&lt;/span&gt;/{&lt;span style="color:#f00;"&gt;mydocs&lt;/span&gt;,&lt;span style="color:#f00;"&gt;apps&lt;/span&gt;,&lt;span style="color:#f00;"&gt;data&lt;/span&gt;} &lt;span style="color:#f00;"&gt;/sync&lt;/span&gt;/'

alias sync-up-pretend="rsync -n --delete-delay --delete-excluded ${sync_rsync_options} ${sync_directory_up}"
alias sync-up-full="rsync --delete-delay --delete-excluded ${sync_rsync_options} ${sync_directory_up}"
alias sync-up-update="rsync --delete-excluded ${sync_rsync_options} ${sync_directory_up}"

alias sync-down-pretend="rsync -On --delete-delay ${sync_rsync_options} ${sync_directory_down}"
alias sync-down-full="rsync -O --delete-delay ${sync_rsync_options} ${sync_directory_down}"
alias sync-down-update="rsync -O ${sync_rsync_options} ${sync_directory_down}"

unset sync_rsync_options sync_directory_up sync_directory_down&lt;/code&gt;

&lt;p&gt;This file provides you with six simple command alliases to do synchronization.  Those will be explained later in the Usage section.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Create an exclude pattern file.  Its basic usage it to prevent temporary files and cached data from being synchronized and wasting bandwith and storage.  If you want complete synchronization, leave the file blank. Here is an example file:&lt;/p&gt;

&lt;code class="filename"&gt;/sync/apps/bash/sync-exclude&lt;/code&gt;
&lt;code class="file"&gt;#General excludes
*~

#Mozilla Firefox
Cache/
XUL.mfasl&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Installation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Copy the shell script folder to every client.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Add the following line to the bottom of your .bashrc file.&lt;/p&gt;

&lt;code class="filename"&gt;~yourlogin/.bashrc&lt;/code&gt;
&lt;code class="file"&gt;...
source /sync/apps/bash/bashrc&lt;/code&gt;

&lt;p&gt;This will make the new synchronization command alliases available in all future bash sessions.  You can run the above line as a command and the new alliases will be available immediatelly.  Now you are ready to synchronize your data!&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Move directories and files under the top-level synchronization directory and create symlinks to data that needs to appear somewhere else.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Usage&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;sync-up-full&lt;/p&gt;
&lt;p&gt;Uploads all newly modified files to the Sync Server and deletes all files that are no longer present on the client from the Sync Server.  &lt;span style="color:#f00;"&gt;CAUTION!&lt;/span&gt;  It may delete important files from the Sync Server.  If these files exist on other clients, a sync-up-full from one of those clients will restore them.  Use with care.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sync-down-full&lt;/p&gt;
&lt;p&gt;Downloads all new newly modified files from the Sync Server to the client and deletes all files no longeer present on the Sync Server from the client.  &lt;span style="color:#f00;"&gt;CAUTION!&lt;/span&gt;  It may delete important files that have not yet been synchronized to the Sync Server with sync-up-update.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sync-up-update&lt;/p&gt;
&lt;p&gt;Uploads all newly modified files to the Sync Server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sync-down-full&lt;/p&gt;
&lt;p&gt;Downloads all new newly modified files from the Sync Server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sync-up-pretend, sync-down-pretent&lt;/p&gt;
&lt;p&gt;These commands will give you an overview of what will happen if you run sync-up-full or sync-down-full.  No files are modified.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While this is a very simple synchronization setup, so far it has worked well for me.  It is still a work in progress.  I encourage you to read the &lt;a href="http://www.samba.org/ftp/rsync/rsync.html"&gt;rsync manual&lt;/a&gt;.  It explains in detail the exclude patterns and the source and target specification rules.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-4526754647055271659?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/4526754647055271659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=4526754647055271659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/4526754647055271659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/4526754647055271659'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/02/synchronize-and-backup-files-with-rsync.html' title='Synchronize Files with rsync'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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://1.bp.blogspot.com/_r3hLzDENfFM/R8KzUKs8q-I/AAAAAAAAAA0/MGrnF970nkU/s72-c/sync_2008_02_25.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1066178144758611322.post-1148132889509598723</id><published>2008-02-16T17:05:00.029-06:00</published><updated>2008-03-02T23:32:20.173-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dell Inspiron 9100'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Comercial Infrared (LIRC) on a Dell Inspiron 9100 - Part One</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_r3hLzDENfFM/R7dm5qs8q9I/AAAAAAAAAAs/aNp4fJkgYcQ/s1600-h/149.jpeg"&gt;
&lt;img style="margin: 0em 0.5em 0.5em 0em; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_r3hLzDENfFM/R7dm5qs8q9I/AAAAAAAAAAs/aNp4fJkgYcQ/s320/149.jpeg" alt="" id="BLOGGER_PHOTO_ID_5167712238332324818" border="0" /&gt;&lt;/a&gt;

&lt;p&gt;A couple of months ago I switched to using &lt;a href="http://www.gentoo.org/"&gt;Gentoo Linux&lt;/a&gt; as my main operating system.   My laptop, a Dell Inspiron 9100, has an infrared port, but I have never been able to use it for anything useful.   I tried to set up &lt;a href="http://www.lirc.org/"&gt;LIRC&lt;/a&gt; (Linux Infrared Remote Control) in the past on other Linux distributions and even in Windows XP with &lt;a href="http://winlirc.sourceforge.net/"&gt;WinLIRC&lt;/a&gt;, but had no success.   It took a lot of reading and testing, but I finally have LIRC working.   In this post, I describe how to set it up properly.&lt;/p&gt;

&lt;h2&gt;Hardware&lt;/h2&gt;

&lt;p&gt;The Dell Inspiron 9100 has a SMSC IrCC controller chip.   These chips are present in many other laptops and this guide may help you even if you do not own the same laptop as me.   The IrCC chips support both IRDA and CIR (Comercial Infrared) standards.&lt;/p&gt;

&lt;h2&gt;Configuring the hardware&lt;/h2&gt;

&lt;p&gt;Before installing any software, check which COMM port the infrared controller is assigned to.  This setting is located in the BIOS, so reboot your laptop and locate it.   Typically it is set to COMM2 and that is what I used.   COMM2 also works with the IRDA driver, in case you may want to use that in the future.   I tried using COMM1, but could not get it to work.&lt;/p&gt;

&lt;h2&gt;Installing LIRC&lt;/h2&gt;

&lt;p&gt;In order to receive remote control infrared signals in Linux, you need to install LIRC.   In Gentoo, this involves emerging (installing) lirc or one of the higher level packages that depend on it.   I personally use KDE so I would emerge kdelirc or the meta package kdeutils-meta with the &lt;span style="font-weight: bold;"&gt;lirc&lt;/span&gt; USE flag set.&lt;/p&gt;

&lt;p&gt;Before you begin emerging, however, you need to set a couple of options in /etc/make.conf to properly install lirc.    First, you need to define which devices you plan to use with lirc so the appropriate modules are build during the emerge process.   This is controlled by the LIRC_DEVICES option in /etc/make.conf.   You can set it to &lt;span style="font-weight: bold;"&gt;all&lt;/span&gt; and lirc will support all available devices.   For our controller, only the SIR driver is needed, therefore:
&lt;code class="filename"&gt;/etc/make.conf&lt;/code&gt;
&lt;code class="file"&gt;...
LIRC_DEVICES="sir"
...&lt;/code&gt;
is sufficient.&lt;/p&gt;

&lt;p&gt;For this particular device, I also enabled both the &lt;span style="font-weight: bold;"&gt;hardware-carrier&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;transmitter&lt;/span&gt; USE flags.&lt;/p&gt;
&lt;code class="filename"&gt;/etc/make.conf&lt;/code&gt;
&lt;code class="file"&gt;USE=" ... hardware-carrier transmitter ... "&lt;/code&gt;
&lt;p&gt;I am not sure if they are necessary or useful, but I do not have time to test that given that I got it to work.&lt;/p&gt;

&lt;p&gt;Now that these options are set, you can install lirc.   In my configuration I set the &lt;span style="font-weight: bold;"&gt;lirc&lt;/span&gt; use flag and emerged kdeutils-meta.&lt;/p&gt;

&lt;code class="filename"&gt;/etc/make.conf&lt;/code&gt;
&lt;code class="file"&gt;USE=" ... lirc ... "&lt;/code&gt;

&lt;code class="cmd"&gt;# emerge kdeutils-meta&lt;/code&gt;

&lt;h2&gt;Configuration&lt;/h2&gt;

&lt;p&gt;After the packages have been successfully emerged, the LIRC kernel module, lirc_sir, needs to be configured.&lt;/p&gt;

&lt;p&gt;Beforehand, however, make sure that the IRDA kernel module, smsc_ircc2, does not load automatically.   This is unlikely, but it may happen that it is properly configured and able to load automatically on its own.   Check with this command:&lt;/p&gt;

&lt;code class="cmd"&gt;$ lsmod | grep smsc&lt;/code&gt;

&lt;p&gt;If smsc_ircc2 is present, you need to blacklist it to prevent if from loading automatically.   The lirc_sir and smsc_ircc2 modules cannot be loaded at the same time.   To blacklist a module, edit /etc/modprobe.d/blacklist and add the following line, usually at the bottom:&lt;/p&gt;

&lt;code class="filename"&gt;/etc/modprobe.d/blacklist&lt;/code&gt;
&lt;code class="file"&gt;blacklist smsc-ircc2&lt;/code&gt;

&lt;p&gt;After making sure that the IRDA module does not load, the LIRC module can be properly configured.  Until recently I did not know about the modinfo command and I had no idea how to do this correctly.   This command gives you information about the module and what options the module accepts.   Here is an example output of the modinfo command on my lirc_sir module.&lt;/p&gt;

&lt;code class="cmd"&gt;# modinfo lirc_sir
filename:       /lib/modules/2.6.22-suspend2-r2/misc/lirc_sir.ko
license:        GPL
author:         Milan Pikula
description:    Infrared receiver driver for SIR type serial ports
depends:
vermagic:       2.6.22-suspend2-r2 SMP mod_unload PENTIUM4
parm:           io:I/O address base (0x3f8 or 0x2f8) (int)
parm:           irq:Interrupt (4 or 3) (int)
parm:           threshold:space detection threshold (3) (int)
parm:           debug:Enable debugging messages (bool)&lt;/code&gt;

&lt;p&gt;Look at the "parm:" lines.  These are the options that the lirc_sir module accepts.   These can be specified while running the modprobe command.   In order to load the lirc_sir module properly, the top three parameters need to be specified.   When using COMM2, the following settings worked and properly loaded the module:&lt;/p&gt;

&lt;code class="cmd"&gt;# modprobe lirc_sir io=0x2f8 irq=3 threshold=5&lt;/code&gt;

&lt;p&gt;The first two parameters are specific to COMM2.   The threshold parameter I have not explored in detail.   I tried two, three (the default), four and five.   Four and five were the two that worked so I chose five.   You can experiment with those.   I did not notice any negative site effects.&lt;/p&gt;

&lt;p&gt;When the module loads successfully, you can test it with the mode2 program (run it as root).   Just start the program and try pressing some keys on the remote while facing the receiver.   You should see lines like to following start to appear.&lt;/p&gt;

&lt;code class="cmd"&gt;# mode2&lt;/code&gt;

&lt;code class="cmd"&gt;...
space 630
pulse 275
space 363
pulse 515
pulse 514
space 1763
pulse 514
space 1765
pulse 513
space 1798
...&lt;/code&gt;

&lt;p&gt;If the screen remains the same, then something is not correct.  Verify the settings and maybe experiment with the threshold parameter.  To terminate the program, press Ctrl-C.   Now the module is properly configured.   To preserve the settings, add a new file (I named mine lirc-sir) to /etc/modprobe.d/ with the following text.&lt;/p&gt;

&lt;code class="filename"&gt;/etc/modprobe.d/lirc-sir&lt;/code&gt;
&lt;code class="file"&gt;options lirc-sir io=0x2f8 irq=3 threshold=5&lt;/code&gt;

&lt;p&gt;Then run modules-update to integrate the settings from this file.&lt;/p&gt;

&lt;code class="cmd"&gt;# modules-update&lt;/code&gt;

&lt;p&gt;Now, just typing modprobe lirc_sir will work.  The options are looked up automatically.  This module needs to be loaded before the lirc service is started.  There are several ways to get this accomplished.   The easy way it to just add lirc_sir to /etc/modules.autoload.d/kernel-2.6 or to the kernel-2.4 file if you do not use a 2.6 series kernel.&lt;/p&gt;

&lt;code class="filename"&gt;/etc/modules.autoload.d/kernel-2.6&lt;/code&gt;
&lt;code class="file"&gt;...
lirc_sir&lt;/code&gt;

&lt;h2&gt;Starting LIRC&lt;/h2&gt;

&lt;p&gt;After the module is configured, the lirc daemon needs to be added to the start-up services.  In Gentoo, the command is the following:&lt;/p&gt;

&lt;code class="cmd"&gt;# rc-update add lircd default&lt;/code&gt;

&lt;p&gt;In addition to lircd daemon, there is also a lircmd daemon.  This daemon interprets button presses and sends them as mouse events to the system.  I have not tried it yet, but it may make a nice follow-up post in the future.&lt;/p&gt;

&lt;p&gt;From here you can follow the &lt;a href="http://www.lirc.org/html/configure.html"&gt;Configuring LIRC&lt;/a&gt; portion of the LIRC manual and everything should work.&lt;/p&gt;

&lt;p&gt;In a follow up post I will demonstrate now to configure and use your remote in KDE.&lt;/p&gt;

&lt;h2&gt;References&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.lirc.org/html/index.html"&gt;The LIRC Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gentoo-wiki.com/HOWTO_LIRC"&gt;Gentoo Wiki - HOWTO LIRC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tuxmobil.org/Infrared-HOWTO/Infrared-HOWTO.html"&gt;Linux Infrared HOWTO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.smsc.com/main/datasheets/ircc20.pdf"&gt;IrCC 2.0 - Infrared Communications Controller Data Sheet (PDF)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-1148132889509598723?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/1148132889509598723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=1148132889509598723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/1148132889509598723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/1148132889509598723'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/02/comercial-infrared-lirc-on-dell.html' title='Comercial Infrared (LIRC) on a Dell Inspiron 9100 - Part One'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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/_r3hLzDENfFM/R7dm5qs8q9I/AAAAAAAAAAs/aNp4fJkgYcQ/s72-c/149.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1066178144758611322.post-4840827595221494963</id><published>2008-02-16T13:52:00.009-06:00</published><updated>2008-02-16T14:38:28.564-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Testing</title><content type='html'>The preview feature in Blogger does not let me see all the styles that are applied to a post.  I guess I am going to have to make an testing post, like this one, so I can see how the styles will look.
&lt;h2&gt;Heading 1&lt;/h2&gt;
text
&lt;code&gt;code&lt;/code&gt;
text&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-4840827595221494963?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/4840827595221494963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=4840827595221494963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/4840827595221494963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/4840827595221494963'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/02/testing.html' title='Testing'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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><id>tag:blogger.com,1999:blog-1066178144758611322.post-4310639981805678455</id><published>2008-02-01T17:12:00.000-06:00</published><updated>2008-02-01T17:13:21.666-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>The First Post</title><content type='html'>Hello and welcome to my personal blog.  In this first post, I would like to quickly describe what you can expect to see here in the future.

I plan to blog about:
&lt;ul&gt;&lt;li&gt;Computing&lt;/li&gt;&lt;li&gt;Networking&lt;/li&gt;&lt;li&gt;Operating systems&lt;/li&gt;&lt;li&gt;Interesting software&lt;/li&gt;&lt;li&gt;Interesting websites&lt;/li&gt;&lt;li&gt;Programming&lt;/li&gt;&lt;li&gt;Productivity&lt;/li&gt;&lt;li&gt;Various personal projects and items of interest&lt;/li&gt;&lt;/ul&gt;This is neither a complete nor exclusive list of topics.  I will try to tag posts adequately so if you choose to subscribe to an RSS feed, you get only what you are interested in.  I hope you find the information on this blog useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1066178144758611322-4310639981805678455?l=datacurrent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://datacurrent.blogspot.com/feeds/4310639981805678455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1066178144758611322&amp;postID=4310639981805678455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/4310639981805678455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1066178144758611322/posts/default/4310639981805678455'/><link rel='alternate' type='text/html' href='http://datacurrent.blogspot.com/2008/01/first-post.html' title='The First Post'/><author><name>Boian Berberov</name><uri>http://www.blogger.com/profile/12263838081370084034</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></feed>
