Showing posts with label First 2000s decade. Show all posts
Showing posts with label First 2000s decade. Show all posts

Saturday, September 4, 2010

New Deadwood snapshot: Non-A records now resolve

I guess not that many people are testing Deadwood.

Let me be honest about the type of testing I’m doing with Deadwood: I am testing Deadwood’s as a DNS server used for casual web surfing on today’s internet. That means that most of the queries done are A queries; I don’t do much testing with AAAA (IPv6) queries because, quite bluntly, my ISP doesn’t offer IPv6 service and I can think of only one site on the Internet with an AAAA record: ipv6.google.com.

Likewise, I haven’t done any testing with MX records. I haven’t touched MX records at all because I’m not using Deadwood with a mail hub. So, it came as an unpleasant shock to me when I discovered last night that Deadwood hasn’t been properly resolving MX records for over a year.

In Deadwood 2.4.05 (released August 9, 2009), I added the ability to rotate resource records. Unknown to me, this feature broke Deadwood with any variable-length record, such as a MX record pair where the hostnames are of different lengths.

The advantage of using Deadwood’s robust string library with almost all of Deadwood’s DNS processing is that this bug did not result in any memory corruption or cause any other problems; the only issue has been that Deadwood would not resolve MX or other variable length records.

The idea that some freetards advocate that open source software is magically tested and that all bugs become shallow is nothing more than so much—how should I say this—mental masturbation. The author of Mailman, John Viega, points out how wrong this is in his excellent essay “The Myth of Open Source Security”.

Excuse me for the blunt wording, but I am a little frustrated right now: I have devoted a decade of my life to MaraDNS, and I haven’t even been able to get a job because of my hard work; while I have had a couple of interviews I would not have had because of MaraDNS, so far I have gotten no offers. Yes, those are interviews I would not had have if it weren’t for MaraDNS, and, yes, MaraDNS kept my skills from getting completely rusty during the ’00s when I was concentrating on learning Spanish and living in Mexico. But, looking back, I really wish I had spent more time learning C++ and object oriented programming and less time editing the Wikipedia or posting to /..

It looks like Deadwood isn’t getting much external testing; not one person saw Deadwood’s issue with MX records in the year Deadwood has had this bug. So, yeah, like everything else with MaraDNS, I’m responsible for just about all of the testing. This isn’t a complete loss; people have asked me in interviews about my testing methodology for MaraDNS.

I have just uploaded a snapshot which fixes the issue with rotating records like MX records:

http://maradns.org/deadwood/snap/

As a side benefit, since I have fixed this issue, TTL aging and RR rotation now work with ANY records.

Next: Set up a test for this issue, as well as DNS compression tests for all of the resource record types MaraDNS supports. If I get time, I will also set up tests to make sure Deadwood correctly handles things like SRV records with compression pointers, and that Deadwood doesn’t compress SRV records.

Friday, August 13, 2010

Deadwood 2.9.04 released

I have released Deadwood today. This is the recursive resolver that I recommend all MaraDNS and Deadwood users use unless they have a compelling reason to use an older release of a recursive resolver; all other MaraDNS recursive code will now only be updated to address critical security problems. For example, if MaraDNS 1.0’s resolver stops being able to resolve www.google.com or www.microsoft.com tomorrow, I will not update it; I will tell people to update to Deadwood.

That said, this is still a beta-test release of Deadwood. The code has only been beta-tested for under a month and I want to get two full months of beta testing before declaring it stable. I really appreciate all of the bugs and issues Sebastian Müller has reported and hope other people also test this software and report issues.

It may seem unusual that I am not fixing bugs with the stable 1.0 recursive resolver while the Deadwood (MaraDNS 2.0) recursive resolver is only undergoing beta-testing. This isn’t entirely true; if someone reports a bug with MataDNS 1.0’s recursive resolver and wants it fixed, I will fix it. For a price. My business model with MaraDNS is to use the program as my resume (since I was having fun in Mexico during the first decade of the 2000s, it’s how I have been keeping my computer skills up to date), as well as accepting donations and selling service and support. [1]

