This is how I relax…. lol.

Having taken some time to analyze the mailcap and mime.types files, which map media types to handler programs and file extensions respectively. I’ve decided to implement something, uhh…. more “fun” out of it, for my own usage. I’ll use mailcap and mime.types to setup a suitable mime/file associations to desire, and a mixture of m4 and environment varables to make it more useful hehe. I’ve also setup a small wrapper around Pythons mailcap and mimetypes modules, so I’m happy !

Since I need a handler that includes a web browser, rather then creating an if x is probably running … script, to just use $BROWSER. But since, there is a shitload of apps that don’t understand it, I’ve created quick python script to handle it. Thus, mailcap will execute this script, which will “figure it out”. Once I realized how much I could use such a quickie, I added a little more abstraction to it; making it usable with other variables. And used getopt for a simple interface to it.

#!/usr/bin/env python

import sys, os, getopt

# default values for -e and -s options
envvar = "BROWSER"
envsep = ":"
# skip executing program
noexec = False

# accepted options, usage statement, and manual page
shortopts = "hme:s:n"
longopts = [ 'help', 'man', 'environment=', 'separator=', 'no-exec' ]
def usage():
print """
usage: %s [options] file ...

Parse a field delimited list of programs, executing each in turn, until the
specified application has opened the indicated file(s).

Options:

-h,--help display this useless message
-e,--environment the environment variable to look up, default to BROWSER
-s,--separator the field separator for -e VAR, defaults to :
-m,--man view this manual page
-n,--no-exec do not execute any programs, useful if parsing $PATH

--long-options may be abbreviated.

Exit Status:

The return status of the last executed program handler. If no program was
executed, return with a non-zero exit status.

Caveats:

A non-zero exit status is considered a successful execution.

Programs found by parsing the environment variable, are passed onto the
system shell UNMODIFIED. This is not secure, but it is flexible.
""" % sys.argv[0]
sys.exit(1);


try:
opts, args = getopt.getopt(sys.argv[1:], shortopts, longopts)
except getopt.GetoptError, e:
print(str(e))
usage()

for opt, arg in opts:
if opt in ('-h', '--help'):
usage()
elif opt in ('-m', '--man'):
# XXX works on unix, dos, winnt, osx
os.system("%s -h | $PAGER || more" % sys.argv[0])
sys.exit(0)
elif opt in ('-e', '--environment'):
envvar = arg
elif opt in ('-s', '--separator'):
envsep = arg
elif opt in ('-n', '--no-exec'):
noexec=True
else:
assert False,"unhandled option: %s" % opt

# exec handlers until success, abort, or exit
try:
browser = os.environ[envvar]
apps = browser.split(envsep)
for handler in apps:
# just print it, don't execute it
if noexec:
print handler
continue

ret = os.system(handler)
if not ret == 0:
print("Bad handler -- %s" % (str(handler) % " ".join(args)))

except KeyError:
print("No %s set!!!" % envvar)
sys.exit(1)
except Exception, e:
print("Un-handled exception! -- %s" % e.message)

One of the common questions of a language, is how to parse command line options? I’ve tried several interfaces in differing languages, but I know one thing… The getopt(3) routine in C on unix is awesome for short options. Give something more portable and with (easy) support for long options, and I’ll have a big grin on my face >_>. But if I have to wade through 20 pages of documentation for a comparable OOP-Interface, I’ll be snoring before I get to writing usage().

1 down, 2 to go…

All in all, another miserable day, the best thing I can say, is I slept in until noon lol. Got dragged out on a grocery shopping expedition, and I hate shopping… This outing was also less then ideal :. Spent a fair bit of my time today working on Apache and site-software, it’s easier for me to test changes locally then work live. A least, while my servers /var can handle the dummy-databases lol. I was hoping to get everything setup before dinner, so I could either relax (if there is such a word left in my vocabulary) or work on something more interesting (e.g. playing in scheme lisp).

