Thursday, December 31, 2009
TCC: A C compiler in only 201k
Browsing around on the Wikipedia, I discovered the Tiny C Compiler, which is a full C compiler which is only 201k in size 7-zip compressed.
Needless to say, the next version of the Desert Island disk will include TCC. In addition, I am very tempted to tweak things to make sure Deadwood can compile and run in TCC.
Happy new year 2010 everyone! I will not post another blog entry until early next week, I mean year, I mean decade.
Wednesday, December 30, 2009
Final MaraDNS snapshot for the 20{0}0s
Now that I have updated the main documentation, the next thing I will do is make sure MaraDNS 1.4 passes all of the SQA regressions in the sqa/regressions directory. I will, as needed, revise MaraDNS 1.4 and/or the tests to make sure MaraDNS 1.4 hasn't introduced any new bugs.
Once I do that, I will release MaraDNS 1.4.02.
I will not be online for the new year's holiday, but should continue work on MaraDNS next week.
I have had a very productive 2000s working on MaraDNS, and hope to finally finish up MaraDNS in the early 2010s (ideally, with Deadwood 3.0 in mid-2010 and MaraDNS 2.0 before the end of the year).
Tuesday, December 29, 2009
MaraDNS snapshot update: All docs updated
In addition to uploading the updated documentation on to the MaraDNS web page, the updated snapshot can be downloaded here:
http://www.maradns.org/download/1.4/snap/2009/
Monday, December 28, 2009
MaraDNS snapshot update
It can be downloaded here:
http://www.maradns.org/download/1.4/snap/2009/
Sunday, December 27, 2009
New MaraDNS snapshot
Thursday, December 24, 2009
New MaraDNS snapshot
It can be downloaded here:
http://www.maradns.org/download/1.4/snap/2009
This will be my last update until next week. Merry Christmas everyone!
Wednesday, December 23, 2009
New MaraDNS snapshot
- TODO.1.3 and version.mk files in top-level directory removed
- COPYING updated to reflect updates made in 2009
- README.Debian and debian.html web pages updated to reflect MaraDNS 1.4 release
- README.RedHat updated to give directions that correctly make a RPM in CentOS 5; RedHat .spec file updated to build RPM again in CentOS 5
Tuesday, December 22, 2009
New MaraDNS snapshot
In addition, I have removed older 1.3 snapshots of MaraDNS from the webpage and made space for MaraDNS 1.4 snapshots.
MaraDNS 1.4 snapshots can be downloaded here:
http://maradns.org/download/1.4/snap/
Monday, December 21, 2009
MaraDNS 1.4.01 released
While I have updated some of the documentation to reflect the fact MaraDNS is now MaraDNS 1.4, not all of the documentation has been updated.
To do:
- Make MaraDNS 1.4.01 available on MaraDNS' Sourceforge download page (Update: Done 20091221)
- Work on updating the documentation and pieces of the code which assume we're using an older MaraDNS release.
Saturday, December 19, 2009
Deadwood 2.4.10 released
In addition, I ran the full SQA test in 64-bit CentOS 5.3 in addition to running it in 32-bit CentOS 5.3 to make sure the code has no regressions; in other words, everything that worked before still works.
It can be downloaded here:
http://www.maradns.org/deadwood/
Thursday, December 17, 2009
Ways of getting a UNIX environment in Windows
Options for cheapskates
The following options allow one to have the UNIX experience in Windows for free:
- Cygwin is the most well-known option. All of UNIX, including, yes, X-windows, is here. However, it’s a really big download; it’s essentially like having an entire Linux distribution in Windows.
- MSYS is part of Mingw and has a core UNIX environment in a single tiny 3-megabyte file. This doesn't have some things people may expect with UNIX, such as Perl or Python (or, annoyingly enough, no ‘du’ either), but it does have the Bash shell and Awk, along with the usual ‘ls’, ‘rm’, and what not. It uses a port of the rxvt terminal which allows X-style copy and paste (highlighting anything in the window puts it in the clipboard; middle-clicking or clicking on the mouse wheel these days pastes whatever is in the Windows clipboard); Windows drives are accessed with the directories “/c”, “/d”, and so on.
- Virtual box along with your favorite Linux distribution.
- For something a little easier to configure that VirtualBox, there’s VMware player, along with an image of your favorite Linux distro or other free *NIX clone. I like the BagVApp repository of VMware images myself. It’s also possible to make your own VMware images, complete with tools for free; EasyVMX is a web interface for making VMware blank images; VMware’s tools can be obtained by downloading VMware’s free server download.
- There is the MKS toolkit for Windows, which has its own implementation of the various UNIX command line items.
- There’s Microsoft’s own SUA (Subsystem for Unix Applications), which I don’t consider a free download because it doesn’t run on Windows XP Home edition; also included as a goody in the more expensive versions of newer Windows releases.
Wednesday, December 16, 2009
Docbook sucks
Docbook sucks. It is too complicated for its own good. In the early 2000s, people were clamoring for a standard documentation format for MaraDNS. I whipped out Perl and made a script to convert a subset of HTML (which I call “ej”) in to *ROFF man pages, along with a couple of other scripts to make HTML documents and ASCII text files.
People complained because it wasn’t docbook. I told them I looked at docbook; my rant (which I didn’t publish) was that the language was too complicated and the tools too primitive for my tastes. I still use this subset of HTML for documents that are converted in the *ROFF man pages (such as Deadwood’s man page).
HTML is the universal text markup language and using anything else is foolishness. And, yes, making a TOC for HTML documents is easy (as long as the HTML document is structured). Just last week I made a tutorial in a word processor, converted it to HTML, and added a TOC like this:
cat Tutorial.html | awk -F\> '/<\/b><p>/ {a=$2;sub(/<\/b/,"",a);gsub(/[ -]/,"",a);print "<A name=" a "> </A>"} {print}' > foo.html
mv foo.html Tutorial.html
cat Tutorial.html | awk -F\> '/<\/b><p>/ {a=$2;sub(/<\/b/,"",a);b=a;gsub(/[ -]/,"",a);print "<A href=#" a ">"b"</A><br>"}' > TOC
vi Tutorial.html
{move cursor down to area just past the BODY tag}
:r TOC
:wq
And, oh, docbook.org points directly to some ads asking me to buy their books (Update: To be fair, you can read this book for free on their web page). No thank you. I can spend five minutes whipping up an AWK script to add a TOC to a HTML document; did I mention that the GAWK manual is a free download, not a $40 download? (Update: Again, one of the books is free to read on their webpage)
Final update:
Another cool linky:
http://en.wikipedia.org/wiki/Comparison_of_document_markup_languages
Monday, December 14, 2009
New MaraDNS snapshot
It can be downloaded here:
http://www.maradns.org/download/1.3/snap/200912
My plan is to release MaraDNS 1.4.01 one week from today (December 21).
Friday, December 11, 2009
Deadwood 2.4.09 released; new MaraDNS snapshot
It can be downloaded at http://maradns.org/deadwood/
I have also updated the MaraDNS snapshot to update the Deadwood download link, update the version of Deadwood included with MaraDNS to be Deadwood 2.4.09, and add a note in the mararc man page that putting a * in a csv2 zone name will make the program terminate with a fatal error.
Thursday, December 10, 2009
New C-evo maps
Also included is one of the “Total fairness” C-evo maps.
The main reason I have made these maps available is because I had a small file with just one map which was only about 800 bytes in size; since the Desert Island CD uses the ISO filesystem with a 2 kilobyte block size, making this file a little bigger (any size 2048 bytes or less) doesn’t increase the amount of space the file takes up on the disc.
It can be downloaded here:
http://samiam.org/cevo/
Wednesday, December 9, 2009
Why Google has made public DNS servers available
This takes, or has the potential to take, ad revenue from Google, so Google responded by having very easy-to-configure (how hard is it to forget “8.8.8.8” and “8.8.4.4”?) DNS servers that don’t include any ads—besides the ads Google themselves include in their search result.
They made the DNS servers geek-friendly: Their DNS servers do not redirect NXDOMANs (DNS replies saying “this host name does not exist”) to an ad-filled page, but correctly forward NXDOMAIN replies on to the end-user.
There’s a good reason OpenDNS’ president is scared of Google’s DNS servers; by offering for free (ad-free) what OpenDNS offers, they have undercut OpenDNS and, quite frankly, OpenDNS’ days are numbered. Yes, they do offer spam/phish/adult content filtering, but the market for that is smaller than the market for “My ISP’s DNS servers suck, give me something more reliable”.
Disclaimer: I sent my resume to OpenDNS a few months ago and never heard from them; while I didn’t get hired at Google, I had a very pleasant experience interviewing with them a few years ago.
Tuesday, December 8, 2009
C-evo tutorial finished
http://samiam.org/cevo/
Monday, December 7, 2009
C-evo tutorial made
Sunday, December 6, 2009
New Deadwood snapshot: Google DNS servers
http://code.google.com/speed/public-dns/
The snapshot can be looked at here:
http://www.maradns.org/deadwood/snap
Saturday, December 5, 2009
I found a couple of websites with small games
The quickest way to find small games is to go to a website hosting files from the “demo scene”. One very significant part of the “demo scene” is coming up with tiny little demos or fully playable game whose .exe fits in a given size, such as 4k, 32k, or 96k. 4k gives you a very basic Tetris clone; 32k can give you a remarkable playable game in the vein of a 1980s or early 1990s Amiga or Atari ST game. 96k can give you a small but complete full game; there’s even a playable First-person shooter that fits in 96k (but, alas, can be finished in about 15 minutes).
The website I used to find demos was http://www.pouet.net/; the page which starts to list the tiny playable demos is at this link.
The one I like the most is a 32 kilobyte PacMan-style game. This got a few bad reviews when it first came out, but ignore them; the game has since been updated with sound added to the main game and the collision bugs people complained about have been fixed.
Some other notable demo games include a Tempest clone with 21st century graphics and sound, complete with configuration menus in only 96k (but the extensive eye candy sometimes makes gameplay a little difficult, and the screen moves around while playing in a way that can give you a headache), a 32k clone of a late 1980s platform shooting game which while beautiful and groundbreaking for its time, has hard-to-use controls, and a 32k clone of a late 1980s platform jumping game that, while amazing, is a very challenging game and the controls are a little awkward.
Another place to find tiny games is http://www.acid-play.com/, a listing of thousands of Windows freeware games. Finding diminutive games is a little harder at this site; there is no way to sort games by size. However, each game has its download size listed, which makes it possible to browse for small games.
There are a few tiny gems here; one I like is a simple little late 1980s shooter called Light-Z which 7-zip compresses down to 174k.
I’ve decided to put that 32k tiny Pac-Man style game on the next version of my Desert Island Disc. I would like to have precisely seven games; I haven’t decided whether to make the seventh game the 21st century Tempest clone or the simple shoot-em-up Light-Z.
Friday, December 4, 2009
Javascript Manic Miner
I was able to scrape all of the files needed to play this, and after using PNGCRUSH and advpng to make the PNG files as small as possible, I was able to get this entire working Manic Miner implementation to fit in under 32k (7zip compressed).
Unlike other Manic Miner implementations, where the authors take a sadistic delight in hiding the cheat codes from users (I don’t understand why Andy Noble changed the cheat code for Manic Miner), this one is easily modified with a text editor to change the initial level or give the player unlimited lives; these are even variables easily set at the beginning of the program.
So, I’ve gotten Manic Miner down from 450KB to 32KB. Like I said before, I’ll put wedding photos in the newly opened up free space or another tiny video game if I can find something usable out there.
Thursday, December 3, 2009
Desert Island future plans
- The excellent C-evo
- David Teach's Gin Rummy
- A tiny version of Zillions of Games
- Cultivation
- Andy Noble's take on Tetris and a 1980s video game called "Manic Miner"
Cultivation doesn't have compelling graphics, IMO, and its gameplay is a bit far-fetched for my tastes.
Manic Miner's problem is that it's a faithful copy of the original 1983 game, and like the original game, it's, as TVTropes calls it, "Nintendo Hard". After struggling for an hour, I was able to get past the first screen, and even on to the third screen, but there's no way to save the game so I have to go back to the first screen every time I start the game up.
There is supposedly a cheat code for it (802926) which lets one jump past levels, but it doesn't work. So, out it goes. Andy's take on Tetris is nice (and my fiancée likes it), but I'm ditching his take on Manic Miner (which, yes, is faithful to the 1983 game, but we've moved beyond that).
There's a couple of other takes on Manic Miner for the PC out there but I don't like either of them either -- one of them has the audacity to ask for a shareware registration fee for the game. As a programmer who despises freetards myself, I agree people should get compensated for their work, but when original Manic miner creator Matthew Smith flat out says "if they are making money then I want my share", I don't feel it's ethical to make a shareware Manic Miner without giving Matt his cut.
So, deleting all this leaves me about 850k to play with. 150k or so of that will be some C-evo stuff (my HOWTO, a couple of small programs to mod C-evo's gameplay, a diagram of the tech tree, and slightly modified Mongol nation graphics); that leaves me with about 700k. Some of that will become wedding photos once I marry my fiancée January sometime; but I need to find one or two more really tiny games with compelling gameplay that doesn't quickly get stale.
Some ideas:
- An emulator and some old video games. My biggest issue here is finding games the creators don't mind having available on the Internet
- Win Frotz (under 200k) and a few text adventure games. The issue here is that these kinds of games have no replay value.
Wednesday, December 2, 2009
New Deadwood snapshot
I also fixed a bug where certain logging functions added a newline regardless of one's verbose_level setting.
New MaraDNS snapshot
- The * character is no longer permitted in zone names. Stars belong in zone files, not zone names.
- I have added a FAQ entry briefly explaining how MaraDNS star records work
It can be downloaded here:
http://www.maradns.org/download/1.3/snap/200912/
Monday, November 30, 2009
New Deadwood snapshot
I have also updated the documentation available on Deadwood's web page.
http://maradns.org/deadwood/
MaraDNS wish list status
- IPv6 (DONE, except for Deadwood's recursion)
- Multiple views -- DNS answers vary depending on the IP sending the request (won't do)
- SQL support (won't do)
- Include other files in mararc (done in Deadwood, won't do in MaraDNS)
- DNSSEC (won't do)
- Ability to dynamically load zone files (won't do)
- DNS curve (won't do)
- BIND zone file support (mostly done; will finish up)
Tuesday, November 24, 2009
I've been making some stuff for C-evo
- I have taken a tech chart someone else made and compressed it to be only a little over 100k in size
- I have written some programs that slightly modify the gameplay: The final year, the technology advancement rate, the city growth rate, and the map sizes can now be adjusted.
- I have written an over-6000-word HOWTO that describes C-Evo's basics; it is geared for someone who has never play a Civilization game before
http://samiam.org/cevo/
Sunday, November 22, 2009
Desert Island update
- Instead of Doom, we now have six tiny video games: C-evo, David Teach’s Ginny Rummy, a tiny under 400k version of Zillions of Games (only Chess and a couple of variants, no music, no sounds), Cultivation, and two of Andy Noble’s games (Tetris, Manic Miner)
- I have added a lot of pictures, most notably a nice desktop background picture I took nearly two decades ago and more family pictures
- I’ve added the text of a 1979 computer article talking about computers in the home
- Various other minor updates, most notably progress on making sure we correctly use “LORD” or “The LORD” in the Old Testament of my modified World English Bible
- I no longer have a guide for reading playing cards; this is something I no longer do
- MSYS update to 1.0.11; 7zip updated to 4.65
- Spanish accents for a US keyboard added
Invasion of the spammers
A lot of spam blogs use CSS to hide the button to report the blog; to report a spam Blogger blog, go to this link (or this link) to report the offending URL.
Thursday, November 19, 2009
Deadwood handling problematic upstream DNS servers
Deadwood has had in place the ability to filter and remove packets like this, which I set up to be disabled in Deadwood 2.4.08 because sometimes filtering causes these packets causes issues (read this thread for the gory details); however with the particular upstream servers I use, setting it to 0 is better.
So, if you use Deadwood and are having problems with your browser or what not reporting it can’t find sites at times, add the following line to your dwood2rc file:
deliver_all = 0
Wednesday, November 11, 2009
Deadwood 2.4.08 released; MaraDNS snapshot update
Deadwood 2.4 has a number of features Deadwood 2.3 doesn't have, most notably RR rotation, TTL aging, and dictionary support for upstream_servers--you can have one upstream DNS servers to recursively resolve "google.com" for you and another, that redirects phishing domains, resolve "rnyspace.com" or "paypaI.com" for you.
I have just released Deadwood 2.4.08 today. Compared to Deadwood 2.3, Deadwood 2.4 has:
- TCP and UDP done by the same service/process
- upstream_servers now a full "dictionary" variable
- Full DNS compression and decompression support
- RR rotation and TTL aging
- ip_blacklist support (if you have an annoying ISP DNS server that redirects mistyped domains to some ad-filled page, just put the IPs of that annoying page on your ip_blacklist and Deadwood will make it a DNS "not there" reply again)
- execfile support (Deadwood can now include other files while parsing its configuration file)
- Merging multiple identical in-flight queries (if you just asked for google.com, and ask for it again, instead of creating a new query for google.com, it will just merge your query with the one already sent)
http://www.maradns.org/deadwood/
I have also updated the MaraDNS snapshot release to have the download page point to the new 2.4 stable release of Deadwood.
Tuesday, November 10, 2009
Deadwood snapshot update
It can be downloaded here:
http://www.maradns.org/deadwood/snap/
Sunday, November 8, 2009
MaraDNS snapshot update
I finally announce it today. It's here.
Friday, November 6, 2009
C-Evo 1.1.1 on one floppy
Actually, it fits on a single 1.44 meg floppy. Two if you want sound. What I have done is take the C-Evo installed files, remove the AI development kit (this is only useful if you're both a Delphi developer and have interest in developing an AI for C-Evo), and split off the sound. I then made two files; the core C-Evo game that is perfectly playable, albeit without sound, which compresses in to a 1,384,627 byte 7-zip file, and a file with all of the sounds for C-Evo, which compresses in to a 924,045 byte file.
If you need 7-zip to decompress C-Evo 1.1.1, that will also easily fit on a single floppy. Who needs CD-ROM drives anyway?
Speaking of floppies, the last version of Slackware that could be entirely installed from floppy was Slackware 3.4 from 1998; the last version of Slackware that could have the base system and networking utilities installed from floppy (installing the rest over the network) was Slackware 7.1 from 2002. A base Slackware 2.1 system (1994) fit on four floppies; the entire system only used 70 floppies. Yes, I remember, back in 1995, giving my roommate an entire floppy tray filled with 70 floppies so he could install Slackware on his computer. The base system for Slackware 7.1 needed 16 floppies; at that point it no longer made sense to use floppies any more.
Recently, an artist made artwork showing you would need hundreds of floppies to fit a modern Photoshop install. But, good software doesn't need that bloat. C-Evo shows that a compelling and addicting game can nicely fit on a single floppy; MaraDNS can also easily fit on a single floppy, complete with source code.
Zillions of Games can also easily fit on a single floppy; I have a version thats 400k in size that supports Chess and a couple of Chess variants (notably Capablanca chess). The majority of the space in the 20 meg install file for Zillions is for all of the graphics for all of the abstract games supported by Zillions.
Some other games that easily fit on a single floppy: Cultivation, Andy Noble's remakes of classic games
For people who want to look at the files showing C-Evo 1.1.1 on a floppy, go here:
http://www.samiam.org/cevo/
Wednesday, October 28, 2009
Games that fit in under seven megabytes
After adding the entire text of the Bible, some music I like listening to, a few applications (most notably 7zip for decompressing files), as well as having it be a bootable CD with a memory tester, I'm left with about seven megabytes (7,000,000 bytes) for games.
What compelling games fit in this very small space? Quite a few. Last time I mastered a Desert Island CD, in June, I added Doom with a random map generator, as well as a small game for playing Gin Rummy. However, since my fiancée doesn't like seeing me play Doom, there are a number of other games I am considering for the next release of the CD. Here's a list of some of the more compelling tiny games out there; I'm looking for games with a high replay value (random map generators are a must for anything using a map):
- Doom, as mentioned before. 5,692,780 bytes in size with a modern engine using 3d acceleration (Doomsday 1.8.6) and the Doom1 wad file (7zip compressed); 6,203,357 bytes if we include a random map generator.Pros: The first-person shooter that created an entire genre of games. It's all here: Single player, deathmatch, cooperative play. Even a random map generator.Cons: Violent and disturbing imagery in the game; a mouse is needed to fully enjoy the game.
- David Teach's Gin Rummy. 1,643,935 bytes if we include the full installer, 108,886 bytes for a 7zip compressed minimal version of it; however it's not possible to change the game settings in the smaller version of the program.Pros: Classic card game in a tiny package. Cons: Dated looking user-interface
- FreeCiv 1.14.2. This is an older version of FreeCiv; newer versions use GTK-Win32, which is a bloated pig. A 7zip compressed copy of the full version of FreeCiv 1.14.2 is 1,872,461 bytes in size; it's only 906,762 bytes in size if we remove all of the languages except English and Spanish.Pros: Network play; highly customizable using the server command line.Cons: No diplomacy at all with AI; no full-screen mode; outdated version of game
- C-Evo, another open-source (public domain) Civilization clone, has IMHO more compelling gameplay than the older FreeCiv. It's a little bigger, however: 2,521,088 bytes for the most recent version (self-extracting archive)Pros: Fullscreen mode; Good graphics; compelling play.Cons: No network play: the only multiplayer mode supported is hotseat and play-by-email is difficult because only the first player can save the game.
- Chess variant-playing engines. Engines that can play Chess variants are remarkably small and lightweight if I minimize the number of games supported; if only Capablanca-type variants are supported (8x10 board, rook + knight and knight + bishop added to the standard array of pieces), the tiny version of ChessV 0.9.0 is 174,059 bytes (7zip compressed, as well as all other Chess variant playing engines), Winboard Fairy can be squeezed down to 386,278 bytes, and Zillions can fit in only 394,318 bytes. Zillions needs a registration key; the other two are open-source programs (and play Capablanca chess better than Zillions).
- People's Tactics is a very enjoyable free war simulation strategy game with a random map generator, play-by-email, hotseat, and single-player support. The binary weights in at 6,083,408 bytes.Pros: Excellent tiny little empire-building hex-based wargame. Cons: Can't be played on netbooks; 1024x768 or better resolution needed to play.
- Another idea: Including an emulator and a number of games for a 1980s game console. Pros: Lots of different games in a small package Cons: There are serious legal issues with most game image files
- No list of small games is complete without Kkrieger. More a proof-of-concept than a playable game, Kkrieger is a complete first-person-shooter in only 100,185 bytes (yes, a tenth of a megabyte). The executable is 96k in size, but the zip file also includes directions for playing the game. Pros: Beautiful graphics. A full First-Person-Shooter with a number of different weapons, monsters to zap, and compelling music in a fraction of the size of even Doom. Cons: More a proof-of-concept than a real game; the only supported mode is single player and the game can be finished in 15 minutes. The game also has a low framerate on anything but the highest-end computers.
Tuesday, October 27, 2009
MaraDNS snapshot update
http://maradns.blogspot.com/2009/05/alexa-top-500-list.html
Monday, October 26, 2009
RadioGatĂșn C++ class
http://www.samiam.org/rg32
Sunday, October 25, 2009
Deadwood 2.3.05 released
- Spurious fflush() removed
- Deadwood now forwards on to the client (but doesn't cache) unusual DNS packets, as long as the ID and question match. This can be disabled by setting a new dwood2rc parameter, deliver_all, to 0
- Slight revision to code so it will compile in GCC 4.4 without any warnings
- Documentation and SQA tests updated. Most notably, the deliver_all parameter is documented and the BUGS section of the manpage points out having an incomplete last line is a syntax error.
http://www.maradns.org/deadwood
Friday, October 23, 2009
Deadwood short-term plans
- There is a bug where dwood2rc files that don't end with a proper linefeed cause there to be a syntax error reported on the last line of the file. Fix.
- I have updated my development system from CentOS 5.3 to CentOS 5.4; the biggest change is that the current version of GCC is now GCC 4.4 instead of GCC 4.3; update the "no warnings when compiled with the latest GCC" test to use GCC 4.4, and fix any compile-time warnings found. This needs to be done for both the 2.3 and 2.4 branches of Deadwood.
- Do full SQA recressions, then release Deadwood 2.3.05 and Deadwood 2.4.08
People's Tactics: A fun and free wargame
Well, the hobby died out; the rules for these games were too complicated to have a broad market; the market for these wargames dried up in the early 1980s when home computer video games started entering the scene and Dungeons and Dragons took over. The only game with rules simple enough to have general appeal was Axis and Allies, which was published by the Milton Bradley Company in the mid-1980s; the game is still around and is published by what little is left of Avalon Hill.
However, the hobby still lives because there are a number of high-quality, free computer games out there that handle the complicated rules for you, have fog of war—the ability to not always see what your opponent is doing—something that never was possible with those old board games, the ability to easily save games to load at a later time, random map and scenario generators, and play-by-email support.
In my experience, the Windows-only games that aren’t open-source have the most compelling game play (but see postscript below). My favorite game right now is People’s Tactics which is the free “teaser” version of the far more advanced and flexible Advanced Tactics. The game comes with a number of scenarios, has a random map/scenario generator, and even allows you to make your own scenarios with control over pretty much any game parameter.
The rules are simple enough that I was able to go through the tutorial in about 30 minutes. Typical of turn-based strategy games, gameplay is slow: it takes three or four hours to finish a small randomly generated 23x23 map, and maps can be up to 100x100 in size. The game is nice because it runs in a window instead of using full-screen mode, allowing me to easily check my email and perform other tasks on my computer while playing the game.
The game offers a lot of play and, when I get a job with a living wage again, I will pay the $40-$50 to support the author and get the more extensive Advanced Tactics.
Another series of hex-based wargames that are free are games in the Steel Panthers line. “Steel Panthers: World at War” is a tactical-level hex-based turn based simulation of World War II, complete with random terrain and random scenario generators. There is a thriving community with hundreds of user-created mods at spwaw.com. Another related free game is “Steel Panthers: World War II”. I have not had a chance to learn these games yet to give a full review, but SP:WaW looks very popular based on the huge number of scenarios and mods available for it.
To download People’s tactics, go to this webpage and look for “Download People’s Tactics” on the left (scroll the page down) or the box with the label “People’s Tactics” on the right (again, you will need to scroll the page down):
http://www.advancedtactics.org
Edit: Thinking about it some more, I neglected to remember two compelling open-source turn-based strategy games: Battle for Wesnoth which I enjoy greatly, and, while I haven't played it, Eight Kingdoms looks compelling.
Thursday, October 22, 2009
New Deadwood and MaraDNS snapshots
http://maradns.org/deadwood/snap/
http://maradns.org/download/1.3/snap/200910
Wednesday, October 21, 2009
Deadwood snapshot update
I have made sure that this fix does not allow DNS packets which would cause security problems to be forwarded to the DNS stub resolver (we still make sure the ID and question are the same).
I would like to thank Jakob Blomer at CERN laboratories for reporting this problem, and for supplying a patch.
It can be looked at here:
http://maradns.org/deadwood/snap/
Tuesday, October 20, 2009
MaraDNS thoughts
I do plan on finishing up MaraDNS 2.0, which should have full ipv6 support, better recursive resolving, and then I plan on finishing up that Python script that converts BIND zone files in to MaraDNS “csv2” zone files. The csv2 zone files already have support for pretty much anything you would see in a BIND zone file; it’s just a matter of finishing up the Python script.
I don’t know when I’ll go back to working on that code, however. Other things are more important. Namely: I need to become really familiar with OO programming to stay competitive in today’s job market. I don’t plan on spending the rest of my life working in an exotic Latin country babysitting Windows computers earning only pennies on the dollar.
Poking around with Google, in addition to finding a lot of really positive things said on Slashdot about MaraDNS (thank you everyone for your kind words), I found a couple of Slashdot comments asking for full IPv6 support; one of the comments asks for BIND zone file support.
MaraDNS right now has full authoritative-only IPv6 support; zone files have native support for AAAA records and, if MaraDNS is compiled without recursion enabled, MaraDNS can bind to and listen on IPv6 sockets. Deadwood, which will some day become MaraDNS’ recursive resolver, has full IPv6 support today for non-recursive DNS queries, and I fully plan on adding full IPv6 recursive support.
I also have been working on and off for years adding BIND zone file support to MaraDNS. I have made a lot of revisions to MaraDNS’ “csv2” zone format to make it easier to convert BIND zones to MaraDNS zone files; I have a Python script that converts BIND zone files to MaraDNS zone files, but the script is incomplete and there’s a lot of corner cases it doesn’t cover. One of my goals is to finish up that script, minimize the corner cases and give MaraDNS good BIND zone file support.
“Plan” being the operative word here. I really need to update my software development skills for the 21st century, and that means mastering OO programming. My beautiful girlfriend has become my beautiful fiancĂ©e—I need to do what it takes to get a job making a living wage like I was making during the dot-com boom again. And, sorry, but making people on Slashdot happy doesn’t pay the bills.
Monday, October 19, 2009
Final Schoolbook opening research for 2009
- White has about a 7% advantage in Schoolbook
- Of all six Capablanca chess setups in the form RXNBXKBNXR, the Aberg setup, RANBQKBNMR is the most balanced; white only has a 3% advantage in this setup
- Black can minimize white’s advantage by replying to 1. e4 with 1. e4 d5 2. exd5 Nb6; 1. f4 is handled with 1. f4 c5; and 1. c4 is handled with 1. c4 Mh6(!)
- I’ve found over 100 pretty mates (mating positions where one side think they are ahead, then the other side finds a mating combination
http://www.samiam.org/schoolbookFor people who are wondering what I’m talking about, some helpful links:
- Schoolbook chess
- Wikipedia’s article on Capablanca Chess, which gives the historical background behind this class of Chess variants
Thursday, October 15, 2009
Du for Windows and other tidbits
I have been using Cygwin to run “du”, but starting up a full *NIX environment (complete with X) to run that one command MSYS neglected to include is a little excessive.
While MSYS doesn’t have du, Microsoft has a free download of du for Windows. Its output is not quite the same output as the classic *NIX du, but it’s good enough for my purposes.
Another option I haven’t looked in to is the GNU coreutils for Windows, whose du output should be more UNIX-like.
In the early 1990s, people began to realize that floppy disks did not have enough space to store anything besides text documents and small images, so work began on making an affordable removable media with more space than a floppy disk.
One of the more successful attempts to do this was the Iomega Zip drive. Zip drives were quite common in the 1995-1999 timeframe, depending on your definition of “common”. They were common in the sense your average geek would have a zip drive, but not common in the sense that, when you bought a computer, it was a given it would have a zip drive. Zip drives were successful because you didn’t need a special connector to use them; you could attach it to the parallel port almost all PCs had in that time frame (or the SCSI Zip drive if you had a Macintosh or, in my case, used Linux before the Paraport driver was made). They were used a lot until compact disc recordables got affordable (hit the $1 per blank disk price point) around 1999 or 2000.
I used Zip drives and Zip disks for storing data offline from 1996 until early 2001, when my buddy Leo started letting me burn CDs on his CD burner.
There were competitors, such as the SyQuest EZ 135 Drive, the LS-120, and higher priced higher capacity options like the Jaz drive, the Orb Drive, the SparQ drive, among others. I actually got an Orb Drive and a few 2.2 gig cartridges for backing up the server we had at work back in the dot-com days.
Iomega still makes high-capacity removable drives and media. Their current technology is something called an REV drive, which uses 120 gigabyte cartridges (about $60 per cartridge). There’s another removable media technology called “RDX” with media up to 500 gigs in size (for $300). With this type of technology, you’re paying for convenience; a terabyte-size notebook hard disk is $127 at Pricewatch right now and a 100-pack of DVD-R (not +R, since -R stores seven more megabytes) media is around $25 at Meritline right now (you can store 500 gigs in 107 discs).
These days I use DVD-Rs to store data; my burner doesn’t support dial-layer blanks, so I just burn single-layer 4.7 gig disks for backups and what not.
My chess variant research continues. I have been doing a lot of computer simulations of various openings in my “Schoolbook” arrangement of the Capablanca pieces. White starts with a 7% advantage, so I’ve been looking for openings where Black can minimize that advantage. 1. e4 d5 2. exd5 Nb6 looks to equalize things for black, 1. f4 c5 appears to give black a strong advantage, and I’ve been spending over a week looking for Black’s best reply to 1. c4; right now 1. c4 Mh6 looks to be Black’s best reply, but I need to do more research on this.
Chess variants are one of those things where it’s trivial to “invent” a variant but difficult to research how to play the variant in question. There’s a reason a lot of strong chess players resist any attempt to change the rules of chess; people have spent centuries in to finding the best moves in chess, and any change, even one as simple as rearranging the pieces in the opening, throws out a lot of that study.
Sunday, October 11, 2009
MaraDNS in the press
- Mens, Jan-Piet (2008). Alternative DNS Servers: Choice and Deployment, and Optional SQL/LDAP Back-Ends (Paperback). UIT Cambridge Ltd. ISBN 0954452992.
This book devotes an entire chapter to MaraDNS - Danchev, Dancho. How OpenDNS, PowerDNS and MaraDNS remained unaffected by the DNS cache poisoning vulnerability ZDNet.
This article affirms MaraDNS' excellent security design, pointing out
that MaraDNS was never vulnerable to the 2008 cache poisoning attacks. - Schroder, Carla (2007). Linux Networking Cookbook (Paperback).
O'Reilly. ISBN 0596102488.
This book, on page 545, endorses MaraDNS, stating that "My recommended combination is [...] MaraDNS for a public authoritative server" - JoĂŁo Antunes; Nuno Ferreira Neves; Paulo VerĂssimo (2007), href="http://homepages.di.fc.ul.pt/~nuno/pubs.html">Finding Local Resource Exhaustion Vulnerabilities, 18th IEEE International Symposium on Software Reliability Engineering, TrollhĂ€ttan, Swedenhttp://homepages.di.fc.ul.pt/~nuno/pubs.html
This article discussion MaraDNS' denial-of-service resistance, pointing out that "Figure 2, for instance, shows that the BIND server performs worse than MaraDNS under the same attack, which means that the later is able to sustain a larger number of attacks than the first" - Rutherford, Matthew J. (2006), Adequate System-Level Testing of Distributed Systems, Department of Computer Science, Boulder, CO, http://mjrutherford.org/node/11
This PhD thesis mentions MaraDNS several times.
I have uploaded a new version of MaraDNS today. In addition to adding the above material showing third parties praising MaraDNS to the MaraDNS advocacy page, I have also changed the next version number of MaraDNS to be MaraDNS 1.4.01. The release can be downloaded here
The MaraDNS 1.4 series will be an actively maintain series of releases that continues to use the older recursive code for people who need both an authoritative and recursive DNS server on the same IP. The only changes to this branch will be security and critical bug fixes. I will release this around the same time I release MaraDNS 2.0.
Saturday, October 10, 2009
Clarification about MaraDNS roadmap
- I have no plans to quit working on MaraDNS. “Quit working” implies I will no longer fix bugs or answer email on the list. This is false.
- My current plan is to continue to fix bugs after the 2.0 release of MaraDNS. I plan on continuing to fix bugs in 2.0 and the upcoming 1.4 release of MaraDNS for the foreseeable future.
- I will continue to monitor the mailing list and answer questions I deem appropriate to answer.
- I will still provide for-pay private email support for MaraDNS
- I will still add features to MaraDNS that people are willing to sponsor
One of the biggest hassles developing MaraDNS is the number of freetards out there. People who don’t lift a finger to help make MaraDNS a better server, but expect me to waste time answering their email asking for the same feature 10 other freetards have already asked for. People whose net contribution to MaraDNS has been to annoy me.
About a month ago, I had an interesting discussion on Slashdot about user’s expectations for open-source software. The conclusion: Many users of open-source software expect to be treated like customers, but are unwilling to pay a single dime for open-source software.
Bottom line: If you want to be treated like a customer of MaraDNS, you first must become a customer of MaraDNS. If you make a modest donation to MaraDNS, I will be happy to answer your email; the charge, for the record, is US $50 per private email support incident, more if I need to add a feature to MaraDNS to resolve your concern.
If you want to be a freetard and send me a private email, I’ll spend about 10 seconds scanning your email to make sure you didn’t make a donation, then send you the “Show me the money” form reply. Yes, this includes bug reports. Yes, this includes feature requests. Yes, this includes whatever discussion you want to have with me about MaraDNS in private email. All of this belongs on the list, not in my personal mailbox—unless you include a check in your email.
Friday, October 2, 2009
An open source developer grows up
That's not how software development works. Linux? It's very disorganized; there is no central authority to standardize on things like the Desktop interface to use, the ABI for drivers, and what not. This results in Linux being a mess: A hodge-podge of driver ABIs (sound is so bas that it's nay-to-unusable in Linux), desktop GUI interfaces (Qt, GTK, FLTK, Xaw, TCL/TK, Motif and its Lesstif clone, to name just a very few), programs at various stages of development, etc. The only thing Linux can seem to agree on at all is POSIX, which is so old and quaint, the only networking protocol it talks about is UUCP [1].
Linux makes a very good server OS for someone who knows what they are doing, but it is not and never will be an end-user desktop.
For example, the Linux sound system. What happened was that the main developer for Linux's sound system one day grew up and realized that the work needed to make open-source software compared to the reward he was getting was just not worth it. So he tried to make it commercial; other Linux kernel developers wanted to keep everything open source, so they threw out all of his work (never mind that his system was the standard system for doing sound with Linux for years) and reimplemented it, more poorly. Linux's sound is a mess to this very day, with dozens of half-baked audio systems in place, none of which works as good as the original system.
OK, let me go back to why this happened: The main developer grew up. He realized that open source software development for fun and for free is plain simply not worth it. He left the project. No other Linux developer was able to make the same quality of code he did.
Another example: Xconq, which I talked about in this blog posting. Summary: The principal author, after nearly two decades of work on the project on and off, finally lost interest in the project and development just came to a halt without any formal announcement. Many open source projects die like this; the developer loses interest, but never puts closure on the project. Instead of giving the project a proper burial, the project becomes a zombie, dead but pretending to be alive.
Another example: FVWM. Rob Nation realized one day that it was a far more productive use of his time to be with his wife and kids than to work on open-source software, so he stopped FVWM development. He handed over maintenance to other people who, IMHO, did not do as good of a job as Rob Nation developing the software; while FVWM2 has more features than FVWM1, the code is more unstable and more bloated. Indeed, I still use the last release of Rob Nation's FVWM1 today when I'm using Linux. FVWM1 ended with proper closure; FVWM2's development has slowed down but still appears to be actively development (albeit at a glacial pace); the last stable release was done in 2006, but a beta release was done as recently as last month.
Another example: People's Tactics. The developer made a free beer "grogger" wargame for Windows that simulates the old 1970s and 1980s wargames groggers played with hex maps and a zillion tiles on the maps (Squad Leader and other games from Avalon Hill, SPI, Axis & Allies which didn't use hexes but was probably the most popular wargame of this type, etc.) He realized that he should be paid for his work (software development, support, etc.), so removed the website for his older free game, and replaced it with a website for his for-pay Advanced Tactics game.
And, yes, I'm coming to the realization I need to put closure on MaraDNS. This means my next release of MaraDNS (MaraDNS 2.0) will be my last release of MaraDNS. MaraDNS 2.0 will have real Windows service support for the recursive code, in addition to a rewritten thread-free recursive core. I've done about two thirds of this work on and off for two years; I made a lot of progress in late 2007, and even more progress in the first two thirds of 2009, but come September I hit a roadblock when I hit the point of starting to implement full recursion. I have made some progress chipping away at that roadblock, but it's slow progress.
I also hit a point where I realized it is more fun to do things like research Chess variants that no one plays (openings, best opening setup, midgame strategy, etc.) than to finish up my DNS server. Indeed, I feel this software is holding me back; it's written in C (which is next-to-useless on a resume unless you also have C++ or Objective C; come to think of it, with all the companies outsourcing development to India, C development in any form might be useless at this point) in a day and age when the buzzwords people look for on resumes are things like "Java", ".net framework", "PHP", and "SharePoint".
I have been spending my time working on MaraDNS instead of getting my resume out there (it's pretty discouraging in this economy, but I shouldn't give up) or updating my skills. I have been spending my time working on MaraDNS instead of doing what it takes to reach my goals: To have a job making a living wage so I can support myself and my girl comfortably in the US (ideally somewhere where it is sunny like California, my home).
So, yeah, what I'm saying is that I'm taking a break from MaraDNS. I have every plan to finish up the Deadwood code and come out with MaraDNS 2.0. But it isn't going to be the end of 2009. Maybe I'll start work on MaraDNS again next week; maybe I'll just let it rest until 2010 sometime, just as I stopped Deadwood development for most of 2008 and only started development up again in early 2009.
Do I want to finish up Deadwood and release MaraDNS 2.0? Yes. Am I going to do it anytime soon? Probably not. I'm having fun downloading and trying out various turn-based strategy video games; I would rather do that right now (or research Chess variants) than develop a program which has only made a very little amount of money for the amount of work I've put in to the code.
I'm growing up and realize that there are more important things than making programs for fun and for free. Yes, I do want to finish up Deadwood mainly to put closure on the project, but I don't think I'll do any MaraDNS development besides basic bug fixes after MaraDNS 2.0 comes out.
- Sam
[1] UUCP: You don't want to know. I remember when an ISP I worked for dropped UUCP support; UUCP was a nightmare to configure and we simply no longer had anyone who could configure our UUCP servers. The *only* thing UUCP can be used for is email and Usenet.
Thursday, October 1, 2009
Capablanca opening setup research
In the 2000s, we have had many discussions on the Chess Variants server about what makes for the best Capablanca setup. It has been asserted, for example, that all of the pawns need to be defended in the opening setup, and that any opening setup with undefended pawns gives White a sizable advantage.
What I have done is research a subset of Capablanca setups to see if this is true. Since there are some 126,000 setups where the Queen is to the left of the King and the bishops are on opposite colors with the Capablanca pieces, I have reduced the number of setups to six thusly:
- The rooks must be in the corners. The king must be in the F file. This is to accommodate the software I used for my testing, which only allows castling if these conditions are met.
- The knights must be in the C and H files, and the bishops must be in in the D and G files. The thinking is this: Since the knights are weaker in Capablanca setups on a 10x8 board than they are in FIDE chess, placing the knights relatively near the center makes them more relevant in the opening and midgame. The bishops are placed near the center just like they are placed in FIDE chess; this is done so that natural pawn development moves (e4, f4) do not hamper the development of the bishops.
- The Archbishop (Knight + Bishop), Marshall (Rook + Bishop), and Queen may be placed anywhere in the three remaining files.
- RMNBAKBNQR (I call this arrangement “Notetaker’s Chess”; all pawns are defended in the opening array)
- RQNBAKBNQR (“Schoolbook Chess”; again, all pawns are defended)
- RANBMKBNQR (I call this arrangement “Narcotic Chess”; the B pawn is undefended in the opening array)
- RQNBMKBNAR (I call this arrangement “Opiate Chess”; the D and I pawns are undefended in the opening array and White can threaten mate on the first move with Md3)
- RANBQKBNMR (“Aberg Chess”; the B pawns are undefended)
- RMNBQKBNAR (“Carrera Chess”; the original 10x8 setup from the 1600s; the B pawns are undefended)
Setup | Wins | Losses | Draws | Games played |
ranbqkbnmr | 46% | 43% | 12% | 1010 |
rmnbqkbnar | 47% | 42% | 12% | 1017 |
ranbmkbnqr | 49% | 41% | 10% | 1002 |
rqnbakbnmr | 48% | 40% | 13% | 1006 |
rqnbmkbnar | 50% | 38% | 11% | 1004 |
rmnbakbnqr | 53% | 37% | 10% | 1011 |
Since we played 1,000 games with each variant, the scores may be off by as much as 2% or so.
In conclusion, we can see that whether or not all pawns are defended is not a relevant factor in White having more of an advantage. The setup with the lowest White advantage (ranbqkbnmr, White advantage 3%) has one undefended pawn in the opening array for each side, and the setup with the highest White advantage (rmnbakbnqr, White advantage 16%) has all pawns defended in the opening array.
ranbqkbnmr appears to be the most balanced setup (3% White advantage); this is followed by rmnbqkbnar (5% White advantage). ranbmkbnqr and rqnbakbnmr both have an 8% White advantage; ranbmkbnqr has fewer draws, however. Both rqnbmkbnar and rmnbakbnqr give White a considerable advantage (12% and 16%, respectively); I am not surprised rqnbmkbnar has a considerable White advantage, since the D pawn near the King is unprotected, and since White can threaten mate on the first move with Md3. However, it is a mystery why White has such an advantage with the rmnbakbnqr, since all pawns are defended in this setup. It would appear undefended flank pawns don’t give White any significant advantage.
For people interested in this research, I have made a 4-megabyte archive with all of the games played in the course of this research here:
http://www.samiam.org/schoolbook/I would like to thank H.G. Muller for modifying Winboard and creating Joker80; this software made this research reasonably straightforward to perform.
Edit: Corrected number of undefended pawns in Carrera and Abera opening setups.
Tuesday, September 29, 2009
Deadwood snapshot update
Rant: Putting closure on a project
In 2006, when someone asked if Xconq was dead on the mailing list, they were told “It's not dead, it's... resting.”. But, at this point, Xconq was dead; while a few CVS changes were done after this, the last CVS commit was done in 2007 and the project has been completely moribund since then.
Xconq is dead.
OK, big deal. A lot of open source projects come and go. My issue is this: As an open-source developer, I have a responsibility to put closure on my projects. When a given open-source project is something I realize I have no interest in working on any more, I let the project go, via a formal announcement. For example, I announced the end of my Kiwi Spam program on October 17, 2001; while I got a couple of emails expressing disappointment the project had ended, I never got a maintainer for the project. Recently, after making a few minor updates to ObHack, my fork of a random map generator for Doom-type games, I announced I would no longer be working on this code. There was enough interest in the code I was able to hand over maintenance duties over to Fritz, who has since then fixed a bug I never fixed and made a couple of releases of ObHack.
Closure is, IMO, very important for an open-source project. It tells the world “I’m responsible enough to know when to start a project, and, just as importantly, when to finish a project.” It allows the community of users to know you’re no longer interested in a project, making it possible for them to become the maintainer if there is still interest in a given project (such as what happened with ObHack).
Everything has a beginning and an end. A responsibly done open-source project is one that knows when it’s time to pack up and go home.
MaraDNS snapshot update: Documentation updated
The MaraDNS tarball with these updated web pages can be seen in the 20090929 snapshot available at this location:
http://www.maradns.org/download/1.3/snap/200909/
Monday, September 28, 2009
New MaraDNS snapshot: FAQ updated
Opera users: Please tell what HTML I need to change on MaraDNS' FAQ page to get it to render properly (to get the box with the FAQ questions and answers to be to the right of, instead of below, the navigation toolbar on the left). This page renders fine in IE8 and Firefox 3.5; it's only Opera 10 that seems to have a problem with it (and other pages at MaraDNS.org render fine in Opera 10).
Update: Opera is having problems with the FAQ overflowing in horizontal size because it uses a slightly bigger font for fixed-width text. The offending <pre> tag is in this FAQ question. I'll see what I can do to fix the CSS to work around this Opera-specific issue.
Second update: Fixed. I've also added the question numbers to all the FAQ answers, and fixed an "otther" to correctly be "other".
Sunday, September 27, 2009
ChessV 0.9.4 released
It is available here for download:
http://samiam.org/chessv
Saturday, September 26, 2009
Spanish accents for US keyboard update
The page where I link to this keyboard layout is here:
http://samiam.org/typing.spanish.characters.html
And the download is:
http://samiam.org/es-us-20090926.zip
Thursday, September 24, 2009
ObHack secret spoiler bug fixed by Fritz
Well, Fritz has fixed this bug. I have a patch at the following location:
http://samiam.org/slump/secret-spoiler.patch
Note that this patches cleanly against 006b, but does not patch cleanly against Fritz’s ObHack 006.4 release. I am sure Frtiz’s next ObHack release will have this bug fixed.
Wednesday, September 23, 2009
I’ve been sick; Spanish keyboard update
The page where I link to this keyboard layout is here:
http://samiam.org/typing.spanish.characters.html
And the download is:
http://samiam.org/es-us-20090923.zip
Sunday, September 20, 2009
Deadwood minor update
My goal right now, for Deadwood 2.5.01, is to have Deadwood able to look at a remote reply and determine whether:
- The reply is a complete reply; if there are any CNAME records in the reply, all CNAME records have a corresponding A (or whatever) record
- The reply is an incomplete CNAME reply
- The reply is a NS referral. All records with A or AAAA glue are converted in to IPs; all incomplete records (NS referrals without names) are stored as names
- The reply is a not there reply
Saturday, September 19, 2009
Back to Deadwood
It can be downloaded at this location:
http://maradns.org/deadwood/snap/
Friday, September 18, 2009
Explanation of Schoolbook 2009 results
I will, for Schoolbook 2010, set up things to have more fair time controls. Right now, I'm looking at doing 40 moves in 20 minutes, with 30 seconds a move for engines that can only do "X seconds per move".
Thursday, September 17, 2009
Schoolbook 2009 tournament
ChessV 0.9.0 with time handicap: 3
TJChess10x8: 3
Joker80: 0
The games were Game/15 (all moves in 15 minute) games done on a Core 2 Dual 1.5 ghz laptop processor. A reasonable, but not extensive, effort was made to make sure no other processes were running during the tournament. Both engines played (and pondered) at the same time on the same computer.
TJChess and Joker80 played at Game/15 in WinBoard. ChessV 0.9.0 was given 30 seconds to make a single move.
Joker80 lost all four games it played, giving TJChess10x8 and ChessV 2 points each. In the ChessV-TJChess10x8 games, TJChess10x8 won once as white, as did ChessV.
I observe that Joker80 is usually stronger than TJChess10x8, but plays Game/15 very poorly.
In both TJ-vs-ChessV games, ChessV made a castling move TJChess could not recognize (in Schoolbook, it is legal to move the kind two or three squares while castling, and four squares while castling on the queenside). When this happened, I stopped the clocks, set up the board to have the castling move be done, restarted WinBoard, and gave TJChess10x8 10 minutes to complete the rest of its moves.
The actual games, including Zillions of Games save files of all games, are available at the following location:
http://samiam.org/schoolbook/
As an aside, people can download ChessV here:
http://samiam.org/chessv/
For people who do not have Zillions of Games, the save files are in a format that looks like a normal Chess score.
OK, I'm done with Chess variants for 2009. We'll see if I have a 2010 tournament.
Time to go back to developing Deadwood.
Tuesday, September 15, 2009
Deadwood news
What I have done, however, is test the Deadwood code. I have been running Deadwood in debug mode as my only DNS server for over a week and have not had a single crash. I also ran stress tests, again without a crash. The code looks solid; I think the September 9 update fixed whatever it was that was causing the crash I and an anonymous poster saw a week or two ago.
I hope to start work on Deadwood again in a day or two.
Wednesday, September 9, 2009
Deadwood minor update
Tuesday, September 8, 2009
Deadwood roadmap: Implementing recursion
My plan is to write functions that handle the recursion, then revamp the code that handles in-flight requests to be able to handle recursive requests.
The first code I will write is a function that can compare DNS labels in a string to see if they are the same label. If they are, return a 1, otherwise return a 0 (-1 if some error happens while doing this processing).
After doing that, I will write a function that, if given a DNS reply with NS records, converts the NS records in to IPs if there is sufficient information in the AR section of a DNS reply to do so.
Once I do that, I will make a function that sees if a given reply is complete. A complete reply is a reply where the IP or whatever they asked for is in the answer they give us. A CNAME reply is complete if it includes the requested IP/whatever. A "not there" (SOA in NS section) reply is complete. A reply with an IP is complete.
A CNAME reply without the actual IP or whatever is incomplete. As is a NS referral.
Anyway, I hope to start work on this in a day or two.
Saturday, September 5, 2009
New Deadwood snapshots
Since this anonymous commenter reports a glibc error (which, sadly, they did not have a chance to save), this indicates that there might be a double-free() situation. What I have done is revised reset_rem() to always make sure a given memory location is a non-null pointer before free()ing it, and making the memory pointer point to null after resetting it. I have also revised the code to initialize all "local" pointers as null pointers before being used.
The snapshot with these changes applied can be downloaded here:
http://maradns.org/deadwood/snap/
The filename with an 'H' in it (head branch) is the version to look at.
OK, at this point, I'm closing the issue as being unreproducible. If anyone sees this and has a stack trace or any useful information, please let me know.
I have also revised the stable 2.3 branch of Deadwood by removing a spurious fflush from the hash (cache) code. Again, the download is in the same place, with an 'S' in the filename (stable branch).
Friday, September 4, 2009
Deadwood testing update
I looked at the Dr. Watson log, but the log had no useful information about why Deadwood crashed (it had an exception number of 80000007 and reported "ERROR -> ntdll!KiFastSystemCallRet: 7c91e514 c3 ret"), but appears to be something outside of Deadwood's code).
I ran some stress tests with Deadwood in Linux this morning and was unable to reproduce the crash.
I am going to close this issue as "unreproducible" unless anyone chimes in and reports Deadwood 2.4.07 crashing. It was probably caused by some bug in the Windows kernel or what not. If anyone sees this kind of crash, it would be best to include a stack trace, but I'll live if all you can give me is a Dr. Watson rerpot.
Thursday, September 3, 2009
Another feature to add for Deadwood 3.0
This means I have to add every single variable MaraDNS 1.x has in mararc files and adding it to Deadwood. For the most past, the variables will be ignored and do nothing; the Deadwood man page will have, for each of these variables, a description of the variable and the note "This variable does not affect Deadwood and is only here so Deadwood can parse MaraDNS mararc files". For example, we will have a "dummy" csv2 dictionary variable (a pointer to a zone file in MaraDNS 1.2+) which will do nothing in Deadwood.
The most notable change I will have to make is adding support for ipv4_alias to Deadwood 3.0, which will result in the code which parses IPs being re-written.
Tuesday, September 1, 2009
MaraDNS and Deadwood roadmap
The following roadmap is completely speculative; I might decide to stop MaraDNS development and only provide basic bugfix support for MaraDNS/Deadwood:
- Implement recursion for Deadwood, and release this as Deadwood 3.0 (Deadwood 2.0 will still be supported as the Deadwood 2.3 branch for people who need a very small program on embedded devices or a high-performance DNS load balancer)
- Release MaraDNS 1.3.15.01 which will be MaraDNS 1.3.14 with bugfixes applied.
- Release MaraDNS 2.0.01, which will be MaraDNS 1.3.15.01 with Deadwood 3.0, and all the old recursive code torn out.
- Announce EOL timeline for MaraDNS 1.3.07.XX
- Not implement any new features for MaraDNS for a period of six months or longer after 2.0.01 is released
Monday, August 31, 2009
Deadwood 2.4.07 released
The new features added after 2.4.06 are:
- execfile support
- Multiple in-flight queries for the same hostname are merged.
http://maradns.org/deadwood/testing/
OK, I'm going to take a break from Deadwood and MaraDNS development for a few days or so.
Sunday, August 30, 2009
New Deadwood snapshot: Almost ready for Deadwood-2.4.07
Now, all I have to do before releasing Deadwood 2.4.07 is make sure it works In Windows, verify all of the SQA tests pass, then make and upload the source code tarball and Windows binaries.
In the meantime:
http://maradns.org/deadwood/snap
New Deadwood snapshot
Friday, August 28, 2009
Deadwood snapshot update: inflight merging code finished
Next: Test the code (make a custom DNS server that takes a few seconds to reply and increase Deadwood's timeout in the test)
In the meantime:
http://maradns.org/deadwood/snap/
Thursday, August 27, 2009
Minor Deadwood snapshot update
Wednesday, August 26, 2009
New Deadwood snapshot
http://maradns.org/deadwood/snap
Tuesday, August 25, 2009
ObHack 006.3 released by Fritz
http://samiam.org/slump
ObHack has a number of features not in to the Oblige 3 codebase, such as Deathmatch and CTF support (unlike Oblige, even single-player maps have some basic Deathmatch support, and there's even a mode which tries to make maps that are both good DM and single-player maps), Heretic support, and what not.
I hope people enjoy the code. Feel free to post suggested features or bugfixes here, but remember that Fritz, not myself, is maintaining the code.
New MaraDNS snapshot
The file can be seen here:
http://www.maradns.org/download/1.3/snap/200908/
Monday, August 24, 2009
Deadwood update: No Deadwood 2.3.05 release needed
make_remote_connection uses set_dns_qid to make the query ID random before sending it to the remote DNS server.
In conclusion: There is no need to make a new Deadwood 2.3 release; the DNS QID is always a random number. However, the cleanup to make it so it doesn't look like the QID isn't random I'm going to keep in the 2.3 tree; should a bug come up in the 2.3 code, I'll also apply this fix.
New Deadwood snapshots
In addition, the code that resent queries when we didn't hear from upstream has been revamped to create a new query ID number every time we resend the query, instead of echoing the local query ID. This is something I have also fixed in the Deadwood 2.3 codebase.
One issue is that, sometimes we will need to keep the DNS-over-TCP connections around while the DNS-over-UDP connections have died. I've redone forward_remote_reply() so that, once this routine sends a UDP reply, it resets that particular local UDP connection so it won't send a reply again. This will hopefully solve the multiple DNS-over-TCP issue.
I think I will have it so DNS-over-TCP connections simply don't look for in-flight requests, but always open up a new request. I'll do this, but put some things in place so we could have both UDP and TCP on the same connection number if this is desirable in the future.
The work can be seen here:
http://maradns.org/deadwood/snap/
The deadwood-H releases are releases for the next 2.4 release of Deadwood (the "Head" branch); the deadwood-S releases will become the next 2.3 release of Deadwood (the "Stable" branch). I have run all tests in 32-bit CentOS for the next stable release; all I have to do before Deadwood 2.3.05 is to test it in 64-bit CentOS, make a new random prime for both the source code and the Windows compile, make a Windows compile, then Deadwood 2.3.05 will be ready.
Sunday, August 23, 2009
New Deadwood snapshot: Final touches to execfile
It's here:
http://maradns.org/deadwood/snap/
Saturday, August 22, 2009
Deadwood snapshot update: execfile finished
I have finished up the feature this morning; all files parsed with execfile must be in /etc/deadwood/execfile and errors in sub-files are not correctly reported; the workaround is Deadwood -f /etc/deadwood/execfile/filename, which will report the line a parse error is on.
I have also documented execfile.
The one last thing I will do before the next Deadwood 2.4 release is have it so, on Windows systems, execfile uses a different directory besides /etc/deadwood/execfile; probably just the same directory all the other Deadwood files are in Windows (#ifdef the chdir() to make sure it isn't used in Windows).
It's time to go back to merging multiple in-flight DNS requests.
Friday, August 21, 2009
New Deadwood snapshot
The feature currently works, but I need to harden it against security-type issues this feature can add.
Thursday, August 20, 2009
Deadwood 2.4.06 released: ip_blacklist support
This is useful if you have one of those annoying ISPs who take "not there" queries or otherwise performs "NXDOMAIN redirection". Simply add the IPs your ISP directs to you when you should get a NXDOMAIN, and Deadwood will convert any DNS response with one of the offending IPs in to a "not there" DNS reply.
Note that Deadwood will not convert cached entries this way; if you wish to use this feature and have used earlier versions of Deadwood, please delete your Deadwood cache first.
It can be downloaded for both CentOS Linux (as source code) and Windows here:
http://maradns.org/deadwood/testing
Wednesday, August 19, 2009
Deadwood updates
I've updated the tests and should be able to release Deadwood 2.4.06 tomorrow.
In the meantime:
http://maradns.org/deadwood/snap/
Tuesday, August 18, 2009
New Deadwood snapshot
- IPv6 support for blacklisted IPs
- SQA regression
- Release Deadwood 2.4.06
http://maradns.org/deadwood/snap/
Monday, August 17, 2009
New Deadwood snapshot: Workaround for ISPs' error pages
That in mind, I have implemented a new dwood2rc parameter: ip_blacklist. Should an IP appear in an answer that is in the ip_blacklist, Deadwood will reject the answer. I have already implemented and documented the new feature, but I need to make these kinds of answers proper "nothere" replies (not actual NXDOMAINs for technical reasons), add IPv6 support (done in some parts of the code but not all of it), add a SQA regression, then I should be done with this feature.
For people who want to try out the feature in the meantime, it's here:
http://www.maradns.org/deadwood/snap/
Friday, August 14, 2009
New Deadwood snapshot; new MaraDNS timeline
I have decided to revise the MaraDNS timeline. The current MaraDNS timeline is as follows:
- MaraDNS 1.0 will be supported for critical security fixes only until December 21, 2010. Should a security bug be discovered just before the cut-off date, requiring changes so that the patched version would be released after December 21, I will simply remove MaraDNS 1.0.
- MaraDNS 1.2 is only supported for critical security fixes, and only until December 21, 2010. As per 1.0, should a security bug be discovered just before the cut-off date, requiring changes so that the patched version would be released after December 21, I will simply remove MaraDNS 1.2.
- MaraDNS 1.3.07 will be supported only for critical security patches for the foreseeable future. A EOL date will be announced when and if MaraDNS 2.0 is released.
- Critical bug fixes will be applied to the 1.3.post-7 branch of MaraDNS for the foreseeable future.
- I have no planned release date for MaraDNS 2.0. Indeed, at this point, I've decided to not even promise that MaraDNS 2.0 will be released. I hope it is, but I just don't like having a commitment to, say, release MaraDNS 2.0 before the end of the year looming over me.
I'm having a lot of fun working on Deadwood, and I really hope to finish up the Deadwood code and release MaraDNS 2.0 by the end of the year, but, no promises. Since I'm not making much money doing this, this is "for fun and for free". Timelines and deadlines are not fun. So, I'm getting rid of them.
Monday, August 10, 2009
Deadwood and MaraDNS snapshot updates
In addition, I fixed the HTML a little for the MaraDNS download page and updated the copy of MaraDNS.org in the MaraDNS tarball.
The Deadwood snapshot can be downloaded here and the MaraDNS snapshot is here.
Sunday, August 9, 2009
Deadwood roadmap: Consolidate multiple requests for the same name
Doing things this way improves security.