Right now, the kinds of bugs I want people to look for and report in Deadwood are host names that do not resolve. If there is a host out there that correctly resolves in BIND or whatever, but doesn’t resolve in Deadwood, I want to know about it. I also want to know about any memory leaks people find in Deadwood. I welcome reports of crashes, but only if accompanied by a stack trace or recipe to reproduce the crash (ideally both). Valgrind errors are OK to report, but only if Deadwood is compiled with “VALGRIND_NOERRORS” defined (export FLAGS='-g -DVALGRIND_NOERRORS' ; make from the src/ directory of Deadwood). I would love people to test IPv6 compatibility with Deadwood; the SQA regressions tell me Deadwood works with IPv6, but I would love reports from users on IPv6 networks to see if they are any real-world problems with it (IPv6 needs to be explicitly enabled when compiling Deadwood: export FLAGS='-O3 -DIPV6' ; make ).

Deadwood 2.9.04 can be downloaded here:

http://maradns.org/deadwood/testing/

[1] I find it incredibly naive when people tell me I work on MaraDNS because I want to tweak things or what not. No, sorry freetards, the amount of work I do on MaraDNS is far greater than tweaking around and installing a new Linux distribution or compiling a program with different optimization flags. The reason I worked so hard on MaraDNS is because I wanted to make my mark on the world, have my Wikipedia page. I did that. And it was a nice way for me to pass the time during slower moments in Mexico when there weren’t girls around to flirt with. But, now I’m married and I need to think about the bottom line. Amazing how a wife changes my priorities.

Tuesday, August 10, 2010

Where is the money?

This job market is scary

Sometimes, in the middle of the night, I just wake up and I can’t sleep anymore. I wonder if I am going to be able to re-enter the technology field or if I’m just going to end up teaching ESL for the rest of my life.

How MaraDNS came in to being

About a decade ago, everything was right. I had a well-paying promising contract with a major software company. I was making far more money than I knew what to do with. The work environment was fun and there was no limit with where I could take my career.

I was miserable.

It didn’t help that the girl I was dating at the time was not working out. When I finally let her go—she still owes me $312.98 for the record—I could not for love or money get a decent date. Having to commute for an hour followed by working eight hours followed by another hour coming back home five times a week doesn’t leave me much time to be part of the singles scene.

Something had to change.

The last job I had in technology before the dot-com bubble popped was for an internationalization firm. I met a lot of people from a lot of countries speaking a lot of languages. This revived my long-dormant interest in learning Spanish. Once that company died when the dot-com party ended, I went down to Mexico for a few months to learn Spanish.

It was a life-changing experience. I instantly went from being a guy who couldn’t get a decent date to save my life to someone who had this beautiful girl in my bed passionately making out with me. While things sadly didn’t work out with her, I discovered a world where I was no longer isolated and miserable. I had found home.

Of course, I wasn’t going to put my technical skills to waste. No, I wanted to make a name for myself and MaraDNS was already well underway when I was still working in the dot-com industry. It ignited my passion because here was something that wasn’t going to get forgotten when the company I worked for got bought out two times. It was my chance to make my mark on the world.

And, indeed, it has. You do a Google search of my name and MaraDNS is the third link that pops up. It has a Wikipedia entry. Indeed, MaraDNS is notable enough that the entry can not be easily deleted by the kinds of Wikipedia editors hell-bent on removing anything they can from the Wikipedia [1], because it has been used by a number of people and mentioned in books, in the title of a ZDnet article, as well as a number of scholarly papers.

After over a year of hard work, I released MaraDNS 1.0 on June 21, 2002. Then I went back to college and put MaraDNS on the back burner. Sure, I fixed bugs, but with all of my studies, and with adjusting to living in a far more conservative town than where I lived before (something I never fully adjusted to, quite frankly), I put MaraDNS on the back burner, sometimes going as long as half a year without updating it. Even back then, I wanted to rewrite MaraDNS’ recursive code, but just didn’t have time to do it.

As things were winding down with college and I was getting accustomed to life in that town, I was able to devote some time to improving the authoritative half of MaraDNS, including adding non-recursive IPv6 support to MaraDNS and improving its zone file format. This culminated with MaraDNS 1.2 being released in late 2005, a few months after I graduated from college. I then made some minor revisions to the zone file format to make it possible to write a Python script to convert BIND zone files in to MaraDNS zone files; that resulted in the 1.3 release a year after 1.2 was released.