Any attempts at actually being productive, and getting things done when they *should* be done by, is not something my family is willing to cooperate with. I really need a vacation, a long vacation… But in the course of living, that I am being drowned in, a vacation == no work, which != survival.

Tomorrow will be a living hell at work, and the day after will consume most of the day. So I’m effectively handicapped until wednesday… before I can get to work on stuff again. At this rate, unless I quit working or my family either changes their ways, I’m never going to catch up with my home work…. And have to be on the receiving end of a tantrum, that __I__ should be shouting at them.

I really need a

v
a
c
a
t
i
o
n

Scheming flirtations

Trying to wrap my head around Schemes syntax, which is quite a different style of writing then I am used to.

An example at the childs level:

Scheme:

(define x 2)
(define y 5)

(if (> y x)
(display y)
(display x))

; which could also be written as if one wanted to use cond instead
(cond ((> y x) (display y)) ((< y x) (display x)))

C and related languages:

int x = 2;
int y = 5;

if (y > x) {
printf("%d", y);
} else {
printf("%d", x);
}

/* which could also be written on one line as */
if (y > x) printf("%d", y); else printf("%d", x);

I don’t really have a problem with the parenthesesification, but the prefix notation :. Let’s just say, I’ve used infix notation since kindergarten, and internally my brain does too by now lol.

Notational example
prefix + 2 2 –> 4
infix 2 + 2 –> 4
postfix 2 2 + –> 4

Getting my head to live with prefix notation, is the only thing that is pushing my luck, so far that is….

This is how I spend a night off work? I think I really need to get a better life again >_>

the past ~48 hours

Been quite a busy time, I guess lol.

I think I royally fragged my blood sugar; after last nights gorging on beefaroni, I’ve been pissing my brains out (every ~30min). Things are finally starting to resync with the usual input equals output style equation. I’m not diabetic (as far as I know), but many people in my family have had diabetes, most dying of heart attack, stroke, and cancer even when fully healthy. Of course, I’ve always figured it’s a case of which of the 3 will get me first…. But I expect the third, if the first permits in the long term.

I really should watch what I eat, and an extreme amount of pasta and meet is probably a bad idea. As I understand it, carbohydrates from pastas breaks down into glucose slowly over time, slower then a lot of snacks anyway. I’ve no idea whether that is good or bad thing; but I like pasta, in almost all of it’s forms ^_^. Eating a shit load of it on the other hand, is probably just as bad as eating a lot of sugar though :.

My guess is that it caused enough of a glucose spike, that my kidney’s have been workin’ overtime to deal with it. Biology (in general) was never really one of my strong points, in fact… My high school text book put me to sleep lol. The fact that searching the web and thumbing through old encyclopedias was better for passing exams, then remembering the text books contents, is besides the point :-P.

For the time being: I’ve cut the soda from my fluid intake, shit load of HFCS in that stuff… And replaced it with water, I usually drink soda during the day and bottled water at work & at night. Along with sweets, my diet usually consists of lunch, dinner, and a sweet or salty snack or two every few days (although I avoid junk food, because if I had it, I’d eat it).

I managed to download and install Virtual Box. I’ve also got PC-BSD7 in both the 3 CD and 1 DVD sets, the CD ISOs are on my laptop, and the DVD ISO on the desktop (I figured it would be easier to use with VB). When booting off the DVD ISO in VirtualBox, the boot process fails: snap shot. I intend to install it on my desktop, but after one of the posts I read on forums.pcbsd.org (by Graedus I thin), I’m not willing to let PCBSD7 touch my harddrive, until I’ve taken a full backup of my Windows install…. took to many hours to set it up the way I wanted, and I still have no wall paper lmao.

As to the image, I posted a thread on PC-BSDs support forum, not that I actually expect any help lol. In fat, one of the reasons I elected to test with VB first, is in he hopes I might be able to help some of the people having problems with PCBSD7 under VirtualBox.

I can’t make heads or tails out of the output before BTX halted. I know most of the names, corrispond to processor registers. In fact, to be more precise, I believe the ‘e’ is some extended-mnemonic from when Intel’s chips moved into the 32-Bit world. I don’t understand the output though, because I never had time to learn about assembly or dive deep into documentation on IA-32.

