Tuesday, December 30, 2008

New Deadwood snapshot

I have released a new snapshot of Deadwood today. This snapshot has two enhancements:
  • I have added a copy of Duende (MaraDNS' daemonizer) modified to compile without MaraDNS proper, and the tools MaraDNS uses for creating documentation
  • I have made a man page for DwMain, and included a man page for Duende updated with the FreeBSd fix and more geared towards Deadwood
These files can be downloaded here, and the man page for DwMain can be seen here.

Sunday, December 28, 2008

samiam.org and blog comments update

I'm just letting people know I am doing a year-end cleanup of samiam.org, getting rid of a lot of outdated software and what not. As a general rule, I am removed links to versions of programs that are not the last release of a given program. With ObHack, I have made sure the last 002 and 003 releases are available, in addition the the final 004 release, so people can check out the subtly different maps each version of ObHack makes.

I have also deleted all of the Chess Variant-related stuff from the site. I have decided that Chess Variants are simply a waste of time; I have better things to do with my time. People who want to see my work in this area can download my Schoolbook file from the Zillions of Games website (look in "free games", then look for "schoolbook").

In terms of support, the only geek project I have done over the years I still use today is Deadwood (code that will someday be MaraDNS' next recursive resolver). Other projects are not supported and blog comments asking for support for, say, ObHack, will probably not be posted.

MaraDNS, of course, is still supported, but the only changes I will make in 2009 are critical and security bug fixes. I do not support non-security issues in MaraDNS anywhere except on the MaraDNS mailing list. Again, blog comments asking for MaraDNS support in 2009 will not be posted.

Deadwood is the only project I still find useful and support. People are welcome to download and use any other open-source code I have, but please don't ask me to solve your problems for you. Be smart. Learn to troubleshoot and figure out issues on your own. It'll make you a more mature, responsible person.

Friday, December 26, 2008

My 2009 plans for Deadwood

At this point I'm thinking of holding off on MaraDNS 2.0 for the time being. Instead, I think I will concentrate on getting the last bugs ironed out of Deadwood, and then seeing if I can make it part of BusyBox. Deadwood has some final wrinkles I would like to resolve:Once I do that, I can send an email to the Busybox people and see what it would take to make Deadwood a Busybox module (probably merging as much of the UDP and TCP code as possible, having the option to strip out the parser, being able to remove the saving/loading of the cache from a file, etc). I think doing this will greatly benefit the kinds of embedded router makers who use Busybox a lot, and will give MaraDNS/Deadwood a lot more exposure, which is good for my future job prospects.

This allows Deadwood to fill a niche which other DNS servers don't really fill: The need for a tiny secure stub resolver so people get correct DNS replies when asking their router to resolve hosts.

The need for a somewhat bigger secure fully recursive DNS resolver is nicely filled by Unbound, Power DNS, or even MaraDNS (if you don't mind all of the threads being spawn). As an aside, don't use DJBDNS' "Dnscache"; even though the code is now public domain, it hasn't been updated for years and I don't see anyone stepping up to plate and making a supported updated version with security and other problems fixed.

The only way I can motivate myself to continue work on Deadwood making it a fully recursive resolver is by seeing a niche for it that hasn't already been filled. The "non-DNSSEC recursive resolver" niche is more nicely filled up than it was when I did the lion's share of work on Deadwood a year ago: I was not aware of Unbound when I started work on Deadwood. One niche that doesn't seem to be filled is the "small DNS recursive resolver with DNSSEC support" niche; this might be what I end up doing with Deadwood in the long run, which would result in an eventual MaraDNS 2.0 release.

However, I think I will wait until after the end of 2009 before adding recursion to Deadwood. MaraDNS will have no features added to it in the meantime, with the only changes being security and serious bugs being fixed.

As an aside, in my personal life, while my former neighbor is still a very close platonic friend, I now have another girl in my life today who is my girlfriend.

Thursday, December 18, 2008

32-bit Skein is possible

Looking over the Skein paper, I saw this little gem:
5.4 The Word Size as a Tunable Parameter

All versions of Skein are specified with 64-bit words. The word size can be seen as a tunable parameter; we can define a Skein variant with 32-bit words. This variant would run much faster on 32-bit CPUs, but significantly slower on 64-bit CPUs.

At this point, we have not searched for rotation or permutation constants for a 32-bit variant, nor have we analyzed it to determine how many rounds would be required for security. However, given the knowledge obtained from the 64-bit variants, this would not be complicated.
So, yeah, it would be possible to make a 32-bit version of Skein, but it hasn't been done yet.

Wednesday, December 17, 2008

Why Deadwood will still use RadioGatun

I have spent the last day or so looking at all of the SHA-3 hash function candidates; my first step was to look at all of them and see which ones can also be used as stream functions. As I pointed out yesterday (go there for links to the hash primitives I will talk about), only four of the SHA-3 submissions can be used both as a hash and as a stream cipher.

One thing that is important for Deadwood is to use a cryptographic primitive that works well with 32-bit words. Deadwood's target is a 32-bit embedded platform, such as a router. Radio Gatun works nicely here because it has both a 32-bit and a 64-bit variant; Deadwood uses the 32-bit variant.

Of the four submissions I listed yesterday, the only one whose SHA-3 submission uses 32-bit words is LUX (for the 224-bit and 256-bit long hashes). The other three use 64-bit words in their SHA-3 submissions.

It would appear that there is already cryptanalysis of LUX when it uses 32-bit words that concludes that LUX does not work well as a stream cipher or as a PRNG. This, in spite of the fact LUX only came out two months ago.

While Skein has incredible 64-bit performance and respectable 32-bit performance, it uses 64-bit words and there isn't a variant that uses 32-bit words.

MeshHash is designed to use 64-bit words from start to finish. In addition, there is already some cryptanalysis which doesn't look good.

Keccak, developed by the same group who created Radio Gatun, can work with 32-bit words, and indeed, while not part of the SHA-3 submission, the authors specify two forms of Keccak that can be used on 32-bit systems, one optimized for speed and another optimized for security. The "fast" version appears to have a good deal less security than Radio Gatun appears to have.

While Keccak looks promising and perhaps Skein can work well on 32-bit systems, Radio Gatun has been out in the wild for two years with no cryptographic attacks against it yet. Radio Gatun is closely related to Panama, which has been around for over 10 years without any weaknesses found in its stream cipher operation (which is how I use Radio Gatun in Deadwood).

So, in conclusion, while Keccak and possibly Skein deserve further investigation at a later date, neither is as freely adaptable to 32-bit systems as Radio Gatun is. While both have not been attacked yet, they are very new primitives that I want to give more time to be analyzed before I feel comfortable using them in Deadwood.

The other two primitives have already been attacked. Consequently, I don't feel entirely comfortable using them in Deadwood.

So, in conclusion, Deadwood will continue to use Radio Gatun as the engine for generating secure pseudo-random numbers for the foreseeable future.

Tuesday, December 16, 2008

My first look at the SHA-3 candidates

I have just spent all afternoon looking over the SHA-3 candidates. What I am looking for is hash primitives that, like RadioGatun, are able to output hashes of arbitrary size (work as stream cipher). Of the many submissions, only four unbroken submissions appear to be able to do this:I hope one of these submissions win, because would be nice to have something that is standardized both as a hash function and as a stream cipher.

A couple of goodies

Over a year ago, I wrote a couple of programs that use the 32-bit version of the Radio Gatun cryptographic hash to calculate the cryptographic sums of files.

These programs are open-source, and are released to the public domain. The program is called "rg32hash" and is used like the md5sum program. Unlike the md5sum program, this program automatically recursively enters directories. Give it the file name or directory name you wish to hash, and it will output on the standard output the 256-bit Radio Gatun 32-bit hash of all of the files you list. If you want to perform a recursive hash from the current working directory, simply type in something like rg32hash . > RG32SUMS

I have both a Windows 32-bit binary and *nix source code of this program available.

Thursday, December 4, 2008

The Nokia 5310 is not open-source friendly

OK, I have been posting some reviews and talking about my new Nokia 5310 phone. I am been generally positive about it; now I will point out some issues these phones have because they cater to corporate interests. Last night, after some aggravation, I was able to update the firmware in my Nokia phone.

The problem was this: My phone is a Red Telcel-branded Nokia 5310, with the Product Code "0558120". Well, the problem is that the latest firmware for this version of the phone is an old 5.xx firmware, which has problems with being compatible with >4gb memory cards and with random "white screens of death" while playing music.

The current firmware, 8.32 (as an aside, you can see which version of the firmware a Nokia phone is running by typing in "*#0000#" without the quotes), appears to have fixed the "white screen of death" problem and is compatible with up to 16gb microSDHC memory cards.

I had to change the phone's product code to be allowed to update my firmware. I don't suggest doing this, because if you're not careful you can brick your phone. There was an issue with the current version of the USB driver Nokia makes blocking the program I downloaded to change the product code, so I just uninstalled all of my Nokia Software and downloaded an older version of the USB driver without this lockout.

After trying a "EURO-C" (Europe section C, which seems to include Spain) product code which also hasn't updated the firmware, I found on a Spanish-language program the product code for the "AMER-L" (Latin America) version of the unbranded Nokia firmware, which version 8.32 is available for. The code is 0551710 for the red phone, 0551739 for the blue phone, and 0563632 for the pink phone. This firmware supports English, Spanish, Portuguese, Dutch (huh?), and French.

Once I did this, I was able to update the firmware to 8.32.

However, there was a problem. Since I changed my phone's product code, the games I legally purchased no longer worked, since they include DRM. The solution was easy: I just went on the 'net, did some Google searches, and got unlocked versions of all of the games I bought from various "file sharing" services. I also got a lot of games I have never bought, but my sense of morals makes it unethical for me to play and enjoy a game I haven't bought.

So far, I haven't gotten a white screen of death, and feel a lot more comfortable using the music player since I don't have to worry about it crashing any more. I can also, if I wanted to, get an 8gb or even a 16gb memory card for the phone, but will hold off for now. The problem is that the current batch of 16gb memory cards are what as known as "class 2" cards; they can only transfer 2 megabytes of data a second, which means it can take over an hour to fill up the memory card with files.

Toshiba has announced that they will start making "class 6" (6mb a second minimum transfer speed) 16gb microsdhc memory cards, but these cards are not going to to available until mid-2009 or so. So, I'll either get a "class 4" (4mb/second) 8gb card for $20, or just wait until next year.

Another issue is that the 5310 doesn't support Ogg Vorbis files. This was OK back in the days when corporate interests said "Oh, our CPUs don't have the horsepower to decode Vorbis streams", but since the 5310 does support AAC files, there's no reason for this phone to not support Vorbis, except it isn't a format as well-known by the suits. The advantage of Vorbis is the free auTuV encoder, which does a better job of encoding audio than FAAC, the only freely available AAC encoder (since this software is not as mature as the proprietary AAC encoders), and LAME, the best MP3 encoder (also freely available; not as good because of the limitations of the MP3 format).

Wednesday, December 3, 2008

Nokia "Pink Planet" theme completed

I actually finished up the "Pink Planet" theme a week ago or so, but neglected to mention it was done last week. So, without further ado, here's a link to the three versions of this theme, and a direct link to what should be the final version of this theme.

I might upload this to some of the sites that host Nokia 5310 themes.

- Sam

Tuesday, December 2, 2008

Capa opening setups

(Disclaimer: All of this material I have previously posted in a thread at chessvariants.org, but I am reposting it here so it's available in a more convenient form)

One popular branch of chess variants is Capablanca Chess. Originally proposed in the 1600s by Carrera, and proposed again in the 1800s by Bird, and propsed yet again in the 20th century by Capablanca, this is one of the more popular types of chess variants that people have proposed versions of.

There are some 126,000 possible Capablanca opening setups, where the bishops are on opposite colors, and where the queen is to the left of the queen. However, looking at all of the Capablanca opening setups which have actually been proposed, I have observed that:
  • All of the opening setups have the king and a powerful (R+N,B+N, or Queen) piece in the center files
  • All of the proposed opening setups are symmetrical with the rooks, knights, and bishops
  • All of the proposed opening setups have the rooks either in the corners, or one file closer to the center than the corners.
As it turns out, there are only 72 possible Capablanca opening setups that follow all of the above rules. Of these 72 opening setups, I find that only 15 have been formally proposed as starting setups:

Here is a list of proposed Capa chess setups I know about:


RANBQKBNMR Aberg
RMNBQKBNAR Carrera
RNBMQKABNR Bird
RNBAQKMBNR Capa 1 (1.Mh3 mating threat)
RNABQKBMNR Capa 2
RBQNKMNABR Grotesque
RBNMQKANBR Univers
RBQNKANMBR Landorean
RNBQKMABNR Embassy
RQNBAKBNMR Schoolbook
NRMBQKBARN Optimized
RNBQCKABNR Gothic
MRNBQKBNRA Paulowich 1 link
ARNBQKBNRM Paulowich 2 link
QRNBKABNRM Paulowich
RNMBQKBANR Nalls link
RNBQAKMBNR Teutonic link (1. Mh3 mating threat)

Any without a link here are listed on on the Capablanca Chess Wiki page.

And some more proposed opening setups, since not nearly enough Capa opening setups have been proposed :)

RNBQKAMBNR Consulate
RNQBKMBANR Finesse
RQNBKABNMR Notebook
QRNBAKBNRM Closebook
RNQBMKBANR Blackbook
NRABQKBMRN Nightwink
RQNBKMBNAR Narcotic

Setups which suffer from white being able to threaten mate on the first move:

RQNBMKBNAR Md3
QRNBMKBNRA Md3
RBNQKMANBR Mg3
BRNQKMANRB Mg3
QRNBKMBNRA Mg3
BRNAQKMNRB Mh3 (Capa 1)
RNBQAKMBNR Mh3 (Teutonic)
BRNQAKMNRB Mh3
RABNQKNBMR Mh3
RQBNAKNBMR Mh3

So, for aspiring Chess variant inventors, that leaves us with the following possible Capa opening setups:

QRBNAKNBRM RQBNMKNBAR NRBQAKMBRN RBNQAKMNBR NRBMQKABRN BRNMQKANRB RBNMQKANBR QRBNMKNBRA NRBQKMABRN RMBNQKNBAR ARBNQKNBRM RQBNKMNBAR BRQNMKNARB RBQNMKNABR NRQBMKBARN NRQBKABMRN RNQBKABMNR NRBAQKMBRN BRQNKANMRB BRANQKNMRB RBANQKNMBR BRNAQKMNRB RBNAQKMNBR MRBNQKNBRA QRBNKMNBRA RQBNKANBMR BRMNQKNARB RBMNQKNABR QRBNKANBRM NRBQKAMBRN NRQBAKBMRN BRNQKAMNRB RBNQKAMNBR RNQBAKBMNR BRQNAKNMRB RBQNAKNMBR NRBQMKABRN NRQBKMBARN BRQNKMNARB BRNQMKANRB RBNQMKANBR

Monday, December 1, 2008

OK, one of those dictionaries I downloaded wasn't free

The huge three-megabyte dictionary I mentioned in my last blog entry actually isn't freeware. It's demoware; the program asked for a registration key a few days after I started using it, so I just deleted the application.

The other two dictionaries I have, however, still haven't done anything like this.

Friday, November 28, 2008

Cool 5310 app: English - Spanish dictionary

One useful thing my 5310 can be is an English Spanish dictionary. This saves me the bother of carrying around a paper dictionary or always having to play the "say a lot of words when it would be better to say just word" game. I have a couple of dictionaries I have downloaded for free online.

One dictionary is the Mobile Translator Me dictionary (the link shown when starting this program, eamobile.tk, is now owned by a squatter).

This dictionary has a nice interface; after hitting "5" twice to get past the two splash screens, it's a simple matter of choosing "Spanish->English" or "English->Spanish" then typing in, using the phone's predictive text features (it's identical to writing a text), the word I want to be translated. When talking to a friend who didn't know the word "Stewardess" in English at a cafe earlier this week, this dictionary correctly translated "stewardess" as "azafata".

However, its dictionary is limited. When translating "to melt" (as in, melting butter for popcorn), it translated it as "fusión", which really means "fusion" in Mexican Spanish. I had to use the KODi dictionary to correctly translate this word.

Another English Spanish dictionary I have is the KODi English Spanish dictionary. This program is pretty small, has an extensive dictionary, and opens quickly. Unlike any other dictionaries I have in my cell phone, it lets me words next to the word I'm looking up in the dictionary.

Unfortunately, the interface is a bit quirky; I can't use predictive text input to input words in to this dictionary, and, more annoying, if I hit the button which means "delete the letter I just mistyped" in this dictionary, it immediately exists the application, forcing me to restart it.

The third dictionary I have is one the official specs for my Nokia tell me shouldn't work in my phone: A huge 3-megabyte dictionary, complete with a lot of regional slang. The application works fine, even if it takes two or three seconds longer to load than the other compact dictionaries.

The slang isn't accurate slang for the Mexico City/Puebla area (the two naughty words they use for a female's reproductive organ aren't in the dictionary), but, then again, my ex-girlfriend who was from a small town about 200 miles from here didn't have those words in her vocabulary either, so I don't expect a dictionary to be up-to-date with those kinds of words. For words I would actually want to use in a normal conversation, it looks to be a good dictionary. It's biggest annoyance is that it's one-way; it translates from English to Spanish (which is what I normally need to do when talking to someone), but not from Spanish to English.

One annoyance all three dictionaries have is that they don't tell me the gender of a given noun; for a word like "té" where the gender isn't clear, I just have to give the word a male gender and hope it's a "boy-word" in Spanish. A verb conjugation tool would be nice too, come to think of it.

So, between these three dictionaries now in my cell phone (all three are free downloads), I don't need to lug around a big dictionary any more.

Sunday, November 23, 2008

More on the Nokia 5310 XpressMusic

Having just posted a full review of the Nokia 5310, I would like to make some additional comments and even give you guys a free goody (I like giving out free goodies).

But, first, I promised in my last blog to post some scripts I use to convert HTML pages in to a form my phone can use.

The example script I will post allows me to convert books available in HTML format at Baen books in to a form that can easily be read in my mobile phone. For example, here is my script that splits up one of my favorite books there, Wizard's Bane (which was, indeed, my favorite book right after I graduated from high school), can be split up in to a form that can easily be read with the 5310's limited HTML browser using the following line noise script:


# First we make lots of small files
for a in 0671878468__*htm ; do cat $a | gawk 'BEGIN{RS="<p onmouseover="} {gsub(/\<a (id|name)=\"[^a]+a\>/,"");sub(/^\"PNo\([0-9]+\)\"/,"<p");sub(/\<\>/,"");print}' | egrep -v '^<a' | perl -e '$b=1;$c=sprintf("3d",$b);open(F,"> '$a'_${c}_.html");while(<>){if(/^<p>/){$a++}if($a > 50){$a=0;close F;$b++;$c=sprintf("3d",$b);open(F,"> '$a'_${c}_.html");}print F $_}'; done

# Then we make the naming more sensible
for a in *html ; do mv $a $( echo $a | awk -F_ 'NF == 6 {print "0" $4 "-" $5 ".htm"} NF == 5 {print $3 "-" $4 ".htm"}' | sed 's/.htm//' ); done


Here, the Shell/Perl script in the first part splits up the files in to smaller files; with each file being 50 paragraphs long (the "a > 50" part of the Perl script). The second part takes the filenames and gives them sensible names like 01-001.htm ("Chapter one, part one").

I have used this and similar scripts to put a number of ebooks in my phone, such as a few Baen books, the Bible, and Huxley's "Brave New World" (which my roommate downstairs is doing a book report on right now).

Another thing I'm working on is a theme. The name of this theme is "Pink Planet", and it's a pink version of a Dark Planet mobile theme I downloaded online. You can find my work on this theme here (to give credit where it's due, my progress bar is the progress bar from an iPhone copycat theme that I changed to be purple instead of smoke gray).

Like customizing *NIX desktops in the mid-1990s, a lot of editing by hand of text files is needed to work on the theme properly (you can also use Nokia's theme editor called "carbibde.ui" to edit the themes, but it's more efficient to just use The Gimp to edit images and a text editor to edit the .xml files by hand).

Nokia ".nth" themes are ".zip" files with a different suffix (Phil Katz's legacy is that his ".zip" file format is the standard way to compress and make multiple files available as a single file). To edit the theme, just change the suffix from ".nth" to ".zip", extract the files in a directory, then recreate the .zip file after making your changes. Also make sure all of the files aren't in subdirectories, or Nokia's theme loader won't be able to find the theme.

Anyway, I will post more blogs about some more cool things this small phone--which is about the size of a Snickers candy car (or an iPod nano)--can do later on this week.

Tuesday, November 18, 2008

Review: Nokia 5310 Xpress music

About a month ago, when the peso went down in value but the prices in Mexico hadn't gone up yet to compensate, I got a Nokia Xpressmusic 5310 cell phone to replace my old cell phones that have been slowly falling apart for a while now.

This is a cell phone I have had my eye on for a while. My goal was to get a cell phone that has clear voice quality and that is a quality MP3 player.

The 5310 does well in terms of voice; the voice quality is clear--one family member with hearing problems who had problems with my low-cost LG phone had no problems hearing me talk on my 5310. The only time I recall someone complaining about not clearly hearing me was one time when I was talking to my former neighbor, but she's been having problems with her cell phone so the problem might have been at her end. Even then we were able to communicate without problem after I closed the door and talked very loudly in to the phone.

The 5310 is a very good music player. It has a standard 3.5mm headphone jack; this phone doesn't need any weird adapters for me to listen to music with my favorite headphones. The audio is quite loud when using earbuds, but not always as loud as I would like when listening with low-cost standard headphones which I need to wear while running (earbuds fall out of my ears). This, however, is only a problem when the gym plays music loudly for their dancing and stationary bicycle classes in the evening; in the afternoon, when it's quieter, or when I run at the local park, the music is loud enough.

The one annoyance is that the music player crashes about once every day or two or so. This usually happens when I try to play a new song when playing another song. What happens is that the screen turns white, the telephone is unresponsive for a few seconds, then it reboots the OS. Within 20 seconds, the phone is fine again. Annoying, but not a deal breaker.

This is using version 5.3 of the OS for this phone; The most current version of the OS is 7.1. However, my phone is a TelCel (the largest cell phone carrier in Mexico) branded 5310 and TelCel hasn't updated the OS to the most current version. 7.1, which may or may not fix this issue, also has support for 16gb mini-SD cards.

The cell phone also has a lot of other goodies. It has a basic 2 megapixel camera which is nice for taking snapshots for putting on my personal web pages. The camera is no Nikon SLR, but can take decent pictures. For example, this picture of me and my former neighbor, who I saw a movie with on my birthday, was taken with the camera in my phone:



It also has a stopwatch, with a fairly large time display, which is useful when running without a treadmill to control my pace, and an "egg timer", which is useful for taking my pulse or cooking pasta. In addition, it has the ability to play J2ME video games, a basic HTML viewer, and even Opera Mini.

I can't use Opera Mini, since TelCel charges nearly 50 dollars a month for slow non-3G WAP internet access (TelCel may offer 3G, but my phone doesn't support 3G; just WAP), which is too much, especially since I now have internet at home. But, what I can use is the crude HTML browser for reading books and other documents offline (using the 4gb memory card I have in the phone).

The 5310 uses a slightly older revision of the S40 operating system (S40 5th edition, instead of the newer 6th edition with a webkit-based browser), and the HTML browser is, at best, very crude. It is very slow opening documents more than 15k in size or so, and has limited image and javascript support.

What I have done to be able to read ebooks and other documents online is write up some *NIX scripts for splitting up HTML pages and stripping unnecessary tags from these pages; by making the pages short simple text with the occasional image and little or no java script, I can make the pages readable in my cell phone. I have been enjoying some books from Baen's free library and use the phone to read daily Catholic mass readings in English (so I can fully understand them) while at Spanish-language mass.

In my next blog entry, I will show some of the *NIX scripts I use to split up and make the HTML readable with this cell phone's crude HTML reader.

Thursday, November 13, 2008

How to get mplayer to make mp4 audio streams mp3s

After 30 minutes of struggling with mplayer's pathetic documentation, I finally figured out the secret recipe to convert a file from mp4 (or, probably, any other format mpalyer can grok such as flv, etc) in to mp3 format:

mencoder -of rawaudio file.mp4 -o file.mp3 -oac mp3lame -ovc copy

It would have been nice if mplayer's documentation made this clearer (when I think of "raw audio", I think of a headerless PCM stream of audio, which is a pain to deal with)

Friday, September 12, 2008

MaraDNS 1.3.12 release

Earlier this week, I packed up and uploaded MaraDNS 1.3.12 to the webpage. Yesterday afternoon, I updated the download link to point to the new release of MaraDNS. Today I have updated the MaraDNS.org changelog page and am finally announcing this release of MaraDNS.

The most significant change is that deadwood-2 is updated to Deadwood version 2.02 (a stable release of Deadwood; I have fixed the bugs that made it difficult to use as a non-recursive DNS cache). I also have forwarded ported the MaraDNS 1.3.07.09 bugfixes.

Additionally, I have uploaded MaraDNS 1.3.07.09 to MaraDNS' sourceforge page earlier this week.

Tuesday, September 2, 2008

MaraDNS snapshot update: FreeBSD logging issues resolved

Since someone who is sponsoring MaraDNS a little uses FreeBSD on the server side, yesterday I downloaded VMware player, and a FreeBSD 7.0 image at ThoughtPolice.co.uk.

I was able to reproduce and resolve the problem with "duende" (MaraDNS' daemonizer) not logging messages.

There are two ways of resolving it, one that the sysadmin can implement, and one that I have implemented.

It would appear that FreeBSD's syslog daemon does not log Duende's messages by default. In order to fix this, we first must create a /var/log/daemon file, which will log all of MaraDNS' messages (or any other messages created by a program that logs files with a "facility" of LOG_DAEMON and a priority of LOG_INFO).

Next, we need to edit /etc/syslog.conf to add a line like this:

daemon.info /var/log/daemon

Please be sure to add this line *before* any lines that begin with a '!' character or a '+' character in the /etc/syslog.conf file.

This is the fix for MaraDNS 1.2 and stable MaraDNS 1.3.

For the development 1.3 branch, I changed the Duende code to have it so, when compiled in FreeBSD (#ifdef __FREEBSD__), it logs messages as "daemon.alert" (which is logged in FreeBSD's default /etc/syslog.conf) instead of "daemon.info" (which isn't logged).

I have updated the MaraDNS snapshot to incorporate this change:

http://www.maradns.org/download/snap/1.3/200809/

It took me about a day to find the issue and resolve this; a lot of the work was just getting FreeBSD working in VMware. Things like configuring the virtual interface VMware uses and then figuring out how to ssh to and from the VMware instance of FreeBSD (ssh 192.168.72.128 -l username). Once that was going, it didn't take too long to fix the Duende problem ("man syslog" helped a lot)

Monday, September 1, 2008

MaraDNS snapshot update; ObHack 004a release

I have just released a new snapshot of MaraDNS. The big changes are:
  • Deadwood 2 updated to Deadwood 2.02. This version has a couple of bugfixes that make it a usable thread-free security-aware forwarding cache resolver.
  • BSD updates: This version should compile fine in the various BSDs out there. There is a report Duende doesn't run on FreeBSD; if anyone using FreeBSD wants to fix Duende's code, please sent a patch to the mailing list (UPDATE: Someone is sponsoring fixing this bug, so I'm downloading a VMware image of FreeBSD as I type this)
It is available here:

http://www.maradns.org/download/1.3/snap/200809

I have also released ObHack 004a today. This release is a new stable release and I have no plans to add any new features to ObHack at this point, but welcome bug reports. It can be downloaded here:

http://www.samiam.org/slump/

Thursday, August 28, 2008

Deadwood release: Deadwood 2.02

OK, I have been using the August 21st snapshot of Deadwood without problem for the last week, so it looks pretty stable. That in mind, I have just released Deadwood 2.02. This is a stable release of Deadwood.

Everything words: Resurrections, writing cache to disk, reading cache from disk, compiling and running under Windows without Cygwin (without all of the features, alas), etc.

The "Google problem" isn't fixed, but that will wait for the post-2.02 snapshots (see older Deadwood entries for a description of this problem).

I will make Deadwood 2.02 the version of Deadwood included in the next 1.3 snapshot of MaraDNS.

It can be downloaded at www.maradns.org/deadwood

- Sam

Monday, August 25, 2008

New ObHack snapshot

Saturday night, I had a case of insomnia, so ended up working a little on ObHack. My goal is to make a 004a release around the new month. The only changes I have made since April's snapshots is to integrate some of the upstream Oblige 0.97 changes in to ObHack. In today's release, I have integrated some of the code to allow Doom levels to have the occasional Boss monster be in levels.

It is available at www.samiam.org/slump

Sunday, I ended up hanging out with my neighbor again. At first, she was too busy too see me. So I bribed her by paying for her groceries when we went to the corner store together. She then magically made time for me to visit her; we had mole verde and watched TV together.

Thursday, August 21, 2008

Deadwood update

I have updated Deadwood today to not only check the ID (and port number) [1] for incoming queries, but also to make sure the query is the same (the answer the remote server sends us should match the question we gave them).

It can be downloaded at www.maradns.org/deadwood.

- Sam

[1] The way Deadwood verifies the port is the somewhat hackey way of "connecting" with a UDP socket in the function make_remote_connection(). Once this is done, the only UDP query allowed to reply to the UDP packet we send is one from the same IP and port number.

Wednesday, August 20, 2008

Solving the Google problem

It looks like Deadwood is working pretty well; I plan on releasing a stable version of Deadwood before working on some issues in the wishlist.

One issue is that I need to check the code that validates a reply from the remote server. Right now the query ID and port number are validated; I need to make sure the code always validates the name requested also. This code will be put in get_remote_udp_packet() in DwUdpSocket.c.

I will need to reorganize this function a little; we will get the query from the question section of the reply and make sure it's the same before checking for truncation or what not.

I would like to thank "neeo" for pointing out this issue.

Once I do all that, I want to work on the "Google problem". To make the code as simple as possible, I will code things thusly:
  • I will only look past the first reply if it's a CNAME reply and if there is more than one answer in the answer section.
  • As long as the DNS reply is a CNAME, and there are still answers in the answer section, we go until the first non-CNAME packet, or when we run out of answers in the answer section.
  • We keep a record of the lowest TTL we've seen in a packet. This is the TTL we will use to store the record
- Sam

Monday, August 18, 2008

Deadwood update; ObHack minor update

On Friday, I silently updated the MaraDNS web page to point to the latest releases of MaraDNS which I uploaded two weeks ago. I haven't uploaded the latest release to Sourceforge, but will probably do so this week sometime.

On Saturday, I drove my neighbor to work. I then did some errands, and picked her up after work. She made me some "Russian salad" and we spent the afternoon eating and talking.

On Sunday, my neighbor was busy so I ended up having some time to geek out. I ended up updating Deadwood to remove a couple of Cygwin-only compile-time warnings, and getting "resurrections" to work when Deadwood is unable to connect to the upstream DNS server.

"resurrections" is the ability to pull expired records from the DNS cache when there is no other way to get a DNS record. Basically, it's a DNS record of last resort. If, for whatever reason, it's impossible to get a current DNS record, it's probably better to give the user a possibly outdated DNS record than no record at all. This is called "resurrections" in Deadwood. And yes, if you feel this someone violates the DNS spec or whatever, it can be disabled.

Anyway, resurrections now work either when there's a timeout trying to connect to an upstream DNS provider, or if it's impossible to send a packet upstream. Each case uses different code; I may also eventually add code to use resurrections in the case of being able to connect to the upstream DNS provider, but upstream gives Deadwood a DNS error instead of the reply (the code may actually already do this; I will have to check).

I also have the version number of Deadwood appear when it's started.

In addition, I have made a minor update to ObHack. This backports Andrew's bugfix for monsters or items on crates. The fix doesn't seem to be perfect, but does seem to reduce the number of times monsters or items are inaccessible because they're on top of a crate.

This will probably be my last update to ObHack for a while; to be honest, I currently don't enjoy playing first person shooters so have little motivation to work on this code. I may end up releasing ObHack 004a and declaring it stable. We'll see.

Wednesday, August 13, 2008

MaraDNS support rant

I just had to refuse yet another ask for MaraDNS support sent as a comment here. As a reminder, MaraDNS support requests sent to the blog will not be published.

Also, I finally went to my PayPal account, and, lo and behold, it has a balance of zero. I once, back when I was doing email support, had someone claim they sent me a PayPal donation, and request support, when, in fact, no such donation was ever sent to me.

The only place for MaraDNS support is on the MaraDNS mailing list, unless you have an undiscovered security bug to report.

On more cheerful news, I have gotten a couple of very positive pieces of fan mail sent to me. Fan mail is greatly appreciated, and I apologize for not having a chance to send people sending me positive emails a personalized reply thanking them for their kind words and their support.

Update: OK, I got some small donations from various sources. It would seem Paypal won't let me use these donations until they confirm me. So I'll see if I have a check for my checking account at home I can use for the confirmation (they wouldn't let me confirm by getting their credit card). As it turns out I never got older donations and they were returned to the donor.

Thank you everyone for your donations. I will work on getting my account confirmed in the next day or two.

Tuesday, August 12, 2008

Deadwood minor update

OK, last Friday I had big plans for updating Deadwood.

That didn't happen.

I actually finished another personal project on Saturday. On Sunday, I spent all afternoon with my neighbor, who fed me some really yummy tostadas with beans and cheese that she made. We watched Enemy of the State dubbed in to Spanish (she never saw it before; I never saw it in Spanish) and I showed her how to shuffle a deck and how to play the card game Gin Rummy.

So much for Deadwood getting updated this weekend.

However, Neeo contributed two minor patches; one that speeds things up a little bit, and another that makes sure 0-TTL entires are not cached.

Check it out at www.maradns.org/deadwood.

I will also bump up both stable releases of MaraDNS later on this week with a bugfix; until I make the release official, people can check out the 1.2 stable update and the 1.3 stable update.

Friday, August 8, 2008

Mini Deadwood roadmap

OK, I've fixed the one real bug with real-world consequences I can see with Deadwood. I have added some error correction so that, should the upstream server give us a malformed DNS packet, the packet is discarded and not cached.

I also have code so that, should a zero-length packet (a packet caused by a malformed DNS packet) be in the cache, the offending packet is deleted, and Deadwood tries to get a legitimate packet from the upstream DNS provider.

So now, I have to work on some of the other bugs in Deadwood. The next thing I want to fix is the problem with "resurrections" (using an expired record from the cache should it be impossible to contact the upstream DNS provider) which are not working.

After that, I want to look at the "Google problem" (described in the docs).

In the meantime, Deadwood is a perfectly usable DNS caching server.

Thursday, August 7, 2008

Linux (OK, Ubuntu) sucks: Updates

Linux's update handling was obviously designed by a bunch of kids in their mommy's basement who spend all day on the internet, and whose mommy pays for them to have a high-speed broadband connection.

Down here in Mexico, I don't have an ultra-fast broadband connection. I don't have internet at home either. I'm just a recovering Linux fanboy trying to develop a life beyond sitting around on Slashdot and Digg all day flaming anyone who doesn't think Linux is God's gift to earth.

So, this morning, I booted in the Ubuntu that I installed last weekend (I had some time to kill before dating a girl Saturday evening). Got on the network, then started seeing if I could download the updates to bring my system up to date.

Well, except the connection here at work was seriously lagging (it does that sometimes). The DNS broke down about halfway through the painfully slow process of seeing what packages were available to be updated.

Does the update manager bother to cache the IPs of the site it connected to to get updates? Nope. Is there a usable DNS server on the localhost port in the default install of Ubuntu? Nope. Does Ubuntu come with a usable compiler and development environment so I can compile my own DNS server on the localhost port? Nope, you have to apt-get it.

apt-get is another usability nightmare. You would think apt is smart enough to figure that anyone who wants a C compiler also wants to, you know, compile programs that run. But, no. Once you get gcc, you also have to hunt down and get the "libc-dev" package to compile anything.

So, anyway, this process of looking for updates failed halfway through. I had a list of packages to update, but I have no idea if some critical security update was missed. I had better things to do with my time than to restart the "look at the big huge package lists to see what updates I need" process.

So I booted back in to Windows.

Let's compare this to Microsoft. With Microsoft, the update process is one that is perfectly usable, even on a dialup connection. It will run the updates in the background, with a low priority given to the packets uses for downloading updates. This required something Linux isn't very good at: Coordination with the people responsible for making sure the operating system is up to date and the people who implement the TCP stack is as simple as getting a few people together in a meeting room somewhere in Redmond and talk about the need to have it so downloading updates can be done on a slow connection that is often offline without affecting the user's internet experience.

The update process is one where, if something fails, like DNS dying halfway through the process, the task is stopped where the failure happened, and can be painlessly started again without needing to go back to square one. It's one where downloads can be interrupted and resumed again at any time.

The closest Linux gets is with CentOS, where I can just go here and download the updates by hand. Should the download be interrupted, I only have to re-download one package instead of the whole spiel. Once I download the updates, I then have to, by hand, see which RPM files I have on my system and update them. OK, I can kinda-sorta automate this with something like for a in *rpm ; do if rpm -qa | grep $( echo $a | awk -F- '{print $1}' ) ; then rpm --upgrade --nodeps $a ; fi ; done but that's a little unreliable and buggy.

But even that doesn't hold a candle to Microsoft's update process. Don't get me started on the distributions where the distribution maker one day lost interest in keeping the distribution up to date, making it so the distribution has no security updates whatsoever.

Wednesday, August 6, 2008

Deadwood update

First of all, I'm changing the numbering of Deadwood releases. Instead of giving releases numbers, I'm giving them dates. Today's release, deadwood-Q-20080806 (Deadwood snapshot for August 6, 2008) tries to fix the problem with empty packets by having these empty packets detected before they're added to the cache.

This way, the packets shouldn't ever been seen by the resolver using Deadwood.

It can be looked at on the webpage www.maradns.org/deadwood.

- Sam

Tuesday, August 5, 2008

New MaraDNS support policy

I have a new MaraDNS support policy: The only place where I support MaraDNS is on the MaraDNS mailing list. Details on how to subscribe to the mailing list are on the MaraDNS web page.

All MaraDNS blog comments are moderated, and any blog comments with MaraDNS support requests will not be published.

Thursday, July 24, 2008

Linux sucks: Hardware drivers

Today, I'm going to talk about the sad state of Linux's hardware drivers.

Drivers are something you need to use a modern computer. Computer manufactures, in order to reduce the cost of computers, constantly change the hardware a computer uses. This isn't a problem normally; one simply downloads the drivers for the new hardware and everything works fine.

Well, it's not a problem in Windows. See, Microsoft has made it as easy as possible to make a driver in Windows. Once a driver is made, that driver is guaranteed to work for years. Indeed, most XP drivers work just fine in Vista; Microsoft went to a lot of effort to make sure, when you upgrade the OS, the hardware still works.

This level of stability goes both ways. Installing Windows XP on new hardware is possible; installing a version of Linux from the same era (RedHat Enterprise Linux 3 or CentOS 3) on a new computer is impossible.

The problem is that Linux doesn't have a unified driver model. Drivers frequently break between minor kernel versions and forget about having a new driver work with an older kernel.

This is a real-world problem. I bought a Linux compatible notebook. I very specifically chose hardware that would work with Linux with the minimum of hassle. When Ubuntu proved to be unusable (the wireless driver never worked with a static IP and one day just stopped working altogether), I put CentOS 5.2 on this computer.

The video card finally worked with CentOS; X, unlike the kernel, is pretty stable about their driver API. The sound card doesn't work. I only got the networking card to work by installing a third-party driver; it's an older driver version and has an issue with crashing if I don't send traffic over the wireless interface; I usually have a process ping the gateway router once a second, which causes the problem to not manifest itself.

I wish the core kernel developers would find something more productive to do with their time than constantly changing the kernel-level API and ABI for drivers, breaking drivers and making it nay-to-impossible to backport drivers for new hardware.

This is one area where Windows clearly kicks Linux's ass: Drivers. Drivers for a given version of Windows are pretty much guaranteed to work for at least five years. This laptop has no problem working in Windows XP, a seven-year-old OS; none of this laptop's hardware works with a circa-1991 era Linux kernel (yes, I tried this), since new drivers don't work with older kernels.

Wednesday, July 23, 2008

OK, I just didn't publish two poor arguments

OK, a couple of people tried publishing some rather pathetic arguments trying to argue that Linux is not a commercial failure. Pathetic argument number one:
If you're technically competent enough to use Linux, you're probably not buying Dell computers voluntarily
Bzzt. Argumentum ad hominem. Please play again. Let's see. I'm technically competent enough to use Linux. Hell, I'm technically competent enough to create my own Linux distribution. I use a Dell. They're fine computers.

And a couple of dumb arguments from another person:
However, calling Linux a "commercial failure" with "less than 1% marketshare" is wrong.
Ok, nice assertion. Does this person have any stats to back up their argument. Let's see:
The stats for the sites that I work with show between 5% and 7% Linux market share
Bzzt. Anecdotal evidence. I specifically asked the fanboys to not post that kind of evidence; I wish fanboys would, like, actually read my blog entries before trying to comment.

This particular person posted some other arguments:
You can't really point to Dell stats until the mainstream customization form has a radio button for Ubuntu for $50 less than Windows
Err, if a significant number of users wanted Linux on their computers, the Dell Linux program would have been successful enough for them to do that. The fact of the matter is that Dell doesn't want to deal with the support nightmare of average users finding this (to them) monstrosity called Linux on their computer because they clicked the wrong button. This is why Dell makes people go out of their way to get Linux.

It's difficult to buy a Toyota Prius. You have to get signed up and go on a waiting list to get one. The wait can sometimes be months. Despite this, the Prius is extremely popular. To get a Dell with Linux, all you have to do is go to go to this page and order your Dell from there. Much easier than getting a Prius, yet Linux computers aren't exactly selling like hotcakes.

This user also pointed out that Dell specials don't exist for Linux computers. Not true; a year ago there was a Dell special that existed for Windows, not Linux, on the 1420, and it even made it to the Slashdot front page. So much stink was raised about it, Dell recanted and made the special available for Linux users also.

Anyway, if you want to post your fanboy arguments, please do so in the Linux haters blog. Any other posts trying to argue that everyone is secretly using Linux instead of Windows on the desktop, or that more than 2% of desktop users use Linux will not be published. Save your rant for the Linux haters blog.

My next article will be about the reasons why Linux has failed on the desktop.

Tuesday, July 22, 2008

Deadwood update

OK, as of today I have ended my break with MaraDNS.

I have just updated Deadwood, which is the next-generation recursive core for MaraDNS. There is a bug where sometimes an empty packet would get in to the cache. This is a big deal; an empty packet in the cache will cause Deadwood to be unable to resolve the name in question until the packet is flushed from the cache.

The update to Deadwood doesn't resolve why these empty packets get in the cache, but works around the issue by making sure any packet from the cache is not empty. Cached empty packets are deleted when seen and then the packet is re-cached.

This resolves the problem I have seen with Deadwood this last week where, every now and then, I'm not able to go to a web page.

In addition, I have revamped the signal handling code so that, when stopping Deadwood with Control-C, Deadwood will write the cache to disk before terminating. This resolves the annoyance of having to open up another windows and send Deadwood a signal if I want the updated cache written.

It can be downloaded here:

http://www.maradns.org/deadwood

- Sam

Thursday, July 17, 2008

Another Deadwood bug

It would seem Deadwood sometimes caches "null" entries; these are entries that don't have any actual answers. I should add a check for that.

Maybe this weekend.

Sunday, July 13, 2008

Linux is a commercial failure

If you buy a Dell computer with Linux preinstalled, you get two benefits:
  • The computer is about $50 cheaper than the equivalent Windows computer
  • The computer's hardware is known to work with Linux
Despite this, for every Dell computer with Linux preinstalled sold, there are some 150 Windows computers sold. Yes, guys, less than 1 percent of people who purchase Dell computers chose to use Linux instead of Windows. [1]

What does this mean? It means no one wants to use Linux on the desktop.

Now, I am aware how Linux fanboys think. Before you try and post the usual "But those statistics are wrong" spiel, other statistics say pretty much the same thing; browser stats at web sites; Loki's failure; etc. If you want to question these statistics, do so with solid evidence showing that more than, oh, 5 percent of desktop users using Linux. And don't waste my time with "Me and my three buddies all use Linux" antecedents. [2]

So, in my next articles, I will talk about why it is, some 14 years after Linux 1.0 was released it has made no headway on the desktop.

- Sam

[1] The volume of Linux computers purchased is still some 40,000 computers purchased per month.

[2] Comments are moderated and regurgitations of these spiels will not be approved. Come up with something original, guys.

Thursday, July 10, 2008

Linux Sucks: Clarification

I noticed that my last Linux sucks article wasn't clear about how I borked my Linux install, so I will explain what happened more clearly:

I installed CentOS 5.2. I like a distribution that works and will continue to work, complete with security bugs being patched, without having to reinstall the OS every 6 months. You know, like Windows. Also, I used RedHat from 1997 until 2004, and a combination of Fedora and CentOS from 2004 until mid-2007, so I'm more comfortable with an RPM-based distribution than a .deb-based one, since, among other reasons, Debian packagers are known to add security bugs to programs.

I then went to atrpms to get drivers for my wireless card. These RPMS are designed to work with CentOS/RHEL, and I only installed the drivers for my wireless card.

Anyway, the atrpms wasn't what borked my system.

What borked my system was going to mirrors.kernel.org, downloading the CentOS updates, and starting to install them by hand. You know, like how one updated RPM-based distributions for years.

It would have been fine if I had RTFM and did "rpm -e --allmatches --nodeps"; however I thought fixing this with rpm was impossible because "rpm -e -f" doesn't do the right thing ("-f" here really ought to be treated like "--allmatches --nodeps". Maybe one day I'll submit a patch).

Once I had the xulrunner rpm corrupting my database making "yum update" impossible, I did a Google search on various terms ("Same RPM installed twice", "Corrupt RPM database", etc) and the answers I saw told me to edit files in /var/lib/rpm by hand. So I did that, which completely broke things and forced a reinstall of CentOS.

And, oh, I do have some things in /usr/local/bin. Among other things, version 1 of the FVWM window manager and version 3.96 of the Lame mp3 encoder (which I feel sounds better than Lame 3.97). And, no, that isn't what caused the problem.

- Sam

Wednesday, July 9, 2008

MaraDNS is immune to the new cache poisoning attack.

MaraDNS is immune to the new cache poisoning attack. MaraDNS has always been immune to this attack. Ditto with Deadwood (indeed, people can use MaraDNS or Deadwood on the loopback interface to protect their machines from this attack).

OK, basically, this is an old problem DJB wrote about well over seven years ago. The solution is to randomize both the query ID and the source port; MaraDNS/Deadwood do this (and have been doing this since around the time of their first public releases that could resolve DNS queries) using a cryptographically strong random number generator (MaraDNS uses an AES variant; Deadwood uses the 32-bit version of Radio Gatun).

The only issue is Windows users not using Cygwin; please make sure random_seed_file points to a text file with secret that is at least 16 bytes long.

Monday, July 7, 2008

Linux sucks

Linux sucks.

I have had nothing but problems with Linux. I installed xUbuntu 8.04 (or so) 64-bit. It was OK for a while, but all of the network cards stopped working recently.

No big deal; I was in the process of trying out CentOS 5.2.

So, I installed CentOS 5.2. The video card worked; the sound card and wireless card didn't work. I was able to find some RPMs on the internet for the wireless card, installed the RPMs, then tried to run "yum upgrade".

It didn't work.

It would seem that, for some reason, the same rpm was installed twice. It's impossible to erase an rpm that's installed twice because rpm complains that you're referring to more than one rpm package. "rpm --rebuilddb" doesn't fix the problem either.

So, I tried editing /var/lib/rpm/Packages and renaming one of the two RPM packages. Unfortunately, the version of vi I was using decided to convert the character encoding of the file, and I didn't make a backup. So I lost my entire rpm database.

So now I have to reinstall the OS from the ground up.

Linux sucks.

Wednesday, July 2, 2008

Unbound: A new DNS server

Just today, I became aware of a new DNS server, Unbound. This DNS server appears to come from the same group who gave us the authoritative-only NSD a few years ago; basically this is, if you will, the recursive half of NSD.

I haven't updated my list of DNS servers to incorporate this DNS server, but am impressed the DNS server got mentioned both in Infoworld and on CNN's web page.

Monday, June 30, 2008

A minor feature I should add to Deadwood

A feature I should add to Deadwood: When it is reading the cache from disk or writing the cache to disk, it would be nice if there was an optional progress bar.

Shouldn't be too hard to implement.

- Sam

Wednesday, June 25, 2008

Final release of Schoolbook Zillions file.

As I mentioned in a blog entry from a year ago, I have had a lot of interest in chess variants, and have worked on and off on making a "Zillions" file for a variant I "invented" over two years ago, Schoolbook Chess.

Well, this variant never caught on. Only two or three games of this variant have been played where I wasn't one of the players of the variant, and only about two dozen human-vs-human games of this variant have ever been played. I went to a lot of work on this variant; I used computer-vs-computer games (having the computer play itself a number of times, using a couple of programs that can play Schoolbook) to come up with a number of mating positions. I did some opening analysis. I added some annotated games. No one was interested; chess players are averse to the idea of changing the rules of chess, and people in the chess variant community are too interested in their own "invented" variants to pay serious attention to other people's variants.

So, I am putting Schoolbook chess to rest. I have made a final version of the Zillions file for Schoolbook; I added four more mating positions (with one exception, all of these are from computer-vs-computer games played in August of 2007), made a PDF file of all 20 total mating positions, and this will be my last release of the Schoolbook zillions file.

The file is available here:
http://www.samiam.org/chessvariants
Now that this is released, I am declaring Schoolbook dead. I have other geek projects (MaraDNS, ObHack) that have generated more interest and that I contribute more to the world working on.

- Sam

Tuesday, June 24, 2008

I had dinner with my neighbor

My lovely neighbor, who I have mentioned here before, made a really wonderful dinner last night of broccoli with cheese, lettuce, beans, tortillas, extra-hot salsa verde, some yogurt on the side, and lemonade to drink.

Over dinner, we had some really enjoyable conversation in a mix of Spanish and English.

She's a really close friend. I'm happy. :)

Saturday, June 21, 2008

Review: LG KP 115a

The LG KP 115a is a little-known cellphone; I have seen very little information about it posted on the internet. It is a small, low-cost (About $60 US, including activation and a number of minutes on Telcel' s network) cell phone with mp3 ans image viewing support (but no camera). It appears that this cell phone is only available in Mexico; LG has no information about this phone on their web page.

The built in mp3 player is reasonably good; the majority of songs play without problems, but there are noticable glitches with a handful of songs I have encoded from my CD collection using the LAME mp3 encoder. The most annoying glitches are in the song La fuerza del destino by the 1980s Spanish-language group "Mecano" ; no matter what LAME settings I used (noshort, no joint stereo, only joint stereo, etc.), I was unable to make this song play without noticeable glitches and places where the singer sounds like as though she is singing underwater.

The phone also has a FM radio that my friend Sinai is using right now to listen to music. It allows one to listen to music, but (probably because of pressure from the RIAA) doesn't have the ability to record from the radio.

The phone has a basic voice recorder; it can only record to the phone' s memory. Since the phone has very limited memory (measures in kilobytes, not megabytes), it can only record about three minutes of voice. Fortunately, it is possible to move voice records from the internal memory to an external SD memory card.

The built in image viewer is basic; it has problems with large images and it' s best to make images small 128x128 jpeg files for best results, so I took a number of pictures of family and friends and converted them down to be small jpeg files so I can show pictures to my friends.

The KP115a has a slot, in the back under the battery for putting in a MicroSD memory card. Telcel' s official position is that you can' t put a MicroSD card larger than 1gb in this phone. This is incorrect: The phone works fine with 2gb SD cards, as long as they are formatted with FAT16. The directory hierarchy is unusual; music has to be placed in a folder named " Sounds" off of the root directory and pictures in a folder named " Images" off of the root directory. It is possible to have sub directories, but the mp3 player will only add mp3 files in the "/Sounds" folder to playlists. You can play mp3s without using playlists, fortunately, and even have the mp3 player repeat all of the songs in a single folder. To change folders requires user intervention.

There is no USB support for this phone; the only way to upload or download files is to remove the microSD card and put it in your computer. The phone doesn't use standard headphones and it is not possible to buy an adapter for standard headphones in Mexico, although they do seem to exist on the internet. The built in headphones earbuds of questionable value; it is hard to hear songs on a noisy bus unless the song was mastered very loudly (I actually reprocessed my favorite song, Glyder by Jonn Serrie, to be as loud as possible so I can hear it on the bus)

Compared to my old Nokia 6010, the voice quality leaves a lot to be desired. With one family member who lost a lot of their hearing during military service, he could not understand me until I turned on the built in speaker phone and talked as loudly as possible in to the phone' s microphone. Talking to my friend Ivonne on streets or other places with background noise is problematic, requiring me to put the phone up against my ear and to have her sometimes repeat herself for me to understand her. Reception is also more spotty than the reception on my old Nokia.

So, the LG KP 115a is a basic-low cost cell phone with mp3 playback capability. You get what you pay for, basically, but this is a reasonable option for having as a second phone number or as a backup cell phone that can play mp3s on the side. It can be used as a primary cell phone as long as the majority of one's calls are done indoors or other quiet locations, and the people one has conversations with have good hearing.

Friday, June 20, 2008

Another Deadwood bug

Another Deadwood bug I have found is that the chroot_dir dwood2rc parameter doesn't work in Cygwin (nor mingw). Also, the default rc file location should be "/etc/dwood2rc" instead of "dwood2rc" in the current working directory.

Like I said before, no show-stoppers, so these bugs won't get fixed until mid-July (or later).

Tuesday, June 17, 2008

Deadwood bugs to fix

OK, while I'm still on break from MaraDNS, using Deadwood for the last day or so has popped up a number of bugs:
  • The Google bug. Google.com's DNS reply is in the form "Cache for one day: Google.com is a CNAME for www.l.google.com; Cache for one hour: www.l.google.com has the ip 192.168.1.55" Deadwood 2 only looks at the first TTL for a DNS packet and use that to determine how long to cache a reply; Deadwood 2 should look at the first 2 (or first N) TTLs and cache the entire reply for the minimum TTL Deadwood sees (right now Deadwood 2 caches Google.com for one day when it really should only cache it for one hour)
  • "Resurrections" (being able to use expired entries when it's impossible to contact an upstream server) are broken.
  • There are a number of '-Wall' warnings when compiling it with GCC 4 with '-O3' or in MinGW's gcc compiler.
  • A keyboard interrupt signal should be caught, writing the cache to disk when stopped from the keyboard.
So, Deadwood is a little buggy. But no show stoppers. My plan right now is to not touch the code (except by using it) until mid-July, then start work on cleaning up Deadwood.

Monday, June 16, 2008

Deadwood 2.00 released

Deadwood (I chose this name because it's a term in one of my favorite games, Gin Rummy, for cards that don't yet help you win) is the code that will eventually become MaraDNS' next-generation recursive resolver.

Basically, I wrote MaraDNS' recursive resolver back in 2001, and learned a lot about how DNS and recursive resolution works. This recursive resolver was never meant to be permanent; even when I was designing it, I made some decisions based on me rewriting the resolver once I understood how DNS recursive resolution really works.

For example, I chose to use threads to make implementation of the resolver easier. In addition, CNAME support is, at best, a hack in the recursive resolver.

Well, by early 2002 the resolver was working and I knew I was going to have to rewrite it. I even had plans to rewrite the recursive resolver as far back as 2002.

Well, MaraDNS being an open source project and all, things took longer than planned. I went back to college, put MaraDNS on the back burner, graduated from college; updated and released MaraDNS 1.2 (with the same old hackey recursive resolver) in late 2005 after graduating from college and before getting steady employment. Then I got employed again and MaraDNS went on the back burner again.

In the meantime, last fall I hadn't had steady employment, so I started work on the new recursive resolver. Since I enjoyed playing gin rummy, I named the new resolver "Deadwood". After three months of work, I had a fully functioning non-recursive non-threaded caching nameserver, with far cleaner code and some features MaraDNS doesn't have, such ipv6 support (Thanks to Sarton) and as the ability to write the cache to disk.

Well, this was essentially ready to go in December, then life came back and I was so busy with work (and developing a friendship with my neighbor who is now a very close platonic friend) I didn't have time to answer MaraDNS support mail, much less get Deadwood polished up.

Well, I finally took care of the support mail problem by just cutting off all email support for MaraDNS, so I can concentrate what little energy I have these days for MaraDNS development on polishing up Deadwood.

This weekend, I fixed a bug in Deadwood that made writing the cache to a file difficult, and also got the code to compile in MinGW (Windows without Cygwin) again. I have verified that Deadwood 2 works both in Windows using Cygwin, and in Linux as a native binary. Deadwood should also work as a native Windows binary, but without the ability to read and write the cache to a file (I need to figure out how to do signals in Windows).

I have made a tarball of Deadwood 2.00, which has full documentation and can be downloaded here:

http://www.maradns.org/deadwood

Now that I've done that, I'm going on an official break with MaraDNS. I hope to return soon to continue work on Deadwood. Please don't bug me with MaraDNS issues unless you have found a security bug in MaraDNS

Friday, June 13, 2008

avahi-autoipd is evil

There is a process in Ubuntu called "avahi-autoipd" that is absolutely evil. What this process does is go out of its way to sabotage any attempt to have a static IP in Ubuntu. I've configured /etc/network/interfaces to use a static IP. avahi-autoipd ignores this configuration. I then had to use "ifconfig" and "route" to manually give my computer a static IP. avahi-autoipd then, 90 seconds later decides I don't want a static ip, erases my static ip and tries to get a DHCP ip (which doesn't work, since there isn't a DHCP server).

I tried killing the avahi process. Some evil daemon then ressurects the avahi process so that it can remove my IP 90 seconds later.

I finally did a "sudo rm /usr/sbin/avahi-autoipd" and rebooted the computer; the monster that decides I can't have a static IP is finally dead.

I'm sure there's some exotic recipe to make avahi behave. I don't care. I have better things to do with my time than to configure some new fangled daemon that doesn't work. The daemon should not be disabling static IPs every 90 seconds, end of story.

Now, I'll see if dhcp works. If not, I'll compile the dhcp client that comes with Busybox, which is, at least simple and not prone to failure.

My other Ubuntu rant: Making backups to a DVD-RW with a UDF filesystem is dog slow. We're talking hours to copy 50 megabytes of data. On a DVD-RW that I could burn in 15 or 20 minutes. Why is this so dog slow?

Linux sucks.

Monday, June 2, 2008

MaraDNS email support suspended

Due to a hectic work schedule, I no longer have time to personally answer MaraDNS support email. I apologize for any inconvenience caused. The only MaraDNS email I will answer is security bug reports.

If you wish help with MaraDNS, please join the MaraDNS mailing list. To join the mailing list, send an email to list-request@maradns.org with the word "subscribe" in the subject and body of the message.

If you have a security report, please still send me an email.

Friday, May 9, 2008

It's has been a very busy week

It has been a very busy week for work and what little free time I have has been spent on developing my friendships (that neighbor of mine is now a pretty close friend of mine; we hang out a lot and what not). I hope to have time to answer MaraDNS email next week. Actually, to be honest, I hope to not have time to answer MaraDNS mail next week because I'm hanging out with my neighbor.

Wednesday, April 30, 2008

MaraDNS update

I have four unanswered MaraDNS support mails in my mailbox. I hope to be able to get to them tomorrow. I just am in a really bad space right now and am in no mood to answer MaraDNS email. :-(

Tuesday, April 29, 2008

MaraDNS update

I have answered a good portion of the MaraDNS support mail that has been backlogged all month. I hope to answer the rest tomorrow afternoon.

I apologize for the delay; I will try not to have such a delay the next time.

Monday, April 21, 2008

I'm really sorry for the delay replying to MaraDNS email

I'm really sorry for the delay replying to MaraDNS email; I just have been too busy at work and only finally got a bit of time today to reply to my personal email.

However, I did have some free time Sunday night (at home, no internet at home) to make a couple of minor updates to ObHack.

- Sam

Tuesday, April 8, 2008

ObHack update; MaraDNS support status

I've done a lot of little updates to ObHack:

Oblige.lua updated to about over 40,000,000 usable seed numbers instead of only 500,000 or so usable seed numbers (instead of incrementing an index and resetting the RNG every time we can't build a level because we couldn't place a stair or what not, we just don't reset the RNG)

x_heretic.lua tweaks: E6 now has ten, not three levels, in a loop. This happens to work with Deng 1.8.6, but may cause problems in other source ports. E6 is not clearly defined, and I like the loop of levels (Note: The original DOS Heretic crashes when you enter E6M5)

We now never have the firemace in levels (it's a poor weapon for anything but deathmatch, and there's issues with the firemace not appearing). I also tweaked monster.lua to allow a non-weapon to be placed as a "weapon"

E5 is now a mish-mash of themes, instead of just the very loud "garish" theme. Slight tweak to outdoor "Pharoah" theme to make it look nice (no more ugly grey-and-red; now it's a much nicer yellow-and-red)

Planner.lua improvement: If a level is too small, we take one of the quests in the level and make that quest a little longer; this stops ObHack from slowing down when a level isn't big enough.

I have also tweaked things so "puzzles" affects the maps, even at the tiny and small sizes. Deciding number of keys/switches/etc in small levels redone; fixes "no weapons" bug for small levels.

Tiny levels tweaking: Quests will not be longer than three units (this guarantees that tiny levels are smaller than small levels). Tiny levels now always have two things; either one puzzle and one goodie (weapon/item), or two goodies.

Tweaked rare: Now, in a map with "rare" outdoors, there will be no more than two quests that are outdoors

ObHack is available here



I have answered a simple RTFM question someone asked me about MaraDNS. This leaves me five more emails to answer, which I have downloaded and will hopefully answer this week. We'll see.

Wednesday, April 2, 2008

ObHack and Solstice updates

I have updated Solstice; not only have a refined the bitmap rendering of the font, I have also improved the metrics of the italic version of the Solstice font. The metrics aren't perfect--getting perfect metrics is impossible without resorting to kerning--but they look better than they did before.

My update can be downloaded here



I have also updated ObHack. Tiny and small levels now have more goodies to pick up; small levels also sometimes have both a key "quest" (find the key; open the door) and a switch "quest". Before, tiny and small levels always had one item to pick up, and small levels always had precisely one switch or key quest. Now tiny levels can have one or two items (but no switch/key quests); small levels can have up to three items.

The ObHack levels generated are not any bigger; I have tweaked things so that the tiny and small levels now have fewer "cells" (places about the size of a room) without any items or keys/switches. I have also reduced the number of non-item cells in medium sized maps a little.

It can be downloaded here



The MaraDNS support email is piling up. I haven't answered MaraDNS email for over a week. I apologize for the delay getting back to people.

Friday, March 28, 2008

MaraDNS small update

I just dug through my email (there were a couple of spam runs that I had to remove all of the messages of; my dynamic email address makes doing this easier but spammers these days use botnets to grab IPs from web pages) and found four MaraDNS support requests. So this ups my total number of unanswered MaraDNS support questions to five. I hope to have time to look at these emails next week.

Quite frankly, I'd rather look at my pretty neighbor that I met last night who is a college student and seems to like me. We should be hanging out again Sunday afternoon. :) :) :)

Wednesday, March 26, 2008

Solstice font update

I have been quietly uploading updates to Solstice this week; the main work has been finishing all of the accents and other non-ASCII characters at all seven sizes. I have finally finished that work. Also, the other day I updated the 16-bit size of Solstice so that it's easier to read, as you can see here:



Here, from top to bottom, you can see the 10-pixel, 12-pixel, 14-pixel, and 16-pixel sizes of the bitmap Solstice font. I feel the 12-bit version needs some work; it has too many serifs, which makes the font hard to read a lot of content with for extended periods.

I have also updated the vector fonts; I have made the version number 0.2 in all faces except the mono face (I'm not going to touch the mono face until all of the proportional faces are done), and fixed a bug where the italic face had a significantly larger ascent (was a taller font) than the other typefaces.

It can be downloaded here



I have one (possibly more; I haven't checked the inbox for samiam.org for a couple of days) pending MaraDNS support email to answer.

Monday, March 24, 2008

MaraDNS 1.3.11 released

I have just released MaraDNS 1.3.11. This is a development version of MaraDNS with new, untested features. The big change I have held back on is Sarton's new build scripts; I want the new build scripts to act just like the old scripts; right now I can't see the commands to compile the various programs, just a generic "Compiling" note.

I have downloaded the GNU Make documentation today, to see if there is anything I can do to change this, so Sarton's fancy build process can be a part of MaraDNS.

A lot of other changes have made it in, however. Download it here and read the changelog here.

Wednesday, March 19, 2008

Solstice font and MaraDNS update

I have just uploaded an update to the Solstice font here.

There are two or three unresolved MaraDNS issues; I apologize for the delay; I've been busy with work and haven't had a chance to look at Mara for a while now.

Tuesday, March 18, 2008

Solstice font update

I have updated the Solstice font; the rendering of the basic Latin letters in the "roman" form of the font is essentially done at this point:



Today's snapshot can be downloaded here

Monday, March 17, 2008

One font to rule them all

I have started a new Font, called "Solstice". This is my second attempt to make "one font to rule them all". In other words, I want to have a font that is good enough to be used as the only font on a small "embedded" Linux system. This is useful for mini-Linux distributions, for running Linux on older computers, and for having a single general-purpose font suitable for on-screen reading, editing files, and printing.

In 2007, I attempted to make a screen-readable version of the Bitstream Charter font. This project was, looking back, unsuccessful. Bitstream Charter is a font for laser printers; it is not a screen font. In particular, making it legible below "14" in size is nay-to-impossible.

I finally threw in the towel; my mini-linux system that needs a good screen font uses a bitmap conversion of "Verdana" I call "Vorpal". While this is legal in the USA, the legal status in some other countries is still up in the air.

This time, instead of trying to make a font optimized for 300dpi printers screen readable, I'm making a mostly-libre font designed for the screen one that looks good using old-school non-anti-aliased font rendering technology. The goal is to have a font that looks good on the screen, when printed, and, ideally, can be used as both a monospaced and a porportional font.

I am basing this font off of DejaVu Serif, which in turn is derived from Bitstream Vera Serif. The license is not as good as the OFL; in particular, I have some concerns about embedding a font with this license in PDF files. The license states "The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces." Since the preposition "in" instead of "with" is used here, there is some ambiguity about whether, when making a PDF file embedding this font, one merely has to include the license in the PDF file (this is fairly easily done), or whether the license has to be in the part of the PDF file containing the font information (which is more difficult to do).

Right now, I have taken the font, and had Fontforge make bitmap renderings of the font at various small sizes. I am now, by hand, making those low-resolution renderings as readable as I can at various resolutions. Since Bitstream Vera is a screen font, this is easier to do than it was with Bitstream Charter.

I am doing this with Vera Serif instead of Vera Sans because:
  1. Vera Serif is about as readible on the screen as Vera Sans.
  2. Vera Serif is easier to read when printed out.
Here are my current plans:
  1. Make bitmap renderings of Serif Roman at 8,9,10,11,12,14,16 pixel sizes (current work)
  2. From the Verily project, make a monospace version of Vera Serif that is both a screen and a printing project. This will only be rendered at 12 pixel size on the screen (and will replace misc fixed when done)
  3. Make an oblique version of Vera Serif that only uses the "a" and "f" glyphs from "DejaVu Serif Italic"; I feel the quality of "DejaVu Serif Italic" doesn't have the same quality as "Vera Serif"; so my oblique version will just mostly be a slanted version of V.S.
  4. Make bitmap renderings of Serif Italic at 10,11,12,14,16 pixel sizes.
  5. Make bitmap renderings of Serif Bold at 10,11,12,14,16 pixel sizes.
This font will only exist in Roman, Bold, and Italic forms, and only in Roman form at smaller screen resolutions.

My work on this project can be downloaded here. In particular, unlike my Charter-derived font, this font is, even without full hinting, about as readable as Verdana on the screen. This is even true in Windows XP (Vista is nice because just about any font looks decent on the screen; older systems like XP need fonts made for the screen).




This project is part of my project to update MOAM-CD. I plan on holding on to MOAM-CD 20080217 for a while; it is "good enough" for the amount of time I actually need to use MOAM-CD these days (almost never; I lug my laptop around with me, which seems to be helping develop my muscles, making me more attractive with the latinas). The main change I did was to make as much room for music as possible, since the most common use for MOAM-CD is to put it in my roomate's stereo and listen to music I relax to.

There are bugs to be fixed in MOAM-CD, but nothing I can't work around. For example, RXVT seg faults and dies when trying to use aspell in terminal mode; the workaround is aspell -a < file | grep '^&'

Tuesday, March 11, 2008

I got Dillo to compile in Cygwin

I got Dillo to compile in Cygwin. Basically, I removed all dangling references to i18n libraries (I don't use them anymore), and disabled SSL (which doesn't like to compile. Maybe if I added the OpenSSL development libs). I haven't gotten dpid (a daemon Dillo uses for various purposes), but Dillo works for very basic web surfing. Useful for people who want to make sure their web site looks sane in Dillo, or in my case, making sure my up-and-coming bitmap font project looks good when using Windows.

It can be downloaded here (750k compressed tarball)

I have one pending MaraDNS support email to answer.

Thursday, March 6, 2008

All MaraDNS support email answered

I have just answered the last pending MaraDNS support email someone sent me (I couldn't reproduce the issue, and they didn't send me their mararc file, so I pointed out the MaraDNS contact page).

If you recently sent a request for MaraDNS support, and it has not been answered, please resend it; the mail has falled through the cracks.

- Sam

Friday, February 22, 2008

Why Deadwood requires 64-bit integers

Since I just got an email pointing out that my Deadwood code would be more portable if it didn't use 64-bit integers for the timestamp, I will explain why this is necessary:
  • 32-bit machines can handle 64-bit ints with most compilers. Indeed, the C99 standard mandates 64-bit int support.
  • The only 64-bit int used in Deadwood is for the timestamp.
  • I don't want to contribute to the Y2038 problem our children will have to deal with.
  • The file format used for storing the DNS cache to a file uses these 64-bit timestamps.
64-bit integer support is mandated by the C99 standard. It's been nine years; I don't think it's worth my time to make my program compatible with broken compilers that don't follow a 9-year-old standard.

Wednesday, February 20, 2008

Just letting people know there are two MaraDNS support emails sitting in my mailbox. I hope to have a chance to answer them in a day or two.

- Sam

Monday, February 18, 2008

ObHack and Dillo updated

Enhas has made some tweaks to ObHack, which can be looked at and downloaded here

I swore off making updates to Dillo last week; however I changed my mind. I have cleaned up the crude utf8-to-latin1 conversion used by my version of Dillo so that it works for most latin1 characters represented in UTF-8; I have also added basic support for the names of the suits in cards (The " Clubs" symbol becomes a " C" and so on).

In addition, I have removed that annoying Bug Meter; I use Dillo for basic web surfing, and I' m not one of those people who gets a smug feeling knowing a given page has 53 or however many errors in its HTML. If you want it back, just define BUG_METER when compiling my version of Dillo.

My version of Dillo can be downloaded here (750k .tar.bz2 tarball). It works pretty well; I using it right now to post this blog.

- Sam

Friday, February 15, 2008

ObHack snapshot update

Enhas has contributed some bug fixes and other changes to ObHack, which I have just put together in to today's snapshot, available here.

Have a good weekend everyone!

- Sam

Thursday, February 14, 2008

OK, here are my ugly hacks to Dillo-i18n

The ugly hacked version of Dillo-i18n that I hacked together so I would have usable accent support in my mini-Linux distribution can be downloaded here. Note that the code is ugly. For example, the utf8-to-latin1 code is basically broken; it makes certain Unicode quotation marks more barable, but does not correctly convert Spanish accents from utf-8 to Latin 1. Looking at the code, I can see what I did wrong and could even fix it if I were so inclined, but I'm not.

The purpose of this version of Dillo is to have a simple web browser that is usable for my main tasks (Reading and writing email with Gmail; publishing blog entries); since Gmail doesn't use utf-8 for accents when the HTTP "accept charset" specifies to use Latin-1 (you would be amazed how many web sites ignore the accept charset, such as Myspace and the Wikipedia), this bug isn't important enough for me to fix.

Also, the mini-CD also includes the graphical version of Links from Twilight labs, which completely correctly supports accents (but, alas, doesn't allow me to write emails with accents).

I actually almost never use this mini-CD; I have to lug around my laptop for my job, so use that to access the internet; the CD is only used for my afternoon and evening meditations. Even if I did use it more, not having Firefox saves me from having to update the CD every month or so.

Also, it's possible to use a file on a USB memory stick as the root filesystem; this allows me to have a larger file than is possible with a business card CD, complete with multiple updated web browsers (Firefox, Konqueror, a Webkit browser, a flash player, etc). So, this mini-image will only be used when I don't have that file on a USB memory stick.

Anyway, I'm done with MOAM-CD. It was an interesting experiment in how little I could make a basic web browsing system. With my increased work hours, I usually have my laptop with me, and don't often need to use this mini-system to get online. It's still useful for cyber-cafe use when I'm downtown on the weekends, and the occasional day when I don't have my laptop, but, in truth, trying to keep it updated is a real pain; the Firefox security updates often times break more stuff than they fix. It took me two or three days to hack Dillo to have usable accent support, time I could have spent relaxing, translating documents, or with my friends.

So, barring my life getting boring again or a critical security hole, I will not update MOAM CD again. It was a fun project.

Wednesday, February 13, 2008

Yay! I got Dillo to completely work in my Mini-CD distribution

MOAM-CD is a project I have been working at on and off for a while. I realized recently that I don' t use MOAM-CD that much any more, so my efforts here have been making a version of MOAM-CD that I can burn and forget about. Also, since I use the .mp3 files on the CD for meditating, I wanted to be able to add more songs.

Hence, I have gotten rid of security-hole-of-the-month-club Firefox, and am now using a slightly hacked version of the latest i18n version of Dillo. Ironically, the i18n part of this version was broken, but it has other cool features the last (and probably final) 2006 stock release of Dillo doesn' t have, such as tabs, and the ability to actually use Gmail to read and send mail.

The i18n part was broken; I got rid of all of the iconv-using code and replaced it with a very basic UTF-8 ro Latin-1 converting code that won' t convert text that is already Latin-1. I also changed the HTTP code to not send an " Accept charset" of UTF-8, but send iso 8859-1 instead. And Dillo is run in a wrapper script that sets the environmental variable LANG to " es_MX" (Mexican Spanish) before running Dillo.

Once I did all this, everything worked like a dream for the two languages I speak: English and Spanish. I can not only see all of the accents correctly on web pages, I can also write and send emails that have accents in them.

In addition, there is some hackey code that converts UTF-8 quotes in to ASCII quotes, so I can read pages that use those ugly quotes, such as the WEB Bible.

So now, I have an image that I will burn in a day or two (I' m testing it with a burned CD-RW) that has a web browser I don' t need to update every month, and that I can use for using Gmail and posting blogs.

And, if I do need Firefox, I have changed things so the CD can use a file on a USB memory stick as the root filesystem, allowing me to update Firefox without needing to burn a new CD. So, I get the best of both worlds.

OK, I' ve been obsessed with Dillo for too long (two or three days). Time to go home, text my friends, and rest.

I hope to post some files in a day or two.

Monday, February 11, 2008

ObHack snapshot update

I did a lot of work on ObHack this weekend. Mainly, I have completely revamped the Heretic theme.

Previously, ObHack had only one there for Heretic: A castle theme. I felt kinda silly being in a castle in E2 (Hell's Maw), so I finally fixed things so Hell's Mall looks like Hell, The Domes (E3) are quite as castle-looking as E1, E4 has a very sandy, Egyptian look, and E5 has a garish surrealistic.

If only one episode is made, a theme from E1 to E4 is randomly chosen (E5 is a little far-out to have as the only theme in a game)

I have also made some changes to the pop-down menu: It's now possible to have "rare" outdoors, that isn't 100% indoors, but has less outdoors than "some" outdoors. In addition, there are two new game types: Deathmatch without exits and a menu selection for Capture the Flag (CTF).

Note that CTF isn't supported yet; selecting CTF just makes normal deathmatch maps. However, this allows someone interested in CTF to add support for CTF to ObHack's scripts.

It can be downloaded here

(Geek note: I'm seeing if it's possible to post to Blogger using Dillo)

Thursday, February 7, 2008

MaraDNS snapshot update; ObHack snapshot update

Jean-Jacques Sarton has made some minor changes to improve cross-platform compatibility in today's snapshot of MaraDNS.

Enhas has made some minor revisions to today's snapshot of ObHack.

- Sam

Monday, February 4, 2008

MaraDNS snapshot update

In today's update, J.J. Sarton has completely re-written the code that builds MaraDNS. Hopefully, this will make things easier to package (the pkgsrc thingy, in particular, doesn't like MaraDNS' old build process)

It can be downloaded here

Thursday, January 31, 2008

MaraDNS snapshot update

I have updated the documentation on the webpage about DjbDNS to reflect the fact DjbDNS is now public domain--my assessment of DjbDNS is now a good deal more positive. I have also updated MaraDNS to have this updated documentation in the tarball.

Today's snapshot can be downloaded here, but, starting tomorrow, snapshots will be uploaded here

- Sam

Tuesday, January 29, 2008

MaraDNS snapshot update

Today's snapshot of MaraDNS incorporates JJ Sarton's fixes to the Darwin compile process; this version should be able to compile in Darwin (Mac OS X) without problem and without losing any functionality.

- Sam

Friday, January 25, 2008

MaraDNS snapshot update

I just posted an updated snapshot of MaraDNS today. Boey Maun Suang (Mr. Boey) has kindly submitted some patches that correct a lot of spelling errors in the documentation, and I have made some changes that hopefully make MaraDNS 1.3 compile in Darwin (Mac OS X) again.

It can be downloaded here

Thursday, January 24, 2008

MaraDNS snapshot update

I just uploaded another snapshot of MaraDNS today; it has some improvements to askmara.c, askmara-tcp.c, and the Deadwood-2 SQA process by Mr. Sarton. It can be downloaded here

Monday, January 21, 2008

MaraDNS snapshot update

I just uploaded a new snapshot of MaraDNS that incorporates an improved SQA process for the Deadwood -2 resolver, as done by Sarton. It can be downloaded here.

Wednesday, January 16, 2008

Quick update

Real fast update guys: I have added signatures to Monday's snapshot of MaraDNS. I hope to have more time soon to integrate all of the patches Mr. Sarton has sent me. I just have been working a lot harded and have had a lot less time for MaraDNS.

- Sam

Monday, January 14, 2008

MaraDNS snapshot update

OK, I'm a lot busier with my day job, so I have less time to devote to MaraDNS. That said, I was able to upload an update snapshot here; this snapshot is unsigned; I will sign it later today or tomorrow. Its SHA1 sum is 71b2e521170e4e5f0ba7391aad4e5c732468b3bc

- Sam

Thursday, January 10, 2008

MaraDNS update

I have finally uploaded MaraDNS 1.3.07.08 to the Sourceforge download page for MaraDNS. I have also updated the web page to reflect that the last release was done on Christmas, and have changed my dns_other page a bit to reflect the fact that DjbDNS is now public domain.

I have also answered all of the MaraDNS email in my inbox; if you have recently sent a MaraDNS support concern or question and didn't get a reply from me, send it to me again.

I will probably release a new snapshot early next week sometime.

- Sam