It was between the 1.2 and 1.3 releases that I decided it was more important to go back to Mexico to improve my personal relationships than to try and get a job in the computer industry again. I had two notable rejections because I didn’t know more about C++ and objected-oriented programming, from both Google and a startup in southern California, and ended up briefly working as a cashier in Wal*Mart before throwing in the towel and going back to Mexico.

While dating girls down in Mexico, not only did I get a Python script to convert BIND zone files to MaraDNS zone files done, I finally started work on rewriting the recursive engine, something I had wanted to do for years. I started writing Deadwood in late 2007, with me planning to have a standalone recursive DNS daemon finished in mid-2008.

That didn’t happen. I had the fully non-recursive cache finished by late 2007, but then realized I had to concentrate more strongly on dating to have the right girl in my life in 2008.

It was while dating in 2008 that I started realizing the needs to put boundaries on MaraDNS support and start looking in to getting compensated for my hard work. Private email support was getting backlogged, so I finally had to let people know I would not support MaraDNS via private email without being paid for my time. People who appreciated MaraDNS started paying me a little in the tip jar I set up or by paying me a token sum for me to implement a feature they wanted in MaraDNS.

I had lost a lot of my free-software ideals at this point. I believed in 2000 that the year of the Linux desktop would happen. In 2004, I got off my high horse and started dual-booting in to Windows. In 2008, I got rid of my Linux partition altogether and started using Windows with Cygwin and a VMware virtual machine for the occasional Deadwood development I did that year. As I started developing Deadwood again, I tried putting Linux on my computer and liked it so little that I stabilized on the current setup I have for Deadwood development: Windows XP as my primary desktop OS, along with a CentOS 5 virtual machine which I use to develop Deadwood.

While this was going on, I found the girl who is today my wife in late 2008, and then had both a setup in place and some more free time to devote to working on Deadwood in 2009.

After getting most of the underlying support for having a fully recursive nameserver done (DNS compression support, integrated DNS-over-TCP support, full mararc dictionary variable and “execfile” support, “ip_blacklist” support, inflight merging, etc.), things with my girlfriend got serious and she became my fiancée. With marriage looming on the horizon, I grew up and realized it was time to make a roadmap to put closure on MaraDNS.

I was, when I made that decision, close enough to having Deadwood be fully recursive that I made Deadwood’s full recursion the point when I would declare MaraDNS done. I started work on Deadwood again in early 2010, and finally had full recursion finished in late July of 2010.

So, yeah, MaraDNS is finished. This doesn’t mean I am never going to make another release of MaraDNS. MaraDNS 2.0 is simply going to be MaraDNS 1.4 with the old recursive code thrown out, replaced by Deadwood being integrated in to the build script.

I will also update the documentation telling people how to update from MaraDNS to Deadwood. This will have to be done by hand; in order to ease the transition, I will support both MaraDNS 1.4 and 2.0 with security and other critical bug fixes for the foreseeable future. I also have no plans to stop fixing “this host does not resolve with Deadwood” bugs.

In addition, I am getting some minor sponsorship for MaraDNS, and will consider implementing features my sponsors want to implement. The only other thing I might do is add some more extensive SQA tests to test for bugs in fully recursive Deadwood (I currently only have one that tests one kind of recursive query).

Back to reality

So, yes, MaraDNS is finished. Time to get back to reality. I have been spending the last couple of weeks, along with fixing bugs in Deadwood, learning about a lot of new technologies. I have a mid-1990s book on Object Oriented programming I have almost finished (inheritance, both single and multiple, abstract classes, throwing and catching exceptions, a bit on C++ templates).

I had a phone screen for, of all things, a Javascript position yesterday. The position didn’t pan out: Even after spending all last weekend madly studying and learning Javascript, and explaining it is hardly the first scripting language I played with, my technical knowledge was not up to par with what they were looking for.

A good friend of mine told me last night I need to get more focused to get something in today’s job market. Since I have decades of C programming experience, and well over 60,000 lines of C code to show potential employers (MaraDNS), it makes the most sense to expand this with C++. There is the argument that it may make more sense for me to instead concentrate on Objective C, but the issue there is that I’m not a user of Apple’s products and don’t see too much money selling 99 cent iPhone toy applications.

I feel, if I improve my C++ programming, I will be able to get a good job, possibly with Google. Back during the dot-com days, I went to a lot of Linux User Group meetings where I met such people as Paul Vixie, Larry Wall, Linus Torvalds, RMS, as well as getting on a first-name basis with Chris DiBona. I think I will shoot Chris an email and see what ideas he has for me getting a stable corporate job.

