11:03

GRRR. This new amplifier setup is far from Hi-Fi... I wonder where that 50 hz hum comes from, maybe some sort of boxthingmagic should do the trick - but I'm not a Hi-Fi freak so I don't know... =(

I'm listening to MechWarrior 2 soundtrack... wonderful stuff. I also listened to the Starcraft Terran tunes, because, um, those tunes are among the greatest tunes to start the day with =)

Anyway, I'm off to the University soon... Maybe I should get some experience with things like Python and Perl's object oriented interface.

And, oh, about the recent Editor log topic on "Are Logs Ideas Or Things": I node mine as ideas. A "log" is a "thing" all right; Instance of "log" is an "idea" because it merely describes something, while not being anything other than the description itself. Just my personal weird way of putting it, no need to monkey the idea =)

12:45

I just moved my home page to my new ISP... I hope the iki.fi redirection gets updated soon!

Now, to the Uni...

19:32

Oh goddamn it...

Okay, first an announcement: Python is a decent programming language.

Then another announcement: If anyone says it's kewler than Perl (at least today), I'll personally disembowel them. Understood?

Okay, the scenario: I have one shell script here that has become Dangerously Big And Scary so I need to use some real scripting language. I first thought of Rexx or Perl, but decided to use Python just for chance (and to learn).

(FWIW, Debian seems to have Python 1.5 or something. So if any of these idiocies I list below are fixed, I will eat my words about that...)

Now... How do I convert sh backtick operation to Python? Perl accepts it allright with no specific tinkering... The original shell script had this:

declare freemem=`free | grep Swap | perl -ane 'print @F[3],"\n";'`;

Since the documentation and tutorial didn't tell me that, I resorted to this:

mi = open('/proc/meminfo', 'r')
meminfo = mi.readlines()[-1]
mi.close()

freeswap = re.sub('^SwapFree:\s+', '', meminfo)
freeswap = re.sub('\s+\w+B$', '', freeswap)

Which may or may not be Cool from porter's point of view...

And then I ran into the Really BIG headache...

freeswap = string.atoi(freeswap)
swaplimit = (int)((3.0/4.0) * freeswap)

You know... the distinction between string, integer and float types are too strong in Python for my tastes. Furthermore, all regular expression and string functions are hidden behind packages!

I said (3/4)*freeswap but then it returned 0. I found out that I needed to convert the integer to string (Perl does that automatically)... so what happened now? Still 0. Grrrrr. Then I remembered the Nights of Horror I had had with other languages ages ago... (3.0/4.0)*freeswap => HAR! it started to give understandable results... Should have just said 0.75 all along!

Oh, and I had to typecast it too. "We are the People of Programming Republic of Perl. We don't do that sort of thing."

Beats mucking around with expr any day, though, if you expect me to say something positive...

::WWWWolf sighs:: Two hours, and 9 lines of the original script ported! You know, they say it's easier to port a shell than a shell script... =)

What else I did today? Well, I watched a bit of Hackers movie... R00l1nG Skr1pt k1dd0 m00v1, d00dz!!11!1!11

20:44

I hacked again some Emacs-Lisp to get my mind away from that Python shock... results are available, as usual!

23:01

(See small matter of programming. Yeah, the Python script above was definitely a SMOP by that definition... =)


Other day logs o' mine...

Noded today by y.t.: expr backtick
Updated: Small helpful scripts for noders