2007-07-30 10:18

Better late than never

In 2005-04-04 I whined about a site called Section 6 plagiarizing one of my articles (the always popular Linux Booting Process Unveiled).

Well, yesterday I found in my inbox an apology from Kristopher Zentner, owner of the site!

So, I can say Section6 1z n0t 7h3 5ux0rz n0vv!

2007-07-23 15:59

Rater progresses (slowly)

I am hacking a bit on rater my daemon/client to see if things are happening more often than they should (in other words, generic rate limiting).

I had to take a few days off, since my brother got married and we all went back to Santa Fe for that and a weekend, and then everyone else has sore throats and I am the only one healthy.

But hey, it works well enough already:

  • The simplistic protocol is done
  • The server works
    • It can take hours of gibberish without problems.
    • It can take hours of valid input without problems.
    • It does what it's supposed to do.
  • It's staying below 300SLOC, which was my goal.

Missing stuff:

  • Valgrind it.
  • Client library.
  • Generic CLI client.
  • A qmail-spp plugin that uses it.

And then, I can forget all about it.

2007-07-21 10:23

Please, KDE marketing guys, start showboating!

I am no longer on planetKDE so this will probably not be read by many in the KDE community but...

Please, please, please start making big noise about the Asus eee. It ships with KDE and is expected to sell "up to 500.000 by middle of next year and 5,000,000 by 2009" [1].

Is that number not big enough? It's probably more than our current installed base.

[1] http://asuseeehacks.blogspot.com/2007/07/asus-eee-pc-pricing-availablity-updates.html

2007-07-17 12:15

Way too excited about the Asus eee

Really. I can imagine having one of these as my main computer (with external HD and monitor).

I probably won't and use my full-size notebook or a desktop when at home/office, but it should take me back to the days when I simply carried my Libretto everywhere because it was light enough.

Here's the best review I found so far.

People worry about the 4GB or 8GB "disk". If you keep your media (ISOs, movies, music) on an external HD, you probably can have everything else there.

Using rsync to keep two boxes synced... lots of potential.

I am probably buying two of the cheap ones.

2007-07-11 20:10

Snow and rates