I also have, bouncing around my head, a couple of ideas of how I can use the MaraDNS code to make a commercial product. I’m not sure how to develop the ideas and make a product from them, but I have already sent out a couple of emails to people who may have an idea how to start a business with them.

I’ve grown up. The 2000s were a good decade, since not only did I become fluent in the Spanish language and make my mark on the world with MaraDNS, an excellent high-security tiny embedded DNS server, I also found the woman who today is my wife.

There are some things I regret. I feel I spent too much time in the 2000s editing the Wikipedia, posting to Slashdot, making chess variants, or playing video games by myself; time I could have spent mastering C++ and being in a better position to get a job in the tech sector today. Indeed, I have a strict “no posts to Slashdot, no edits to the Wikipedia, and no chess variants” rule I made for myself so I can focus on the things I need to do to be a good husband for my wife.

So, yeah, even though everything seems scary right now and I wake up with these anxiety attacks when I bomb a phone screening like what happened yesterday, I know there is a good job out there for me for the 2010s that will support my wife and myself. I just have to keep trying, not give up, and not get upset every time I try and fail.

[1] A classic example of the internet dork rule. I find it rather fitting that the twit who tried to delete the MaraDNS article is not only completely anonymous (unlike my Wikipedia account which I haven’t used since March), but also is someone who has been blocked for rude Wikipedia behavior, something that hasn’t happen to me [2].

[2] Truth in reporting compels me to point out I once had a 24-hour block for violating something called the “three revert rule” back in 2005, when I thought it was worth wasting my time arguing with the kinds of people who like to pretend their kitchen is their own empire that they are the grand emperor for. Oh, how I wish I had spent the time I wasted arguing on the Wikipedia (and, yeah, /.) learning C++ or Java.

Sunday, June 27, 2010

Deadwood 2.5.03 released: Memory leak plugged

While working on Deadwood 2.6.03, I found a memory leak that affects the 2.5 “stable” branch of Deadwood (but not the 2.3 branch); I have backported the plug for this memory leak to the 2.5 branch of Deadwood and have just released Deadwood 2.5.03:

http://maradns.org/deadwood/stable/

As an aside, the 2.5 stable branch of Deadwood is going to no longer be maintained when Deadwood 2.9.01 is released, hopefully in a week or two. I only made the Deadwood 2.4 and 2.5 stable branches because the fully recursive Deadwood code was taking longer than I expected, and I wanted a version of Deadwood taking advantage of all of the infrastructure I was building up for use until I had a fully recursive Deadwood out the door.

Now that I am very close to having Deadwood be fully recursive, there soon will no longer be a need to use Deadwood 2.4/2.5. I will maintain Deadwood 2.3 for the foreseeable future, since it nicely fills the niche of an open-source tiny (32k) little non-recursive caching (or non-caching if you prefer) DNS server.

That in mind, this release of Deadwood does not include a TCC version for easy compiling on Windows; people who want to compile Deadwood in Windows without installing MinGW (or Cygwin, for that matter) should compile Deadwood 2.6.03.



Google search fail: Around 2007, Stephen G. Hartke made some freely available fonts and put them up on a Geocities page. These fonts were then rounded up by the various “download this font” websites out there (Font Squirrel, etc.). Because of how Google indexes pages, the sites that mirrored the font appear first in the Google’s search results.

This would not be a problem, except for the fact that the GeoCities page has since been taken down. It took me 30 minutes of searching to find the official page for Stephen G. Hartke’s fonts (most notably Aurulent Sans).

My general experience is that Google has not handled the expansion of the internet in the first 2000s decade very well. It used to be that search results would quickly put you on interesting pages made by enthusiasts with truly useful content. These days, searches for things like obscure video games or what not will pop up a list of pages for the topic in question on the same small list of websites which happen to have a high Google ranking, regardless of whether the page in question has any interesting content. It often times takes a lot of digging around to find actually useful information.

Friday, May 21, 2010

I wonder if anyone still uses UUCP

Once upon a time, a dedicated connection to the internet was very expensive. You needed a serious military contract to afford it. So, universities and home users used something called UUCP to access the internet.

