<?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-2893277969621208580</id><updated>2011-08-16T22:03:41.973-05:00</updated><category term='DNS'/><category term='RPG'/><category term='real programmers'/><category term='fonts'/><category term='Apple'/><category term='Marahash'/><category term='Postgres'/><category term='roadmap'/><category term='snap'/><category term='Chess variants'/><category term='X window managers'/><category term='Campaign settings'/><category term='stable release'/><category term='ObHack'/><category term='Dell'/><category term='Solstice'/><category term='My neighbor'/><category term='First 2000s decade'/><category term='cryptographic hash'/><category term='bluesky'/><category term='Patent'/><category term='Yash'/><category term='CSS'/><category term='computing history'/><category term='security'/><category term='CentOS'/><category term='DjbDNS'/><category term='rants'/><category term='fanboyz'/><category term='my wife'/><category term='Dadwood'/><category term='geek'/><category term='April Fools'/><category term='NanoDNS'/><category term='freetards'/><category term='XeroBank'/><category term='Linux sucks'/><category term='POSIX'/><category term='MicroDNS'/><category term='MinGW'/><category term='Sponsors'/><category term='es-us'/><category term='Firefox'/><category term='Desert Island'/><category term='internals'/><category term='VMware'/><category term='Scott Adams'/><category term='UUCP'/><category term='HTML'/><category term='release'/><category term='NanoRG32'/><category term='Radio Gatun'/><category term='crypto'/><category term='old computers'/><category term='Meta'/><category term='MaraDNS'/><category term='Nokia 5310'/><category term='Vista'/><category term='Doom'/><category term='technology'/><category term='Cell phones'/><category term='Microsoft'/><category term='SHA-3'/><category term='MOOF'/><category term='Random map generators'/><category term='list of software'/><category term='Deadwood'/><category term='Web browsers'/><category term='Inspiron 1420'/><category term='Interactive fiction'/><category term='C-evo'/><category term='Browsers'/><category term='DVD playback'/><category term='patent troll'/><category term='testing release'/><category term='shell'/><category term='memory lane'/><category term='Software'/><category term='SoftMaker'/><category term='Spanish'/><category term='Downloads'/><category term='Spam'/><category term='sums'/><category term='DeLi Linux'/><category term='LAMP'/><category term='IE6'/><category term='Debian'/><category term='Cloak of Darkness'/><category term='games'/><category term='Chortle'/><category term='blog'/><category term='Google'/><category term='wishlist'/><category term='blogger'/><category term='People’s Tactics'/><category term='Mencoder'/><category term='hacks'/><category term='Linux'/><category term='Netbooks'/><category term='Ubuntu'/><category term='slashdot'/><category term='MOAM-CD'/><category term='Day job'/><title type='text'>MaraDNS</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://maradns.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default?start-index=101&amp;max-results=100'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>698</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-4469514538153451263</id><published>2010-09-29T02:56:00.002-05:00</published><updated>2010-09-29T03:07:36.041-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Yes, open source is a win-win</title><content type='html'>Open source is a win-win.&lt;br /&gt;&lt;br /&gt;I am very pleased to let the MaraDNS community know that I have successfully gotten a job offer which I just accepted this week.  This is a job offer which I would not have gotten if I had not kept my skills current while living in Mexico by continuing to develop MaraDNS, culminating with a three-year-long complete rewrite of the recursive code.&lt;br /&gt;&lt;br /&gt;The timing for getting this offer is perfect.  As I &lt;A href=http://maradns.blogspot.com/2009/10/every-open-source-developer-grows-up.html&gt;planned to do a year ago&lt;/A&gt;, now that MaraDNS 2.0 is out the door, I will put MaraDNS on the back burner.  This will give me more time to be a productive worker at my new job and refine my programming knowledge to master new technologies, keeping my skills current in the 2010s.  &lt;br /&gt;&lt;br /&gt;I am going to continue to support MaraDNS, of course.  I will fix important bugs brought up on the mailing list, and will naturally fix any critical security bug that may be found in MaraDNS.  I will also answer emails on the mailing list when and if I have time to do so.  But, I do not have any plans to add new features to MaraDNS at this time.&lt;br /&gt;&lt;br /&gt;I would like to thank all MaraDNS users for all of your comments, feedback, bug reports, and feature requests.  I have devoted a lot of the last decade to MaraDNS, and it has been an honor to freely give to the world something which I hope people find useful.  &lt;br /&gt;&lt;br /&gt;Open source development truly pays off.  It&amp;rsquo;s a win for users, since they have good code which they can change any way they see fit; it&amp;rsquo;s a win for developers, because it allows them to showcase their work and demonstrate their programming discipline to prospective employers.  I encourage people who are looking to improve their programming skills to become part of an open-source project.  It can be frustrating at times; but it is also rewarding. &lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-4469514538153451263?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4469514538153451263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4469514538153451263'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/yes-open-source-is-win-win.html' title='Yes, open source is a win-win'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-1663572667497770613</id><published>2010-09-28T02:10:00.003-05:00</published><updated>2010-10-05T12:49:15.919-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='stable release'/><title type='text'>MaraDNS 2.0.01 released</title><content type='html'>I have released MaraDNS 2.0.01.  This is simply MaraDNS 1.4 with the deprecated MaraDNS 1.x recursive DNS server removed, and with the documentation updated to reflect the fact that Deadwood 3 is now used for MaraDNS’ recursion.  People, of course, are free to use MaraDNS 1.4 for as long as they want, but its recursive code is now deprecated and only supported for critical security updates.&lt;br /&gt;&lt;br /&gt;I encourage users of MaraDNS to use Deadwood for all recursion with MaraDNS.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-1663572667497770613?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1663572667497770613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1663572667497770613'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/maradns-2001-released.html' title='MaraDNS 2.0.01 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-498553204585461965</id><published>2010-09-26T12:07:00.000-05:00</published><updated>2010-09-26T12:09:55.482-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='stable release'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>MaraDNS 1.4.05 and MaraDNS 1.9.09 released</title><content type='html'>I have, these last couple of days, made new MaraDNS releases which update their version of Deadwood up to Deadwood-3.0.01:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/download.html&gt;http://maradns.org/download.html&lt;/A&gt;&lt;br /&gt;&lt;A href=http://sourceforge.net/projects/maradns/files/&gt;http://sourceforge.net/projects/maradns/files/&lt;/A&gt;&lt;br /&gt;&lt;A href=http://maradns.org/download/1.9/&gt;http://maradns.org/download/1.9/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-498553204585461965?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/498553204585461965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/498553204585461965'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/maradns-1405-and-maradns-1909-released.html' title='MaraDNS 1.4.05 and MaraDNS 1.9.09 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8492392987707137151</id><published>2010-09-24T21:09:00.005-05:00</published><updated>2010-09-26T12:10:48.853-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='stable release'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Deadwood 3.0.01 released</title><content type='html'>I have released Deadwood 3.0.01 today.  With this release made, no new features will be added to the Deadwood recursive resolver for the foreseeable future.  However, bug fixes and other routine maintenance will still be applied to this software package.&lt;br /&gt;&lt;br /&gt;Deadwood is now a stable recursive resolver suitable for embedded systems, desktop PCs, or on internet servers.  Deadwood is fully 64-bit compatible, has optional support for IPv6, and does not require threads to resolve records.&lt;br /&gt;&lt;br /&gt;Deadwood 3.0.01 will be the recursive resolver for MaraDNS 2.0, which I will release shortly, as well as being an optional recursive DNS server to use in MaraDNS 1.4.&lt;br /&gt;&lt;br /&gt;It has been a pleasure developing Deadwood and MaraDNS for nearly a decade.  I will continue to support MaraDNS and Deadwood but have no plans to add new features once MaraDNS 2.0 is released.&lt;br /&gt;&lt;br /&gt;In addition, I no longer need to accept donations for MaraDNS.  All Deadwood and MaraDNS support needs to be done via the MaraDNS mailing list.&lt;br /&gt;&lt;br /&gt;The 3.0.01 release of Deadwood is available here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/stable/&gt;http://maradns.org/deadwood/stable/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8492392987707137151?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8492392987707137151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8492392987707137151'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/deadwood-3001-released.html' title='Deadwood 3.0.01 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3951545405554362431</id><published>2010-09-22T12:34:00.003-05:00</published><updated>2010-09-22T12:38:52.522-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot: Parser bugs fixed</title><content type='html'>I have been uploading new Deadwood snapshots to fix some bugs in the dwood3rc parser; the parser now has the += (append) operator work correctly with dictionary variables, as well as having more stringent controls for dictionary indexes (dictionary variables must be initialized; a dictionary index can not be appended to without first being set; etc.) so that dwood3rc files must be working Python 2 scripts to correctly parse.&lt;br /&gt;&lt;br /&gt;In addition, I have refined the documentation a little.&lt;br /&gt;&lt;br /&gt;They can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3951545405554362431?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3951545405554362431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3951545405554362431'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/new-deadwood-snapshot-parser-bugs-fixed.html' title='New Deadwood snapshot: Parser bugs fixed'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-6089181319461152236</id><published>2010-09-20T11:25:00.003-05:00</published><updated>2010-09-21T18:24:08.614-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot: Two questions and answers added to FAQ</title><content type='html'>I have uploaded a Deadwood snapshot today that adds two questions and answers to the FAQ.  One is about blacklisting domains with Deadwood, and the other is a brief note about how, as much as I would like Deadwood to have DNSSEC support, I am not in a place in my life where I have the time to implement DNSSEC &amp;ldquo;for fun and for free&amp;rdquo;.&lt;br /&gt;&lt;br /&gt;The updated FAQ can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/doc/FAQ.txt&gt;http://maradns.org/deadwood/doc/FAQ.txt&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-6089181319461152236?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6089181319461152236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6089181319461152236'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/new-deadwood-snapshot-two-questions-and.html' title='New Deadwood snapshot: Two questions and answers added to FAQ'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8607589960839856990</id><published>2010-09-16T15:06:00.007-05:00</published><updated>2010-09-19T20:17:55.094-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Day job'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Jobfox.com is a scam</title><content type='html'>For people looking for work, beware of Jobfox.com.  I got hit by their scam when I was looking for work last week.  Based on the &lt;A href="http://www.jobboardreviews.com/Job_Search_Engines/Jobfox.com.html"&gt;various&lt;/A&gt; &lt;A href=http://1strateresumes.blogspot.com/2009/11/beware-of-jobfox-scam.html&gt;reviews&lt;/A&gt; &lt;A href=http://www.complaintsboard.com/complaints/jobfoxcom-resume-critiques-c248152.html&gt;about&lt;/A&gt; &lt;A href=http://commoninterview.com/Resume_Writing_Services_Review/free-resume-critique-job-fox/&gt;this&lt;/A&gt; &lt;A href=http://thewordcynic.com/jobfox-resume-critique-is-a-scam/&gt;company&lt;/A&gt; &lt;A href=http://unfun.net/?p=14&gt;out&lt;/A&gt; &lt;A href=http://thewritingspider.wordpress.com/2010/03/03/thanks-jobfox-the-writing-spider-hates-you-now/&gt;there&lt;/A&gt; &lt;A href=http://unpopularsuggestions.wordpress.com/2010/03/18/angryletters2/&gt;about this company&lt;/A&gt;, I can safely say that they are a scam.&lt;br /&gt;&lt;br /&gt;The scam works like this: Jobfox.com has a number of job postings on their web site; once you sign up with them, they quickly send you an email that they have looked at your resume.  They then tell you that your resume sucks, and that you should pay them $400 to improve your resume to have a chance in the job market.  &lt;br /&gt;&lt;br /&gt;They give this form letter to everyone who signs up for one of their postings on their site, giving out a letter like this: “Your resume does not pass the 30-second test, and the content is not up to the standards one would expect from a candidate like you. Countless studies have proven that resume quality is the key determinant as to whether a candidate is selected to be interviewed. Your resume needs a boost from a visual, content, and overall writing standpoint to engage the reader. It needs to make them want to learn more about you. I didn’t find it to be exciting, and it didn’t make me want to run to the phone to call you. In short, your resume is effectively sabotaging your job search.”&lt;br /&gt;&lt;br /&gt;It does not matter how well-written one’s resume is.  It does not matter if one has the best resume that was ever made.  After Jobfox.com has their spambot scan your resume, they give you the above scathing criticism.  Indeed, &lt;A href="http://www.complaintsboard.com/complaints/jobfoxcom-resume-critiques-c248152.html?sort=datea&amp;page=4"&gt;according to one anonymous poster&lt;/A&gt;, resumes written by Jobfox.com’s own resume writers get the above very negative review.  &lt;br /&gt;&lt;br /&gt;Googling the exact above phrase gives &lt;A href="http://www.google.com.mx/search?q=%22Your+resume+does+not+pass+the+30-second+test,+and+the+content+is+not+up+to+the+standards+one+would+expect+from+a+candidate+like+you.+Countless+studies+have+proven+that+resume+quality+is+the+key+determinant+as+to+whether+a+candidate+is+selected+to+be+interviewed.+Your+resume+needs+a+boost+from+a+visual,+content,+and+overall+writing+standpoint+to+engage+the+reader.+It+needs+to+make+them+want+to+learn+more+about+you.+I+didn%E2%80%99t+find+it+to+be+exciting,+and+it+didn%E2%80%99t+make+me+want+to+run+to+the+phone+to+call+you.+In+short,+your+resume+is+effectively+sabotaging+your+job+search.%22"&gt;multiple results&lt;/A&gt;.  Why am I not surprised?&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8607589960839856990?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8607589960839856990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8607589960839856990'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/jobfoxcom-is-scam.html' title='Jobfox.com is a scam'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-6252507053908787619</id><published>2010-09-12T14:51:00.011-05:00</published><updated>2010-09-12T16:10:10.203-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cryptographic hash'/><category scheme='http://www.blogger.com/atom/ns#' term='crypto'/><category scheme='http://www.blogger.com/atom/ns#' term='Radio Gatun'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Deadwood on OpenWRT; The case for 32-bit Skein</title><content type='html'>When I was designing Deadwood, I made sure to make the program work really nicely on 32-bit processors, while retaining compatibility on 64-bit processors.  In the places where word size really matters, namely the hash compression function and the cryptographic random number generator, I went out of my way to use 32-bit algorithms (my own home-grown algorithm for the 32-bit hash compression function; RadioGatun[32] for the random number generator).  &lt;br /&gt;&lt;br /&gt;During Deadwood’s development cycle, I even gave a nod to systems that can work with both 16-bit and 32-bit numbers, by having it so “int” in the source code means “something that can fit in 16 bits”, and using int32_t for anything that would need more than 16 bits (near the end of the Deadwood development cycle, I went from “int32_t” to “int_fast32_t” for “integer that needs more than 16 bits”).  This is untested—I don’t think there are any systems in use today capable of routing packets that have 16-bit wide registers—but allows it to be at least possible to port Deadwood to a 16-bit system.&lt;br /&gt;&lt;br /&gt;The reason for all this attention to detail was because my target platform while developing Deadwood was to have it run nicely on the 32-bit router in the corner used to connect people to the internet.  And, I have succeeded.&lt;br /&gt;&lt;br /&gt;Sebastian Müller has already &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-September/000679.html&gt;gotten Deadwood to recursively process queries on an embedded router&lt;/A&gt; and is working on &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-September/000681.html&gt;porting Deadwood to a number of platforms&lt;/A&gt;.  He was able to pull this off in a single afternoon because Deadwood is, from beginning to end, an architecture-independent recursive DNS server optimized for 32-bit platforms.&lt;br /&gt;&lt;br /&gt;Of course, Deadwood also runs nicely on 64-bit platforms; one of my regressions I perform when building Deadwood is to make sure nothing breaks in 64-bit.  The only issue is that some operations (the hash compression, the cryptographic random number generator) are less efficient because they were written to run on 32-bit systems. [1]&lt;br /&gt;&lt;br /&gt;Now, while Deadwood does run nicely on various 32-bit embedded systems, I unfortunately can not readily support these configurations because I run Deadwood on x86_32 and can not solve problems for people running it on different systems.  It &lt;i&gt;works&lt;/i&gt;, but people want to do this are on their own and need to take responsibility for any problems they see.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;This leads us to &lt;A href=http://skein-hash.info&gt;Skein&lt;/A&gt;, a proposed hash primitive for &lt;A href=http://csrc.nist.gov/groups/ST/hash/sha-3/index.html&gt;SHA-3&lt;/A&gt;.  Skein is a very good hash with a lot of features, including having, in its core, Threefish, the only tweakable block cipher primitive that appears secure.  &lt;br /&gt;&lt;br /&gt;However, I &lt;A href=http://maradns.blogspot.com/2008/12/why-deadwood-will-still-use-radiogatun.html&gt;can’t use Skein because there’s no native 32-bit version of it&lt;/A&gt;, even though &lt;A href=http://maradns.blogspot.com/2008/12/32-bit-skein-is-possible.html&gt;such a thing is possible&lt;/A&gt;.  When &lt;A href=http://www.schneier.com/blog/archives/2009/07/another_new_aes.html#c387073&gt;I pointed out this problem on Schneier’s blog&lt;/A&gt;, I was dismissed by another poster with “all 32-bit desktop processors (and even some ARM chips) have instructions that can do math on pairs of 64-bit numbers”.  &lt;br /&gt;&lt;br /&gt;That’s all well and good, but Deadwood isn’t just for the desktop.  It’s also for the embedded 32-bit space and that means no MMX/SSE instructions that work on 64-bit numbers.  &lt;br /&gt;&lt;br /&gt;One of the reasons why I feel so frustrated is because &lt;A href=http://maradns.blogspot.com/2010/08/some-cryptographic-primitives-i-would.html&gt;I can’t just make a 32-bit Skein variant&lt;/A&gt;.  Not without possibly making 10 different errors that could destroy its security.&lt;br /&gt;&lt;br /&gt;I understand why Schneier, et. al. don’t feel comfortable coming out with some rotation constants to make a 32-bit Skein variant; if they did make such a Skein variant and some cryptographers found weaknesses in them, it would make them look bad.  So, they are being very conservative about what they will declare to be the official “magic numbers” for Skein.  Numbers I simply do not feel comfortable changing.&lt;br /&gt;&lt;br /&gt;If I were to use one of the SHA-3 submissions for Deadwood’s PRNG, I would use &lt;A href=http://keccak.noekeon.org/&gt;Keccak&lt;/A&gt;.  Like Skein, it can output a stream of infinite length from any input of any length.  Unlike Skein, it is more 32-bit compatible; not only is there a 32-bit “reduced word length” variant officially blessed by the algorithm’s creators, but also 64-bit Keccak more easily scales down to 32-bits than Skein, since the only operations done are permutes, rotates, and exclusive ORs.&lt;br /&gt;&lt;br /&gt;32-bits is still very much a reality today.  While the transition to 64-bit desktops is well underway, it will be a few years before 64-bit desktops become more common than 32-bit desktops.  The embedded space is very slowly letting go of 8-bit systems, replacing them with 32-bit systems.  I wouldn’t be surprised if 32-bit is still around in 2038, when we will have to worry about systems with 32-bit time_t overflowing (Deadwood will run until 2143 on systems with a 32-bit time_t, uses 64-bit timestamps internally, and won’t overflow in 2143 if compiled on a system with a 64-bit time_t).  &lt;br /&gt;&lt;br /&gt;Yes, we are making the transition to 64-bit.  But we can’t make the transition with solutions like Skein that pretend 32-bit no longer exists.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;[1] In terms of making a full 64-bit port of Deadwood, I would have to:&lt;ul&gt;&lt;li&gt;Make most, but not all, of the int32_t declarations int_fast32_t declarations (64-bit compilers should make int_fast32_t 64 bits wide)&lt;li&gt;Use RadioGatun[64] instead of RadioGatun[32] (because of how I wrote the RadioGatun code, this is a fairly quick change)&lt;li&gt;Replace the hash compression core with one using 64-bit instead of 32-bit operations.  The most difficult part of this is making a 63-bit random prime number; we can quickly brute-force test the primality of a 31-bit number, but not for a 63-bit number.&lt;/ul&gt;No, I don’t have plans to do this before MaraDNS 2.0 is released.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-6252507053908787619?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6252507053908787619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6252507053908787619'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/deadwood-on-openwrt-case-for-32-bit.html' title='Deadwood on OpenWRT; The case for 32-bit Skein'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-189970081991324219</id><published>2010-09-10T12:49:00.006-05:00</published><updated>2010-09-10T13:20:58.195-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot: Improved documentation</title><content type='html'>I just uploaded a Deadwood snapshot; this snapshot has updated and improved the Deadwood manpage (typos corrected; Windows Reference.txt version of manpage updated).  In addition, I have added install.bat and uninstall.bat batch files to the Windows port of Deadwood, and revised README.txt for Windows accordingly, so Windows XP users can now install (or remove) Deadwood with just one click.&lt;br /&gt;&lt;br /&gt;It can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maradns.org/deadwood/snap/"&gt;http://maradns.org/deadwood/snap/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; I just tested this in Windows 7, and Deadwood is not a one-click nor two-click install, since right-clicking on a .bat file and choosing “run as administrator” changes the current working directory to \WINDOWS\system32.  To install on Windows 7:&lt;ul&gt;&lt;li&gt;Go to the start menu and search for “cmd”&lt;li&gt;When found, rick click on it and run “cmd” as an administrator&lt;li&gt;At the cmd prompt, use the “cd” command to find and enter the directory where Deadwood is unpacked&lt;li&gt;Invoke the “install.bat” script from this directory&lt;/ul&gt;I will have to update Vista.txt and README.txt to point out how to install Deadwood in Windows 7 (and, presumably, Windows Vista) in the next couple of days.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-189970081991324219?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/189970081991324219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/189970081991324219'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/new-deadwood-snapshot-improved.html' title='New Deadwood snapshot: Improved documentation'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-4913934097398015285</id><published>2010-09-10T00:51:00.003-05:00</published><updated>2010-09-10T01:55:46.416-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><category scheme='http://www.blogger.com/atom/ns#' term='DjbDNS'/><title type='text'>An eulogy for DNScurve</title><content type='html'>OpenDNS is probably the &lt;A href=http://blog.opendns.com/2010/02/23/opendns-dnscurve/&gt;strongest DNScurve proponent&lt;/A&gt; out there.  So, when they &lt;A href=https://www.jobscore.com/job_seeker/jobs/job_posting?job_id=b7pSvUn3ir37abeJe4aGWH&amp;ref=rss&gt;start making moves to look for a DNSSEC engineer&lt;/A&gt; (as an aside, the position is no longer open; they finally convinced one of their own engineers to implement DNSSEC, probably while holding their nose), you know that DNSSEC has won.&lt;br /&gt;&lt;br /&gt;DNScurve, with all due respect, never had a chance.  It didn’t have a chance &lt;A href=http://maradns.blogspot.com/2009/06/why-i-will-not-implement-dns-curve.html&gt;when I last talked about it a year ago&lt;/A&gt;.  It’s downright moribund today.&lt;br /&gt;&lt;br /&gt;Sure, on a technical level it has some really cool technology—in particular, I really like the (2^(255)) - 19 curve it uses for cryptography; a “stock” DNS packet can only fit 512 bytes of information (we can make the packet about 1280 bytes in size if we use EDNS), so a public key cryptographic primitive that offers strong security without needing to push around 3072-bit RSA signatures (the approximate size needed with RSA to get the same level of security as DJB’s “25519” curve) is very appealing.  &lt;br /&gt;&lt;br /&gt;But, unfortunately, standards are not judged solely on their technical merits.  They are also judged on how well the people who work on the standards get along and are willing to make compromises.  &lt;br /&gt;&lt;br /&gt;DJB, as far as I can tell, was never willing to work with other people on DNScurve.  He wanted it to be an end-to-end DJB-exclusive invention: His own “25519” curve for public key cryptography, his own Salsa20 stream cipher for encryption (a nice enough cipher, but it uses 32-bit words everywhere and doesn’t have a mode using 64-bit words), and his own “Poly1305”.  &lt;br /&gt;&lt;br /&gt;To top it off, &lt;i&gt;DJB didn’t even implement a reference implementation of DNScurve&lt;/i&gt;.  He wasn’t even willing to walk far enough outside of his ivory tower to make an implementation, make said implementation public, and allow people to see how it ran in the real world.  &lt;br /&gt;&lt;br /&gt;And, indeed, no one else implemented DNScurve either.  The most notable implementation of DNScurve &lt;i&gt;was&lt;/i&gt; &lt;A href=http://www.george-barwood.pwp.blueyonder.co.uk/DnsServer/&gt;GbDNS&lt;/A&gt;, but that was &lt;A href=http://www.george-barwood.pwp.blueyonder.co.uk/DnsServer/changes.htm&gt;replaced by something called “QRP” a year ago&lt;/A&gt;.  OpenDNS was the only other place that implemented DNScurve, but they’re now looking to implement DNSSEC.&lt;br /&gt;&lt;br /&gt;DNScurve also suffered from being a solution looking for a problem.  The only real issue DNScurve solved was the problem of being able to sniff DNS traffic and spoofing replies based on the traffic seen.  It didn’t solve the problem of an upstream DNS server sending spoofed traffic.  Quite bluntly, this is a problem OpenDNS’ current business model doesn’t want to see solved (they make their money from NX redirects and from having google.com point to their own web page), so it’s no surprise they advocated DNScurve for as long as they did.&lt;br /&gt;&lt;br /&gt;DNSSEC, on the other hand, is already seeing wide adoption.  BIND has always supported it, of course, and Unbound supports it.  GbDNS also now has gone from supporting DNScurve to support DNSSEC.  PowerDNS is getting DNSSEC support.  &lt;br /&gt;&lt;br /&gt;If things in my life ever change and I got a six-month paid sabbatical, I would also implement DNSSEC and make it part of Deadwood; I regret the fact I don’t have time to make a compact pure-C implementation of DNSSEC.  &lt;br /&gt;&lt;br /&gt;If you want to make a standard real, work with standards committees.  I know DJB can do this; his excellent Salsa20 cipher is part of the eSTREAM portfolio (but, again, I’d like to see a 64-bit Salsa20, or, even better, a 64-bit version of Cha-Cha I would call Merengue, or even Merequetengue).  It’s a shame he didn’t do the same with DNScurve.  Hopefully, the 25519 curve can become a public key algorithm used in future revisions to the DNSSEC standard.&lt;br /&gt;&lt;br /&gt;- Sam&lt;P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-4913934097398015285?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4913934097398015285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4913934097398015285'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/eulogy-for-dnscurve.html' title='An eulogy for DNScurve'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-4349737842280025076</id><published>2010-09-09T02:59:00.003-05:00</published><updated>2010-09-09T11:54:39.278-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.9.07 released: Faster resolution, better security</title><content type='html'>I have released Deadwood 2.9.07 today.  Compared to Deadwood 2.9.06, this release offers:&lt;ul&gt;&lt;li&gt;Faster resolution speeds.  I have fixed two significant bugs which measurably slowed down Deadwood’s resolution performance; now Deadwood has, on my home internet connection, performance better than Unbound (it took Deadwood 2.9.07 159 seconds to resolve a list of names; Unbound 1.4.6 needed 169 seconds to resolve this list).  &lt;li&gt;Better security.  The underlying hash compression function uses a “secret” number in its core that is usually only changed whenever a new Deadwood release is made.  I have updated this code to now have another “secret” number that is changed every time Deadwood is started.&lt;li&gt;Spam zombie protection.  For over a year, there was a bug in Deadwood that broke MX records.  Not only have I fixed this bug in Deadwood 2.9.07, I also have set up Deadwood to disable MX records by default, since they are generally only used by email hubs and “zombie” computers spewing spam.&lt;/ul&gt;This release can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/testing/&gt;http://maradns.org/deadwood/testing&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-4349737842280025076?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4349737842280025076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4349737842280025076'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/deadwood-2907-released-faster.html' title='Deadwood 2.9.07 released: Faster resolution, better security'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8388745562067293025</id><published>2010-09-08T15:17:00.005-05:00</published><updated>2010-09-08T20:56:40.897-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot: Resolve speeds comparable to Unbound</title><content type='html'>It looks like I have solved the issues people have reported with Deadwood being sluggish.  The two bugs I fixed were one where Deadwood would delay timeout_seconds (normally 2 seconds) if there was a problem getting an upstream IP from its cache, and another where Deadwood would delay timeout_seconds if there were upper case letters in the name of a DNS reply.&lt;br /&gt;&lt;br /&gt;I just ran &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-September/000657.html&gt;Juergen’s test&lt;/A&gt; with Deadwood and Unbound.  Deadwood is able to resolve the list of domain names on my network in 2:42 (two minutes forty-two seconds) and 2:54 (the 2:42 figure was done starting Deadwood with no cache); Unbound needed 2:57 to resolve the same list. In addition, &lt;A href=http://code.google.com/p/namebench/&gt;namebench&lt;/A&gt; shows Deadwood doing a lot better than Unbound (far fewer lost queries and better average response time to the queries Deadwood does resolve) on my machine.&lt;br /&gt;&lt;br /&gt;&lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-September/000665.html&gt;Steve Gibson’s DNS benchmark tool is buggy&lt;/A&gt; and incorrectly reports that Deadwood drops most DNS packets; I have set up Deadwood to report every reply it sends as well as every incoming query, and have verified that Deadwood replies to most, if not all, of its incoming queries when Gibson’s DNS benchmark is run against it.&lt;br /&gt;&lt;br /&gt;In addition, I have revised Deadwood’s internal hash algorithm to be more secure: The algorithm, in addition to using a multiplication constant that randomly changes every time Deadwood is compiled in CentOS Linux or a new Deadwood release is made (which Deadwood has always done), now uses an additive constant that is different every time Deadwood is started.  Deadwood is hard-coded to use /dev/urandom (secret.txt in Windows systems) for entropy to generate this additive constant from (we also get a bit of entropy from the timestamp); if this file is not found, Deadwood will fallback to using a hard-coded additive constant for its core hash.&lt;br /&gt;&lt;br /&gt;I would like to thank Juergen Daubert, Wayne, and Marlon for their bug reports, feedback, and suggestions getting programs to help debug Deadwood’s performance.&lt;br /&gt;&lt;br /&gt;The snapshot can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;deadwood-H-20100908-3.tar.bz2&lt;br /&gt;&lt;br /&gt;Windows users can use this snapshot that has the improved performance (but not the improvements to Deadwood’s internal hashing function):&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;Deadwood-H-20100908-win32.zip&lt;br /&gt;&lt;br /&gt;Please report any bugs to the &lt;A href=http://maradns.org/faq.html#subscribe&gt;mailing list&lt;/A&gt; [1].&lt;br /&gt;&lt;br /&gt;- Sam&lt;br /&gt;&lt;br /&gt;[1] Crash reports are useless unless they are accompanied by a stack trace or a recipe for reproducing the crash; Valgrind errors are invalid unless Deadwood is compiled with -DVALGRIND_NOERRORS&lt;br /&gt;&lt;br /&gt;Note: Yeah, I’m still looking for work.  &lt;A href=http://samiam.org/mailme.php&gt;Send me an email&lt;/A&gt; if you have a job for me.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Anyone who downloaded deadwood-H-20100908-3 should download deadwood-H-20100908-4; this update is a hotfix that fixes dictionary variables which I broke in deadwood-H-20100908-3.  Note also that dictionary variables work with the most recent Windows binary; it was the improved hash compression security which temporarily broke dictionary variables.&lt;br /&gt;&lt;br /&gt;Yes, I do perform regressions to catch things like this, but only for numbered release (e.g. I’ll do the regressions before releasing Deadwood 2.9.07) and not for snapshot releases.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8388745562067293025?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8388745562067293025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8388745562067293025'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/new-deadwood-snapshot-resolve-speeds.html' title='New Deadwood snapshot: Resolve speeds comparable to Unbound'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8272303474566184944</id><published>2010-09-06T23:30:00.004-05:00</published><updated>2010-09-06T23:38:31.031-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Radio Gatun'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot: Queries nearly three times faster</title><content type='html'>There has been &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-September/000657.html&gt;some discussion today&lt;/A&gt; about the fact Deadwood, while very good at resolving names in general, is a good deal &lt;i&gt;slower&lt;/i&gt; than other DNS servers.&lt;br /&gt;&lt;br /&gt;Looking at the code, I already found the #1 offender that was responsible for about two thirds of the slowdown, and have patched this bug in today’s Deadwood snapshot.  Anyone who feels Deadwood is a bit sluggish is encouraged to download and use today’s snapshot.&lt;br /&gt;&lt;br /&gt;In addition, one issue that I have been thinking about for a while is that the hash compression function is not quite random enough.  So, I’ve revised the hash compression core to add a random 16-bit number for each iteration of the hash compression.  The number is randomly generated with Deadwood’s secure PRNG (Read: RadioGatún[32]) and is different every time Deadwood is started.&lt;br /&gt;&lt;br /&gt;Deadwood snapshots can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8272303474566184944?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8272303474566184944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8272303474566184944'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/new-deadwood-snapshot-queries-nearly.html' title='New Deadwood snapshot: Queries nearly three times faster'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-6544797906970213256</id><published>2010-09-05T07:55:00.005-05:00</published><updated>2010-09-05T16:58:27.723-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot: MX record lookups disabled by default</title><content type='html'>Over the years, people have reported issues using MaraDNS as part of a mail hub, processing MX queries.  This is a manner of using MaraDNS which I plain simply do not perform, and therefore have not adequately tested.  The fact that releases of Deadwood with broken MX lookup support have been out for over a year, with no one letting me know about this bug on the MaraDNS mailing list (or me becoming aware of it myself with my own “dogfood” testing; I only became aware of it when I decided to make a MX lookup with Deadwood on a lark) indicate that this is not something widely used, much less tested.&lt;br /&gt;&lt;br /&gt;My general feeling is that, if an average client machine is making a MX query, most likely it has been taken over by a spambot sending out spam.  I have been using Microsoft Outlook and other MUAs (mail user agents) with Deadwood for over a year while its MX processing was broken and never saw a problem; a MUA does not perform MX lookups to send mail, but instead connects to the SMTP server, which does the actual MX lookups.&lt;br /&gt;&lt;br /&gt;That in mind, in today’s snapshot of Deadwood, I have explicitly disabled MX lookups; if an MX lookup is made, the query is rejected and the IP is logged as being a possible spam zombie.  There is a parameter which I have documented that will enable MX lookups again.  &lt;br /&gt;&lt;br /&gt;The fact of the matter is this: Using Deadwood with a mail hub making a large number of MX requests is completely untested.  If one wants to use Deadwood in this manner, please &lt;A href=http://maradns.org/faq.html#subscribe&gt;subscribe to the MaraDNS mailing list&lt;/A&gt; and express the intention to help beta-test Deadwood for this use case which I do not have.&lt;br /&gt;&lt;br /&gt;In the meantime, by disabling and logging MX lookups in Deadwood, we can make networks a little more secure and resistant to spam zombies commandeering machines on our networks.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-6544797906970213256?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6544797906970213256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6544797906970213256'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/new-deadwood-snapshot-mx-record-lookups.html' title='New Deadwood snapshot: MX record lookups disabled by default'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-81643815935007007</id><published>2010-09-04T09:41:00.007-05:00</published><updated>2010-09-04T14:32:33.083-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freetards'/><category scheme='http://www.blogger.com/atom/ns#' term='First 2000s decade'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>New Deadwood snapshot: Non-A records now resolve</title><content type='html'>I guess not that many people are testing Deadwood.&lt;br /&gt;&lt;br /&gt;Let me be honest about the type of testing I’m doing with Deadwood: I am testing Deadwood’s as a DNS server used for casual web surfing on today’s internet.  That means that most of the queries done are A queries; I don’t do much testing with AAAA (IPv6) queries because, quite bluntly, my ISP doesn’t offer IPv6 service and I can think of only one site on the Internet with an AAAA record: &lt;tt&gt;ipv6.google.com&lt;/tt&gt;.  &lt;br /&gt;&lt;br /&gt;Likewise, I haven’t done &lt;i&gt;any&lt;/i&gt; testing with MX records.  I haven’t touched MX records at all because I’m not using Deadwood with a mail hub.  So, it came as an unpleasant shock to me when I discovered last night that Deadwood hasn’t been properly resolving MX records for over a year.  &lt;br /&gt;&lt;br /&gt;In Deadwood 2.4.05 (released August 9, 2009), I added the ability to rotate resource records.  Unknown to me, this feature broke Deadwood with any variable-length record, such as a MX record pair where the hostnames are of different lengths.  &lt;br /&gt;&lt;br /&gt;The advantage of using Deadwood’s robust string library with almost all of Deadwood’s DNS processing is that this bug did not result in any memory corruption or cause any other problems; the only issue has been that Deadwood would not resolve MX or other variable length records.&lt;br /&gt;&lt;br /&gt;The idea that some freetards advocate that open source software is magically tested and that all bugs become shallow is nothing more than so much—how should I say this—mental masturbation.  The author of Mailman, John Viega, points out how wrong this is in his excellent essay “&lt;A href=http://www.developer.com/tech/article.php/983621/The-Myth-of-Open-Source-Security-Revisited.htm&gt;The Myth of Open Source Security&lt;/A&gt;”.&lt;br /&gt;&lt;br /&gt;Excuse me for the blunt wording, but I am a little frustrated right now: I have devoted a decade of my life to MaraDNS, and I haven’t even been able to get a job because of my hard work; while I have had a couple of interviews I would not have had because of MaraDNS, so far I have gotten no offers.  Yes, those are interviews I would not had have if it weren’t for MaraDNS, and, yes, MaraDNS kept my skills from getting completely rusty during the ’00s when I was concentrating on learning Spanish and living in Mexico.  But, looking back, I really wish I had spent more time learning C++ and object oriented programming and less time editing the Wikipedia or posting to &lt;A href=http://slashdot.org/&gt;/.&lt;/A&gt;.  &lt;br /&gt;&lt;br /&gt;It looks like Deadwood isn’t getting much external testing; not one person saw Deadwood’s issue with MX records in the year Deadwood has had this bug.  So, yeah, like everything else with MaraDNS, I’m responsible for just about all of the testing.  This isn’t a complete loss; people have asked me in interviews about my testing methodology for MaraDNS.  &lt;br /&gt;&lt;br /&gt;I have just uploaded a snapshot which fixes the issue with rotating records like MX records:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;As a side benefit, since I have fixed this issue, TTL aging and RR rotation now work with ANY records.&lt;br /&gt;&lt;br /&gt;Next: Set up a test for this issue, as well as DNS compression tests for all of the resource record types MaraDNS supports.  If I get time, I will also set up tests to make sure Deadwood correctly handles things like SRV records with compression pointers, and that Deadwood doesn’t compress SRV records.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-81643815935007007?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/81643815935007007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/81643815935007007'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/new-deadwood-snapshot-non-records-now.html' title='New Deadwood snapshot: Non-A records now resolve'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-1287735910435307753</id><published>2010-09-03T10:27:00.003-05:00</published><updated>2010-09-03T10:35:13.568-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.9.06 released</title><content type='html'>I have just released Deadwood 2.9.06.  This is Deadwood 2.9.05 with its handling of empty DNS packets tweaked to handle the corner case of a DNS server giving out an empty packet better.  It’s been two weeks since the last Deadwood testing release and it looks like I’m getting down to the nitty-gritty corner cases that only affect a tiny percentage of DNS resolutions (properly configured DNS servers do not give out empty DNS packets).&lt;br /&gt;&lt;br /&gt;My plan is to release Deadwood 3.0.01 in a little over two weeks.&lt;br /&gt;&lt;br /&gt;Meanwhile, Deadwood can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/testing/&gt;http://maradns.org/deadwood/testing/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-1287735910435307753?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1287735910435307753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1287735910435307753'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/deadwood-2906-released.html' title='Deadwood 2.9.06 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8282089827677246192</id><published>2010-09-02T01:24:00.002-05:00</published><updated>2010-09-02T01:42:38.184-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot: Better heuristics for empty DNS packets</title><content type='html'>When a remote server sends us an empty DNS packet, what does that really mean?  Well, it usually means that the hostname does not always exist.  But, not always.&lt;br /&gt;&lt;br /&gt;Let’s take the hostname &lt;tt&gt;ibnlive.in.com&lt;/tt&gt;.  It has three DNS servers: 123.108.40.31, 123.108.40.32, and 123.108.40.81.  Two of the servers (123.108.40.32 and 123.108.40.81) do the right thing: They redirect the name to Akamai’s horrendous mess of DNS resolution.  However, 123.108.40.31 is broken and gives us a blank DNS packet with a SERVER FAIL message.&lt;br /&gt;&lt;br /&gt;The DNS administrators for in.com aren’t trying to tell us that ibnlive.in.com doesn’t resolve.  No, they’re trying to tell us that their DNS administrator is asleep and misconfigured one of their three DNS servers.&lt;br /&gt;&lt;br /&gt;So, I’ve tweaked the heuristics of Deadwood to treat a DNS packet with a “SERVER FAIL” RCODE as being one where the DNS server is asleep at the wheel, so instead of treating the packet like “this name does not exist” (like what we normally do with a blank DNS reply), we ignore the packet and bug the next DNS server on the list.  The code isn’t perfect: We wait &lt;tt&gt;timeout_seconds&lt;/tt&gt; before contacting the next server, but it’s good enough to have domains mismanaged like this correctly resolve.  &lt;br /&gt;&lt;br /&gt;I should note that the bugs I’m finding in Deadwood right now are not bugs caused by Deadwood not being RFC-compliant—the last bug I fixed like that was &lt;A href=http://maradns.blogspot.com/2010/08/new-deadwood-snapshot-neustarbiz-fixed.html&gt;on August 9&lt;/A&gt;.  No, at this point, I’m fine-tuning Deadwood to more or less do the right thing with mismanaged domains and broken DNS servers.  &lt;br /&gt;&lt;br /&gt;As always, the snapshot can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8282089827677246192?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8282089827677246192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8282089827677246192'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/new-deadwood-snapshot-better-heuristics.html' title='New Deadwood snapshot: Better heuristics for empty DNS packets'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5793845478379217404</id><published>2010-09-01T15:10:00.003-05:00</published><updated>2010-09-01T15:32:15.644-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot: Better handling of empty packets</title><content type='html'>I have uploaded a new snapshot of Deadwood which improves Deadwood&amp;rsquo;s handling of empty packets.  A number of broken DNS configurations and servers out on the internet, such as the DNS servers answering the IPv6 (AAAA) query for wwwchase.gslb.bankone.com, send out an empty DNS packet instead of a correctly made SOA-in-NS-section DNS reply when a host name can not be found.  &lt;br /&gt;&lt;br /&gt;Another situation where a DNS server gives out a reply like this is when someone stops paying for their domain, so the ISP suspends their account by removing the zone for their domain.  However, this information has not been changed upstream.  As a result, when we contact the DNS servers for a given zone, the DNS servers give us a blank QUERY REFUSED reply.  &lt;br /&gt;&lt;br /&gt;Since these do happen, Deadwood now pretends that a blank DNS reply is a low-TTL &amp;ldquo;SOA-in-NS-section&amp;rdquo; reply.  This should speed up some queries, especially on IPv6-capable computers that perform AAAA queries before doing A queries.  &lt;br /&gt;&lt;br /&gt;It can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;I should point out that I wrote the code to do this in a way to minimize the amount of code added to Deadwood and to maximize code reuse by having the relevant code in DwRecurse.c call the already created make_synth_not_there_answer() function made a little-more general purpose.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5793845478379217404?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5793845478379217404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5793845478379217404'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/09/new-deadwood-snapshot-better-handling.html' title='New Deadwood snapshot: Better handling of empty packets'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2637652568975061013</id><published>2010-08-31T17:06:00.002-05:00</published><updated>2010-08-31T17:09:41.321-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>MaraDNS progress report: Documentation updates</title><content type='html'>I am continuing to update MaraDNS 2.0’s up and-coming documentation to correctly reflect the fact that all recursion is now done by the separate daemon Deadwood.  I have also updated Deadwood’s manpage to state that Deadwood is a fully recursive DNS server.&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/download/1.9/&gt;http://maradns.org/download/1.9&lt;/A&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2637652568975061013?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2637652568975061013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2637652568975061013'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/maradns-progress-report-documentation.html' title='MaraDNS progress report: Documentation updates'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-6516061472847366443</id><published>2010-08-30T16:57:00.003-05:00</published><updated>2010-08-30T17:06:16.913-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New MaraDNS 1.9 snapshot</title><content type='html'>I made some progress with updating the documentation for MaraDNS 2.0; I have updated the mararc man page to remove parameters that are used for MaraDNS 1’s recursion, as well as adding a section in the update document on updating from MaraDNS 1.4 to MaraDNS 2.0.&lt;br /&gt;&lt;br /&gt;I plan on adding a couple of details from the Deadwood FAQ to MaraDNS’s upgrade document, as well as updating MaraDNS’ tutorials to discuss using Deadwood for all recursion.&lt;br /&gt;&lt;br /&gt;I am considering MaraDNS 1.9.x releases “snapshot” releases since I am making them fairly quickly right now.  &lt;br /&gt;&lt;br /&gt;They can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/download/1.9/&gt;http://maradns.org/download/1.9&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-6516061472847366443?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6516061472847366443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6516061472847366443'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/new-maradns-19-snapshot.html' title='New MaraDNS 1.9 snapshot'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2860237249670518472</id><published>2010-08-29T01:46:00.003-05:00</published><updated>2010-08-29T02:15:31.451-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>MaraDNS 1.9: Moving towards MaraDNS 2.0</title><content type='html'>I have made the changes to MaraDNS’ codebase to prepare her for the MaraDNS 2.0 release.  The changes are (drum roll) pretty simple, actually: I have gone through all of the &lt;tt&gt;#ifdef AUTHONLY&lt;/tt&gt; statements to either keep them as AUTHONLY statements, or to change them to &lt;tt&gt;#ifdef IPV6&lt;/tt&gt; for statements which enable IPv6 support (MaraDNS 1 has no recursive IPv6 support, so AUTHONLY is also used to enable IPv6).&lt;br /&gt;&lt;br /&gt;The only other change I have done is to revise the build scripts to:&lt;ul&gt;&lt;li&gt;Always define &lt;tt&gt;AUTHONLY&lt;/tt&gt; when compiling MaraDNS&lt;li&gt;Update the &lt;tt&gt;configure&lt;/tt&gt; script and Makefiles to allow one to enable or disable IPv6&lt;li&gt;Not link MaraDNS to the pthreads library (MaraDNS 2.0 will be thread-free)&lt;li&gt;Compile Deadwood as MaraDNS 2.0’s recursive resolver&lt;li&gt;I removed makefiles for all operating systems besides Linux, Windows, and a generic *NIX “noflock” makefile&lt;/ul&gt;It can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/download/1.9/&gt;http://maradns.org/download/1.9/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;At this point, the code for both MaraDNS 2.0 and Deadwood 3.0 (the recursive resolver MaraDNS will have) are done: The only changes will be bug fixes.  The thing I should do at this point is revise MaraDNS’ documentation to reflect the MaraDNS 2.0 changes, as well as removing any MaraDNS 1 SQA tests that test MaraDNS’ recursor.&lt;br /&gt;&lt;br /&gt;One issue MaraDNS 2.0 will have is that the recursive resolver will require a separate IP, and that there isn’t an automated way to convert a MaraDNS 1 mararc file in to a MaraDNS 2 mararc file and Deadwood 3 dwood3rc file.  This in mind, I have no plans to stop supporting MaraDNS 1.4 for critical security fixes and other important bugfixes and updates (such as updating the default list of root nameservers) for the foreseeable future, as well as supporting MaraDNS 2.0 for “this host does not resolve” bugs, as well as other bug fixes.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2860237249670518472?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2860237249670518472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2860237249670518472'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/maradns-19-moving-towards-maradns-20.html' title='MaraDNS 1.9: Moving towards MaraDNS 2.0'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3894231837613153665</id><published>2010-08-28T15:12:00.002-05:00</published><updated>2010-08-28T15:29:57.223-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ObHack'/><title type='text'>ObHack 007.0 released</title><content type='html'>Fritz has made a release of ObHack 007.0, which I have uploaded to my web site:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://samiam.org/slump&gt;samiam.org/slump&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;More information and support for this release is here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://www.doomworld.com/vb/doom-editing/52407-obhack-007-0-released-random-map-generator/&gt;http://www.doomworld.com/vb/doom-editing/52407-obhack-007-0-released-random-map-generator/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3894231837613153665?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3894231837613153665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3894231837613153665'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/obhack-0070-released.html' title='ObHack 007.0 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-7425089320556101088</id><published>2010-08-27T13:52:00.003-05:00</published><updated>2010-08-27T13:54:56.247-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Deadwood update: No news is good news</title><content type='html'>No news is good news.&lt;br /&gt;&lt;br /&gt;And, there&amp;rsquo;s no news for Deadwood this week.  The only updates since 2.9.05 released a week ago today are documentation updates.  I haven&amp;rsquo;t seen a single site not resolve in Deadwood that can resolve with other DNS servers.&lt;br /&gt;&lt;br /&gt;I encourage users to continue testing Deadwood and reporting bugs on &lt;A href=http://maradns.org/faq.html#subscribe&gt;the MaraDNS mailing list&lt;/A&gt;.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-7425089320556101088?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7425089320556101088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7425089320556101088'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/deadwood-update-no-news-is-good-news.html' title='Deadwood update: No news is good news'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-6930679207137954317</id><published>2010-08-23T15:56:00.003-05:00</published><updated>2010-08-23T15:58:48.207-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>Blog update: Comments disabled</title><content type='html'>I have had to disable comments because people were using the comment system for MaraDNS/Deadwood support concerns.  Unfortunately, I do not have the time to use this blog to support MaraDNS and ask that people who have bug reports or whatever to take the time to join the MaraDNS mailing list and share with the list their concern.  &lt;A href=http://samiam.org/blog-faq.html&gt;I have updated the FAQ for this blog&lt;/A&gt; to explain my thinking in more detail.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-6930679207137954317?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6930679207137954317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6930679207137954317'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/blog-update-comments-disabled.html' title='Blog update: Comments disabled'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-1958927339177361381</id><published>2010-08-20T13:18:00.003-05:00</published><updated>2010-08-20T13:24:42.725-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.9.05 released</title><content type='html'>As long as I find bugs that stop sites from resolving, I will continue to make weekly releases of Deadwood.  &lt;br /&gt;&lt;br /&gt;I’ve added a workaround for &lt;A href=http://maradns.blogspot.com/2010/08/deadwood-snapshot-update-working-around.html&gt;one particular broken DNS server&lt;/A&gt; as well as fixing resolution of ANY queries that point to CNAME records.&lt;br /&gt;&lt;br /&gt;It can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/testing/&gt;http://maradns.org/deadwood/testing/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;There is also a &lt;A href=http://maradns.org/deadwood/CHANGELOG&gt;change log&lt;/A&gt; available.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-1958927339177361381?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1958927339177361381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1958927339177361381'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/deadwood-2905-released.html' title='Deadwood 2.9.05 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-6490450691953237578</id><published>2010-08-16T09:55:00.002-05:00</published><updated>2010-08-16T10:01:20.999-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot; allowing anonymous comments</title><content type='html'>I have just uploaded a new Deadwood snapshot; this release does not change the program, but it has updated the INSTALL.txt file to be current and all compile-time flags Deadwood has are now documented.&lt;br /&gt;&lt;br /&gt;It can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;This may be my last snapshot announcement for Deadwood snapshot updates when the actual Deadwood program has not been changed.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;I have enabled anonymous comments in my blog again, since it looks like Google has enabled comment spam protection.  As always, comments posted here are moderated and Deadwood/MaraDNS support requests will not be published, nor will flames, trolling, and spam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-6490450691953237578?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6490450691953237578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6490450691953237578'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/new-deadwood-snapshot-allowing.html' title='New Deadwood snapshot; allowing anonymous comments'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-1373839973361122668</id><published>2010-08-15T02:52:00.003-05:00</published><updated>2010-08-15T03:02:05.968-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New Deadwood snapshot: mkSecretTxt added; doc/internals updated</title><content type='html'>In today’s snapshot of Deadwoood, I have added the mkSecretTxt program I made for the 1.4.04 release of MaraDNS.  When adding it to Deadwood, I have added a test to make sure &lt;tt&gt;secret.txt&lt;/tt&gt; does not exist before overwriting it.  The thinking is that Windows shies away from potentially dangerous commands more than *NIX does; since overwriting secret.txt without prompting is an example of the old dangerous (and, IMO, obsolete) *NIX way, mkSecretTxt no longer does this.&lt;br /&gt;&lt;br /&gt;In addition, I have gone through the &lt;tt&gt;doc/internals&lt;/tt&gt; folder and updated the files there.  In the case of a couple of files, I just added a note that the file in question is out of date.&lt;br /&gt;&lt;br /&gt;It can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;OK, back to learning C++.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-1373839973361122668?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1373839973361122668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1373839973361122668'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/new-deadwood-snapshot-mksecrettxt-added.html' title='New Deadwood snapshot: mkSecretTxt added; doc/internals updated'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5205099650921475255</id><published>2010-08-14T04:25:00.003-05:00</published><updated>2010-08-14T04:30:50.939-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>Deadwood snapshot update: Working around aplus.net’s broken DNS server</title><content type='html'>Aplus.net’s DNS server is broken.&lt;br /&gt;&lt;br /&gt;Let’s contact their DNS server for the A record for bookride.com:&lt;br /&gt;&lt;br /&gt;$ dig @64.29.144.70 www.bookride.com&lt;br /&gt;&lt;br /&gt;; &lt;&lt;&gt;&gt; DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 &lt;&lt;&gt;&gt; @64.29.144.70 www.bookride.com&lt;br /&gt;; (1 server found)&lt;br /&gt;;; global options:  printcmd&lt;br /&gt;;; Got answer:&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 10397&lt;br /&gt;;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0&lt;br /&gt;&lt;br /&gt;;; QUESTION SECTION:&lt;br /&gt;;www.bookride.com.              IN      A&lt;br /&gt;&lt;br /&gt;;; ANSWER SECTION:&lt;br /&gt;www.bookride.com.       3600    IN      CNAME   ghs.google.com.&lt;br /&gt;&lt;br /&gt;;; AUTHORITY SECTION:&lt;br /&gt;google.com.             86400   IN      SOA     ns1.aplus.net. hostmaster.aplus.net. 1007 86403 3600 3600000 86400&lt;br /&gt;&lt;br /&gt;;; Query time: 304 msec&lt;br /&gt;;; SERVER: 64.29.144.70#53(64.29.144.70)&lt;br /&gt;;; WHEN: Sat Aug 14 01:18:15 2010&lt;br /&gt;;; MSG SIZE  rcvd: 119&lt;br /&gt;&lt;br /&gt;This is an invalid packet: It is marked as a NXDOMAIN (complete with a SOA record in the NS/Authority section), but it is actually a CNAME.  &lt;br /&gt;&lt;br /&gt;I have updated Deadwood to treat these broken packets like ordinary CNAME packets.  The snapshot can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;I am also in the process of trying to file a bug report with aplus.net.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5205099650921475255?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5205099650921475255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5205099650921475255'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/deadwood-snapshot-update-working-around.html' title='Deadwood snapshot update: Working around aplus.net’s broken DNS server'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5409467347582611577</id><published>2010-08-13T04:09:00.004-05:00</published><updated>2010-08-13T04:44:57.175-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freetards'/><category scheme='http://www.blogger.com/atom/ns#' term='First 2000s decade'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.9.04 released</title><content type='html'>I have released Deadwood today.  This is the recursive resolver that I recommend all MaraDNS and Deadwood users use unless they have a compelling reason to use an older release of a recursive resolver; all other MaraDNS recursive code will now only be updated to address critical security problems.  For example, if MaraDNS 1.0’s resolver stops being able to resolve www.google.com or www.microsoft.com tomorrow, I will not update it; I will tell people to update to Deadwood.&lt;br /&gt;&lt;br /&gt;That said, this is still a beta-test release of Deadwood.  The code has only been beta-tested for under a month and I want to get two full months of beta testing before declaring it stable.  I really appreciate all of the bugs and issues Sebastian Müller has reported and hope other people also test this software and report issues.&lt;br /&gt;&lt;br /&gt;It may seem unusual that I am not fixing bugs with the stable 1.0 recursive resolver while the Deadwood (MaraDNS 2.0) recursive resolver is only undergoing beta-testing.  This isn’t entirely true; if someone reports a bug with MataDNS 1.0’s recursive resolver and wants it fixed, I will fix it.  For a price.  My business model with MaraDNS is to use the program as my resume (since I was having fun in Mexico during the first decade of the 2000s, it’s how I have been keeping my computer skills up to date), as well as accepting donations and selling service and support. [1] &lt;br /&gt;&lt;br /&gt;Right now, the kinds of bugs I want people to look for and report in Deadwood are host names that do not resolve.  If there is a host out there that correctly resolves in BIND or whatever, but doesn’t resolve in Deadwood, I want to know about it.  I also want to know about any memory leaks people find in Deadwood.  I welcome reports of crashes, but only if accompanied by a stack trace or recipe to reproduce the crash (ideally both).  Valgrind errors are OK to report, but only if Deadwood is compiled with “VALGRIND_NOERRORS” defined (&lt;tt&gt;export FLAGS='-g -DVALGRIND_NOERRORS' ; make&lt;/tt&gt; from the &lt;tt&gt;src/&lt;/tt&gt; directory of Deadwood).  I would love people to test IPv6 compatibility with Deadwood; the SQA regressions tell me Deadwood works with IPv6, but I would love reports from users on IPv6 networks to see if they are any real-world problems with it (IPv6 needs to be explicitly enabled when compiling Deadwood: &lt;tt&gt;export FLAGS='-O3 -DIPV6' ; make&lt;/tt&gt; ).&lt;br /&gt;&lt;br /&gt;Deadwood 2.9.04 can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/testing/&gt;http://maradns.org/deadwood/testing/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;[1] I find it incredibly naive when people tell me I work on MaraDNS because I want to tweak things or what not.  No, sorry freetards, the amount of work I do on MaraDNS is far greater than tweaking around and installing a new Linux distribution or compiling a program with different optimization flags.  The reason I worked so hard on MaraDNS is because I wanted to make my mark on the world, have my Wikipedia page.  I did that.  And it was a nice way for me to pass the time during slower moments in Mexico when there weren’t girls around to flirt with.  But, now I’m married and I need to think about the bottom line.  Amazing how a wife changes my priorities.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5409467347582611577?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5409467347582611577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5409467347582611577'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/deadwood-2904-released.html' title='Deadwood 2.9.04 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-1781761459906427513</id><published>2010-08-11T19:14:00.007-05:00</published><updated>2010-08-11T19:40:05.727-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stable release'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Deadwood 2.3.06 released</title><content type='html'>I released Deadwood 2.3.06 today.  This is a minor update to the older caching-only branch of Deadwood; most users of Deadwood will want to use the current 2.9 branch of Deadwood which has full recursion.  &lt;br /&gt;&lt;br /&gt;The update is one with possible (but not readily exploitable) security implications.  There is a potential null pointer dereference in Deadwood’s underlying string library that the four-line patch assures never happens.  As far as I know, there is no way to exploit this issue in Deadwood 2.3 (the bug only popped up when stressing the string library more in the recursive code in Deadwood 2.9), but it is prudent to update the older tiny branch of Deadwood.&lt;br /&gt;&lt;br /&gt;Most of the work making this release was updating the tests to work with CentOS 5.5. CentOS 5.4 → 5.5 was &lt;i&gt;supposed&lt;/i&gt; to be a bugfix-only update, but, not only did they update Valgrind to a newer version with different output, they also &lt;A href=http://bugs.centos.org/view.php?id=4465&gt;broke select()&lt;/A&gt;.  The SQA tests have been updated to pass in CentOS 5.5.&lt;br /&gt;&lt;br /&gt;The main advantage of the tiny branch of Deadwood is that its binary is only about 32 kilobytes in size, as opposed to Deadwood 2.9’s 64 kilobyte binary.  There may be certain tiny embedded systems where this matters.  Another advantage is that it can be optionally compiled without caching, making it act as a DNS load balancer.  The main disadvantage is that it is a non-recursive cache; it needs another recursive server (like Deadwood 2.9) to do the “heavy lifting” of recursively solving DNS queries.&lt;br /&gt;&lt;br /&gt;It can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/tiny/&gt;http://maradns.org/deadwood/tiny&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;Since this is a maintenance update to an older branch of Deadwood, I have not made Windows binaries.  Windows users: Please compile it yourself or, better yet, just use Deadwood 2.9 instead.  Really, I can’t think of a machine out there that can run Windows XP (Deadwood won’t run on 95/98/Me because it is a service) where it matters whether the DNS server is 32 or 64 kilobytes in size.  The 90s are, like, so over.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-1781761459906427513?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1781761459906427513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1781761459906427513'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/deadwood-2306-released.html' title='Deadwood 2.3.06 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-9089453925700832256</id><published>2010-08-10T08:47:00.015-05:00</published><updated>2010-08-12T01:59:39.225-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='my wife'/><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='First 2000s decade'/><title type='text'>Where is the money?</title><content type='html'>&lt;b&gt;This job market is scary&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Sometimes, in the middle of the night, I just wake up and I can’t sleep anymore.  I wonder if I am going to be able to re-enter the technology field or if I’m just going to end up teaching ESL for the rest of my life.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How MaraDNS came in to being&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;About a decade ago, everything was right.  I had a well-paying promising contract with a major software company.  I was making far more money than I knew what to do with.  The work environment was fun and there was no limit with where I could take my career.&lt;br /&gt;&lt;br /&gt;I was miserable.&lt;br /&gt;&lt;br /&gt;It didn’t help that the girl I was dating at the time was not working out.  When I finally let her go—she still owes me $312.98 for the record—I could not for love or money get a decent date.  Having to commute for an hour followed by working eight hours followed by another hour coming back home five times a week doesn’t leave me much time to be part of the singles scene.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Something had to change.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The last job I had in technology before the dot-com bubble popped was for an internationalization firm.  I met a lot of people from a lot of countries speaking a lot of languages.  This revived my long-dormant interest in learning Spanish.  Once that company died when the dot-com party ended, I went down to Mexico for a few months to learn Spanish.&lt;br /&gt;&lt;br /&gt;It was a life-changing experience.  I instantly went from being a guy who couldn’t get a decent date to save my life to someone who had this beautiful girl in my bed passionately making out with me.  While things sadly didn’t work out with her, I discovered a world where I was no longer isolated and miserable.  I had found home.&lt;br /&gt;&lt;br /&gt;Of course, I wasn’t going to put my technical skills to waste.  No, I wanted to make a name for myself and MaraDNS was already well underway when I was still working in the dot-com industry.  It ignited my passion because here was something that wasn’t going to get forgotten when the company I worked for got bought out two times.  It was my chance to make my mark on the world.&lt;br /&gt;&lt;br /&gt;And, indeed, it has.  You do a Google search of my name and MaraDNS is the third link that pops up.  &lt;A href=http://en.wikipedia.org/wiki/MaraDNS&gt;It has a Wikipedia entry&lt;/A&gt;.  Indeed, MaraDNS is notable enough that the entry can not be easily deleted by the kinds of Wikipedia editors hell-bent on removing anything they can from the Wikipedia [1], because it has been used by a number of people and mentioned in books, in the title of a ZDnet article, as well as a number of scholarly papers.  &lt;br /&gt;&lt;br /&gt;After over a year of hard work, I released MaraDNS 1.0 on June 21, 2002.  Then I went back to college and put MaraDNS on the back burner.  Sure, I fixed bugs, but with all of my studies, and with adjusting to living in a far more conservative town than where I lived before (something I never fully adjusted to, quite frankly), I put MaraDNS on the back burner, sometimes going as long as half a year without updating it.  Even back then, I wanted to rewrite MaraDNS’ recursive code, but just didn’t have time to do it.&lt;br /&gt;&lt;br /&gt;As things were winding down with college and I was getting accustomed to life in that town, I was able to devote some time to improving the authoritative half of MaraDNS, including adding non-recursive IPv6 support to MaraDNS and improving its zone file format.  This culminated with MaraDNS 1.2 being released in late 2005, a few months after I graduated from college.  I then made some minor revisions to the zone file format to make it possible to write a Python script to convert BIND zone files in to MaraDNS zone files; that resulted in the 1.3 release a year after 1.2 was released.&lt;br /&gt;&lt;br /&gt;It was between the 1.2 and 1.3 releases that I decided it was more important to go back to Mexico to improve my personal relationships than to try and get a job in the computer industry again.  I had two notable rejections because I didn’t know more about C++ and objected-oriented programming, from both Google and a startup in southern California, and ended up briefly working as a cashier in Wal*Mart before throwing in the towel and going back to Mexico.&lt;br /&gt;&lt;br /&gt;While dating girls down in Mexico, not only did I get a Python script to convert BIND zone files to MaraDNS zone files done, I finally started work on rewriting the recursive engine, something I had wanted to do for years.  I started writing Deadwood in late 2007, with me planning to have a standalone recursive DNS daemon finished in mid-2008.  &lt;br /&gt;&lt;br /&gt;That didn’t happen.  I had the fully non-recursive cache finished by late 2007, but then realized I had to concentrate more strongly on dating to have the right girl in my life in 2008.  &lt;br /&gt;&lt;br /&gt;It was while dating in 2008 that I started realizing the needs to put boundaries on MaraDNS support and start looking in to getting compensated for my hard work.  Private email support was getting backlogged, so I finally had to let people know I would not support MaraDNS via private email without being paid for my time.  People who appreciated MaraDNS started paying me a little in the tip jar I set up or by paying me a token sum for me to implement a feature they wanted in MaraDNS.&lt;br /&gt;&lt;br /&gt;I had lost a lot of my free-software ideals at this point.  I believed in 2000 that the year of the Linux desktop would happen.  In 2004, I got off my high horse and started dual-booting in to Windows.  In 2008, I got rid of my Linux partition altogether and started using Windows with Cygwin and a VMware virtual machine for the occasional Deadwood development I did that year.  As I started developing Deadwood again, I tried putting Linux on my computer and &lt;A href=http://maradns.blogspot.com/search/label/Linux%20sucks&gt;liked it so little&lt;/A&gt; that I stabilized on the current setup I have for Deadwood development: Windows XP as my primary desktop OS, along with a CentOS 5 virtual machine which I use to develop Deadwood.&lt;br /&gt;&lt;br /&gt;While this was going on, I found the girl who is today my wife in late 2008, and then had both a setup in place and some more free time to devote to working on Deadwood in 2009.&lt;br /&gt;&lt;br /&gt;After getting most of the underlying support for having a fully recursive nameserver done (DNS compression support, integrated DNS-over-TCP support, full mararc dictionary variable and “execfile” support, “ip_blacklist” support, inflight merging, etc.), things with my girlfriend got serious and she became my fiancée.  With marriage looming on the horizon, I grew up and realized &lt;A href=http://maradns.blogspot.com/2009/10/every-open-source-developer-grows-up.html&gt;it was time to make a roadmap to put closure on MaraDNS&lt;/A&gt;.  &lt;br /&gt;&lt;br /&gt;I was, when I made that decision, close enough to having Deadwood be fully recursive that I made Deadwood’s full recursion the point when I would declare MaraDNS done.  I started work on Deadwood again in early 2010, and finally had full recursion finished in late July of 2010. &lt;br /&gt;&lt;br /&gt;So, yeah, MaraDNS is finished.  This doesn’t mean I am never going to make another release of MaraDNS.  MaraDNS 2.0 is simply going to be MaraDNS 1.4 with the old recursive code thrown out, replaced by Deadwood being integrated in to the build script.  &lt;br /&gt;&lt;br /&gt;I will also update the documentation telling people how to update from MaraDNS to Deadwood.  This will have to be done by hand; in order to ease the transition, I will support both MaraDNS 1.4 and 2.0 with security and other critical bug fixes for the foreseeable future.  I also have no plans to stop fixing “this host does not resolve with Deadwood” bugs.  &lt;br /&gt;&lt;br /&gt;In addition, I am getting some minor sponsorship for MaraDNS, and will consider implementing features my sponsors want to implement.  The only other thing I &lt;i&gt;might&lt;/i&gt; do is add some more extensive SQA tests to test for bugs in fully recursive Deadwood (I currently only have one that tests one kind of recursive query).  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Back to reality&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So, yes, MaraDNS is finished.  Time to get back to reality.  I have been spending the last couple of weeks, along with fixing bugs in Deadwood, learning about a lot of new technologies.  I have a mid-1990s book on Object Oriented programming I have almost finished (inheritance, both single and multiple, abstract classes, throwing and catching exceptions, a bit on C++ templates).  &lt;br /&gt;&lt;br /&gt;I had a phone screen for, of all things, a Javascript position yesterday.  The position didn’t pan out: Even after spending all last weekend madly studying and learning Javascript, and explaining it is hardly the first scripting language I played with, my technical knowledge was not up to par with what they were looking for.  &lt;br /&gt;&lt;br /&gt;A good friend of mine told me last night I need to get more focused to get something in today’s job market.  Since I have &lt;i&gt;decades&lt;/i&gt; of C programming experience, and well over 60,000 lines of C code to show potential employers (MaraDNS), it makes the most sense to expand this with C++.  There is the argument that it may make more sense for me to instead concentrate on Objective C, but the issue there is that I’m not a user of Apple’s products and don’t see too much money selling 99 cent iPhone toy applications.&lt;br /&gt;&lt;br /&gt;I feel, if I improve my C++ programming, I will be able to get a good job, possibly with Google.  Back during the dot-com days, I went to a lot of Linux User Group meetings where I met such people as Paul Vixie, Larry Wall, Linus Torvalds, RMS, as well as getting on a first-name basis with &lt;A href=http://en.wikipedia.org/wiki/Chris_DiBona&gt;Chris DiBona&lt;/A&gt;.  I think I will shoot Chris an email and see what ideas he has for me getting a stable corporate job.&lt;br /&gt;&lt;br /&gt;I also have, bouncing around my head, a couple of ideas of how I can use the MaraDNS code to make a commercial product.  I’m not sure how to develop the ideas and make a product from them, but I have already sent out a couple of emails to people who may have an idea how to start a business with them.&lt;br /&gt;&lt;br /&gt;I’ve grown up.  The 2000s were a good decade, since not only did I become fluent in the Spanish language and make my mark on the world with MaraDNS, an excellent high-security tiny embedded DNS server, I also found the woman who today is my wife.&lt;br /&gt;&lt;br /&gt;There are some things I regret.  I feel I spent too much time in the 2000s editing the Wikipedia, posting to Slashdot, making chess variants, or playing video games by myself; time I could have spent mastering C++ and being in a better position to get a job in the tech sector today.  Indeed, I have a strict “no posts to Slashdot, no edits to the Wikipedia, and no chess variants” rule I made for myself so I can focus on the things I need to do to be a good husband for my wife.&lt;br /&gt;&lt;br /&gt;So, yeah, even though everything seems scary right now and I wake up with these anxiety attacks when I bomb a phone screening like what happened yesterday, I know there is a good job out there for me for the 2010s that will support my wife and myself.  I just have to keep trying, not give up, and not get upset every time I try and fail.&lt;br /&gt;&lt;br /&gt;[1] A classic example of the internet dork rule.  I find it rather fitting that &lt;A href=http://en.wikipedia.org/wiki/User:Theserialcomma&gt;the twit&lt;/A&gt; who &lt;A href="http://en.wikipedia.org/w/index.php?title=MaraDNS&amp;action=historysubmit&amp;diff=319098865&amp;oldid=319084383"&gt;tried to delete the MaraDNS article&lt;/A&gt; is not only completely anonymous (unlike &lt;A href=http://en.wikipedia.org/wiki/User:Samboy&gt;my Wikipedia account&lt;/A&gt; &lt;A href=http://en.wikipedia.org/wiki/Special:Contributions/Samboy&gt;which I haven’t used since March&lt;/A&gt;), but also is someone who &lt;A href="http://en.wikipedia.org/w/index.php?title=Special:Log&amp;type=block&amp;page=User%3ATheserialcomma"&gt;has been blocked for rude Wikipedia behavior&lt;/A&gt;, &lt;A href=http://en.wikipedia.org/w/index.php?title=Special:Log&amp;type=block&amp;page=User%3ASamboy&gt;something that hasn’t happen to me&lt;/A&gt; [2].&lt;br /&gt;&lt;br /&gt;[2] Truth in reporting compels me to point out I once had a 24-hour block for violating something called the “three revert rule” back in 2005, when I thought it was worth wasting my time arguing with the kinds of people who like to pretend their kitchen is their own empire that they are the grand emperor for.  Oh, how I wish I had spent the time I wasted arguing on the Wikipedia (and, yeah, /.) learning C++ or Java.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-9089453925700832256?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9089453925700832256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9089453925700832256'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/where-is-money.html' title='Where is the money?'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-876722020800344230</id><published>2010-08-09T12:31:00.004-05:00</published><updated>2010-08-09T12:59:13.359-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freetards'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>New Deadwood snapshot: neustar.biz fixed</title><content type='html'>While doing my own &amp;ldquo;dogfood&amp;rdquo; testing for Deadwood, I discovered that the host name &amp;ldquo;neustar.biz&amp;rdquo; did not resolve.  The issue was that I never bothered to make DNS queries case-insensitive.&lt;br /&gt;&lt;br /&gt;The solution is to convert all DNS queries in to their lower-case form before looking them up in the cache or sending another query out to resolve a glueless NS/incomplete CNAME (in the case of &amp;ldquo;neustar.biz&amp;rdquo;, the issue was that the CNAMEs were in upper case).  In addition, since there may very well be some stub resolvers out there that won&amp;rsquo;t accept an answer unless it&amp;rsquo;s in the same case as the question, I now have Deadwood preserve the case in the original form of the query to give back to the stub resolver, using a variable called &amp;ldquo;orig_query&amp;rdquo;.&lt;br /&gt;&lt;br /&gt;It can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;The patch &lt;A href=http://maradns.org/deadwood/patches/&gt;can also be looked at&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;I can see the program is getting some attention by the number of clueless emails I am getting asking for private Deadwood support.  It would be nice if these people would pay me once I give them the &lt;A href=http://maradns.org/download/non-maradns/form-reply&gt;usual form reply&lt;/A&gt; asking for money.  That has not happened; people who do not have enough courtesy to heed multiple disclosures that email is only for paying customers are not courteous enough to decide to pay for support.  It&amp;rsquo;s a form of the internet dork rule: The anonymity of the internet coupled with the ease of getting on a soapbox attracts all kinds of unpleasant people; the corollary to this rule is that any unmoderated forum is soon overrun by unpleasant people, since anyone who doesn&amp;rsquo;t want to waste time getting in to a flame war is soon chased away by the trolls and flamers.  &lt;br /&gt;&lt;br /&gt;Hopefully this attention will soon translate in to a job with a living wage.  Things are tough in this economy, and looking for work is sometimes very frustrating.  The only serious interest I have gotten is from people who know about MaraDNS or from connections.  Simply putting my resume out there on &lt;A href=http://monster.com&gt;Monster&lt;/A&gt; or &lt;A href=http://www.dice.com&gt;Dice&lt;/A&gt; so far hasn&amp;rsquo;t resulted in anything.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-876722020800344230?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/876722020800344230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/876722020800344230'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/new-deadwood-snapshot-neustarbiz-fixed.html' title='New Deadwood snapshot: neustar.biz fixed'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-6843753125318377479</id><published>2010-08-08T13:40:00.003-05:00</published><updated>2010-08-08T13:44:44.392-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Radio Gatun'/><title type='text'>RadioGatún[32] even smaller</title><content type='html'>While going through the source code for &lt;A href=http://maradns.blogspot.com/2009/03/nanorg32-radiogatun-32-in-877-bytes-of.html&gt;the tiny version of RadioGatún[32]&lt;/A&gt;, I realized the code had some unneeded bloat which I was able to remove, in order to make the program more lean and not be wasting precious bytes.  The current version of the program is as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/*Placed in the public domain by Sam Trenholme*/&lt;br /&gt;#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#define p uint32_t&lt;br /&gt;#define f(a) for(c=0;c&amp;lt;a;c++)&lt;br /&gt;#define n f(3){b[c*13]^=s[c];a[16+c]^=s[c];}k(a,b&lt;br /&gt;k(p *a,p *b){p A[19],x,y,r,q[3],c,i;f(3)q[c]=b[c*&lt;br /&gt;13+12];for(i=12;i;i--){f(3)b[c*13+i]=b[c*13+i-1];&lt;br /&gt;}f(3)b[c*13]=q[c];f(12){i=c+1+((c%3)*13);b[i]^=a[&lt;br /&gt;c+1];}f(19){y=(c*7)%19;r=((c*c+c)/2)%32;x=a[y]^(a&lt;br /&gt;[(y+1)%19]|(~a[(y+2)%19]));A[c]=(x&amp;gt;&amp;gt;r)|(x&amp;lt;&amp;lt;(32-r)&lt;br /&gt;);}f(19)a[c]=A[c]^A[(c+1)%19]^A[(c+4)%19];a[0]^=1&lt;br /&gt;;f(3)a[c+13]^=q[c];}l(p *a,p *b,char *v){p s[3],q&lt;br /&gt;,c,r,x,d=0;for(;;){f(3)s[c]=0;f(3){for(q=0;q&amp;lt;4;){&lt;br /&gt;if(!(x=*v&amp;amp;255))d=x=1;v++;s[c]|=x&amp;lt;&amp;lt;(q++*8);if(d){n&lt;br /&gt;);return;}}}n);}}main(int j,char **h){p a[39],b[3&lt;br /&gt;*13],c,e,g;if(j==2){f(39){a[c]=b[c]=0;}l(a,b,h[1]&lt;br /&gt;);f(16)k(a,b);f(4){k(a,b);for(j=1;j&amp;lt;3;++j){g=a[j]&lt;br /&gt;;for(e=4;e;e--){printf("%02x",g&amp;amp;255);g&amp;gt;&amp;gt;=8;}}}}}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;There may some more bloat that needs to be removed from this code, however, for the time being, it appears to be a fairly lean implementation of the 32-bit version of RadioGatún.  Certainly more efficient that the rather bloated RadioGatún implementation included with &lt;A href=http://maradns.org/deadwood/&gt;Deadwood&lt;/A&gt; (which, horror beyond horrors, has comments and other completely unnecessary pieces of code).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-6843753125318377479?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6843753125318377479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6843753125318377479'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/radiogatun32-even-smaller.html' title='RadioGatún[32] even smaller'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5646050524727126157</id><published>2010-08-06T12:53:00.005-05:00</published><updated>2010-08-06T18:25:19.766-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.9.03 released ; some thoughts on EDNS</title><content type='html'>I have released Deadwood 2.9.03 today.  This is Deadwood 2.9.02 with a number of bug fixes added, as described in &lt;A href=http://maradns.org/deadwood/CHANGELOG&gt;the Deadwood change log&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;It can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/testing/&gt;http://maradns.org/deadwood/testing/&lt;/A&gt;&lt;hr&gt;One of the bugs I have fixed in Deadwood 2.9.03 is to change how EDNS (RFC2671) packets are handled.  It used to be that Deadwood would just discard such packets, since Deadwood’s policy is to ignore anything that looks unusual.&lt;br /&gt;&lt;br /&gt;RFC2671, in section 5.3, says that these packets should be handled by sending an error message back; I use the error message NOTIMPL (“not implemented”), which RFC2671 suggests as a possible error to give back when an EDNS request is sent.  However, thinking about it some more, it may make more sense to what MaraDNS and DJB’s dnscache do: Treat a DNS packet with an EDNS section as if the packet were an ordinary DNS packet, ignoring the EDNS information.  &lt;br /&gt;&lt;br /&gt;The advantage with this approach is that poorly written non-RFC-compliant DNS servers which aren’t smart enough to try with a non-ENDS packet after getting a “not implemented” reply will still work with Deadwood.  Considering that MaraDNS and dnscache have done this for years, it looks like this approach won’t result in any problems.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; I just uploaded a snapshot of Deadwood which by default ignores the EDNS part of a EDNS query.  The old RFC-compliant behavior of sending a NOTIMPL can be enabled by defining STRICT_RFC2671_COMPLIANCE when compiling Deadwood.  It can be downloaded &lt;A href=http://maradns.org/deadwood/snap/&gt;in the usual place&lt;/A&gt;.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5646050524727126157?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5646050524727126157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5646050524727126157'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/deadwood-2903-released-some-thoughts-on.html' title='Deadwood 2.9.03 released ; some thoughts on EDNS'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-7932471247287275530</id><published>2010-08-05T07:38:00.004-05:00</published><updated>2010-08-05T19:58:53.097-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NanoDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>NanoDNS updated</title><content type='html'>I&amp;rsquo;ve updated NanoDNS to work (in theory) on 64-bit machines, and to handle EDNS packets a little better:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/*Placed in the public domain by Sam Trenholme*/&lt;br /&gt;#include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;#define Z struct sockaddr&lt;br /&gt;#define Y sizeof(d)&lt;br /&gt;int main(int a,char **b){uint32_t i;char q[512]&lt;br /&gt;,p[17]="\xc0\f\0\x01\0\x01\0\0\0\0\0\x04";if(a&amp;gt;&lt;br /&gt;1){struct sockaddr_in d;socklen_t f=511;bzero(&amp;amp;&lt;br /&gt;d,Y);a=socket(AF_INET,SOCK_DGRAM,0);*((uint32_t&lt;br /&gt;*)(p+12))=inet_addr(b[1]);d.sin_family=AF_INET;&lt;br /&gt;d.sin_port=htons(53);bind(a,(Z*)&amp;amp;d,Y);for(;;){i&lt;br /&gt;=recvfrom(a,q,255,0,(Z*)&amp;amp;d,&amp;f);if(i&amp;gt;9&amp;&amp;q[2]&gt;=0)&lt;br /&gt;{q[2]|=128;q[11]?q[3]|=4:1;q[7]++;memcpy(q+i,p,&lt;br /&gt;16);sendto(a,q,i+16,0,(Z*)&amp;amp;d,Y);}}}return 0;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is a little bigger than the last version of NanoDNS I posted, but it&amp;rsquo;s still the world&amp;rsquo;s smallest useful DNS server.  The above code handles a problem people frequently ask on &lt;A href=http://serverfault.com&gt;serverfault&lt;/A&gt;: &amp;ldquo;How can I set up a DNS server to always return the same IP in reply to any query?&amp;rdquo;  The program takes one argument: The IP we return.  This program binds to all IP addresses a given machine has on the DNS port (port 53).&lt;br /&gt;&lt;br /&gt;I&amp;rsquo;ve also updated MicroDNS (NanoDNS&amp;rsquo;s big sister, with fancy features like selectable IP to bind to) to better support EDNS packets:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://samiam.org/software/microdns.html&gt;http://samiam.org/software/microdns.html&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; For people who wonder how NanoDNS does its magic, I now &lt;A href=http://maradns.org/download/non-maradns/nanodns-0.4.explained.txt&gt;have a page that explains its source code line-by-line&lt;/A&gt;.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-7932471247287275530?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7932471247287275530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7932471247287275530'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/nanodns-updated.html' title='NanoDNS updated'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-1918051110650967167</id><published>2010-08-03T19:07:00.012-05:00</published><updated>2010-08-04T21:32:58.729-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cryptographic hash'/><category scheme='http://www.blogger.com/atom/ns#' term='crypto'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>On the AES instruction set</title><content type='html'>I mentioned, &lt;A href=http://maradns.blogspot.com/2010/07/some-thoughts-on-rijndael.html&gt;in a recent blog entry&lt;/A&gt;, how much I like the Rijndael cryptographic primitive and why I was very happy when it became the official AES standard.&lt;br /&gt;&lt;br /&gt;Once Rijndael was chosen for AES, it did not take long for VIA to add hardward support for it via their &lt;A href=http://www.via.com.tw/en/initiatives/padlock/features.jsp&gt;VIA padlock&lt;/A&gt; (which also included other cool things to have, such as fast SHA support, fast RSA support, and, nicely enough, a true hardware random number generator).  &lt;br /&gt;&lt;br /&gt;Unfortunately, VIA does not have a prominent enough position in the mindset of people who buy x86 processors to lead the way in terms of x86 extensions (for example, Lenovo for a while was selling a low-cost 12-inch netbook using a VIA instead of an Intel processor, but now all of Lenovo’s netbooks are 10-inch netbooks with the Intel Atom N455, a very nice little processor).  So, when Intel decided to implement AES, they used their own instruction set called, simply, the “AES Instruction Set”.&lt;br /&gt;&lt;br /&gt;What the AES instruction set does is perform an entire round of the AES encryption process on a 128-bit block.  This can be used for AES encryption, of course, or for any related cipher that can use AES’ round function in its core.  The SHAvite-3 hash function, for example, uses 128-bit AES for its code.  It’s fairly easy to adapt the output to perform  256-bit Rijndael; as well as allowing Rijndael variants with different block sizes, a round transformation of the proposed hash/stream cipher LUX-224/256 uses [1] is Rijndeal-256. &lt;br /&gt;&lt;br /&gt;The AES Instruction set is supported by the following CPUs by Intel:&lt;ul&gt;&lt;li&gt;Core i7-610E, i7-620M, i7-620LM, i7-620LE, i7-640LM, i7-620UM, i7-620UE, i7-640UM, i7-660UM, i7-970, i7-980X, i7-990X&lt;li&gt;Core i5-520M, i5-520E, i5-540M, i5-520UM, i5-540UM, i5-650, i5-655K, i5-660, i5-661, i5-670, i5-680&lt;li&gt;Xeon E5620, E5630, E5640, E5667, L5609, L5618, L5630, L5638, L5640, W3680, E5645, X5650, X5660, X5670, X5677, X5680&lt;/ul&gt;[1] I understand the original LUX was broken, but there is a revision to LUX that hasn’t been broken (yet)&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-1918051110650967167?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1918051110650967167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1918051110650967167'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/on-aes-instruction-set.html' title='On the AES instruction set'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5513449933774920435</id><published>2010-08-02T13:22:00.003-05:00</published><updated>2010-08-02T13:29:02.662-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>Deadwood snapshot update</title><content type='html'>I have updated Deadwood to fix two bugs:&lt;ul&gt;&lt;li&gt;Large packets that needed DNS-over-TCP were not working when Deadwood was using full recursion.  Fixed.&lt;li&gt;It is now possible to have a recursive_acl without the recursive_acl having a netmask (there is a &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-August/000635.html&gt;mailing list posting&lt;/A&gt; with a description of the issue)&lt;/ul&gt;The updated snapshot can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/deadwood-H-20100802-2.tar.bz2&gt;http://maradns.org/deadwood/snap/deadwood-H-20100802-2.tar.bz2&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5513449933774920435?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5513449933774920435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5513449933774920435'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/deadwood-snapshot-update.html' title='Deadwood snapshot update'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-278790848948037291</id><published>2010-08-01T03:56:00.005-05:00</published><updated>2010-08-01T04:59:51.341-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cryptographic hash'/><category scheme='http://www.blogger.com/atom/ns#' term='crypto'/><category scheme='http://www.blogger.com/atom/ns#' term='Radio Gatun'/><title type='text'>Some cryptographic primitives I would like to see</title><content type='html'>There are some symmetric cryptographic primitives the currently don’t exist or are very rate that I would like to see more of:&lt;ul&gt;&lt;li&gt;Ciphers which can change the fundamental word size used.  &lt;br /&gt;&lt;br /&gt;There are a few of these: &lt;A href=http://keccak.noekeon.org/&gt;Keccak&lt;/A&gt; can work with 64-bit, 32-bit, or even 16-bit words (or smaller, but there isn’t any real security with going below 16 bits).  &lt;A href=http://radiogatun.noekeon.org/&gt;RadioGatún&lt;/A&gt;, Keccak’s predecessor, also allowed any word length between one bit and 64 bits.  RC5 and RC6 can work with either 32-bit or 64-bit words (but are, alas, patented until at least 2015).  The stream cipher &lt;A href=http://burtleburtle.net/bob/rand/isaacafa.html&gt;ISAAC&lt;/A&gt; exists in 32-bit and 64-bit variants.  &lt;br /&gt;&lt;br /&gt;But, besides those, there really aren’t that many cryptographic primitives with word size flexibility, which is a disappointment right now, since 32-bit and 64-bit systems are currently very common.  &lt;br /&gt;&lt;br /&gt;I’m not the only one hungering for this; observe &lt;A href=http://github.com/drostie/sha3-js&gt;halfskein.js&lt;/A&gt;, which is an unofficial &lt;A href=http://www.skein-hash.info/&gt;Skein&lt;/A&gt; variant using 32-bit words (Skein normally uses 64-bit words).  I should also point out that &lt;A href=http://ehash.iaik.tugraz.at/wiki/LUX&gt;LUX&lt;/A&gt; has both a 32-bit and a 64-bit mode (unfortunately the original LUX specification was broken; hopefully the revised version will not be.)&lt;br /&gt;&lt;br /&gt;&lt;li&gt;A block cipher with a 2048-bit or larger block size.  &lt;br /&gt;&lt;br /&gt;The largest block size out there in an unbroken cipher is Threefish, which includes a version with a 1024-bit block size.  There was &lt;A href=http://www.ciphergoth.org/crypto/mercy/&gt;Mercy&lt;/A&gt;, with a 4096-bit (512-byte) block size, but that was unfortunately broken.  &lt;A href=http://en.wikipedia.org/wiki/XXTEA&gt;XXTEA&lt;/A&gt;, which also allowed really large blocks has also been broken; and the &lt;A href=http://richard.schroeppel.name:8015/hpc/&gt;Hasty Pudding Cipher&lt;/A&gt; has also this ability, but I remember reading somewhere that HPC doesn’t pass standard randomness tests, and weaknesses with the key schedule have been found with this cipher (it was also criticized by Brian Gladman as being difficult to implement).  &lt;br /&gt;&lt;br /&gt;Yes, it is possible to make, say, an AES variant using 128-bit sized words and a 2048-bit block size, but it hasn’t been officially proposed as a block cipher.  It should also not be too difficult to make a Skein variant with 2048-bit blocks (or 1024-bit blocks when using 32-bit words), but again this has not been done.&lt;br /&gt;&lt;br /&gt;A 2048-bit cipher, for example, would be useful for making a &lt;A href=http://sponge.noekeon.org/&gt;Cryptographic sponge&lt;/A&gt; with a 1024-bit rate and 1024-bit capacity, which could be used for either a stream cipher or for a 512-bit cryptographic hash primitive.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;More tweakable block ciphers.  There is only one unbroken block cipher primitive with a tweakable core out there: Threefish.  The only other tweakable block cipher is the original: Hasty Pudding Cipher (as discussed above); unfortunately, HPC appears to be broken (or at least have weaknesses)&lt;br /&gt;&lt;br /&gt;&lt;li&gt;A cipher using playing cards with no known weaknesses.&lt;br /&gt;&lt;br /&gt;The strongest cipher designed specifically to be implemented using a deck of cards is the &lt;A href=http://www.schneier.com/solitaire.html&gt;Solitaire cipher&lt;/A&gt;; but it has &lt;A href=http://www.ciphergoth.org/crypto/solitaire/&gt;some bias in its PRNG&lt;/A&gt;.  There has been proposed &lt;A href=http://www.ciphergoth.org/crypto/mirdek/&gt;Mirdek&lt;/A&gt;, which is broken, as well as &lt;A href=http://www.quadibloc.com/crypto/pp0105.htm&gt;John Savard’s playing card cipher&lt;/A&gt;, which also is broken.&lt;br /&gt;&lt;br /&gt;The most secure playing card cipher out there appears to be a &lt;A href=http://uwspace.uwaterloo.ca/handle/10012/1141&gt;RC4 variant using playing cards&lt;/A&gt;.&lt;/ul&gt;One of the frustrations of not having more cryptographic chops is that I can not comfortably design a cryptographic primitive with any of the above desired traits.  As a mere programmer, all I can do is hope to someday have the time to learn about differential cryptanalysis and what not so I can design one of these primitives, or have someone else do the work for me. &lt;br /&gt;&lt;br /&gt;So, hey, if you’re one of the very few people in the world with the intelligence and chops to make a strong cryptographic primitive, this is my wishlist!  And, yes, I &lt;i&gt;really&lt;/i&gt; appreciate that most cryptographic primitives out there are public domain.  AES was perfect when I was making a secure random number generator for MaraDNS 1.x, and RadioGatún was perfect (tiny, able to easily compress entropy from various sources with variable amounts of entropy-per-bit, fast, 32-bit compatible and easily adapted to 64-bit environments, and derived from PANAMA with a proven record as a secure stream cipher) for my needs when I originally designed Deadwood back in 2007.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-278790848948037291?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/278790848948037291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/278790848948037291'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/08/some-cryptographic-primitives-i-would.html' title='Some cryptographic primitives I would like to see'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2221849382818603901</id><published>2010-07-31T03:08:00.006-05:00</published><updated>2010-07-31T03:43:10.365-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='stable release'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>MaraDNS 1.4.04 released</title><content type='html'>Now that Deadwood is feature-complete, I have released MaraDNS 1.4.04.  This is the most current stable release of MaraDNS; if using an older MaraDNS, please update to this release (yes, I ran a bunch of SQA tests so anything that worked before should work in 1.4.04).&lt;br /&gt;&lt;br /&gt;While the old recursive code is still in place to allow people to slowly make the transition to using Deadwood as their recursive DNS server, Deadwood 2.9.02 is included.  The Windows version of MaraDNS has had its documentation updated to encourage people to use Deadwood for recursion instead of MaraDNS; I will also start nudging *NIX users along. &lt;br /&gt;&lt;br /&gt;I have also, &lt;A href=http://maradns.blogspot.com/2010/07/deadwood-and-maradns-now-have-windows.html&gt;as blogged about yesterday&lt;/A&gt;, made a tool for getting entropy from the OS and putting it in a file.  This is currently a very simple tool; it makes a random 64-byte file called &lt;tt&gt;secret.txt&lt;/tt&gt; which MaraDNS and Deadwood can use.  It acts like a UNIX command: There is no user interface; when it is run, it just silently creates the 64-byte random &lt;tt&gt;secret.txt&lt;/tt&gt; file, overwriting any already existing &lt;tt&gt;secret.txt&lt;/tt&gt;, and only outputting something if something goes wrong.  &lt;br /&gt;&lt;br /&gt;It’s a lot better than the old “just type in some random text to make secret.txt” directions I have given.  I plan on making it a little more friendly (failing if secret.txt already exists, and stating the secret.txt file has been created, and always pausing and having the user hit a key so they know what the program is doing if called from the GUI.)&lt;br /&gt;&lt;br /&gt;In addition, I fixed the bug with delegation NS records and ANY queries, as well as incorporating a NAPTR bugfix I made a few months ago in to the code.  &lt;A href=http://maradns.org/changelog.html&gt;There is a full changelog&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;It can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/download.html&gt;http://maradns.org/download.html&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;Or here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://sourceforge.net/projects/maradns&gt;http://sourceforge.net/projects/maradns&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2221849382818603901?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2221849382818603901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2221849382818603901'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/maradns-1404-released.html' title='MaraDNS 1.4.04 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8568631731483592938</id><published>2010-07-30T22:51:00.003-05:00</published><updated>2010-07-30T22:58:28.579-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Deadwood and MaraDNS now have a Windows tool for making secret.txt</title><content type='html'>Deadwood and MaraDNS now both have a tool for getting entropy (random numbers) so that the file &lt;tt&gt;secret.txt&lt;/tt&gt; is automatically generated.  I call the tool "mkSecretTxt", and its source code can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://samiam.org/software/mkSecretTxt.txt&gt;http://samiam.org/software/mkSecretTxt.txt&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;Or downloaded as a C source file here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://samiam.org/software/mkSecretTxt.c&gt;http://samiam.org/software/mkSecretTxt.c&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;The file is a Windows port of the following *NIX command:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;dd if=/dev/urandom of=secret.txt bs=64 count=1&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;In English: My program creates a 512-bit (64-byte) file called “secret.txt” using &lt;tt&gt;CryptGenRandom()&lt;/tt&gt; to acquire the entropy from the Windows operating system.&lt;br /&gt;&lt;br /&gt;This tool will make it easier for people to install and use MaraDNS and Deadwood in Windows, since they only have to run this program once to get some entropy for the servers’ random number generators.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8568631731483592938?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8568631731483592938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8568631731483592938'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/deadwood-and-maradns-now-have-windows.html' title='Deadwood and MaraDNS now have a Windows tool for making secret.txt'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2327241471535011952</id><published>2010-07-29T13:08:00.007-05:00</published><updated>2010-07-29T13:50:08.567-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Deadwood 2.9.02 released ; keep on testing guys</title><content type='html'>I have released Deadwood 2.9.02 today.  This is Deadwood 2.9.01 with bugfixes and documentation improvements.  In more detail, here are the changes since 2.9.01:&lt;ul&gt;&lt;li&gt;Script to apply patches against one version of Deadwood to make the next Deadwood release made (based on similar MaraDNS script; this is something I have implemented now that the code is feature-complete and ready for general testing)&lt;li&gt;INSTALL.txt updated to not mention DwMain (Deadwood's older name; issue reported &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000610.html&gt;on mailing list&lt;/A&gt;)&lt;li&gt;DW_MAXIPS increased to 128 (issue reported &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000615.html&gt;on mailing list&lt;/A&gt;)&lt;li&gt;Spurious debug message removed&lt;li&gt; Documentation updates (root_servers more fully described in man page; more questions and answers added to FAQ; fixes things I saw myself and reported on mailing list)&lt;li&gt; Bug reporting policy update (you better have a stack trace or be able to reproduce a crash; otherwise I can’t use the bug report.  No current issue; but I have had stuff like this with MaraDNS.  Any joker can pretend Deadwood is crashing, but I won’t believe you without proof)&lt;li&gt;Issue getting “SERVER FAIL” when AAAA query points to non-existent AAAA fixed. (Reported &lt;A href=http://marc.info/?l=maradns-list&amp;m=128014555425838&amp;w=2&gt;on mailing list&lt;/A&gt;)&lt;li&gt; Issue when we get a “a.kabah.foo CNAME b.kabah.foo ; c.kabah.foo A 10.2.3.4” packet (where “b.kabah.foo” is a CNAME for “c.kabah.foo”) fixed. (Found this one during my own “dogfood” testing of Deadwood)&lt;li&gt;Deadwood for Windows now built using MinGW 3.4.2 instead of MinGW 3.1.0 (issue found by myself and discussed &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000601.html&gt;on mailing list&lt;/A&gt;)&lt;/ul&gt;It can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/testing/&gt;http://maradns.org/deadwood/testing/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;As an aside, now that I’m visibly actively working with users again so we can find and fix bugs together, I have been getting a lot more private email asking for MaraDNS support.  I don’t mind this email (I’ve come to accept it’s a natural consequence of MaraDNS becoming popular), but you’re going to get the “pay me or take it to the list” form reply (I’ve come to accept people will occasionally get all worked up I don’t provide free support; I forward such lusers [1] on to the list, like I warn people I may do in my form reply, for our collective amusement).  &lt;br /&gt;&lt;br /&gt;I hope some of the people sending me this kind of email pay me for MaraDNS support; I can use the money.  Or better yet, get me a real job with a living wage. Now that MaraDNS 2.0’s recursive resolver is feature-complete, I hope to have time to master OOP, Java, and whatever other buzzwords I need on my resume to get the job to support my beautiful wife.&lt;br /&gt;&lt;br /&gt;[1] Someone who doesn’t read the “no free private email support” disclaimer at the bottom of the &lt;A href=http://maradns.org/&gt;MaraDNS web page&lt;/A&gt;, as well as &lt;A href=http://samiam.org/mailme.php&gt;on the webpage with my email address&lt;/A&gt;, not to mention &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000627.html&gt;at&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000625.html&gt;the&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000624.html&gt;bottom&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000622.html&gt;most&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000619.html&gt;postings&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000607.html&gt;I&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000606.html&gt;make&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000604.html&gt;to&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000602.html&gt;the&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000618.html&gt;mailing&lt;/A&gt; &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000611.html&gt;list&lt;/A&gt;, and then flames me in response to my form reply asking for money [2] gets a LART in the form of me going public with their email.  Especially since the form reply says, very clearly at the top, that I may forward their email to the MaraDNS mailing list.&lt;br /&gt;&lt;br /&gt;[2] It doesn’t just ask for money.  It also lets them know they can get free support by posting it to the MaraDNS list.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2327241471535011952?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2327241471535011952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2327241471535011952'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/deadwood-2902-released-keep-on-testing.html' title='Deadwood 2.9.02 released ; keep on testing guys'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2976088948444899214</id><published>2010-07-28T14:45:00.004-05:00</published><updated>2010-07-29T00:36:21.575-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>Deadwood snapshot update</title><content type='html'>Since Deadwood is in beta-testing, the changes at this point will by and large be bug fixes.  That in mind, I am going to start announcing Deadwood snapshot updates on my blog again, since they are more interesting for end users than “I’ve started work on converting the code to handle NS referrals”, “I’m making more progress on converting the code to handle NS referrals”, “I’m making more progress on converting the code to handle NS referrals.  No, it doesn’t work yet, but, really, I’m making progress”, “Yet more progress on converting the code to handle NS referrals”, etc. &lt;br /&gt;&lt;br /&gt;Today’s snapshop fixes the bug reported in a &lt;A href=http://marc.info/?l=maradns-list&amp;m=128014555425838&amp;w=2&gt;mailing list posting&lt;/A&gt;. [1]&lt;br /&gt;&lt;br /&gt;I have fixed the bug, but I’m not 100% happy with the way I’m fixing it, as described in &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-July/000624.html&gt;this mailing list posting&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;Anyway, people can look at both the patch (in the “update” directory) and the patched Deadwood here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/deadwood-H-20100728-1.tar.bz2&gt;http://maradns.org/deadwood/snap/deadwood-H-20100728-1.tar.bz2&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; I have updated this with a better patch that, instead of deciding all SOA records are always “in bailiwick”, has it so bailiwick tests are only done if the record is determined to be a NS referral.  See here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/deadwood-H-20100728-2.tar.bz2&gt;http://maradns.org/deadwood/snap/deadwood-H-20100728-2.tar.bz2&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;- Sam&lt;br /&gt;&lt;br /&gt;[1] The guys at Marc.info need to fix things to recognize a name on the From: line is UTF-8 encoded when it says it’s UTF-8 encoded. “From: =?UTF-8?B?U2ViYXN0aWFuIE3DvGxsZXI=?=” is “Sebastian Müller”, &lt;i&gt;not&lt;/i&gt; “Sebastian MÃ¼ller”.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2976088948444899214?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2976088948444899214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2976088948444899214'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/deadwood-snapshot-update.html' title='Deadwood snapshot update'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-4110665918269575179</id><published>2010-07-23T03:59:00.005-05:00</published><updated>2010-07-23T04:21:13.848-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Upstream replies to Debian bugs</title><content type='html'>Since a number of MaraDNS users use the Debian bug tracking system to report MaraDNS bugs, I have just gone through a number of old Debian bugs.  The ones with distribution-specific issues I have ignored, but here are my replies to issues I, as upstream, are responsible for:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477787&gt;Bug 477787&lt;/A&gt;: MaraDNS 2.0 will have full IPv6 support.  I have just made a beta-test release of the relevant code (MaraDNS 2.0's up-and-coming recursor, Deadwood) and encourage people to test it and report bugs on the MaraDNS mailing list.&lt;br /&gt;&lt;br /&gt;&lt;A href=http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=484466&gt;Bug 484466&lt;/A&gt;:  If MaraDNS is run using the duende daemonizer, sending MaraDNS a HUP signal will stop and restart MaraDNS, reloading all configuration and zone files.&lt;br /&gt;&lt;br /&gt;&lt;A href=http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=486497&gt;Bug 486497&lt;/A&gt;: It's a really bad idea to bind MaraDNS to 0.0.0.0, but if you insist on doing it, it can be done if csv2_synthip_list is set.&lt;br /&gt;&lt;br /&gt;&lt;A href=http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=507591&gt;Bug 507591&lt;/A&gt;: This issue was never present in MaraDNS 1.2, and has been fixed in MaraDNS 1.3.07.10 and MaraDNS 1.4.03.  If Debian versions of MaraDNS still have this bug, they need to incorporate my fix, or, better yet, upgrade to 1.3.07.10 or 1.4.03.&lt;br /&gt;&lt;br /&gt;&lt;A href=http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=525188&gt;Bug 525188&lt;/A&gt;: Just this last day, I have released Deadwood 2.9.01, which is the daemon that will become MaraDNS 2.0's recursive resolver.  This daemon fixes a number of long-standing issues MaraDNS 1.0's recursive resolver has, including CNAMEs pointing to AAAA records.&lt;br /&gt;&lt;br /&gt;This particular issue is one that I will not fix in MaraDNS 1.x (IPv6 does not have wide adoption yet, and MaraDNS 2.0 should be out there by the time it does), but it has already been fixed for MaraDNS 2.0.&lt;br /&gt;&lt;br /&gt;&lt;A href=http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=573970&gt;Bug 573970&lt;/A&gt;: There are no plans to add this to the authoritative MaraDNS code, but the up-and-coming MaraDNS 2.0 release will use a separate daemon for recursion called Deadwood (I just released the first beta-test version of this daemon this last day), which does support "includes" via Python-compatible execfile("filename") syntax.&lt;br /&gt;&lt;br /&gt;&lt;A href=http://bugs.debian.org/maradns&gt;All other bugs&lt;/A&gt; appear to be Debian-specific OS issues.  The next time I look at Debian bugs will probably be in a year or two.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-4110665918269575179?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4110665918269575179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4110665918269575179'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/upstream-replies-to-debian-bugs.html' title='Upstream replies to Debian bugs'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8533182123621899512</id><published>2010-07-22T13:38:00.003-05:00</published><updated>2010-07-22T13:49:41.367-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.9.01 released: Full recursion</title><content type='html'>I have just released Deadwood 2.9.01.  This is the first release of the fully recursive Deadwood; Deadwood no longer needs an upstream server performing the “heavy lifting” of recursive DNS.  &lt;br /&gt;&lt;br /&gt;I have done a lot of “web surfing” testing with Deadwood; I have fixed enough bugs that Deadwood can be used for casual web surfing.  Indeed, I am using Deadwood to post this blog right now and the issues I saw before (&lt;A href=http://tagged.com&gt;tagged.com&lt;/A&gt;, etc.) are no longer a problem.  &lt;br /&gt;&lt;br /&gt;This is a testing release.  That now has a different meaning than my previous definition of a testing release.  All of the features Deadwood 3.0 (MaraDNS 2.0) will have are already implemented.  At this point, the program needs testing (expansion of the SQA regressions to handle recursion, etc.) and documentation (root_servers hasn’t been documented yet) updates.  &lt;br /&gt;&lt;br /&gt;It has been a long road to get here.  I have wanted to rewrite MaraDNS’ recursive resolver since 2002; I started writing Deadwood in 2007 and it’s finally feature-complete here in 2010.  &lt;br /&gt;&lt;br /&gt;Deadwood 2.9.01 can be downloaded as source code and Windows binaries here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/testing/&gt;maradns.org/deadwood/testing/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;I encourage people to test Deadwood and make bug reports.  Some things to keep in mind:&lt;ul&gt;&lt;li&gt;Valgrind-reported memory leaks can always be reported.  Valgrind-reported errors are only valid if Deadwood is compiled with -DVALGRIND_NOERRORS&lt;li&gt;The only officially supported OSes are Windows XP and CentOS 5.  OS-specific issues such as startup, daemonizing, sysloggin, and /etc/resolv.conf setup are only supported on these two OSes.&lt;li&gt; Bugs need to be reported to the MaraDNS list, not to my email account nor as blog comments.  I hope to have time to set up a web forum for MaraDNS/Deadwood support for people not comfortable with mailing lists, but no promises.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8533182123621899512?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8533182123621899512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8533182123621899512'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/deadwood-2901-released-full-recursion.html' title='Deadwood 2.9.01 released: Full recursion'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-9021305729495511571</id><published>2010-07-22T03:35:00.002-05:00</published><updated>2010-07-22T03:54:46.642-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Firefox does pretty agressive DNS pre-fetching</title><content type='html'>As I am performing some real-world testing with the (hopefully) soon-to-be-released Deadwood 2.9.01, I discovered something interesting that Firefox does.&lt;br /&gt;&lt;br /&gt;The copy of Firefox 3.6.4 I have [1] in CentOS 5 looks at all of the links on a given page I am reading, and uses DNS to look up the hostnames of all of the links.  This way, if I click on a given link, I don&amp;rsquo;t have to wait for the DNS lookup to be performed.  I can see why Firefox implemented this.&lt;br /&gt;&lt;br /&gt;Anyway, I usually don&amp;lsquo;t announce snapshots here, but I am very pleased that Deadwood is &lt;i&gt;finally&lt;/i&gt;, after nearly three years, a fully recursive DNS server.  Snapshots are here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://www.maradns.org/deadwood/&gt;http://www.maradns.org/deadwood/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;Look in the &lt;tt&gt;snap&lt;/tt&gt; directory for the latest snapshot.  &lt;br /&gt;&lt;br /&gt;Todo before releasing Deadwood 2.9.01:&lt;ul&gt;&lt;li&gt;Make a quick Deadwood FAQ&lt;li&gt;The usual Deadwood SQA regressions I do before any release&lt;/ul&gt;(Footnote follows)&lt;br /&gt;&lt;br /&gt;[1] Yes, I know, the current version is Firefox 3.6.7, but I&amp;rsquo;m using CentOS 5, whose most current version of Firefox is 3.6.4.  Out-of-date versions of programs is a very common problem in Linux, since the distributor of a given program has to approve and then send a program downstream before the users of the distribution get the update.  It&amp;rsquo;s worse with CentOS, where a given update has to get approved by RedHat, then, in turn, processed by CentOS before it gets here.&lt;br /&gt;&lt;br /&gt;One issue I have had a lot with MaraDNS is that people sometimes email me or post to the mailing list bug reports for issues I have already fixed, but the user in question is using the version of MaraDNS that comes with Debian or whatever, which hasn&amp;rsquo;t been updated.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-9021305729495511571?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9021305729495511571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9021305729495511571'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/firefox-does-pretty-agressive-dns-pre.html' title='Firefox does pretty agressive DNS pre-fetching'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2868437912826029587</id><published>2010-07-19T00:53:00.004-05:00</published><updated>2010-07-22T11:06:48.439-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freetards'/><category scheme='http://www.blogger.com/atom/ns#' term='cryptographic hash'/><category scheme='http://www.blogger.com/atom/ns#' term='crypto'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Some thoughts on Rijndael</title><content type='html'>When I heard that the Rijndael block cipher was selected as the algorithm for the &lt;A href=http://en.wikipedia.org/wiki/Advanced_Encryption_Standard&gt;Advanced encryption standard&lt;/A&gt;, I was so excited I sent one of the creators of Rijndael a very excited email.&lt;br /&gt;&lt;br /&gt;OK, I should probably explain this in more layman’s terms.  AES—the advanced encryption standard—is the standard cipher people use when people get a clue and realize they need to use strong cryptography and not ad-hoc schemes to protect data.  WEP used RC4 instead of AES, and was soon broken; this has been replaced by WPA2, which does use AES.  Indeed, the wireless packets being sent to publish this blog are encrypted with AES.  The blu ray discs sitting on the player in the other room are encrypted with AES (this is another form of cluelessness, since cryptography only makes it inconvenient, not computationally infeasible, for the intended user of a piece of media to copy said media.  The way you stop piracy is by teaching freetards integrity and morals, not with cryptographic ideas that will never work).  AES is the most secure way to make web sites encrypted with https.   &lt;br /&gt;&lt;br /&gt;I liked Rijndael more than the other contestants because it was a good deal more flexible.  Rijndael was designed with something called the &lt;i&gt;wide trail strategy&lt;/i&gt; that allows components to be readily replaced or modified.  For example, it is possible to change its block size; all other AES candidates (with the exception of HPC and possibly RC6) had a fixed block size of 128 bits; Rijndael can have a block size of 128, 160, 192, 224, or 256 bits.  Or, if desired, it is relatively straightforward to make an unofficial Rijndael variant with a 32, 64, or 96 bit block size. &lt;br /&gt;&lt;br /&gt;It is also possible to change its S-box if one feels Rijndael is somehow too algebraic.  &lt;br /&gt;&lt;br /&gt;Another thing that is possible to do is to make a Rijndael variant using 64-bit instead of 32-bit integers.  If this is done, the variant’s “natural” block size is 512 bits; this can be adapted to have a block size of any multiple of 64 bits from 64 to 1024 bits (64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, or 1024 bits).  The dirty work of coming up with magic constants for a 64-bit Rijndael variant has already been done with the Whirlpool hash; the only constants we need to pull out of the air are the “shift row” constants.  &lt;br /&gt;&lt;br /&gt;The Rijndael/Whirlpool variant with a 1024-bit block size has a large enough block to be used in a “sponge function” mode of operation.  A &lt;A href=http://sponge.noekeon.org/&gt;cryptographic sponge&lt;/A&gt; allows any significantly large random-looking permutation to be used as the code of a hash function or stream cipher (it’s a hash function with an arbitrarily long output).  We can use a 1024-bit block size cipher as a sponge to generate a 256-bit hash, or by having things be twice as slow, a 384-bit hash (For people familiar with sponge constructions: The 256-bit hash is done with a “capacity” and “rate” of 512 bits; the 384-bit hash is done with a “capacity” of 768 bits and a “rate” of 256 bits).&lt;br /&gt;&lt;br /&gt;Another idea that has been implemented is both 64-bit and 128-bit Rijndael variants where the encryption and decryption operations are identical—useful for minimizing code size in implementations where encryption and decryption are both supported.  We give up block size flexibility when we do this (the 32-bit version needs a block size of 128 bits, but the 64-bit version can have a block size of either 64 bits or 512 bits).  This has been implemented with &lt;A href=http://www.larc.usp.br/~pbarreto/AnubisPage.html&gt;Anubis&lt;/A&gt; (32-bit words, 128-bit block size) and &lt;A href=http://www.larc.usp.br/~pbarreto/KhazadPage.html&gt;Khazad&lt;/A&gt; (64-bit words, 64-bit block size; can be modified to be a 512-bit block).  In addition, there is a &lt;A href=http://ijns.femto.com.tw/contents/ijns-v9-n2%2Fijns-2009-v9-n2-p109-116.pdf&gt;proposed 128-bit word size primitive&lt;/A&gt; (PDF file) that could be used to make either a 128-bit or 2048-bit Rijndael variant using the same operations for encryption and decryption.&lt;br /&gt;&lt;br /&gt;Rijndael has a couple of issues.  One is that the key schedule is not as strong as it could be; this has resulted in their being an academic weakness called a “related key attack”.  This does not result in any practical security problems; a related key attack is one of the hardest to utilize in the real world (cipher keys are usually hashed using cryptographic hashes).  Indeed, the &lt;A href=https://cryptolux.org/Block&gt;website describing this attack on Rijndael&lt;/A&gt; uses, of all things, Rijndael to encrypt traffic.  &lt;br /&gt;&lt;br /&gt;The other issue is that in an optimized implementation, Rijndael uses a lot of table lookups, which make it vulnerable to an attack called a “cache timing attack”.  A cache timing attack could be used by an adversary with limited access to a system running Rijndael encryptions to determine a Rijndael key used elsewhere on the system.  The attack is right now a purely academic attack; no one has seen it used by a real-world adversary, and some processors (such as the ARM) series can thwart it with &lt;A href=http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka4271.html&gt;cache lock-down&lt;/A&gt;.  With the &lt;A href=http://software.intel.com/en-us/articles/intel-advanced-encryption-standard-instructions-aes-ni/&gt;AES instruction set&lt;/A&gt; now a reality, these attacks will soon be a non-issue.&lt;br /&gt;&lt;br /&gt;So, yes, Rijndael is a very nice, very flexible cryptographic primitive.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2868437912826029587?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2868437912826029587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2868437912826029587'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/some-thoughts-on-rijndael.html' title='Some thoughts on Rijndael'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3007819702465973938</id><published>2010-07-17T14:55:00.004-05:00</published><updated>2010-07-17T15:00:49.755-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.6.05 released: Feature complete</title><content type='html'>Deadwood is now feature complete.&lt;br /&gt;&lt;br /&gt;However, it does not pass the &amp;ldquo;browsing&amp;rdquo; test.  In other words, when I start to surf the net with Deadwood, my web surfing experience is hindered because of issues in the code.  I have found the following issues to resolve:&lt;ul&gt;&lt;li&gt;CNAMEs pointing to nothing broken (e.g. AAAA for mail.google.com).&lt;li&gt;Poor handling of unresponsive name servers (samiam.org, kintera.com)&lt;li&gt;Use CryptGenRandom() as entropy source in Windows.&lt;/ul&gt;I hope to get these issues resolved.  In the meantime, I have released Deadwood 2.6.05 today, which is a working recursive nameserver.  It is in the &lt;tt&gt;testing/&lt;/tt&gt; directory here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood&gt;maradns.org/deadwood&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3007819702465973938?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3007819702465973938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3007819702465973938'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/deadwood-2605-released-feature-complete.html' title='Deadwood 2.6.05 released: Feature complete'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-7215005521655330716</id><published>2010-07-16T01:33:00.005-05:00</published><updated>2010-07-16T03:25:03.919-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='Radio Gatun'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Wesnoth's RNG has statistical weaknesses</title><content type='html'>All of the people playing &lt;A href=http://wesnoth.org&gt;Battle for Wesnoth&lt;/A&gt; &lt;A href=http://forums.wesnoth.org/viewtopic.php?f=10&amp;t=29766&gt;complaining&lt;/A&gt; &lt;A href=http://forums.wesnoth.org/viewtopic.php?f=6&amp;t=30064&gt;about&lt;/A&gt; Wesnoth&amp;rsquo;s random number generator (RNG) having problems were right.  &lt;br /&gt;&lt;br /&gt;There is a test used called the &amp;ldquo;minimum distance&amp;rdquo; test which tests a random number generator by filling up a volume of space with points determined by the random number generator and determining the minimum distance between any two points.  Or, in other words, we take a cube, fill it with points &amp;ldquo;randomly&amp;rdquo; by using the RNG we are testing, and make spheres of each point and the point closest to that point.  The smallest such sphere is our minimum distance.  We do this a number of times.&lt;br /&gt;&lt;br /&gt;There is a range of minimum distances we should have.  But, with Wesnoth&amp;rsquo;s random number generator, we don&amp;rsquo;t get that, especially in four dimensions (it also fails in three dimensions) [1].  A good randomness tester like &lt;A href=http://code.google.com/p/dieharder/&gt;Dieharder&lt;/A&gt; can readily distinguish Wesnoth&amp;rsquo;s RNG from a good RNG (such as RadioGatún). &lt;br /&gt;&lt;br /&gt;The reason for this is because Wesnoth&amp;rsquo; random number generator is as follows:&lt;tt&gt;&lt;br /&gt;&lt;br /&gt;static int32_t state;&lt;br /&gt;uint32_t mask;&lt;br /&gt;&lt;br /&gt;state = (state * 1103515245) + 12345;&lt;br /&gt;mask = (state &amp;gt;&amp;gt; 16) &amp;amp; 0x7fff;&lt;br /&gt;return mask;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;(The actual code uses division and modulo where I use a shifter and a logical and above).&lt;br /&gt;&lt;br /&gt;This is a very simple &lt;A href=http://www1.i2r.a-star.edu.sg/~knandakumar/nrg/Tms/Probability/Probgenerator.htm&gt;Linear congruential generator&lt;/A&gt;, and is considered a rather poor RNG.  &lt;br /&gt;&lt;br /&gt;One of these years, I should submit a patch to replace Wesnoth&amp;rsquo;s junk RNG with RadioGatún.  Although I have a feeling the developers will not accept it.  It would, after all, be a pretty big blow to their pride to admit the RNG Wesnoth has been using for years has significant, measurable problems.&lt;br /&gt;&lt;br /&gt;I should, before signing out, point out that Wesnoth is an excellent game and I appreciate all of the hard work done on it.  I just wish the &lt;A href=http://wiki.wesnoth.org/FAQ#There.27s_too_much_luck_in_this_game.21&gt;Wesnoth FAQ&lt;/A&gt; would stop pretending the random number generator is any good with nonsense like &amp;ldquo;programmers have examined the random number generator. No flaws have been found&amp;rdquo;.  Because I found significant flaws in under an hour with Dieharder.&lt;br /&gt;&lt;br /&gt;I should probably point out that Wesnoth&amp;rsquo;s RNG also flunks the &amp;ldquo;Diehard DNA test&amp;rdquo;.&lt;br /&gt;&lt;br /&gt;[1] To properly test Wesnoth&amp;rsquo;s random number generator in three dimensions with Dieharder, I had to modify the random number generator to use a 32-bit unsigned integer and take the top 16 bits from the generator state (instead of using a 31-bit integer and taking 15 bits).  The stream is identical if we remove the high bit from these 16-bit numbers to make them 15-bit numbers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-7215005521655330716?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7215005521655330716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7215005521655330716'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/wesnoths-rng-has-statistical-weaknesses.html' title='Wesnoth&apos;s RNG has statistical weaknesses'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8458155116313858989</id><published>2010-07-14T08:55:00.003-05:00</published><updated>2010-07-14T09:05:41.601-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>sudo in CentOS</title><content type='html'>I finally got sick and tired of having to, in CentOS, type in &lt;tt&gt;su&lt;/tt&gt;, followed by the root password, just to run Deadwood (which needs to run as root since it needs to bind to port 53), followed by exiting the root prompt.  So, I finally did a simple RTFM with the &amp;ldquo;sudo&amp;rdquo; man page and edited &lt;tt&gt;/etc/sudoers&lt;/tt&gt; so that my user account can use sudo to run the program.  Just like how things are done in Ubuntu.  &lt;br /&gt;&lt;br /&gt;Come to think of it, I could have used &lt;tt&gt;dns_port&lt;/tt&gt; to have Deadwood bind to a unprivileged port and then just connect to that port.  But, then again, I would have to add selectable port numbers to &lt;tt&gt;askmara&lt;/tt&gt; (my command-line utility in MaraDNS for making DNS queries from the command line).  Nah.&lt;br /&gt;&lt;br /&gt;Now, if only there was a &lt;tt&gt;sudo get_me_a_job&lt;/tt&gt; and &lt;tt&gt;sudo get_my_wife_a_US_visa&lt;/tt&gt; (well, there is the second one, but it supposedly takes about a year; I need a &lt;tt&gt;sudo nice -20 get_my_wife_a_US_visa&lt;/tt&gt; so they will do it faster). &lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8458155116313858989?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8458155116313858989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8458155116313858989'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/sudo-in-centos.html' title='sudo in CentOS'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8483511598033406671</id><published>2010-07-12T09:46:00.014-05:00</published><updated>2010-07-13T01:43:15.884-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Radio Gatun'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>RadioGatún[32] passes all Dieharder tests</title><content type='html'>&lt;A href=http://www.phy.duke.edu/~rgb/General/dieharder.php&gt;Dieharder&lt;/A&gt; is a series of tests to test the quality of random numbers.  I have installed Dieharder 2.27.12 on my CentOS virtual machine (by virtue of the fact that this is the most recent version of Dieharder with handy precompiled 32-bit binaries) and then started running &lt;A href=http://radiogatun.noekeon.org/&gt;RadioGatún&lt;/A&gt;[32] as a stream cipher through this battery of tests.&lt;br /&gt;&lt;br /&gt;The first time I tested RG32 (my shorthand for &amp;ldquo;RadioGatún[32]&amp;rdquo;), a couple of tests were marked as poor&amp;mdash;which is not surprising, since the full battery is some 74 tests.  When a tests is marked as being &amp;ldquo;poor&amp;rdquo;, that indicates that the stream of random numbers generated have a 1% or smaller chance of not being random.  A &lt;i&gt;good&lt;/i&gt; set  of random numbers will occasionally fail a randomness test, since well-made random numbers sometimes do not quite look random.  &lt;br /&gt;&lt;br /&gt;I re-ran the tests that  were &amp;ldquo;poor&amp;rdquo;, first with the same RG32 seed at a different point in its stream (which resulted in having a &amp;ldquo;possibly weak&amp;rdquo; result&amp;mdash;a 5% chance the test was not random&amp;mdash;for a different test, which is not surprising since there are 20 tests in this section of Dieharder), then with a couple of other RG32 seeds.   With the third RG32 seed, none of the 20 tests were marked &amp;ldquo;poor&amp;rdquo; or &amp;ldquo;possibly weak&amp;rdquo;.  &lt;br /&gt;&lt;br /&gt;Conclusion: RG32 shows no biases when used as a pseudo-random number generator (PRNG).  In practical terms: Deadwood is using a strong random number generator.&lt;br /&gt;&lt;br /&gt;While I was testing the quality of RadioGatún&amp;rsquo;s random stream, I tried to run the tests at &lt;A href=http://www.cacert.at/random/&gt;CAcert.at&lt;/A&gt;, but the server gave me an &amp;ldquo;Internal server error&amp;rdquo; instead of test results.  I tried with two different sample sizes (one about 130 megs in size; the other about 18 megs in size).&lt;br /&gt;&lt;br /&gt;I should note that RG32 is quite fast, even with the code-size-optimized implementation I made for Deadwood.  Compiled with -03 in GCC, I got 20 megabytes of numbers in three or four seconds.  &lt;tt&gt;cat /dev/null&lt;/tt&gt; gives me 200 megabytes of zeros in the same amount of time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Using the rg32 seed (hash input) of &amp;ldquo;dieharder7&amp;rdquo, Dieharder 2.27.12 passes all tests; again, random numbers &lt;i&gt;should&lt;/i&gt; sometimes fail a randomness test, but they don&amp;rsquo;t with this particular seed and particular version of the full Dieharder test suite.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8483511598033406671?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8483511598033406671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8483511598033406671'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/radiogatun32-passes-all-dieharder-tests.html' title='RadioGatún[32] passes all Dieharder tests'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5631628988727591548</id><published>2010-07-11T03:03:00.004-05:00</published><updated>2010-07-11T03:10:29.059-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internals'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Windows does have /dev/random</title><content type='html'>You know, I spent too many years reading Slashdot.  I somehow got the impression that Windows did not have a good source of cryptographically strong pseudo-random numbers.  While true for Windows 95 and Windows 98, this has not been true for years. &lt;br /&gt;&lt;br /&gt;Microsoft Windows has had, since Windows 2000, a form of &lt;tt&gt;/dev/random/&lt;/tt&gt; called &lt;A href=http://msdn.microsoft.com/en-us/library/aa379942%28VS.85%29.aspx&gt;CryptGenRandom()&lt;/A&gt;.  Indeed, it appears that MinGW/Msys have the required &lt;tt&gt;wincrypt.h&lt;/tt&gt; header file for supporting this function.&lt;br /&gt;&lt;br /&gt;I will have to, once I get the DNS resolution bugs fixed, set things up so Deadwood uses CryptGenRandom() for some of the entropy for random query IDs and ports, and not require a secret file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5631628988727591548?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5631628988727591548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5631628988727591548'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/windows-does-have-devrandom.html' title='Windows does have /dev/random'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2254429401090303855</id><published>2010-07-10T19:40:00.006-05:00</published><updated>2010-07-10T23:57:43.763-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ObHack'/><title type='text'>ObHack 006.9 released</title><content type='html'>Fritz and I have made another release of ObHack.  Fritz has done all of the hard work updating the program; my contributions consist of verifying there are no viruses in the Windows binary (with AVG) and making the .zip file and source code .7z file.&lt;br /&gt;&lt;br /&gt;It can be seen here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://samiam.org/slump/&gt;http://samiam.org/slump/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;Since Andrew hasn't come out with an &lt;A href=http://oblige.sourceforge.net&gt;OBLIGE&lt;/A&gt; release in a while, this should whet people's appetites for having an updated Doom random map generator.&lt;br /&gt;&lt;br /&gt;As always, I do not support ObHack; please do not post to this blog ObHack support concerns--they will not be approved.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; A more detailed changelog and support for ObHack 006.9 is available &lt;A href=http://www.doomworld.com/vb/doom-editing/51710-obhack-006-9-released/&gt;in this Doomworld discussion&lt;/A&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2254429401090303855?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2254429401090303855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2254429401090303855'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/obhack-0069-released.html' title='ObHack 006.9 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-6094277921550925196</id><published>2010-07-09T03:42:00.003-05:00</published><updated>2010-07-09T04:03:31.206-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='freetards'/><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>I am getting sponsorship for MaraDNS</title><content type='html'>I am letting people know that I am now getting regular sponsorship for MaraDNS.  This means that, as long as the sponsorship continues, I will, &lt;A href=http://maradns.blogspot.com/2009/10/every-open-source-developer-grows-up.html&gt;contrary to the roadmap I placed in this blog entry&lt;/A&gt;, add new features to MaraDNS (as &lt;A href=http://maradns.blogspot.com/2009/10/clarification-about-maradns-roadmap.html&gt;I said when I clarified my MaraDNS roadmap&lt;/A&gt;).  &lt;br /&gt;&lt;br /&gt;That’s the good news.&lt;br /&gt;&lt;br /&gt;The bad news for the freetards is that the features I will add will be the features my sponsor wants me to add.  They are not the features you want to add to MaraDNS—unless you’re willing to also sponsor MaraDNS.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-6094277921550925196?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6094277921550925196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/6094277921550925196'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/i-am-getting-sponsorship-for-maradns.html' title='I am getting sponsorship for MaraDNS'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-9056048729602523290</id><published>2010-07-07T10:59:00.001-05:00</published><updated>2010-07-07T11:08:24.087-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Deadwood update: I have found some bugs</title><content type='html'>Just letting you all know that I have, from a single day of casual web surfing, found a number of host names that don’t resolve correctly with Deadwood 2.6.04.  I will be working on fixing those this week.&lt;br /&gt;&lt;br /&gt;There is no need to send me bug reports about Deadwood 2.6.04. I am already aware of its bugs.&lt;br /&gt;&lt;br /&gt;I should probably note that Deadwood has much more solid code that MaraDNS 1.0’s recursive resolver did at this point back in 2001; the bugs I’m seeing are SERVER FAILs and hostnames resolving incorrectly.  The bugs MaraDNS 1.0 had during this phase of development (good enough to start using on the real internet for recursive resolution) caused crashes.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-9056048729602523290?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9056048729602523290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9056048729602523290'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/deadwood-update-i-have-found-some-bugs.html' title='Deadwood update: I have found some bugs'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3277512507603094987</id><published>2010-07-06T16:51:00.004-05:00</published><updated>2010-07-06T17:10:27.666-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.6.04 released: CNAME support</title><content type='html'>I’m almost at the finish line.  &lt;br /&gt;&lt;br /&gt;Deadwood is almost feature-complete for the (hopefully very soon) up-and-coming 2.0 release of MaraDNS.&lt;br /&gt;&lt;br /&gt;This morning, I wrapped up support for resolving incomplete CNAME entries.  The only thing I have to do at this point is have Deadwood do the right thing for ANY records, then the testing cycle begins.&lt;br /&gt;&lt;br /&gt;In plain English, this means Deadwood is ready for people who do not need to run an email server with it (email servers need to do a lot of ANY queries); it is OK to test it by browsing the web with it.&lt;br /&gt;&lt;br /&gt;As I was doing the regression tests for the release (a series of tests I run before any release to make sure nothing breaks between releases), I discovered that one of my tests, which works fine in CentOS 5.3 and 5.4, no longer works in CentOS 5.5.  This is an issue with the OS, not Deadwood.  If I have time and feel charitable, I will isolate the bug and make a bug report.  I still run this test in CentOS 5.3 when I do Deadwood’s 64-bit testing.&lt;br /&gt;&lt;br /&gt;In addition, I had to revise the tests using Valgrind, since CentOS 5.5 has updated Valgrind to a version with slightly different output.  I have set up these tests to have two successful outputs—the output in Valgrind that comes with CentOS 5.5, and the old output for when I do 64-bit testing in CentOS 5.3.&lt;br /&gt;&lt;br /&gt;This release of Deadwood is available here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/testing/&gt;http://maradns.org/deadwood/testing/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;I am using its recursive resolution to write this blog entry right now.  Web surfing around, the only website I have seen problems with is &lt;A href=http://tagged.com&gt;tagged.com&lt;/A&gt;; some host name needed to load Javascript here isn’t resolving.  I will look at this when I have some time.&lt;br /&gt;&lt;br /&gt;Another known bug is that Deadwood makes unneeded multiple upstream DNS queries when resolving an incomplete CNAME record.&lt;br /&gt;&lt;br /&gt;OK, I have a lot to do, but encourage users who aren’t running MTAs (email servers) to test out Deadwood 2.6.04 and report any bugs as comments here or on the MaraDNS mailing list.  Please do not email me bug reports, unless it’s a Bugtraq-worthy security bug report.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3277512507603094987?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3277512507603094987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3277512507603094987'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/deadwood-2604-released-incomplete-cname.html' title='Deadwood 2.6.04 released: CNAME support'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8534120576000360672</id><published>2010-07-04T21:25:00.004-05:00</published><updated>2010-07-04T22:35:25.778-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internals'/><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>On CNAME records</title><content type='html'>I thought handling incomplete CNAME records would be really easy once I had support for glueless NS referrals.&lt;br /&gt;&lt;br /&gt;I was wrong.&lt;br /&gt;&lt;br /&gt;I can understand why DJB &lt;A href=http://homepages.tesco.net./~J.deBoynePollard/FGA/djbdns-problems.html#dnscache-cname-handling&gt;took some shortcuts with CNAME records in DJBdns&lt;/A&gt;.  CNAME handling is pretty much the last thing I’m adding support for in Deadwood, MaraDNS 2.0’s recursive resolver.  It’s like I have been running a 40 kilometer marathon and I’m within 50 meters of the finish line.  I just want to run as fast as possible to the finish line and end the marathon.&lt;br /&gt;&lt;br /&gt;So, yeah, I’m making some shortcuts with CNAME referrals.  DJB has it so that CNAME records are not stored &lt;i&gt;at all&lt;/i&gt; in the cache.  Deadwood right now stores CNAME records in the cache, but only when the CNAME record is completed.  For example, if I ask for &lt;tt&gt;up.nytimes.com&lt;/tt&gt;, which is right now an incomplete CNAME record that points to &lt;tt&gt;up.about.akadns.net&lt;/tt&gt;, Deadwood stores the completed version of &lt;tt&gt;up.nytimes.com&lt;/tt&gt; with the IP for &lt;tt&gt;up.about.akadns.net&lt;/tt&gt; in the entry for &lt;tt&gt;up.nytimes.com&lt;/tt&gt;, but only when we get all of the information.&lt;br /&gt;&lt;br /&gt;In addition, the CNAME records before the final answer (up.nytimes.com in the above example) have a fixed TTL of 60 seconds (which doesn’t mean anything); the final answer has a fixed TTL of 3600 seconds (one hour).&lt;br /&gt;&lt;br /&gt;Right now, incomplete CNAME records only work if the record the incomplete CNAME points to is already in the cache.  Resolving this is &lt;i&gt;hopefully&lt;/i&gt; easier than getting CNAME records already in the cache working was; I think I have mostly done this when I got glueless NS referrals to work.&lt;br /&gt;&lt;br /&gt;Another thing: If the resolution of an incomplete CNAME record is needed to handle a glueless record, the resolved record will not be used to help solve the parent query that needed the glueless record until that query is sent to Deadwood again.  I may or may not fix this before releasing MaraDNS 2.0.&lt;br /&gt;&lt;br /&gt;OK, back to finishing up incomplete CNAME referral support.  I will hopefully have Deadwood 2.6.04 out in a few days.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8534120576000360672?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8534120576000360672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8534120576000360672'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/07/on-cname-records.html' title='On CNAME records'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-9018453666823058521</id><published>2010-06-27T17:32:00.003-05:00</published><updated>2010-06-27T22:25:57.547-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chortle'/><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><title type='text'>Chortle 0.24 released</title><content type='html'>Now that I have a little bit of a breather after releasing Deadwood 2.6.03 (we’re getting pretty close to having Deadwood 2.9.01 with full recursive DNS support), I am wrapping up a couple of little projects I put on the back burner while working on 2.6.03.&lt;br /&gt;&lt;br /&gt;One project was backporting the memory leak fix to the 2.5 branch of Deadwood, which I did this morning.  My next little project has been to make a monospace version of the Chortle font; this isn't a true monospace font; all I have done is run a script that squashes the wide letters and centers the narrow letters so they are all the same width.&lt;br /&gt;&lt;br /&gt;In addition, I have removed the Bold Italic version of Chortle.  In all honesty, Chortle has a regular weight, a bold weight, and an italic version, as well as the monospace version; it doesn’t need a bold + italic weight.    &lt;br /&gt;&lt;br /&gt;Chortle 0.24 can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://samiam.org/fonts/Chortle/&gt;http://samiam.org/fonts/Chortle/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-9018453666823058521?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9018453666823058521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9018453666823058521'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/06/chortle-024-released.html' title='Chortle 0.24 released'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5183194577052410248</id><published>2010-06-27T12:30:00.005-05:00</published><updated>2010-06-27T12:53:58.667-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stable release'/><category scheme='http://www.blogger.com/atom/ns#' term='First 2000s decade'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Deadwood 2.5.03 released: Memory leak plugged</title><content type='html'>While working on Deadwood 2.6.03, I found a memory leak that affects the 2.5 “stable” branch of Deadwood (but not the 2.3 branch); I have backported the plug for this memory leak to the 2.5 branch of Deadwood and have just released Deadwood 2.5.03:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/stable/&gt;http://maradns.org/deadwood/stable/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;As an aside, the 2.5 stable branch of Deadwood is going to no longer be maintained when Deadwood 2.9.01 is released, hopefully in a week or two.  I only made the Deadwood 2.4 and 2.5 stable branches because the fully recursive Deadwood code was taking longer than I expected, and I wanted a version of Deadwood taking advantage of all of the infrastructure I was building up for use until I had a fully recursive Deadwood out the door.&lt;br /&gt;&lt;br /&gt;Now that I am very close to having Deadwood be fully recursive, there soon will no longer be a need to use Deadwood 2.4/2.5.  I will maintain Deadwood 2.3 for the foreseeable future, since it nicely fills the niche of an open-source tiny (32k) little non-recursive caching (or non-caching if you prefer) DNS server.&lt;br /&gt;&lt;br /&gt;That in mind, this release of Deadwood does not include a TCC version for easy compiling on Windows; people who want to compile Deadwood in Windows without installing MinGW (or Cygwin, for that matter) should compile Deadwood 2.6.03.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;Google search fail: Around 2007, Stephen G. Hartke made some freely available fonts and put them up on a Geocities page.  These fonts were then rounded up by the various “download this font” websites out there (&lt;A href=http://fontsquirrel.com&gt;Font Squirrel&lt;/A&gt;, etc.).  Because of how Google indexes pages, the sites that mirrored the font appear first in the Google’s search results.&lt;br /&gt;&lt;br /&gt;This would not be a problem, except for the fact that the GeoCities page has since been taken down.  It took me 30 minutes of searching to find the &lt;A href=http://delubrum.org/&gt;official page for Stephen G. Hartke’s fonts&lt;/A&gt; (most notably Aurulent Sans).&lt;br /&gt;&lt;br /&gt;My general experience is that Google has not handled the expansion of the internet in the first 2000s decade very well.  It used to be that search results would quickly put you on interesting pages made by enthusiasts with truly useful content.  These days, searches for things like obscure video games or what not will pop up a list of pages for the topic in question on the same small list of websites which happen to have a high Google ranking, regardless of whether the page in question has any interesting content.  It often times takes a lot of digging around to find actually useful information.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5183194577052410248?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5183194577052410248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5183194577052410248'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/06/deadwood-2503-released-memory-leak.html' title='Deadwood 2.5.03 released: Memory leak plugged'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5836067223126595342</id><published>2010-06-26T21:28:00.003-05:00</published><updated>2010-06-26T21:36:38.439-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.6.03 released: Glueless NS referrals now implemented</title><content type='html'>I have just released Deadwood 2.6.03.  This release implements Glueless NS recursion; in other words, approximately 90% or 95% of domains should now recursively resolve with Deadwood.  &lt;br /&gt;&lt;br /&gt;This is a testing release of Deadwood; while I am fixing bugs (and making sure there are no regressions between releases), the emphasis is on implementing new features.&lt;br /&gt;&lt;br /&gt;The next thing I will implement is handling incomplete CNAME referrals.&lt;br /&gt;&lt;br /&gt;It can be downloaded here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/testing/&gt;http://maradns.org/deadwood/testing/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5836067223126595342?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5836067223126595342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5836067223126595342'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/06/deadwood-2603-released-glueless-ns.html' title='Deadwood 2.6.03 released: Glueless NS referrals now implemented'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5013011526457802411</id><published>2010-06-23T13:06:00.004-05:00</published><updated>2010-06-24T15:10:32.922-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Why C programming experience is relevant</title><content type='html'>One thing I have noticed in American culture and the US&lt;br /&gt;job market is that you really can't get experience without a job, and you can’t get a job without experience.  It’s even worse in the technology sector: There are a lot of, quite bluntly, clueless HR and headhunters out there who don’t understand that someone who has programmed in C for over 20 years but has programmed in PHP for three months is probably a better programmer than someone who has programmed in PHP for a year, but has no other programming experience.  Or heaven forbid, if a job candidate tells someone “OK, I’ve never programmed in Ruby, but I have programmed in C for 20 years, Perl for over 10 years, PHP for a couple of years, as well as a number of other programming languages.  I’m sure I can pick Ruby in a day or two”; to a clueless HR person, the person can’t do the job if it has “Ruby” in the job title.&lt;br /&gt;&lt;br /&gt;The fact of the matter is this: C is hard (free the mallocs, close the open sockets, no native string handling, etc.).  DNS is hard. Recursive DNS is really hard.  Thread-free recursive DNS is even harder.  Thread-free recursive DNS in pure C is a downright pain in the butt.  I have done some of the work that is in vogue right now: PHP and other scripting, as well as some GUI development.  All of that is a cakewalk compared to the work I am doing in MaraDNS right now.&lt;br /&gt;&lt;br /&gt;Asking someone who has written a fully recursive DNS server in C (and, for added benefit, is almost done rewriting said fully recursive DNS server to not use threads) whether they can write a PHP script or a GUI application is like asking someone who can drive a large truck with a manual transmission if they can drive a compact family car with an automatic transmission.&lt;br /&gt;&lt;br /&gt;That said, one reason why some companies don’t like programmers with a lot of old-school experience is that they want younger people (it lowers health insurance premiums), or they feel that they can’t teach an old dog new tricks.  In my case, I program in C (not C++, not Java, not Objective C, but plain old C) not because I like the language (I don’t; PHP and Python as well as Java are far easier to program in) but because there is a tradition in the open-source world of writing programs in plain C: It proves that the developer can do the truly hard programming.&lt;br /&gt;&lt;br /&gt;I am an old dog, yes, but I can learn new tricks: I very quickly picked up PHP when I needed to use it, do use Python in MaraDNS (the BIND zone file converter is written in Python, and MaraDNS’ as well as Deadwood’s configuration files use Python-compatible syntax), and have been using Perl for over a decade.  Programming languages have been getting easier to program in (I’m glad I don’t have to program in 6502 assembly any more), not harder, and a good programmer is a good programmer.  Regardless of the language he is programming in.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5013011526457802411?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5013011526457802411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5013011526457802411'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/06/why-c-programming-experience-is.html' title='Why C programming experience is relevant'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5151649522812807761</id><published>2010-06-18T22:01:00.001-05:00</published><updated>2010-06-18T22:01:30.662-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Netbooks'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Another cheap netbook</title><content type='html'>Another cheap netbook out there is the &lt;A href=http://www.globaltraderweb.com/products/Augen_E_Go_OE_A733_MagicEyes_POLLUX_3520F_7inch_Netbook_CE_5_0_Red-1375-11.html&gt;Augen E-go&lt;/A&gt; (available in Blue, Red, and Silver), which is available for $109.  It &lt;A href=http://www.softmaker.com/forum/viewtopic.php?f=120&amp;t=7447&gt;appears to come with a demo version of Softmaker Office&lt;/A&gt;, which quite frankly, is the best office suite you will get on this computer.&lt;br /&gt;&lt;br /&gt;The only low-cost non-x86 netbooks which one can purchase appear to run Windows CE.  There was, at one point, a “Elonex One T” which ran Linux, but that computer is no longer available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5151649522812807761?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5151649522812807761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5151649522812807761'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/06/another-cheap-netbook.html' title='Another cheap netbook'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3330524197857559027</id><published>2010-05-31T16:51:00.002-05:00</published><updated>2010-05-31T16:54:05.221-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internals'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>chain_id actually will not work</title><content type='html'>Thinking about it some more, chain_id will not work.  The problem is this: Let us suppose we have the following process for resolving example.com:&lt;ul&gt;&lt;li&gt;The root servers at 127.0.1.1 says the .com servers are at 127.0.1.2&lt;li&gt;The .com server at 127.0.1.2 (ns.com) says the example.com server is ns1.example.net&lt;li&gt;The root server at 127.0.1.1 says the .net servers are at 127.0.1.3&lt;li&gt;The .net server at 127.0.1.3 says the example.net server (ns2.example.net) is at 127.0.1.4&lt;li&gt;The ns2.example.net server at 127.0.1.4 says the ns1.example.net server is at 127.0.1.5&lt;li&gt;The ns1.example.net server at 127.0.1.5 says that example.com is at 127.0.1.6&lt;/ul&gt;Let us suppose that we, at the same time, ask for both example.com and ns1.example.net.&lt;br /&gt;&lt;br /&gt;We will now have ns1.example.net in the process of being resolved; this process continues when we get the glueless NS referral ns1.example.net in the process of resolving example.com.&lt;br /&gt;&lt;br /&gt;So, at this point, the example.com resolution process has its own chain_id (lets make it “1”) while the process to resolve ns1.example.net has another chain_id (lets make it “2”).  For our “use chain_id to stop resolution loops” idea to work, both resolutions now need the same chain_id.  Since these chains can be fairly long and since multiple resolutions (such as resolving “www.example.com”, “blog.example.com”, and “ftp.example.com”) can use the same glueless resolution, we potentially might have to change a number of different chain_id values.&lt;br /&gt;&lt;br /&gt;This is getting hairy.&lt;br /&gt;&lt;br /&gt;It is far simpler to not use chain_id.  We can stop loops by simply using recurse_depth; if recurse_depth exceed 32, we give up on solving a given query.  Every time we follow a glueless NS referral or an incomplete CNAME chain, we either:&lt;ul&gt;&lt;li&gt;Create a new resolution process with its recurse_depth being the “parent”’s recurse_depth + 1&lt;li&gt;Connect to an already existing resolution process; when this happens, we increment both the parent’s and child’s recurse_depth.&lt;/ul&gt;Doing things this way is far simpler than trying to use chain_id.&lt;br /&gt;&lt;br /&gt;Another thing: We need to add a “ns” dw_str to the resolution process; this will store the particular glueless ns record we are in the process of resolving.&lt;br /&gt;&lt;br /&gt;(As an aside, the latest Deadwood snapshot can resolve glueless NS referrals if the A record in question is already in the cache)&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3330524197857559027?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3330524197857559027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3330524197857559027'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/chainid-actually-will-not-work.html' title='chain_id actually will not work'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5844981820639087544</id><published>2010-05-27T16:10:00.002-05:00</published><updated>2010-05-27T17:24:50.172-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internals'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>How Deadwood will do glueless NS referrals</title><content type='html'>“Glueless NS referrals” is when a DNS servers gives us the name, but not the IP, of a given DNS server which is “closer” to the answer we seek.&lt;br /&gt;&lt;br /&gt;In order to handle glueless NS referrals, we will have to perform some recursion to resolve them.  Since Deadwood uses the select() model, the recursion has to be handled by hand.  In addition, since we do multiple in-flight merging, things are a little more complicated.&lt;br /&gt;&lt;br /&gt;Here is my current plan:&lt;ul&gt;&lt;li&gt;We will add three numbers to each outgoing recursive request: recursion_depth (int; can be 16-bit or bigger), parent_id (int 16-bit or bigger), and chain_id (32-bit)&lt;li&gt;recursion_depth is how many times we’ve followed a glueless NS record (or incomplete CNAME referral); if this exceeds 32, we stop.&lt;li&gt;parent_id is the ID of the request that needs to be solved before we can continue solving this DNS name.  For example, if we ask for www.example.com, and the .com DNS servers tell us, without giving us an IP, that the nameservers for example.com are ns1.example.net and (say) ns2.example.net, we hold the current request, and make the parent ID one solving ns1.example.net.  Called “parent_id” because multiple recursion attempts might be trying to solve the same name at the same time, but a given recursion attempt only has a single parent_id&lt;li&gt;chain_id  This is a unique 32-bit number.  When we spawn a “parent” request, we first make sure there isn’t a request already in-flight which would cause a loop.  This is done because, when spawning a “parent”, the parent has the chain_id as the “child” request; if we find a request already in-flight with the same chain_id, we consider it a loop and give up.&lt;/ul&gt;Glueless NS referrals will be a little complicated to implement with Deadwood, but this is the last major hurdle before we have full recursion (we will also use the same code to handle incomplete CNAME referrals).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5844981820639087544?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5844981820639087544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5844981820639087544'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/how-deadwood-will-do-glueless-ns.html' title='How Deadwood will do glueless NS referrals'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3625744175779751086</id><published>2010-05-26T18:44:00.004-05:00</published><updated>2010-05-26T21:55:51.335-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memory lane'/><category scheme='http://www.blogger.com/atom/ns#' term='UUCP'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>OK, there’s still a few people using UUCP</title><content type='html'>As I mentioned yesterday, I was going to send an email to see if UUCP is still being used.&lt;br /&gt;&lt;br /&gt;Mike @ &lt;A href=http://mv.com&gt;MV communications&lt;/A&gt; promptly replied and let me know that, yeah, they still have a few active UUCP accounts around, but admitted their UUCP users probably have the accounts mainly for nostalgia purposes.  &lt;br /&gt;&lt;br /&gt;So, yes, UUCP still exists, and is still being used.  A little.  A very little.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3625744175779751086?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3625744175779751086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3625744175779751086'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/ok-theres-still-few-people-using-uucp.html' title='OK, there’s still a few people using UUCP'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-553138665602175604</id><published>2010-05-25T22:32:00.002-05:00</published><updated>2010-05-25T22:34:47.691-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UUCP'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Why MV offers UUCP access</title><content type='html'>The reason why &lt;A href=mv.com&gt;MV communications&lt;/A&gt; still offers UUCP access is because, in their words:&lt;blockquote&gt;We continue to offer this because it's how we began, but truly we don't expect much interest here. But if you know what it is and want it, we still offer it!&lt;/blockquote&gt;I have to email them and ask them if anyone actually has a UUCP account these days.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-553138665602175604?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/553138665602175604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/553138665602175604'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/why-mv-offers-uucp-access.html' title='Why MV offers UUCP access'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-9183577790523233708</id><published>2010-05-24T19:54:00.005-05:00</published><updated>2010-05-24T20:00:52.129-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='testing release'/><title type='text'>Deadwood 2.6.02 released: Non-glueless recursion</title><content type='html'>Deadwood, after over two years since its initial release, is finally starting to have support for DNS recursion.&lt;br /&gt;&lt;br /&gt;In the release of Deadwood, a subset of DNS names will recursively resolve: Names that do not require glueless NS records to be solved or incomplete CNAME records to be finished.  &lt;br /&gt;&lt;br /&gt;Here is my current roadmap for Deadwood:&lt;ul&gt;&lt;li&gt;Add support for solving glueless NS records (This will be 2.6.03)&lt;li&gt;Add support for finishing incomplete CNAME referrals (This will be 2.6.04)&lt;li&gt;Add support for ANY records — have it so the “in bailiwick” tester understands any RR type is OK when an “ANY“ record is asked for (This will be 2.9.01 — the first feature-complete recursive release for testing)&lt;/ul&gt;As always:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/&gt;http://maradns.org/deadwood/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;Look in the “testing” directory for Deadwood 2.6.02; look in the “TCC” directory for the source code for the Tiny C Compiler the deadwood-tcc release uses.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-9183577790523233708?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9183577790523233708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9183577790523233708'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/deadwood-2602-released-non-glueless.html' title='Deadwood 2.6.02 released: Non-glueless recursion'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3240139751456303622</id><published>2010-05-21T16:09:00.005-05:00</published><updated>2010-05-21T16:31:57.949-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memory lane'/><category scheme='http://www.blogger.com/atom/ns#' term='First 2000s decade'/><category scheme='http://www.blogger.com/atom/ns#' term='UUCP'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>I wonder if anyone still uses UUCP</title><content type='html'>Once upon a time, a dedicated connection to the internet was very expensive.  You needed a serious military contract to afford it.  So, universities and home users used something called UUCP to access the internet.&lt;br /&gt;&lt;br /&gt;This was when the most commonly used services on the internet were e-mail and something called “&lt;A href=http://maradns.blogspot.com/2009/07/memories-of-usenet.html&gt;Usenet&lt;/A&gt;”.  Yeah, sure, there was other stuff like something called “IRC” (like MSN, but text-only and not as friendly), and, yeah, FTP, but the cool stuff on the internet happened via email or over Usenet.  UUCP allowed you to cheaply access the internet, but only for e-mail and Usenet news.&lt;br /&gt;&lt;br /&gt;UUCP was cheap because it allowed you to call up your internet provider and download, in one batch, all pending email and Usenet messages for you, while uploading any email you sent or Usenet articles you posted.  If you didn’t subscribe to any high-traffic newsgroups, you could upload all of your email and Usenet “news” in a single five-minute or at most ten-minute daily modem session with your internet provider.&lt;br /&gt;&lt;br /&gt;It was a simple way of accessing the internet, and until the explosion of the World Wide Web in the mid-1990s, gave a full internet experience.&lt;br /&gt;&lt;br /&gt;Looking around on Google, it looks like a couple of internet providers might still provide UUCP access to the internet.  &lt;A href=http://www.mv.com/mv/enh/ras/uucp.shtml&gt;This page&lt;/A&gt; looks promising, although I wonder how many active UUCP accounts they still have.  There is also &lt;A href=http://hunter.apana.org.au/~cjb/Text/uucp-providers-faq.txt&gt;this listing&lt;/A&gt;, which is nearly a decade old, as well as &lt;A href=http://www.plexusinteractivegroup.com/uunet/products/uucp/index.html&gt;this page&lt;/A&gt;, which, again, looks like an out of date webpage that probably needs to be purged.&lt;br /&gt;&lt;br /&gt;I have made a number of references to UUCP over the years, including &lt;A href=http://maradns.blogspot.com/2007/08/maradns-snap-posix-thoughts.html&gt;this blog posting&lt;/A&gt; or &lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-May/000574.html&gt;this recent posting to the MaraDNS mailing list&lt;/A&gt;.  While I have never actually used UUCP for internet access (it was considered old-fashioned and out-of-date 16 years ago), I had something similar for a short while when I set up Leafnode to read Usenet offline in the early 2000s.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3240139751456303622?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3240139751456303622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3240139751456303622'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/i-wonder-if-anyone-still-uses-uucp.html' title='I wonder if anyone still uses UUCP'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-7718243941870563980</id><published>2010-05-20T16:48:00.001-05:00</published><updated>2010-05-20T16:48:58.331-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>The cheapest new netbook out there</title><content type='html'>Browsing through &lt;A href=http://shopping.google.com/&gt;shopping.google.com&lt;/A&gt;, there is one, and only one, really affordable netbook out there: The &lt;A href=http://www.bigboxstore.com/ebook-ly-eb01-cheapest-netbook-mini-laptop.html&gt;LY-EB01&lt;/A&gt;.  This is a tiny 7 inch netbook with an ARM processor running Windows CE, complete with an ancient version of Internet Explorer and a version of Word that doesn’t even include a spell checker.&lt;br /&gt;&lt;br /&gt;A number of $100 netbooks have been promised over the years (starting with the computer that inspired the Netbook revolution, the OLPC computer); this is the first $100 netbook to make it to market.&lt;br /&gt;&lt;br /&gt;I think this netbook would make a nice little platform for running Linux.  It might not be possible to run Firefox on this critter, but Dillo should run fine (heck, Dillo runs reasonably well on a mid-1990s netbook-sized Gateway Handbook 486 with only 20 megs of ram and 150 megs of hard disk space).  FVWM1 should run just fine; I wouldn’t try running Gnome on this critter.  &lt;br /&gt;&lt;br /&gt;This would be a good little computer for editing documents with vi and posting to Usenet using your favorite text-based Usenet client (wait, no one uses Usenet anymore...), as well as reading email using Pine, or Alpine these days.  &lt;br /&gt;&lt;br /&gt;Unfortunately, no one has bothered making a Linux port for this platform yet.  NetBSD might get a port before Linux has one.&lt;br /&gt;&lt;br /&gt;There are a number of used and “refurbished” netbooks in the $100-$200 range; the next price point for a brand new Netbook is &lt;A href=http://www.bestbuy.com/site/eMachines+-+Netbook+with+Intel%26%23174%3B+Atom%26%23153%3B+Processor+-+Black/9740848.p?skuId=9740848&amp;ci_src=14110944&amp;ci_sku=9740848&amp;ref=06&amp;loc=01&amp;id=1218165343248&gt;$230 for an eMachines Netbook&lt;/A&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-7718243941870563980?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7718243941870563980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7718243941870563980'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/cheapest-new-netbook-out-there.html' title='The cheapest new netbook out there'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-4903721555905550609</id><published>2010-05-19T17:54:00.006-05:00</published><updated>2010-05-19T18:04:01.400-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>Deadwood milestone reached: Recursion is starting to work</title><content type='html'>Finally, well over two years after starting the Deadwood project, recursion is &lt;i&gt;starting&lt;/i&gt; to work.  The operative word is “starting”; Deadwood is not ready for general testing yet.  However, I was able to resolve “google.com” starting from the root name servers with the latest Deadwood snapshot today, since no glueless NS referrals need to be followed to resolve that name.&lt;br /&gt;&lt;br /&gt;That in mind, here is a TODO list for releasing Deadwood 2.6.02:&lt;ul&gt;&lt;li&gt;Make sure we don't follow any referrals if we're following an upstream server.  Make sure RD is set to 0 if talking to a root server, and 1 if talking to an upstream server.&lt;br /&gt;&lt;li&gt; Show an appropriate error message if we try to follow a glueless NS referral or CNAME referral.  &lt;br /&gt;&lt;li&gt;Run all of the SQA regressions in the 32-bit and 64-bit compiles of Deadwood, starting with the 32-bit compile.  Fix things.&lt;br /&gt;&lt;li&gt;Make a good default hash value for the tarball, and which will be in our source release.&lt;br /&gt;&lt;li&gt;Make sure it compiles in Windows, both under MinGW and with TCC.  &lt;br /&gt;&lt;li&gt;Once all of this is done, make the 2.6.02 release: Source tarball, Win32 binary (.zip, .7z), and TCC .7z source release.&lt;br /&gt;&lt;/ul&gt;As always, snapshots can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/&gt;http://maradns.org/deadwood/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-4903721555905550609?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4903721555905550609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4903721555905550609'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/deadwood-milestone-reached-recursion-is.html' title='Deadwood milestone reached: Recursion is starting to work'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5933816701057497637</id><published>2010-05-19T15:04:00.000-05:00</published><updated>2010-05-19T15:05:31.711-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='list of software'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>A cool Windows stopwatch application</title><content type='html'>After wasting my time with a couple of nagware or otherwise annoying stopwatch applications, I finally found a no-nagging free (complete with source code) simple stopwatch program:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://www.keithv.com/software/stopwatch/&gt;http://www.keithv.com/software/stopwatch/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;Perfect for keeping track of how long I’ve been on the phone with my wife (we have a plan where we can call each other for free — but only if we talk for under five minutes per call; this application makes sure I don’t go over).&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5933816701057497637?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5933816701057497637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5933816701057497637'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/cool-windows-stopwatch-application.html' title='A cool Windows stopwatch application'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2675253992287861585</id><published>2010-05-14T12:42:00.005-05:00</published><updated>2010-05-14T12:55:59.435-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Placing text ads on samiam.org or maradns.org</title><content type='html'>Every now and then, I get someone who sends me an email wanting to participate in a "link exchange program" or to pay me a little to place a text ad on one of my websites.  &lt;br /&gt;&lt;br /&gt;For example, about a year ago, during the worst of the recession, I had someone offer to pay me a little money to place a text ad up on maradns.org and samiam.org.  The person insisted that the ad be permanent.  I told him I wasn’t going to do that; he got agitated and I finally handled it by ignoring the person.  Nothing is forever.&lt;br /&gt;&lt;br /&gt;I finally have come up with a policy and pricing structure for these people (the price is, yes, a little high, but that is a case of giving invoice therapy):&lt;br /&gt;&lt;br /&gt;The fee for a simple text-based ad on samiam.org is $50 per month. The fee for a simple text-based ad at maradns.org is $100 per month. This fee is paid by sending money to my PayPal account; the text ad will be placed after 100% of the first month's fee is paid. This fee is to be paid in full one week before the first day of the month when the text ad appears. The fee is not prorated; if you wish a text-based ad to be placed immediately, you must pay for the entire month.&lt;br /&gt;&lt;br /&gt;Please allow up to seven calendar days for a given text ad request to be processed.&lt;br /&gt;&lt;br /&gt;Multiple months can be paid for, but fractional months are not allowed (I would just pocket the extra money). There is a 10% discount if you pay for an entire year's worth of text-based ads.&lt;br /&gt;&lt;br /&gt;Anyone willing to pay this fee will be listed as a sponsor on the MaraDNS list of sponsors for the foreseeable future; this listing will include the content of your text-based ad.&lt;br /&gt;&lt;br /&gt;Simple text-based ads will be placed at the top of the content area of the "portal" page before my main content, and separated from my content with a &amp;lt;hr&amp;gt; HTML tag. Text based ads can include links, but the only other markup allowed is italics.&lt;br /&gt;&lt;br /&gt;All text-based ads must be approved by me before being placed on my site; any changes to text-based ads are subject to prior approval. Text ads for pornography or advocating any illegal activity (as per US law) will not be accepted.  Fees paid for rejected text ads are non-refundable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2675253992287861585?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2675253992287861585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2675253992287861585'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/placing-text-ads-on-samiamorg-or.html' title='Placing text ads on samiam.org or maradns.org'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2848787919334454021</id><published>2010-05-13T18:13:00.003-05:00</published><updated>2010-05-13T18:25:33.912-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Why I don’t do free private email support</title><content type='html'>Every now and then, I get someone who gets really angry at me when I give them the “pay up or take it to the mailing list” form reply from me after sending me a request for unpaid private MaraDNS support.  This is not very good for the user in question; since the form reply makes it clear I can make replies to my form letter public, they end up publicly embarrassed when I forward their rude email to the MaraDNS list. &lt;br /&gt;&lt;br /&gt;The reason why I don’t do unpaid support is because MaraDNS is an open-source project.  Open source fundamentally changes the customer-supplier relationship; the thinking behind open source is that I supply something that benefits the community as a whole.  The community, in return, benefits MaraDNS.&lt;br /&gt;&lt;br /&gt;If I answer a private MaraDNS support email for free, I am not doing anything to benefit the MaraDNS community.  I am only benefiting one particular user of MaraDNS.  &lt;br /&gt;&lt;br /&gt;MaraDNS users with support concerns should help MaraDNS by either paying me (which encourages me to work harder on MaraDNS), or by making their support concern public; this way any reply to their email is public and the next person with the same concern can quickly find the answer to their question in the &lt;A href=http://woodlane.webconquest.com/pipermail/list/&gt;MaraDNS mailing list archives&lt;/A&gt;.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2848787919334454021?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2848787919334454021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2848787919334454021'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/why-i-dont-do-free-private-email.html' title='Why I don’t do free private email support'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2796973193036256835</id><published>2010-05-12T12:09:00.004-05:00</published><updated>2010-05-12T12:14:33.020-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>MaraDNS and Deadwood now use RFC4193-compliant example IPv6 addresses</title><content type='html'>MaraDNS and Deadwood now use RFC4193-compliant example IPv6 addresses:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/download/1.4/snap/2010/&gt;http://maradns.org/download/1.4/snap/2010/&lt;/A&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;The prefix I use for all examples is “fd4d:6172:6144:4e53”, which is 0xfd followed by “MaraDNS” in ASCII.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2796973193036256835?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2796973193036256835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2796973193036256835'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/maradns-and-deadwood-now-use-rfc4193.html' title='MaraDNS and Deadwood now use RFC4193-compliant example IPv6 addresses'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-751718504785176880</id><published>2010-05-12T10:56:00.002-05:00</published><updated>2010-05-12T11:17:21.308-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New MaraDNS snapshot: NAPTR record bugfix; IPv6 examples changed</title><content type='html'>You know, it’s always a little embarrassing for me to have a bug in my code.  A part of me wishes I was perfect and did not make mistakes, and has the notion it reflects poorly on me if a piece of code has a bug in it — even though it plain simply is not humanly possible to make a program as complex as a DNS server without any bugs.[1]&lt;br /&gt;&lt;br /&gt;There was a bug in the code that parses NAPTR records that makes it impossible to parse NAPTR records unless the ~ is &lt;i&gt;not&lt;/i&gt; used to separate records.  The workaround is to not use the ~ to separate records in zone files with NAPTR records; the fix is available here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://www.maradns.org/download/patches/maradns-1.4.03-naptr_parsebug.patch&gt;http://www.maradns.org/download/patches/maradns-1.4.03-naptr_parsebug.patch&lt;/A&gt;&lt;br /&gt;&lt;A href=http://www.maradns.org/download/1.4/snap/2010/maradns-Q.20100512.1.tar.bz2&gt;http://www.maradns.org/download/1.4/snap/2010/maradns-Q.20100512.1.tar.bz2&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;In addition, today’s snapshot of MaraDNS now uses fecf:aff0 as the prefix for all example IPv6 addresses instead of 3ffe:ffff; fec0::/10 was once assigned to “Site-Local scoped” addresses and there is no way the IANA is ever going to use this space for IPv6 Unicast addresses; I use fecf:aff0 for loopback IPv6 addresses for Deadwood testing (why they didn’t assign an entire /16 or /32 to loopback in IPv6 is a mystery to me; multiple loopback addresses are useful).&lt;br /&gt;&lt;br /&gt;- Sam&lt;br /&gt;&lt;br /&gt;[1] If you’re an ignorant DJB fanboy who still thinks DjbDNS is perfectly secure and has no bugs, &lt;A href=http://maradns.blogspot.com/2010/02/there-is-no-such-thing-as-perfectly.html&gt;you’re wrong&lt;/A&gt;.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-751718504785176880?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/751718504785176880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/751718504785176880'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/new-maradns-snapshot-naptr-record.html' title='New MaraDNS snapshot: NAPTR record bugfix; IPv6 examples changed'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5993334324939347444</id><published>2010-05-11T12:50:00.003-05:00</published><updated>2010-05-11T12:53:42.148-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New MaraDNS snapshot: NAPTR records documented</title><content type='html'>I have finally documented NAPTR records in MaraDNS, and made a new snapshot with NAPTR records documented:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://www.maradns.org/download/1.4/snap/2010/&gt;http://www.maradns.org/download/1.4/snap/2010/&lt;/A&gt;&lt;br /&gt;&lt;A href=http://www.maradns.org/tutorial/man.csv2.html&gt;http://www.maradns.org/tutorial/man.csv2.html&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;This resolves the issue brought up here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://woodlane.webconquest.com/pipermail/list/2010-April/000535.html&gt;http://woodlane.webconquest.com/pipermail/list/2010-April/000535.html&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5993334324939347444?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5993334324939347444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5993334324939347444'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/new-maradns-snapshot-naptr-records.html' title='New MaraDNS snapshot: NAPTR records documented'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-7206284484233286775</id><published>2010-05-03T12:08:00.001-05:00</published><updated>2010-05-03T12:08:57.874-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cryptographic hash'/><title type='text'>Luffa: Another SHA-3 candidate hash that’s also a stream chiper</title><content type='html'>I have &lt;A href=http://maradns.blogspot.com/2008/12/my-first-look-at-sha-3-candidates.html&gt;listed before some hash functions that also work as stream ciphers&lt;/A&gt;; it would appear that the &lt;A href=http://csrc.nist.gov/groups/ST/hash/sha-3/Round2/submissions_rnd2.html&gt;SHA-3 submission&lt;/A&gt; Luffa is a hash function that can output an arbitrarily long hash and be used as a stream cipher.&lt;br /&gt;&lt;br /&gt;Also, LUX and MeshHash appear to have some cryptographic weakness and neither made it to round two of the SHA-3 competition; Luffa, however, did make it to round 2.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-7206284484233286775?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7206284484233286775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7206284484233286775'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/05/luffa-another-sha-3-candidate-hash.html' title='Luffa: Another SHA-3 candidate hash that’s also a stream chiper'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3743582925537343198</id><published>2010-04-30T05:21:00.003-05:00</published><updated>2010-04-30T12:22:04.092-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X window managers'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>My quest for a window manager (part 2)</title><content type='html'>In &lt;A href=http://maradns.blogspot.com/2010/04/my-quest-for-window-manager.html&gt;yesterday’s blog entry&lt;/A&gt;, I described some of the Window managers I was not happy with.  Thankfully, I found a modern window manager that works for me.&lt;br /&gt;&lt;br /&gt;The window manager I settled on was a recent release of XFCE, XFCE 4.4 to be exact.&lt;br /&gt;&lt;br /&gt;XFCE 4.4 may not be the latest and greatest release of XFCE, but it is the release I can install with a simple “yum --enablerepo=extras groupinstall XFCE” in CentOS 5.  Right now this looks to be the best FVWM1 replacement candidate for me.  While more heavy than I would like — it takes about 20 or 30 seconds for the desktop to come up once I start X, compared to FVWM which comes up in only a couple of seconds — it is really lightweight for a full-featured desktop environment.  Unlike Afterstep or any of the tiling window managers, I don’t need to learn yet another (often times poorly documented) arcane text configuration file format to configure the window manager; everything can be configured from the GUI.  &lt;br /&gt;&lt;br /&gt;It didn’t take me too long for me to figure out how to use hotkeys to change the virtual desktop I am on.  Unlike FVWM, I can not move an application from one desktop to another by dragging the window; however, I can move an application from desktop to desktop by clicking and dragging its miniature image in the pager.  I also was able to configure all of the panel elements to be vertical elements on the side of the screen to allow there to be as much vertical space for the xterms as possible.  One advantage of xfce4 over FVWM is that the xterm windows “snap” to the elements on the side, making horizontal alignment of the windows easier than it is in FVWM1; there may be an option to configure things so that the windows “click in place” next to each other, something I wish FVWM1 had.&lt;br /&gt;&lt;br /&gt;XFCE 4.4 has an extensive number of themes for the window decorations, a great improvement over FVWM1 which only has two minor variants on a Motif theme (an appearance used by a windowing system for UNIX called Motif which existed in the early 1990s), both of which looked sexy in the mid-1990s, dated by the early 2000s, and downright ugly in 2010.  Indeed, a lot of FVWM1 derivatives (Bowman, FVWM95, MLVWM, etc) are simply FVWM1 with different looking window decorations.&lt;br /&gt;&lt;br /&gt;The theme I opted to used is called “smallscreen”, which allows me to have xterm windows one row taller than I could in FVWM1. &lt;br /&gt;&lt;br /&gt;I’ve been using XFCE 4.4 (not the current 4.6) for about two months now and have been happy with it; while it is a bit disconcerting having my four virtual desktops in a single vertical bar instead of a 2x2 virtual desktop, it otherwise has everything I like about FVWM1, as well as being lightweight in a virtual machine on a Dell I bought in 2007.   &lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3743582925537343198?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3743582925537343198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3743582925537343198'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/my-quest-for-window-manager-part-2.html' title='My quest for a window manager (part 2)'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-1343603553962506946</id><published>2010-04-29T16:25:00.002-05:00</published><updated>2010-04-29T16:30:42.981-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X window managers'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>My quest for a window manager</title><content type='html'>A quick glance at my &lt;A href=http://samiam.org/screenshots/&gt;screenshots page&lt;/A&gt; shows that I have been using FVWM1 for a very long time now.  FVWM1 is definitely showing its age; newer applications (such as VMware player) don’t work very well with FVWM1.&lt;br /&gt;&lt;br /&gt;So, I spent some time trying to find something more recent that works for me.  I have tried out a few different window managers:&lt;ul&gt;&lt;li&gt;Afterstep.  While the most recent release was only a year ago, the program feels incomplete and abandoned.  The documentation on the website is incomplete; the Afterstep Wiki has not been updated for over 90 days; and the website has dead links like as.themes.org.  The project does not appear to have an active community.  In addition, the program takes 20 to 30 seconds to start up, which seems excessive for what should be a simple window manager.&lt;li&gt;HaZe.  This was abadoned in 2002, but I tried it anyway.  It took me about 30 minutes to get it to compile; after getting it to compile, it ended with a segfault.  This is obviously, at best, a half-finished window manager.&lt;li&gt;I didn’t try any of the tiling window mangers.  I have been very productive for nearly two decades with virtual desktop window managers; a new paradigm of window management is not what I need.&lt;li&gt;XFCE 3.2.  Ancient release of XFCE; took me about two hours to get this critter to compile and run in CentOS 5 (and, for anyone that’s interested, I have a RPM here).  It starts up quickly but I couldn’t find a way to assign keyboard shortcuts to change the virtual desktop I am on.&lt;/ul&gt;In my next blog entry, I will describe the Window manager I have been using for about two months and that I’m happy with.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-1343603553962506946?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1343603553962506946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/1343603553962506946'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/my-quest-for-window-manager.html' title='My quest for a window manager'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2737401493626757647</id><published>2010-04-28T17:28:00.001-05:00</published><updated>2010-04-28T17:30:20.637-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>Deadwood: I will no longer announce snapshots here</title><content type='html'>Just letting people know that I will no longer announce new snapshots of Deadwood here, only full releases.  People who want to look at Deadwood snapshots can go here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap/&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;I usually describe what has changed in a given snapshot here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/CHANGELOG&gt;http://maradns.org/deadwood/CHANGELOG&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2737401493626757647?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2737401493626757647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2737401493626757647'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/deadwood-i-will-no-longer-announce.html' title='Deadwood: I will no longer announce snapshots here'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-4634384682464456391</id><published>2010-04-28T10:21:00.003-05:00</published><updated>2010-04-28T10:59:09.654-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='internals'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Deadwood: Revising the hash structure</title><content type='html'>Currently, the upstream DNS servers are stored in their own special hash.  However, in order to implement full recursion, the upstream/root DNS servers need to be stored in the same hash cached entries are stored in.&lt;br /&gt;&lt;br /&gt;However, there are some things different about upstream/root NS referrals in the hash:&lt;ul&gt;&lt;li&gt;They will not be part of the file we store the offline cache in&lt;li&gt;The entries will not be part of the queue we use to delete unused entries (and put stuff in the cache diskfile)&lt;li&gt;It will not be possible to delete the entries once they are in the hash&lt;/ul&gt;My next task for Deadwood is to modify the hash structure to accommodate these “immutable” elements; after that, have upstream_servers and root_servers stored in the hash.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-4634384682464456391?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4634384682464456391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/4634384682464456391'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/deadwood-revising-hash-structure.html' title='Deadwood: Revising the hash structure'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2485936614133005299</id><published>2010-04-27T08:09:00.004-05:00</published><updated>2010-04-27T12:58:37.773-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LAMP'/><category scheme='http://www.blogger.com/atom/ns#' term='Postgres'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Setting up a Postgres server on RHEL/CentOS 5</title><content type='html'>The procedure for installing and setting up an account in MySQL is widely documented in various places (such as &lt;A href="http://codex.wordpress.org/Installing_WordPress#Using_the_MySQL_Client"&gt;the document for setting up a MySQL account for Wordpress&lt;/A&gt;); however, I haven’t found an online guide for installing and configuring Postgres for RHEL/CentOS Linux.&lt;br /&gt;&lt;br /&gt;That in mind, here is my guide&lt;ul&gt;&lt;li&gt;Install Postgres:&lt;br /&gt;&lt;blockquote&gt;yum install postgresql-server&lt;/blockquote&gt;&lt;li&gt;Choose language of Postgres UI:&lt;br /&gt;&lt;blockquote&gt;cd /var/lib/pgsql ; vi data/postgresql.conf&lt;/blockquote&gt;&lt;li&gt;Set up a "www" account and make a database for said account:&lt;br /&gt;&lt;blockquote&gt;su postgres&lt;br /&gt;# Answer No for all three questions when doing:&lt;br /&gt;createuser www&lt;br /&gt;createdb -O www www&lt;br /&gt;# No, no, and no (no special privileges)&lt;/blockquote&gt;&lt;li&gt;Make the database password protected:&lt;br /&gt;&lt;blockquote&gt;vi /var/lib/pgsql/data/pg_hba.conf&lt;/blockquote&gt;Make all authentication &lt;i&gt;over the network&lt;/i&gt; 'password' instead of 'ident'&lt;p&gt;&lt;li&gt;Apply the changes:&lt;br /&gt;&lt;blockquote&gt;/etc/init.d/postgresql restart&lt;/blockquote&gt;&lt;li&gt;Let’s give the “www” user a password:&lt;blockquote&gt;su postgres&lt;br /&gt;psql&lt;/blockquote&gt;And at the prompt...&lt;blockquote&gt;ALTER ROLE www WITH LOGIN;&lt;br /&gt;ALTER ROLE www WITH PASSWORD 'foo';&lt;br /&gt;\q&lt;/blockquote&gt;The semicolon is important.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2485936614133005299?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2485936614133005299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2485936614133005299'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/setting-up-postgres-server-on.html' title='Setting up a Postgres server on RHEL/CentOS 5'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8682082101110991066</id><published>2010-04-26T16:33:00.001-05:00</published><updated>2010-04-26T16:36:15.841-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='Day job'/><title type='text'>I have a new gig</title><content type='html'>Well, that didn’t take long.  Just a couple days after ending my last gig making a complete webpage and CMS (web content management system—a webpage you can edit in a browser) in a month, an old buddy of mine wants me to convert a blog from one format to another.  &lt;br /&gt;&lt;br /&gt;I’m already researching things so I can make a proposal later on this afternoon.  &lt;br /&gt;&lt;br /&gt;Looks like I won’t be able to finish up Deadwood quite yet.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8682082101110991066?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8682082101110991066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8682082101110991066'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/i-have-new-gig.html' title='I have a new gig'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-9133176099654387798</id><published>2010-04-23T08:20:00.003-05:00</published><updated>2010-04-23T08:28:27.030-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>Next in Deadwood: Glued NS referrals</title><content type='html'>The next thing in Deadwood I will implement are glued NS referrals.  Here is the general plan:&lt;ul&gt;&lt;li&gt;If we get a NS referral upstream, make sure it is in bailiwick (actually, this bit of code has already been written).  &lt;li&gt;Store the NS referral in the cache.  &lt;li&gt;Then, make a new query to one of the NS servers, using the part of DNS space this NS record refers to as our new bailiwick.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-9133176099654387798?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9133176099654387798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/9133176099654387798'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/next-in-deadwood-glued-ns-referrals.html' title='Next in Deadwood: Glued NS referrals'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2455789918554314568</id><published>2010-04-22T13:45:00.003-05:00</published><updated>2010-04-23T10:59:44.234-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>Deadwood is alive again</title><content type='html'>Well, my project to where I built a full web content management system in two weeks has finished, so I have some free time to work on Deadwood again.&lt;br /&gt;&lt;br /&gt;That in mind, I have just released a new snapshot of Deadwood; this has a one-line change compared to the snapshot from over a month ago, but shows that Deadwood is alive (for the time being):&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/deadwood/snap&gt;http://maradns.org/deadwood/snap/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2455789918554314568?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2455789918554314568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2455789918554314568'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/deadwood-is-alive-again.html' title='Deadwood is alive again'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-7996522381259173346</id><published>2010-04-12T17:40:00.002-05:00</published><updated>2010-04-12T17:42:38.645-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><title type='text'>MaraDNS update: List scubscription HOWTO</title><content type='html'>I have updated the MaraDNS FAQ with &lt;A href="http://maradns.org/faq.html#subscribe"&gt;detailed information on how to subscribe to the list&lt;/A&gt; which should help people who are having problems subscribing to the list so they can get unpaid MaraDNS support.  &lt;br /&gt;&lt;br /&gt;For people who are still unable to subscribe to the list after getting this information, I will happily subscribe you to the mailing list for a nominal fee.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-7996522381259173346?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7996522381259173346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/7996522381259173346'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/maradns-update-list-scubscription-howto.html' title='MaraDNS update: List scubscription HOWTO'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5896342995133253081</id><published>2010-04-05T14:13:00.002-05:00</published><updated>2010-04-05T14:19:40.553-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='snap'/><title type='text'>New MaraDNS snapshot</title><content type='html'>I have updated the &lt;A href=http://maradns.org/faq.html#wishlist&gt;FAQ&lt;/A&gt; to link to some &lt;A href=http://maradns.blogspot.com/2009/06/why-i-will-not-implement-dns-curve.html&gt;blog&lt;/A&gt; &lt;A href=http://maradns.blogspot.com/2009/11/maradns-wish-list-status.html&gt;entries&lt;/A&gt; to clarify I will not implement for free whatever pet feature some luser wants me to implement without them paying me for my time.&lt;br /&gt;&lt;br /&gt;Just in case some luser gets some clue and learns how to &lt;A href=http://maradns.org/notes.html&gt;RTFM&lt;/A&gt;, this FAQ entry will stop them from wasting my time and their time.&lt;br /&gt;&lt;br /&gt;As always:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://maradns.org/download/1.4/snap/&gt;http://maradns.org/download/1.4/snap/&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5896342995133253081?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5896342995133253081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5896342995133253081'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/new-maradns-snapshot.html' title='New MaraDNS snapshot'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3529027717297514965</id><published>2010-04-04T11:46:00.006-05:00</published><updated>2010-04-04T12:07:20.054-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Day job'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>What’s it like to work in the tech industry</title><content type='html'>Now that I’m in the tech industry again, adding HTML/CSS/PHP/Javascript/Postgres (My boss feels this is a better database than MySQL)/CMS design experience to my résumé, some thoughts on how the tech industry works.&lt;br /&gt;&lt;br /&gt;The technology sector is extremely fickle. It’s feast-or-famine; some new technology comes along that everyone wants to have (Aerospace in the 1960s; video games in the early 1980s; the internet in the mid-to-late 1990s) and people are hiring like crazy and fortunes are to be made. If you’re at the right place at the right time, you can even make millions and retire young.&lt;br /&gt;&lt;br /&gt;But then, all of a sudden, no one is hiring any more and all you get at Monster and what not are idiots who want you to have ten years of experience in whatever technology is the hot new buzzword, regardless of whether the actual technology has even existed for ten years.&lt;br /&gt;&lt;br /&gt;The things that appear most stable in the tech industry, based on the people I knew in the 1990s and where they are today, are technical writing and middle management. Tech support is underappreciated and underpaid; programming and system development is very fickle — when there are layoffs nearly everyone becomes jobless; after the dust has cleared and they start hiring again, the listings on Dice and Monster generally only hire people with proven experience in technologies that didn’t exist or matter before, and it’s very hard to break in again.&lt;br /&gt;&lt;br /&gt;I remember, when I was working in San Jose, an older gentleman telling me the story of what happened when Nixon cut off the funding for an orbiting space station that NASA was supposed to build in the early 1970s. People would come to Silicon Valley to work, buying a house, and start moving in.  They would show up for their first day of work, and be told that there was no longer a position for them and that they should pack up and move back. Indeed, this inspired the computer revolution because there were a lot of really intelligent people who found themselves suddenly jobless.&lt;br /&gt;&lt;br /&gt;So, I’m finally getting paid to do tech again.  With the exception of a short-term contracting gig in the mid-2000s making a Linux/Apache/MySQL/PHP website, this is the first job I have had in tech since I was laid off during the dot-com implosion in 2001 (No, &lt;A href=http://maradns.blogspot.com/2010/03/im-web-page-designer-now.html&gt;the job babysitting Windows machines&lt;/A&gt; and doing things like reinstalling Windows or copying Outlook files from one computer to another doesn’t count).  I’m starting on the ground floor again; the pay is low but the experience is great to put on my résumé.&lt;br /&gt;&lt;br /&gt;The one thing I don’t like is the lack of time to finish up MaraDNS.  My boss wants an entire CMS ready in two weeks and I just don’t have time, between that and my wife, for MaraDNS right now.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3529027717297514965?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3529027717297514965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3529027717297514965'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/whats-it-like-to-work-in-tech-industry.html' title='What’s it like to work in the tech industry'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2644029369386942265</id><published>2010-04-01T11:24:00.003-06:00</published><updated>2010-04-01T11:34:51.454-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MaraDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='April Fools'/><title type='text'>New revised MaraDNS roadmap</title><content type='html'>Today I have decided to revise my MaraDNS roadmap.  I have realized that I have an intrinsic need to develop open-source software, and that this need is so strong it doesn’t matter if I get paid for my work.&lt;br /&gt;&lt;br /&gt;That in mind, I will quit my job and have time to develop all of the features people wish.  In particular:&lt;ul&gt;&lt;li&gt;I will fast-track finishing up recursion in Deadwood and release MaraDNS 2.0 in a month or two.&lt;li&gt;I will then integrate Deadwood and MaraDNS’ current authoritative code in to a single binary, releasing this as MaraDNS 3.0&lt;li&gt;I will then implement DNSSEC and DNScurve for MaraDNS, releasing this as MaraDNS 4.0&lt;li&gt;At this point, I will replace the authoritative core with a fast dynamic cache that will allow a multi-dimensional associative array to be read to and written from disk.  This will allow live zone transfers, and instant startup, no matter how many DNS entries one has&lt;li&gt;I will implement a method where one’s originating IP can change the reply MaraDNS gives; this will allow MaraDNS to support multiple DNS “views”, as well as changing DNS responses based on the client’s geographic location (Geo-IP)&lt;li&gt;I should be able to implement any and all features users ask for.&lt;/ul&gt;In order to implement all of these features in a timely manner, I will quit my day job and devote all of my time to developing MaraDNS.  I will, of course, not charge for MaraDNS and keep it available under an open-source license because, well, information wants to be free. My inherit need to create code is more important than my need to pay the rent and for food.  &lt;br /&gt;&lt;br /&gt;I should have MaraDNS 2.0 released in a month or two, MaraDNS 3.0 released by the end of 2010, and I will release MaraDNS 4.0 one year from today, on April 1, 2011.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2644029369386942265?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2644029369386942265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2644029369386942265'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/04/new-revised-maradns-roadmap.html' title='New revised MaraDNS roadmap'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3946007901021417919</id><published>2010-03-31T14:05:00.003-06:00</published><updated>2010-03-31T14:12:25.521-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web browsers'/><title type='text'></title><content type='html'>A “carousel” is, among other things, an object on a web page that allows you to scroll left and right to see multiple images; it is akin to Windows XP’s “filmstrip” view of images.&lt;br /&gt;&lt;br /&gt;Here is a webpage linking to several Javascript carousel plugins:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://www.queness.com/post/711/15-attractive-javascript-carousel-plugins&gt;http://www.queness.com/post/711/15-attractive-javascript-carousel-plugins&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3946007901021417919?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3946007901021417919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3946007901021417919'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/carousel-is-among-other-things-object.html' title=''/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2223051102040365654</id><published>2010-03-30T11:06:00.000-06:00</published><updated>2010-03-30T11:07:27.533-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='IE6'/><title type='text'>Workaround for yet another IE6 bug</title><content type='html'>A workaround for yet another IE6 bug:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://locusoptimus.com/css-trickery/ie-image-border-styles-on-hover-solution.php&gt;http://locusoptimus.com/css-trickery/ie-image-border-styles-on-hover-solution.php&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2223051102040365654?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2223051102040365654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2223051102040365654'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/workaround-for-yet-another-ie6-bug.html' title='Workaround for yet another IE6 bug'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3326773652945901541</id><published>2010-03-30T09:23:00.002-06:00</published><updated>2010-03-30T09:27:49.135-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Sanename: Remove unusual characters from filenames</title><content type='html'>I was having a difficult time manipulating a lot of files my boss gave me yesterday with scripts in Linux because the files had spaces and other unusual characters in them.  I finally wrote a small C program that recursively renames all files in the current directory and all subdirectories so that anything that isn’t ASCII, a letter, a number, or one of the _-. characters in a filename is converted in to a _ character.  &lt;br /&gt;&lt;br /&gt;Note that &lt;b&gt;this program is dangerous&lt;/b&gt; and you shouldn’t use it unless you know what you’re doing.&lt;br /&gt;&lt;br /&gt;It can be looked at here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://samiam.org/software/sanename.html&gt;http://samiam.org/software/sanename.html&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;I do not support this program and it comes with no warranty.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3326773652945901541?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3326773652945901541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3326773652945901541'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/sanename-remove-unusual-characters-from.html' title='Sanename: Remove unusual characters from filenames'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-801376108939836234</id><published>2010-03-24T10:46:00.002-06:00</published><updated>2010-03-24T10:47:53.303-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web browsers'/><title type='text'>More on why IE6 still lingers</title><content type='html'>Some links to blogs and articles where people talk about why IE6 still lingers:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://itexpertvoice.com/ad/why-you-cant-pry-ie6-out-of-their-cold-dead-hands/&gt;Why You Can’t Pry IE6 Out Of Their Cold Dead Hands&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;&lt;A href=http://gadgetsteria.com/2010/02/22/ie-6-refuses-to-die-but-why/&gt;IE 6 refuses to die. But why?&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-801376108939836234?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/801376108939836234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/801376108939836234'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/more-on-why-ie6-still-lingers.html' title='More on why IE6 still lingers'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2265029274763264704</id><published>2010-03-19T10:16:00.007-06:00</published><updated>2010-03-19T13:51:42.615-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='Day job'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Every HTML/CSS coder’s dream</title><content type='html'>Every HTML and CSS coder out there with any semblance of clue is eager awaiting the day when no one is using Internet Explorer 6 any more, and dreams of the day no one is using Internet Explorer 7 either.&lt;br /&gt;&lt;br /&gt;For example, the last two days at my new job, I have been designing some web pages as per the client’s specifications.  The client wanted a certain type of navigation bar, which I implemented using a pure CSS design.  It looked great in Firefox, Opera, and Safari.&lt;br /&gt;&lt;br /&gt;It looked ugly in Internet Explorer 6.  I had to spend over an hour redesigning the navigation bar using a table-inside-table design.  Once I did that, I had to spend about another hour doing more workarounds so the design would look good in IE6 and Internet Explorer 7.&lt;br /&gt;&lt;br /&gt;I would have been done with the entire site design right now if IE6 and IE7 weren’t used by anyone.  Since I had to spend hours working around these browsers’ bugs, I won’t be able to finish things until this afternoon.  &lt;br /&gt;&lt;br /&gt;I know of four web stat sites who freely give out their numbers on Internet Explorer by version number.  Here are the current numbers:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Site&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;IE6 usage&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;IE7 usage&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;A href="http://marketshare.hitslink.com/browser-market-share.aspx?qprid=2&amp;qpfilter=ColumnName+LIKE+%27*Explorer*%27&amp;qpfiltertitle=Browser+Version+%3d+%22*Microsoft%20Internet%20Explorer*%22"&gt;Hitslink.com&lt;/A&gt;&lt;/td&gt;&lt;td&gt;19.76%&lt;/td&gt;&lt;td&gt;13.57%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;A href="http://gs.statcounter.com/#browser_version-ww-monthly-200912-200912-bar"&gt;Statcounter.com&lt;/A&gt;&lt;/td&gt;&lt;td&gt;14.04%&lt;/td&gt;&lt;td&gt;21.21%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;A href="http://statowl.com/web_browser_usage_by_version.php?timeframe=last_6&amp;interval=month&amp;chart_id=4&amp;fltr_br=&amp;fltr_os=&amp;fltr_se=&amp;fltr_cn=&amp;limit[]=ie&amp;limit[]=firefox&amp;limit[]=safari&amp;limit[]=chrome&amp;limit[]=opera&amp;limit[]=gecko&amp;x=109&amp;y=25"&gt;Statowl.com&lt;/A&gt;&lt;/td&gt;&lt;td&gt;12.75%&lt;/td&gt;&lt;td&gt;24.47%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;A href="http://www.w3counter.com/globalstats.php"&gt;W3counter.com&lt;/A&gt;&lt;/td&gt;&lt;td&gt;9.79%&lt;/td&gt;&lt;td&gt;14.40%&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;We probably won’t see IE6 numbers go below 2% until 2012; IE7 (which, while buggy, is a lot more pleasant to work with than IE6) will probably linger with numbers higher than 2% until 2015 or so.  So, yeah, I will be wasting a lot of time with these ancient browsers and their bugs for a while longer.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; &lt;A href=http://www.cnn.com/2010/TECH/03/04/ie6.funeral/index.html&gt;I’m not the only one eagerly awaiting IE6’s death.&lt;/A&gt;  YouTube has just dropped IE6 support and puts up a big “Upgrade your browser” banner visible only in IE6.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2265029274763264704?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2265029274763264704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2265029274763264704'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/every-htmlcss-coders-dream.html' title='Every HTML/CSS coder’s dream'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3323249268767715206</id><published>2010-03-18T12:48:00.009-06:00</published><updated>2010-04-18T19:29:20.598-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Day job'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>I’m a web page designer now</title><content type='html'>Well, I’m slowly but surely getting back in the tech sector.  My last gig only had me peripherally involved with tech.  My job there was to teach English and translate documents; I also was supposed to help babysit the Windows machines.&lt;br /&gt;&lt;br /&gt;While I was happy teaching English, and pleased with how well I translated documents, the tech sector part of the job was not the type of experience I needed to keep my skills current in the tech sector.&lt;br /&gt;&lt;br /&gt;So, here’s to the new job giving me more relevant experience (Linux, Apache, MySQL, PHP, etc.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3323249268767715206?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3323249268767715206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3323249268767715206'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/im-web-page-designer-now.html' title='I’m a web page designer now'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-3937703576200372030</id><published>2010-03-16T09:35:00.004-06:00</published><updated>2010-03-16T13:27:10.454-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Technology and operating system market share</title><content type='html'>There is an obsession Linux fanatics have: Microsoft Windows.  Their obsession includes, among other things, an obsession about how much market share Windows has.  The answer: Not as much as they think.&lt;br /&gt;&lt;br /&gt;In addition to Macintosh users and Linux on a lot of servers (and the occasional ultra-geek who uses Linux on the desktop), there’s a lot of technology out there where Microsoft doesn’t have a dominant market position:&lt;ul&gt;&lt;li&gt;Cell phones (WinCE is a niche player)&lt;li&gt;Portable book readers (Kindle, iPad, etc.)&lt;li&gt;Car computer systems&lt;li&gt;Servers (While there is IIS and Exchange, Microsoft can’t undersell Linux, BSD, etc.)&lt;li&gt;Dedicated video game consoles (There is the Xbox, but it has to compete with the Playstation and whatever console Nintendo has)&lt;li&gt;DVD and Blu-ray players, as well as stereo systems and DVRs&lt;li&gt;GPS navigators&lt;/ul&gt;In my last blog where I talked about how we use technology, and how things have changed in the last two decades, I noted a lot of places where people use technology, most of which involve uses not dominated or controlled by Microsoft.&lt;br /&gt;&lt;br /&gt;The idea that Microsoft controls computing and how people use computers is a rather silly idea.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-3937703576200372030?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3937703576200372030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/3937703576200372030'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/technology-and-operating-system-market.html' title='Technology and operating system market share'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5695369295941348206</id><published>2010-03-14T21:38:00.002-06:00</published><updated>2010-03-14T21:43:39.772-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memory lane'/><category scheme='http://www.blogger.com/atom/ns#' term='First 2000s decade'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>What we use technology for</title><content type='html'>Let’s imagine we have a time machine.&lt;br /&gt;&lt;br /&gt;The year is 1990 and we are in the technological age.  In particular, we have the following in our house:&lt;ul&gt;&lt;li&gt;A computer, which we use for writing documents and keeping track of finances.&lt;br /&gt;&lt;li&gt;A Nintendo, which we use for playing video games (we may also use the computer for this)&lt;br /&gt;&lt;li&gt;A stereo system, which we use for listening to music.  This will usually have a cassette and CD player, as well as a radio.&lt;br /&gt;&lt;li&gt;A television and VHS VCR, which we use for watching television and renting movies.&lt;br /&gt;&lt;li&gt;A telephone, for keeping in touch with people, communicating with friends or business contacts, or asking for a delivery of pizza&lt;br /&gt;&lt;li&gt;A camera for taking pictures&lt;br /&gt;&lt;/ul&gt;When we’re not at home and on the road, we have a Walkman (portable cassette player) for listening to music while walking around, and a cassette based car stereo for listening to music while driving.&lt;br /&gt;&lt;br /&gt;Twenty years later, we’re still using technology for the same tasks &lt;ul&gt;&lt;li&gt;A computer, which we use for putting music on our MP3 telephone, burning CDs with music to play on our home theater or car, keeping in touch with people we would have lost touch with 20 years ago when we moved, communicating with friends or business contacts, and, oh occasionally writing documents and keeping track of finances.&lt;br /&gt;&lt;li&gt;An Xbox/Playstation/Nintendo for playing video games (or our computer)&lt;br /&gt;&lt;li&gt;A home theater system, which we use for watching movies, or sometimes for watching TV or listening to music.  DVD/Blu ray players can play CDs, and we no longer use cassettes for custom mixes of music because we can now burn CDs.&lt;br /&gt;&lt;li&gt;A telephone, for asking for a delivery of pizza&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;On the road, we have more options:&lt;ul&gt;&lt;li&gt;A telephone, for listening to music when walking around, playing video games on the road, taking pictures, and, oh, for communicating with people wherever we are.&lt;br /&gt;&lt;li&gt;Our car either has a MP3 CD player, an input so we can hook up our phone to its speakers (via a plug or bluetooth), or we have some adapter to listen to music from our phone while on the road.&lt;br /&gt;&lt;li&gt;Our car often also has a device which lets us pop up a map and navigate our journey. &lt;br /&gt;&lt;/ul&gt;As you can see, we use technology for a lot of tasks.  I will discuss how this affects operating system market share in a future blog entry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5695369295941348206?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5695369295941348206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5695369295941348206'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/what-we-use-technology-for.html' title='What we use technology for'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8758742646294617767</id><published>2010-03-13T10:05:00.003-06:00</published><updated>2010-03-13T10:40:22.782-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internals'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>OK, how to store tasks in recursive Deadwood</title><content type='html'>Since Deadwood is currently a non-recursive cache, we have only one task we perform: We send a DNS query to an upstream server, whose reply we cache and forward on to the end-user.&lt;br /&gt;&lt;br /&gt;Since Deadwood only does one task, &lt;A href=http://maradns.blogspot.com/2010/03/how-deadwood-stores-penging-remote.html&gt;the structure for remote connections&lt;/A&gt; doesn’t need to store what task we’re doing with a remote connection.&lt;br /&gt;&lt;br /&gt;This needs to be changed to implement full recursion.&lt;br /&gt;&lt;br /&gt;So, let’s add to that structure a “task” element: What we’re doing right now in our process of solving a recursive DNS query.&lt;br /&gt;&lt;br /&gt;We can have Deadwood perform the following tasks:&lt;ul&gt;&lt;li&gt;We are connecting to an upstream DNS server with the RD (recursion desired) bit set.  Whatever reply they give us is one we will cache and forward on to the stub resolver.  This is currently the only task Deadwood can do.  Should the connection fail, or the reply is not a “complete” DNS reply, we will try another upstream server.&lt;br /&gt;&lt;li&gt;We are connecting to a DNS server which is marked as being a possible NS server to our query.  The reply is one we may or may not pass on to the client, depending on whether it is a complete reply.&lt;br /&gt;&lt;li&gt;We got an incomplete CNAME referral, which indicates we need to change the name of our query to whatever name was at the end of the incomplete referral and do a new query&lt;br /&gt;&lt;/ul&gt;Tasks will be stored as a stack.  The first taks we will have is to connect to the “lowest” NS server we have an entry for.  Here is how our remote query will look:&lt;br /&gt;&lt;br /&gt;Main -&gt; Non-recursive NS server connect (solve client query).&lt;br /&gt;&lt;br /&gt;Should we need to resolve the IP for a glueless NS server, here is how the above task list will then look like this:&lt;br /&gt;&lt;br /&gt;Main -&gt; Non-recursive NS server connect (solve glueless IP) -&gt; Non-recursive NS server connect.&lt;br /&gt;&lt;br /&gt;If, when trying to solve the glueless IP, we need to solve an incomplete CNAME referral:&lt;br /&gt;&lt;br /&gt;Main -&gt; Non-recursive NS server connect (solve incomplete CNAME referral) -&gt; Non-recursive NS server connect (solve glueless IP) -&gt; Non-recursive NS server connect (solve client query)&lt;br /&gt; &lt;br /&gt;OK, looking at this, our task will &lt;i&gt;always&lt;/i&gt; be trying to make a non-recursive NS server connection.  However, we need to store why we’re making this query (client query, glueless IP, or incomplete CNAME referral).  &lt;br /&gt;&lt;br /&gt;So, we’ll keep the SOCKET, remote_id and the time-to-die, as well as a pointer to the local queries for this query and the initial local query in the “root node”.  However, the number of retries as well as the query we’re doing to store this particular task, as well as the list of NS servers we will try to connect, and the number of times we will try before giving up, need to be stored in a special “task” structure which will be stored as a stack pointed to by the “root” DNS query.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8758742646294617767?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8758742646294617767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8758742646294617767'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/ok-how-to-store-tasks-in-recursive.html' title='OK, how to store tasks in recursive Deadwood'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-5455351585219608806</id><published>2010-03-12T17:46:00.002-06:00</published><updated>2010-03-12T17:56:30.270-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internals'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>More on how recursion is done</title><content type='html'>Recursion will be done in Deadwood as follows:&lt;ul&gt;&lt;li&gt;We look for a record in the cache with the same name and type as the stub resolver requested.&lt;br /&gt;&lt;li&gt;If not found, we will look for a CNAME referral with the same name as what the stub resolver requested&lt;br /&gt;&lt;li&gt;If not found, we will look for a NS referral with the same name as what the stub resolver requested&lt;br /&gt;&lt;li&gt;If not found, we will lop names off of the front of what they requested as a NS referral until we find something in the cache&lt;br /&gt;&lt;/ul&gt;When we find a CNAME referral, we change the name of what we request to be the final name in the CNAME referral, note that we had this CNAME referral, and continue processing.&lt;br /&gt;&lt;br /&gt;When we find a NS referral, we use a NS server at random.  If the server is glueless, we will have to find out the IP address of the NS server before proceeding.  To hand glueless records, we note the list of NS records as the current step in the recursive process, look up the glueless record, and then continue as before.&lt;br /&gt;&lt;br /&gt;I will discuss how to store this entire process in a future blog entry.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-5455351585219608806?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5455351585219608806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/5455351585219608806'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/more-on-how-recursion-is-done.html' title='More on how recursion is done'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-2908948825514183711</id><published>2010-03-09T15:07:00.004-06:00</published><updated>2010-03-09T16:01:49.574-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internals'/><category scheme='http://www.blogger.com/atom/ns#' term='Deadwood'/><title type='text'>How Deadwood stores pending remote connections</title><content type='html'>To implement full recursion, I will have to do an overhaul of how Deadwood stores pending remote connections.  In more detail: A pending &lt;i&gt;local&lt;/i&gt; connection is when a DNS stub resolver sends a query for Deadwood and is waiting for a reply.  A pending &lt;i&gt;remote&lt;/i&gt; connection is when Deadwood sends a DNS query to another DNS server and is waiting for a reply.&lt;br /&gt;&lt;br /&gt;Here is the structure for basic UDP remote connections:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;typedef struct {&lt;br /&gt;        SOCKET socket; &lt;br /&gt;        int64_t die;&lt;br /&gt;        uint16_t remote_id; &lt;br /&gt;        int retries; &lt;br /&gt;        dw_str *query;&lt;br /&gt;        uint16_t num_locals; &lt;br /&gt;        local_T **local; &lt;br /&gt;} remote_T;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note that, in the actual source code, this is commented.  To expand on the comments:&lt;ul&gt;&lt;li&gt;&lt;tt&gt;socket&lt;/tt&gt; is the number for open socket which will get the UDP data.  It’s called a “&lt;tt&gt;SOCKET&lt;/tt&gt;” here because Windows, unlike UNIX, doesn’t use integers for sockets.&lt;br /&gt;&lt;li&gt;&lt;tt&gt;die&lt;/tt&gt; is a timestamp for when this connection will be timed out and needs to be discarded.  Note that this is a 64-bit number; Deadwood uses 64-bit timestamps to minimize &lt;A href=http://www.y2038.com/&gt;Y2038 problems&lt;/A&gt;&lt;br /&gt;&lt;li&gt;&lt;tt&gt;remote_id&lt;/tt&gt; is the 16-bit randomly created query ID generated by Deadwood using a cryptographically strong pseudo random number generator.  If the reply doesn’t have the same query ID, it might be a DNS spoof attempt.&lt;br /&gt;&lt;li&gt;&lt;tt&gt;retries&lt;/tt&gt; is the number of remaining times we will retry if the remote server doesn’t reply to our query when it runs out of time (when our time is the same or greater than the &lt;tt&gt;die&lt;/tt&gt; time)&lt;br /&gt;&lt;li&gt;&lt;tt&gt;query&lt;/tt&gt; is the query (name, DNS record type) we sent to the remote server; we keep a copy of it here because we need to make sure the query we get is the same as the query we sent them (again, to make spoofing harder).&lt;br /&gt;&lt;li&gt;&lt;tt&gt;num_locals&lt;/tt&gt; is the number of local connections we send an answer to once we get a reply from the upstream server.   This was added when I implemented the merging of multiple in-flight requests with the 2.4.07 release of Deadwood (August 31, 2009).  When one program asks for, say, &lt;a href=http://www.google.com&gt;www.google.com&lt;/a&gt; and another program or computer asks for www.google.com while we’re still waiting for the first reply, Deadwood will merge the second request in to the first request, and send the reply to both clients once we get the reply upstream.&lt;br /&gt;&lt;li&gt;&lt;tt&gt;locals&lt;/tt&gt; is a list of “local” connections (which can be either UDP or TCP connections); there are the connections we send a reply to downstream once we get a reply upstream&lt;br /&gt;&lt;/ul&gt;Now, this structure is a simple structure which is fine when the upstream server does the heavy lifting and we’re just caching and forwarding the reply they send us, but this will need to become a lot more fancy in order to make full recursion a reality.  &lt;br /&gt;&lt;br /&gt;I will discuss what changes I plan to make to this to make recursion possible in a future blog entry.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-2908948825514183711?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2908948825514183711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/2908948825514183711'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/how-deadwood-stores-penging-remote.html' title='How Deadwood stores pending remote connections'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2893277969621208580.post-8372330824295889537</id><published>2010-03-09T11:53:00.004-06:00</published><updated>2010-03-09T12:05:17.928-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memory lane'/><category scheme='http://www.blogger.com/atom/ns#' term='X window managers'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>XFCE 3.2 for CentOS 5</title><content type='html'>I managed to update an ancient RPM of &lt;A href=http://xfce.org&gt;XFCE&lt;/A&gt; 3.2 to compile in CentOS 5.  My updated source code RPM is available here:&lt;br /&gt;&lt;br /&gt;&lt;A href=http://samiam.org/software/xfce-3.2.3-3.src.rpm&gt;http://samiam.org/software/xfce-3.2.3-3.src.rpm&lt;/A&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2893277969621208580-8372330824295889537?l=maradns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8372330824295889537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2893277969621208580/posts/default/8372330824295889537'/><link rel='alternate' type='text/html' href='http://maradns.blogspot.com/2010/03/xfce-32-for-centos-5.html' title='XFCE 3.2 for CentOS 5'/><author><name>MaraDNS</name><uri>http://www.blogger.com/profile/01083940279587586841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_yUdH3ZEf-vo/TGOFdnnzkcI/AAAAAAAAADU/lpir6LH6DcI/S220/Businessman.jpg'/></author></entry></feed>