Monday was a very special day:

  • Holiday (Independence day)
  • Anniversary (3 years as Rosario's boyfriend)
  • The first snowfall in Buenos Aires in 89 years.

Besides that, this week my brother is getting married so the whole family (including 2.5 month-old JF) is leaving for my ancestral lands tomorrow.

And I started a new small project, whcih should be finished soon.

This is something that seems useful to me in the context of mail servers, but maybe it will also find its uses elsewhere.

I call it rater, and it tells you if things are happening faster than a specific rate.

For example, I intend to use it to figure out if a specific IP is connecting to a server more than X times every Y seconds, or if a user is sending more than Z emails every T minutes.

The only thing I found for this is relayd, which is old, unmaintained and whose site has vanished.

The config file is something like this (thanks to libconfig):

limits : {
      user: (
                    ("rosario",90,20),
                    ("ralsina",90,10),
              ("*",2,10)
              );
      ip:   (
                    ("10.0.0.*",90 , 20),
                    ("10.0.1.*",90 , 20),
                    ("*",2 , 10)
              );

};

You can define as many classes of limits as you want (that would be ip and user in this example) and as many limit keys as you want, that will be matched using something like fnmatch.

I am using an in-memory SQLite DB for the accounting, and an interesting library called libut for the sockets, logging, and event loop.

This library has a very interesting feature: your app gets an administrative interface for free!

[[email protected] rater]$ telnet localhost 4445
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
libut control port interpreter
Type 'help' for command list.

help
command           description
----------------- -------------------------------------
* mem             - memory pool usage summary
* var             - Display or set config variables
* log             - Change log file or verbosity
  fds             - list selected file descriptors
  tmr             - show pending timers
  uptime          - show uptime
* prf             - Performance/profiling stats
* cops            - List coprocesses
  help            - view command help
  exit            - close connection

Commands preceded by * have detailed help. Use help <command>.

Ok
var
 name                 description                    value
--------------------- ------------------------------ --------------------
*ut_log_level         log level                      Debugk
*ut_log_file          log file                       /dev/stdout
*ut_jobname           job name                       job1
*ut_control_port      control port IP/port           127.0.0.1:4445
*ut_basedir           shl base directory             /mnt/centos/home/ralsina/Desktop/proyectos/rater

Variables prefixed with '*' can be changed.

Ok
var ut_log_level Debug

Ok
var
 name                 description                    value
--------------------- ------------------------------ --------------------
*ut_log_level         log level                      Debug
*ut_log_file          log file                       /dev/stdout
*ut_jobname           job name                       job1
*ut_control_port      control port IP/port           127.0.0.1:4445
*ut_basedir           shl base directory             /mnt/centos/home/ralsina/Desktop/proyectos/rater

Variables prefixed with '*' can be changed.

Ok

Pretty neat.

Beyond this, there will be a small client-side library that hides all the network stuff behind a couple of blocking calls (or you can do your own because the protocol is silly simple).

2007-07-05 11:07

Quote of the day (ok, of May 21st, 2007, but I only saw it today)

Said Giles Bowkett

The Perl community's starting to look more and more like the Lisp community every day. The combination of incredible power, reclusive wizards, and antisocial Slashdotters gives it the vibe of a lava-filled wasteland dotted with towers where strange men with white beards obsess over unspeakable knowledge. I spoke to someone once who compared programming in Lisp to studying Kabbalah, in that it does strange things to your head. Parts of Perl are like that. Still, source filtering's kind of cool. Unnecessary, but cool.

So, now we know. Saruman used too much Perl.

2007-07-05 10:17

An experiment

I stumboed onto a site where you write and they are supposed to share the advertising revenue with you.

So, I decided to do an experiment. I created an account and am posting there using a character.

This character is the most annoying, cranky, acid guy I can be. It's my evil side. For example, my first post was about how everything on the site is garbage. My second one is a specious argument about how noone is special.

Let's see where it leads...

2007-07-04 10:06

The Linux software ecosystem is boring and a little lame (a rant).

Quick, answer this:

What was the last time a basic piece of the Linux system was redesigned and replaced by everyone?

And the new piece was not a drop-in replacement or evolutionary development for the old garbage?

Please post the answers on comments, because the best I can come up with is one of the following:

  • Postfix replacing Sendmail
  • Everything else replacing Wu-ftpd
  • GRUB replacing LILO ? (not that GRUB is all that great, but at least you have a decent chance of fixing it when it breaks)
  • OpenSSH replacing telnet and rlogin

There are still distros shipping Wu-imap and its offspring!

There are still distros shipping the old syslog!

Let's consider a basic, tty Linux first.

  1. GRUB (ok)
  2. Linux kernel (ok I guess)
  3. Ancient SysV init (unless you use pardus/gobo/some other radical distro)
  4. Services, which probably include
    1. Syslog-NG (which is marginally less broken than old syslog)
    2. Sendmail (even if only for loopback addresses, it's still lame)
    3. OpenSSH (ok, although I think the client sucks because I can't figure out how to store passwords and passfrases in KWallet)
  5. A getty

At least here there is not much room for innovation because we are trying to start something that is a lot like a 30-year-old Unix box.

So, let's go server-ish. What would you normally use?

  • BIND

    Ancient software with a terrible security history. Yes I know it's rewritten lately. They did that before, too, you know.

  • Apache

    For all the good things Apache has, it has some bad ones, too.

    • It's overkill for most servers.
    • As the A in LAMP it has lead people to believe PHP4 is the right language to develop applications in, and MySQL a good place to store their data.
    • If it fails to do what you want, you may get an error. Or not.
    • The configuration is in some sort of pseudo-XML

    Let's get real. For most modern web apps what you want is a decent, high performance WSGI thingie for python apps, and whatever you use for Rails. Apache may or may not be that or have that inside, but who needs the rest of it? What for? PHP pages? mod_perl web apps?

    No, really, I'm asking a question here. What pieces of Apache do you use nowadays?

  • Samba

    • It does what it does.
    • Noone else does it.
    • Ergo, it's the best at what it does.
    • That doesn't mean that losing its TDB every once in a while while doing a "RPC vampire" is not annoying.

    But actually, I am pretty happy about Samba. I mean, what's the alternative, here? NFreakingS?

  • CUPS

    Ok, not too many new print servers out there, but hey, it's better than LPRng!

And if I had written this rant three years ago, I would have used the exact same examples.

Where's the vibrant new server app?

Who's going to write a cool, performing, easy to configure HTTP+WSGI server in D?

Who's going to implement a fast, secure, simple, zeroconf-enabled, file serving daemon?

Who's going to replace BIND?

Who's going to create a Linux server distro with only decent software in it?

Me? No way, I have diapers to change. And there used to be smarter and more driven people around to do this stuff. Are they all changing diapers now?

Come on, stop rehearsing with your band that plays "metal with medieval influences"! Stop growing your stamp collection! Stop

Come on, it's only going to consume at most a year or two of your life. It's not going to harm you more than a budding alcoholism, or a poetry hobby, or attending furry conventions, young man (or woman)!

You don't need to be all that knowledgeable (look at the BIND4 sources) or brilliant, all you need is to be industrious.

Grow a spine and get cranking! Show us old hacks what you've got!

Contents © 2000-2019 Roberto Alsina