I managed to get a little time in, training with Jonsi on TG#1. Do to current affairs, I’ve been spending most of my server time in SWAT (PG3/TG3), but it’s nie to be reminded; I am still limber enough to put recruits through their paces :-). I need to take a look and see what’s going on these days, training wise in RvS.

I also spent sometime to help a friend with porting a page from (invalid) HTML 4.01 Transitional to XHTML 1.0 Strict. Not to hard for me, since I work with XHTML like most people I know, would use MS Word. Although, I personally prefer LaTeX for documents, for a long time; I did use XHTML+CSS as a replacement for word processors. If I had the time to learn to do as much as I can in LaTeX/TeX, I probably would prefer troff; but a more TeXuaL solution is where I ended up investing time.

Also my brain was complimented today, but despite the things I know, it doesn’t do me much good; because no one in this rats nest, will actually pay me for what I know or for using my brain lol. That’s one reason, why I try to be content with the fact, that most of what I know, I learned because I wanted to and enjoyed learning, as opposed to ever learning stuff to make money off it. Although, I do admit… getting paid for what I know, would seriously be an improvement over my current line of work lol. But I’m generally content with enjoying it on my own time.

Now, if only I could change the one point that really does bother me…

Hmm, with about 34% of battery power remaining (according to hw.acpi.battery.life), I think it is time for bed !!!

Laugh of the day

http://xkcd.com/224/

Hmm, that is one thing I regret, nevr having time to learn any dialects of lisp :

*sigh*

SWAT 4 has almsot no consistency what so ever.

Came into a large room, that’s a bit of a double-T junction, followed it in with a bang, since there was a fleeing suspect before. Seucred the area, no problemo. Follow it into the the side hall, come to a door… Spider senses tingling, I slap on a shaped charge and blow the door, coming in with P90 at the ready before the doors even done flying.

Two visual contacts, 11 o’clock and 2 o’clock. A quick shout, first T at 11 starts to spin, I check the other and he drops to a knee with hands up, so keep advancing and angle off to my right — breaking line of fire with the one from 11 0’clock. I closed the distance (7~9ft) and gave the tango a swift punch in his left kidney (his vest looked to thin to have any SAPIs, moving myself into an immiedate circle strafe around him….

The punch didn’t do squat, he kept spinning about with an AKM in arm; I let it rip with the P90, raking the tango across the shoulders and face. 10 rounds later and now behind him and taking the next corner, the tango finally reacted lol.

Suspect AI in SWAT 4 is coded with a range of 0 to 0.333 time unit before they can be effected by a less then lethal / less lethal stimulus. So I know for a fact, if the first swing don’t have an effect, put the S.O.B. on the hard deck.

One thing I actually like about RvS, is it’s consistency. A 2-4rnd burst will drop any tango with any weapon, or the tango will slide through it, and put a mag in your face; as your bullets magically leaving bullet holes behind them, but not in them hahaa.

Just once, I wish someone would design a game that actually gets the model right…

Thinking about a new training plan

Since my primary task list is webwork, sop technicals, and swat. I think it’s about time I devise a proper training plan for myself, like I’ve used in SWAT 3 and Raven Shield.

“The Warrants Hazard Course” haha.

I’ve yet to decide on the details yet, SWAT 4 is a bit of a tougher game to harden up, since the only hard part is latency lol. Back in SWAT 3, I used to do STFC drills with an entry-length gun (e.g. MP5A2, HK53, AKS-74U, G36C) with one 30rnd mag of FMJ, my side arm (M1911/MK23/P226) with one mag. Plus 1bang, 1gas, 1charge, and set the hostile AI to the maximum. With RvS, I usually set map-specific goals, but often speed assaults, escape and evasion, or tact-aidless clearing at full throttle.

I might try to simulate my SWAT 3 kit, it would be easy enough to package 1 bang, 1 gas, 1 sting, 1 wedge. There is no way to control the mag-counts in SWAT 4 without modifying the games class files, but it would be insane to go with 30/8 (mp5/m1911a1) rounds… In SWAT 3, if you knew how to shoot and it was your own host, you could actually use ammo quite effectively. SWAT 4 usually takes 2-12 rounds of 9x19mm per kill (average 5~7), yesterday a tango survived 6 to the brain… lol.

Map wise, I think a good mixture is order. But the standard maps are so easy, I’ve got to find a good way to make it more challenging, or I could just find a couple of really challenging customs, hmm… think I will do both once the new [SAS] Mappack is ready op hehe.

Taking the day off…. Camped out in front of the with my laptop atm, watching the end of the The Illusionist.

I’ve downloaded all 3 ISO Images for PC-BSD 7Release. I intend to test it in VirtualBox and natively on my test machine. But, because my test machine is also my games box… I’m backing the sucker up first ;-). I’ve booted the test machine into it’s maintenance partition (FreeBSD 7, my failsafe if WinXP goes belly up hehe). ssh’d in and am backing up each drive letter to Vectra (the file server). I’ll setup VirtualBox later and see how it works out, I don’t really care much for such things though, but VB may be handier then QEMU. After that, I’ll try installing it native, and see if the release likes my DVD Burner better then the Alpha/Beta versions did, lol.