This was when the most commonly used services on the internet were e-mail and something called “Usenet”. Yeah, sure, there was other stuff like something called “IRC” (like MSN, but text-only and not as friendly), and, yeah, FTP, but the cool stuff on the internet happened via email or over Usenet. UUCP allowed you to cheaply access the internet, but only for e-mail and Usenet news.

UUCP was cheap because it allowed you to call up your internet provider and download, in one batch, all pending email and Usenet messages for you, while uploading any email you sent or Usenet articles you posted. If you didn’t subscribe to any high-traffic newsgroups, you could upload all of your email and Usenet “news” in a single five-minute or at most ten-minute daily modem session with your internet provider.

It was a simple way of accessing the internet, and until the explosion of the World Wide Web in the mid-1990s, gave a full internet experience.

Looking around on Google, it looks like a couple of internet providers might still provide UUCP access to the internet. This page looks promising, although I wonder how many active UUCP accounts they still have. There is also this listing, which is nearly a decade old, as well as this page, which, again, looks like an out of date webpage that probably needs to be purged.

I have made a number of references to UUCP over the years, including this blog posting or this recent posting to the MaraDNS mailing list. While I have never actually used UUCP for internet access (it was considered old-fashioned and out-of-date 16 years ago), I had something similar for a short while when I set up Leafnode to read Usenet offline in the early 2000s.

Sunday, March 14, 2010

What we use technology for

Let’s imagine we have a time machine.

The year is 1990 and we are in the technological age. In particular, we have the following in our house:
  • A computer, which we use for writing documents and keeping track of finances.
  • A Nintendo, which we use for playing video games (we may also use the computer for this)
  • A stereo system, which we use for listening to music. This will usually have a cassette and CD player, as well as a radio.
  • A television and VHS VCR, which we use for watching television and renting movies.
  • A telephone, for keeping in touch with people, communicating with friends or business contacts, or asking for a delivery of pizza
  • A camera for taking pictures
When we’re not at home and on the road, we have a Walkman (portable cassette player) for listening to music while walking around, and a cassette based car stereo for listening to music while driving.

Twenty years later, we’re still using technology for the same tasks
  • A computer, which we use for putting music on our MP3 telephone, burning CDs with music to play on our home theater or car, keeping in touch with people we would have lost touch with 20 years ago when we moved, communicating with friends or business contacts, and, oh occasionally writing documents and keeping track of finances.
  • An Xbox/Playstation/Nintendo for playing video games (or our computer)
  • A home theater system, which we use for watching movies, or sometimes for watching TV or listening to music. DVD/Blu ray players can play CDs, and we no longer use cassettes for custom mixes of music because we can now burn CDs.
  • A telephone, for asking for a delivery of pizza

On the road, we have more options:
  • A telephone, for listening to music when walking around, playing video games on the road, taking pictures, and, oh, for communicating with people wherever we are.
  • Our car either has a MP3 CD player, an input so we can hook up our phone to its speakers (via a plug or bluetooth), or we have some adapter to listen to music from our phone while on the road.
  • Our car often also has a device which lets us pop up a map and navigate our journey.
As you can see, we use technology for a lot of tasks. I will discuss how this affects operating system market share in a future blog entry.

Friday, February 26, 2010

A chronicle of my Linux desktop

I have a tradition, dating back to 1995, of taking a screenshot of my Linux desktop at least once a year; I didn’t make one in 1997, but did make two in 1996, 2002, and 2007.

For the most part, I have been using FVWM1 for my Linux desktop; my 1995 screenshot shows FVWM1, as well as My most recent screenshot for 2010. Indeed, the only years where I’m not using FVWM1 for my desktop are 1996, 1999, 2001, 2002, 2003, and 2009 (but in 2009 FVWM1 is running on a virtual machine, and 2002 has two screenshots, one of which used FVWM1).

My web browser has also changed over the years; the 2000 screenshot shows me using Netscape 4; the 2002 screenshots show me using Mozilla and Konqueror; 2005-2009 screenshots show Firefox; and the 2010 screenshot uses Opera (note that I still use Firefox, but in Windows).

