Skip to main content

Ralsina.Me — Roberto Alsina's website

Way too excited about the Asus eee

Re­al­ly. I can imag­ine hav­ing one of these as my main com­put­er (with ex­ter­nal HD and mon­i­tor).

I prob­a­bly won't and use my ful­l-­size note­book or a desk­top when at home­/of­fice, but it should take me back to the days when I sim­ply car­ried my Li­bret­to ev­ery­where be­cause it was light enough.

Here's the best re­view I found so far.

Peo­ple wor­ry about the 4GB or 8GB "disk". If you keep your me­dia (ISOs, movies, mu­sic) on an ex­ter­nal HD, you prob­a­bly can have ev­ery­thing else there.

Us­ing rsync to keep two box­es synced... lots of po­ten­tial.

I am prob­a­bly buy­ing two of the cheap ones.

Snow and rates

Mon­day was a very spe­cial day:

  • Hol­i­­day (In­de­pen­­dence day)

  • An­niver­sary (3 years as Rosar­i­o's boyfriend)

  • The first snow­­fall in Buenos Aires in 89 years.

Be­sides that, this week my broth­er is get­ting mar­ried so the whole fam­i­ly (in­clud­ing 2.5 mon­th-old JF) is leav­ing for my an­ces­tral lands to­mor­row.

And I start­ed a new small pro­jec­t, wh­cih should be fin­ished soon.

This is some­thing that seems use­ful to me in the con­text of mail server­s, but maybe it will al­so find its us­es else­where.

I call it rater, and it tells you if things are hap­pen­ing faster than a spe­cif­ic rate.

For ex­am­ple, I in­tend to use it to fig­ure out if a spe­cif­ic IP is con­nect­ing to a serv­er more than X times ev­ery Y sec­ond­s, or if a us­er is send­ing more than Z emails ev­ery T min­utes.

The on­ly thing I found for this is re­lay­d, which is old, un­main­tained and whose site has van­ished.

The con­fig file is some­thing like this (thanks to lib­con­fig):

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 de­fine as many class­es of lim­its as you want (that would be ip and us­er in this ex­am­ple) and as many lim­it keys as you wan­t, that will be matched us­ing some­thing like fn­match.

I am us­ing an in­-mem­o­ry SQLite DB for the ac­count­ing, and an in­ter­est­ing li­brary called libut for the sock­et­s, log­ging, and event loop.

This li­brary has a very in­ter­est­ing fea­ture: your app gets an ad­min­is­tra­tive in­ter­face for free!

[ralsina@monty 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

Pret­ty neat.

Be­yond this, there will be a small clien­t-­side li­brary that hides all the net­work stuff be­hind a cou­ple of block­ing calls (or you can do your own be­cause the pro­to­col is sil­ly sim­ple).

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

Said Giles Bowkett

The Perl com­mu­ni­ty's start­ing to look more and more like the Lisp com­mu­ni­ty ev­ery day. The com­bi­na­tion of in­cred­i­ble pow­er, reclu­sive wiz­ard­s, and an­ti­so­cial Slash­dot­ters gives it the vibe of a lava-­filled waste­land dot­ted with tow­ers where strange men with white beards ob­sess over un­speak­able knowl­edge. I spoke to some­one once who com­pared pro­gram­ming in Lisp to study­ing Kab­bal­ah, in that it does strange things to your head. Parts of Perl are like that. Stil­l, source fil­ter­ing's kind of cool. Un­nec­es­sary, but cool.

So, now we know. Saru­man used too much Per­l.

An experiment

I stum­boed on­to a site where you write and they are sup­posed to share the ad­ver­tis­ing rev­enue with you.

So, I de­cid­ed to do an ex­per­i­men­t. I cre­at­ed an ac­count and am post­ing there us­ing a char­ac­ter.

This char­ac­ter is the most an­noy­ing, cranky, acid guy I can be. It's my evil side. For ex­am­ple, my first post was about how ev­ery­thing on the site is garbage. My sec­ond one is a spe­cious ar­gu­ment about how noone is spe­cial.

Let's see where it leads...

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

Quick, an­swer this:

What was the last time a ba­sic piece of the Lin­ux sys­tem was re­designed and re­placed by ev­ery­one?

And the new piece was not a drop-in re­place­ment or evo­lu­tion­ary de­vel­op­ment for the old garbage?

Please post the an­swers on com­ments, be­cause the best I can come up with is one of the fol­low­ing:

  • Post­­fix re­­plac­ing Send­­mail

  • Ev­ery­thing else re­­plac­ing Wu-ft­pd

  • GRUB re­­plac­ing LILO ? (not that GRUB is all that great, but at least you have a de­­cent chance of fix­ing it when it break­s)

  • OpenSSH re­­plac­ing tel­net and rlogin

There are still dis­tros ship­ping Wu-imap and its off­spring!

There are still dis­tros ship­ping the old sys­log!

Let's con­sid­er a ba­sic, tty Lin­ux first.

  1. GRUB (ok)

  2. Lin­ux ker­nel (ok I guess)

  3. An­­cient SysV init (un­­less you use par­­dus/­­gob­­o/­­some oth­­er rad­i­­cal dis­­tro)

  4. Ser­vices, which prob­a­bly in­­­clude

    1. Sys­log-NG (which is marginal­­­ly less bro­ken than old sys­log)

    2. Send­­­mail (even if on­­­ly for loop­back ad­­­dress­es, it's still lame)

    3. OpenSSH (ok, al­though I think the client sucks be­­­cause I can't fig­ure out how to store pass­­­words and pass­fras­es in KWal­let)

  5. A get­­ty

At least here there is not much room for in­no­va­tion be­cause we are try­ing to start some­thing that is a lot like a 30-year-old Unix box.

So, let's go server-ish. What would you nor­mal­ly use?

  • BIND

    An­­cient soft­­ware with a ter­ri­ble se­cu­ri­­ty his­­to­ry. Yes I know it's rewrit­ten late­­ly. They did that be­­fore, too, you know.

  • Apache

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

    • It's overkill for most server­s.

    • As the A in LAMP it has lead peo­­­ple to be­lieve PH­P4 is the right lan­guage to de­vel­op ap­­­pli­­­ca­­­tions in, and MySQL a good place to store their da­­­ta.

    • If it fails to do what you wan­t, you may get an er­ror. Or not.

    • The con­­­fig­u­ra­­­tion is in some sort of pseu­­­do-XML

    Let's get re­al. For most mod­­ern web apps what you want is a de­­cen­t, high per­­for­­mance WS­­GI thingie for python ap­p­s, and what­ev­er you use for Rail­s. Apache may or may not be that or have that in­­sid­e, but who needs the rest of it? What for? PHP pages? mod­­_perl web ap­p­s?

    No, re­al­­ly, I'm ask­ing a ques­­tion here. What pieces of Apache do you use nowa­­days?

  • Sam­­ba

    • It does what it does.

    • Noone else does it.

    • Er­­­go, it's the best at what it does.

    • That does­n't mean that los­ing its TDB ev­ery once in a while while do­ing a "R­PC vam­pire" is not an­noy­ing.

    But ac­­tu­al­­ly, I am pret­­ty hap­py about Sam­­ba. I mean, what's the al­ter­­na­­tive, here? NF­reak­ingS?

  • CUPS

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

And if I had writ­ten this rant three years ago, I would have used the ex­act same ex­am­ples.

Where's the vi­brant new serv­er ap­p?

Who's go­ing to write a cool, per­form­ing, easy to con­fig­ure HTTP+WS­GI serv­er in D?

Who's go­ing to im­ple­ment a fast, se­cure, sim­ple, ze­ro­con­f-en­abled, file serv­ing dae­mon?

Who's go­ing to re­place BIND?

Who's go­ing to cre­ate a Lin­ux serv­er dis­tro with on­ly de­cent soft­ware in it?

Me? No way, I have di­a­pers to change. And there used to be smarter and more driv­en peo­ple around to do this stuff. Are they all chang­ing di­a­pers now?

Come on, stop re­hears­ing with your band that plays "met­al with me­dieval in­flu­ences"! Stop grow­ing your stamp col­lec­tion! Stop

Come on, it's on­ly go­ing to con­sume at most a year or two of your life. It's not go­ing to harm you more than a bud­ding al­co­holis­m, or a po­et­ry hob­by, or at­tend­ing fur­ry con­ven­tion­s, young man (or wom­an)!

You don't need to be all that knowl­edge­able (look at the BIND4 sources) or bril­liant, all you need is to be in­dus­tri­ous.

Grow a spine and get crank­ing! Show us old hacks what you've got!