I figure, for good measure I can take care of updating my laptop while I’m at it, probably lay down for a bit…. Assuming there is anything on this afternoon lol. It would be nice to gt *some* rest, but knwoing my family, it’s far from likely :

Time for bed, I’ll finish cleaning up after others later… And since I think I’ve figured out who did the nbsp look up and why, I might just have a few words with a certain someone or someones after work as the case may be…

Tomorrows job doesn’t bring any favorable thoughts to mind, especially when I need to get back to work on my on projects, but work pays the bills :. I hav a few things to do after work, including finishing tonights work lol. But it’ll hold a day or two if necessary. The reworking I’ve been doing tonight, is mostly because I need a test case for one of our new sub systems. And also, because the module of code the last sample came from, irks me in just about every way possible. And extremely wasteful operations and problem-side-steppings aside, it’s a pile of shit to start with. So refactoring it to use something more, ehh ‘sane’, can’t be to bad a thing….

Now if I could just convince the dog to give me a place to lay down >_>

Haha, a quick sneeze and Willow took off at light speed, looks like I get to stretch my feet haha!

This one is just to much

Ok, now this one has me putting my hands up an shoutin’ “this one’s to much!”

I’m working on rewriting an old pile of sludge that hurts my eyes, properly porting it to the new interface that works better… So far, so good, except for the fact that the actual bi-language mingle used for both logic and display, is about as undocumented and about as helpful, as a bullet in the toe.

All was going well in trying to understand it, until I saw this kind of thing:

/* NB: I probably added most of this indentation myself */
$query4 = *_query("look up a user", $dbh);
$name=*_fetch_array($query4, $dbh);
echo "<font color='#6699ff'><b".$name['the users name']."</b></font><BR><BR>";
echo "<table border='1' cellspacing='0' cellpadding='3'><tr border='0'><td align='left' border='0'><font color='#6699ff'><b>some header</b></font>";

$query = *_query("look up first section from database", $dbh);
if ($query) {
$nr = *_num_rows($query, $dbh);
for ($k=0;$k<$nr;$k++) {
$topic = *_fetch_array($query, $dbh);
echo "&nbsp;".$topic['the topics name']."&nbsp;";
// ... do other crap

Where ‘the topics name’ is looking up a row in the database, which contains a non breaing space: &nbsp; ALL THAT FOR WRITING A FREAKING BLANK SPACE !? I have no idea if that was a quick and dirty way of cutting an item out of the list or what (before I took over), but for crying out loud… If I ever did something so moronic, I would shoot myself before leaving it for someone to find.

THANK GOD THAT I DID NOT CREATE THIS MODULE …. Even if I’m the sap whose got to keep it running like a swiss clock :