It’s an interesting look at my Linux desktop environment over the years. One thing is how font handling has improved over the years (note: The second 2007 and the 2008 screenshots show some experiments I did with font design); the wordprocessor in one of the 1996 screenshots as well as both 2002 screenshots show how ugly fonts used to look in Linux; for the 2010 screenshot I finally threw in the towel and use Verdana as my only proportional font, along with having full True Type delta hinting enabled. Another thing is how resolution has slowly been increasing over the years; my 1995-1998 screenshots show an 800x600 display with 256 colors; my 1999-2007 screenshots are 1024x768 with high (65536) color, and my most recent screenshots are 1280x800 with 24-bit true color.

Links to the screenshots along with, in some cases, descriptions and configuration files, are available here:

http://samiam.org/screenshots/

Monday, February 22, 2010

Dillo 2.2: Return of the CSS hack

I have always had a soft spot for the Dillo web browser. It is the only graphical browser I was able to get to run on an old Gateway Handbook I have lurking around. Dillo is a browser which runs nicely on Windows 3.11 era machines while any other current browser plain simply does not run on a computer from that era.

About a week ago, Dillo 2.2 with limited CSS support has been released. Very limited CSS support.

Any web designer from the first decade of the 2000s remembers the days of the CSS hack. I remember designing a page from that era, having it look really nice in Mozilla (this was before Mozilla Firefox), but having the CSS make the site unusable in Netscape 4, forcing me to find a hack to hide the CSS from Netscape 4. For people who still care about Netscape 4 (but, really, you shouldn’t), the hack is /*/*/, which hides CSS from NN 4 until the next comment in the CSS.

Today, a lot of advanced CSS is not supported in Internet Explorer 6, which, despite Microsoft and web designers’ best efforts, is still used by 20% of the browser audience. Fortunately, the CSS hacks (there are various) for hiding content from IE6 are well-known; my usual hack is the !important hack for having IE6 see one set of CSS commands and web standard compliant browsers see another set of CSS commands.

Thankfully, the “zoo decade” (the first decade of the 2000s) is over, and the only browsers with significant market share that doesn’t pass the Acid 2 test are older versions of Internet Explorer. Everything else out there is standards compliant.

Well, everything else except Dillo 2.2. While Dillo supports a little CSS, it is no where near standards compliant. Click here for a screenshot of Dillo 2.2 rendering the Acid 2 test.

Dillo 2.2 is starting to support CSS. Indeed, my pages with CSS look a lot better with the very limited CSS Dillo 2.2 supports than with no CSS at all (my hacks for hiding the CSS from Netscape 4 are still in place). However, since Dillo 2.2 has very limited CSS support, I am having to do a CSS hack to hide the CSS which looks bad in Dillo: @media all {. You can see how I use this hack to hide the CSS from Dillo in this CSS.

Hopefully, the Dillo developers will not make this hack stop working until the Acid2 test gives us a smiling face in Dillo’s CSS renderer.

Wednesday, February 3, 2010

There is no such thing as a perfectly secure program

Back in 2007, I posted this criticism of DjbDNS on their mailing list. As you can imagine, the people on the mailing list were not happy.

What has changed with DjbDNS since I wrote this criticism:I can not help but observe that, ever since those three security holes have been discovered in DjbDNS, DJB advocates have been a lot more quiet about how ultra-secure DjbDNS is.

In comparison, MaraDNS has had 12 security problems in its near-decade of existence. OK, so I have four security problems for every security problem DjbDNS has. Then again, of those 12 holes:
  • Four were only in unstable development releases of MaraDNS
  • One was caused by broken behavior in the Linux kernel and not by MaraDNS
  • Two were patches against theoretical problems in AES that do not have any real-world exploits
  • The remaining five problems only allowed an attacker to perform a denial of service against MaraDNS; the one I patched yesterday only works in the unusual case of an attacker being able to give MaraDNS a csv2 zone file
To make this an apples-to-apples comparison, there have only been five practically exploitable security problems in stable releases of MaraDNS caused by my own coding errors. None of them have been worse than denial of service.

I should also point out the hole I patched yesterday only exists because I decided it was good to have a more attractive zone file format for MaraDNS.

The idea that there exists an uber-genius programmer who can magically make code without any security problems that never needs to be updated was a myth DJB advocates liked to present in the first decade of the 2000s. This is nothing more than a myth, shattered by the three security holes people have discovered in DJBdns (not to mention the backscatter spam problem in Qmail, which is a security problem).

Security is a process. Programmers, no matter how experienced or skilled, make errors. To criticize a programmer for making a mistake is unreasonable and unrealistic. The best we can do is make a program with a coding style that minimizes security problems; considering that MaraDNS has had only four (maybe five) practically exploitable security problems in stable releases is a very good record.

If you want security, you want to use a program that the programmer stands behind and continues to support. Which is what I have been doing with MaraDNS for nearly a decade and which I have no plans to stop doing.

Sunday, January 10, 2010

Technology changes in the 2000s

Now that the first decade of the 2000s (2000-2009) are behind us, an overview on how technology changed during these years.

Notably:

Cell phones went from being a fairly expensive tool used by affluent people to becoming universal and a teenage fashion statement. The cell phone I had at the beginning of 2000 did only one thing: Make and receive phone calls. The cell phone I had at the end of 2009 can make phone calls, take pictures, play mp3s, and even play simple video games, not to mention recording and playing back simple video clips.

There was a single “smart phone” in 2000: A black and white combination cell phone and Palm device that cost about $1000. Smart phones are now less expensive, widely used by affluent workers, are in full color, and include cameras.

In 2000, the handheld PDA to have was the Palm. At the end of 2009, the handheld PDA to have was the iPhone.

In 2000, a laptop was expensive and used by affluent workers. By the end of 2009, laptops were everywhere and actually more common than desktop computers.

In 2000, a sub-laptop was very expensive and uncommon, mainly used by affluent traveling workers. The mid-to-late 2000s, inspired by a project called “One Laptop Per Child”, gave us the netbook: A small laptop without a CD-ROM or other things people expected with a computer that is actually less expensive than a full-sized laptop.

In 2000, 1.44 meg floppy discs were still widely used. While Apples were somewhat notable for not having floppy discs, any standard PC such as a Dell still included a floppy drive (I remember in 2000 at work being annoyed a driver for a network card was larger than 1.44 megs in size, forcing me to burn a CD to give a computer network card support). At the end of 2009, computers do not come with floppy drives, which are now only fairly rare external USB add-ons.

In 2000, recordable CDs were still expensive; computers usually did not have recordable CDs drives (they were usually external drives), and CD blanks were about $1 each. CD blanks had their price drop like a rock in the early 2000s and were about 30 cents each by the beginning of 2005. Soon, DVD recorders and blanks also went down in price, being about 30 cents each by the end of 2009.

VHS died in the mid-2000s, with the transition to DVDs and DVRs made. In early 2006, Wal*Mart stopped carrying VHS movies.

HDTVs gained a significant foothold in the 2000s.

While not universal, the hi-def video format war was won by Blu-Ray in early 2008, paving the road for hi-def to become the next-generation home video format, a process that was still ongoing at the end of 2009.

James Cameron finally released another movie at the end of 2009, Avatar, which was the first mega blockbuster to use 3D.

Portable music players were CD players at the beginning of 2000, with cassette-based players still in use. mp3 players were uncommon, and existed both as CD players that could read mp3s on a data disc and the occasional flash memory mp3 players with 32 megs of memory or so. Through the 2000s, we went from this to portable mp3 players using tiny hard discs, to flash mp3 players with gigabytes of memory, as well as having cell phones able to play mp3s (cell phones still often used strange non-standard headphone connectors at the end of 2009, but the transition to using standard headphone jacks was well under way)

At the beginning of 2000, social networking was essentially non-existent. The mid-2000s gave us the MySpace phenomenon; by the end of 2009, MySpace was a has-been, mainly used by musicians to promote their music, and Facebook was the social networking site to be on.

Hybrid cars became a reality. The 2008 spike in gas prices caused the Toyota Prius to be the car to have, as well as making expensive gas-guzzling cars and SUVs outdated. By 2009, GM (who didn’t have a hybrid at the time) was facing bankruptcy.

Digital cameras became universal, with film only still used by pros and artists at 2009’s end.

Thursday, December 31, 2009

TCC: A C compiler in only 201k

One thing that has always irked me is that my Desert Island disc doesn’t have a C compiling suite—mingw (6 megs 7z compressed) is just too big. Well, the next version of Desert Island will have a C compiler.

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

I have just uploaded what will be the final MaraDNS snapshot for the 2000s: I have added a Changelog with MaraDNS 1.4.02 which I will adjust when I release MaraDNS 1.4.02 early next year, errr decade.

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).