Been searching my journal to try and find when was my ‘last’ vacation, which was a working vacation. Last time I actually got even that much of a vacation, I kept a blog file: http://sas-spidey01.livejournal.com/73102.html as memory serves, it was basically 3 days of antangonistic-hell. It’s been so long, I don’t remember if that was the year I had to unload a packed-to-the-freaking-brime-and-beyond car in around a 110 degree (~43 Celsius) heat or not… but at least I know, soon it’ll be at least 2 years since my last vacation of any kind. I don’t remember what the last time I had a ***real*** vacation was, only that it was a long time before I began journaling.

In searching through my journal for the date, I’ve found numerous links that have brought back memories:

2007-06-09, Ich bin muede (en: I am tired)
2007-06-11, A Troopers Call
2007-07-09, A little BattleTech
2007-07-19, The day that Macy died
2007-07-30, Techno Nightmares (of Screamers)
2007-08-02, How old am I? (an old post about my age in SAS, including a list of people I saw in make Rct; outa update that someday in a new post)
2007-08-12, A ROLF moment
2007-08-12, Right or Wrong? (dark memory)
2007-08-23, Bell Tower Sniper
2007-08-23, A collection of jokes
2007-08-26, Relating songs to life
2007-09-16, Raged Spiders (massive fiasco)
2007-09-26, I like (a new/profane phrase)

I’m just totally wiped out right now. I’ve been going since Friday with few breaks beyond food/chores, and now it’s Tuesday!

The more I try to figure out how to get free of this place, the more spanners people throw in the works. Virtually all calculations with Operation Redeemer are looking at +1 year, with the potentiality to get much worse, courtesy of family.

I’ve done just about everything to get the operating environment I want, short of resigning from the few games I still play – life would rock if I could setup Xen and have full 3D hardware access in a Win32 guest lol. The more time I spend with Windows, the more and more need I feel surrounded by bogus software. On unix machines, I’ve never had such want for _decent_ software!

I’ve also spent most of the day/night working on a small project, which reminds me of why I utterly hate Content Management Systems—they usually get in my way. If it wasn’t for the CMS specific issues chopping up, I’d probably be done by now. Debugging further isn’t something i have strength for right now, it’s been 5 languages and 8 to 10 hours of work today. Most of it’s also been spent editing via a slow SSH session, using a mixture of vi and vim.

With how many years it’s been since I’ve had a decent vacation, I’m starting to wonder what the last time was that I had *any vacation at all*

Hilarious session error with rsync/ssh

For the sake of experimenting, I installed Debian Lenny into VirtualBox on the Winsucks machine, being lazy I used the network installation ISO hehe.

One of the things I dislike about Linux distros, is they don’t seem to take kindly to a leading capitol letter in usernames for some reason. Debian’s installer also (logically) set my uid/gid to 1000. Rather then map between uid/gid, I merely use the same values for my account on all machines. Since BSD could care less, I also use ‘Terry’ instead of ‘terry’ when possible ^_^.

While setting up for the test, I also changed my accounts uid/gid; oh boy is the vipw program talkative. In doing that, and then running the test from a shell w/o logging out and back in again first, resulting in this funny error message:

terry@virtuous:~$ rsync -arz --links --safe-links --no-D -tx -e 'ssh -l Terry' --rsync-path='cd /srv/rsync/conf && /usr/local/bin/rsync' -n  --stats Terry@vectra::home /home/Terry
You don't exist, go away!
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.3]
terry@virtuous:~$

Making sure my sessions uid/gid are correct with the system databases however, fixes that lol.

Currently, I’ve setup VirtualBox to boot Debian into console mode and run it ‘headless’ with ssh+x11 forwarding. Should we say, I’m more then comfortable using a unix shell, ;-).

Ugh, crazy dreams! The first round, The first set I guess, could be described as being stuck in a Twisted Metal competition. Followed by being int he shoes of a Bart Simpson that died and ‘went to hell’ kind of like episode of the Simpsons. After that I woke up just a bit after 0830 local, so I went back to bed. Then imagine being trapped in a house with a bunch of whiny losers! Having to climb a chair, stick your head up in the attic, and climb up to search for supplies; convenient as some form of military sirmish outside resulting in everyone getting pumped full of holes over mistaken identity. After calling down “is everyone dead yet?”, as somehow expected it was only a moment until bodies started lifting themselves zombie-like off the floor and trying to climb up. You gotta hate it when the shotgun shells are replaced by bb’s!

Honestly, the only time my dreams worry me is if they make logical sense, instead of being strange and weird.

Writer’s Block: Good Days and Bad Days

What is your least favorite day of the week? And your favorite?

Live Journals Writer’s Block

least favorite: Thursday
Of all the days of the week, Thursdays have consistently been some of the worst days of my life. If I added up all the times at work that my brain has drawn a mental line in the proverbial sand, that if I’ve got to take anymore crap… it’s time to walk home—there would be many Thursdays in the equation.
favorite: Mondays
I often have seasons where I’m off work on a Monday, either every other week or every week ;). As such, I like it: because I can take it easy on Saturday or Sunday, and finish up things on Monday before I’ve got to go back to work lol.

Thoughts on how IM software can be implemented

Pidgin is implemented in the fairly typical way, libpurple provides the support for the network protocols and a ‘chunk’ of plugin crap for everybody. Pidgin and Finch provide graphical and textual user interfaces around it. I don’t think I really want to know more about the relationship plugins have with the purple library and their respective UIs then I already do. Although I’ve never used it, I reckon that InstantBird would be designed like Pidgin, but with a Mozilla Firefoxian XULRunner UI layer in place of the GTK/GNT UIs of Pidgin/Finch.

That kind of implementation for a program like Pidgin is basically Computer Science 101, using XULRunner may be considered CS 102. Pidgins approach to solving the problem is about as standard as putting butter on your toast in the morning. Early today, I was thinking about how I would implement an Instant Messenger program; let’s just say I’ve used many and hate them all :-P.

The first thing that can to mind is splitting the program in half: a multiplexing daemon and a chat client.

The daemon would take care of the per-protocol issues, likely using libpurple (as its so damn popular 8=) or a plugin architecture built around per-protocol libraries (libmsn, libgfire, etc). The client would provide the part of users actually see, and communicate with the daemon over network sockets to perform its task. You would launch the daemon and it would log you into the various networks, then you would launch the chat client and connect to the daemon. About 10 minutes later I figured it would likely be worth trying to implement the server daemon to chat client communication, by making the daemon expose its interface to the client as an XMPP server; instead of rolling my own protocol to do the same type of job. I am personally not partial to XMPPs functioning, but find it exceptionally useful in practice.

What side effects would my decision have?

A.) The daemon (your accounts logged in) could run on a different machine then your chat client (chat windows). This would make it trivial for example, to run the daemon on my file server and connect to it from my other computers – without logging out of AIM, MSN, blah blah. It would also be trivial to allow tunneling the two programs communication over an arbitrary program, like SSH, which would provide local-encryption of traffic between client and daemon 😉

B.) Because of the client / server design, it would be possible to access those IM networks from multiple locations at once, even if the protocol doesn’t support this. This is because the server daemon is logged in, not your chat client, hehe. Meaning that the daemon would have to implement the concept of multiple clients connected, which would be fairly easy (thinking of how this might be done if daemon-client commu was XMPP, really made me smile when I realized that XMPP supports something close enough to this).

C.) Because the client has no concept of a network protocol beyond what it needs to talk with the daemon (that does the real network leg work for various protocols), it has no physical connection with the implementation of code that does.

A and B would create an Instant Messenger program like Pidgin, that is to IM what TMux and GNU Screen are to terminals! Point C would just be awesome in my opinion. It would evade creating something like the UI related fields of PurplePluginInfo’s and make installation and maintenance more independent then any other IM program I’ve seen.

To me, the daemon+client thing it is just the most obvious way of doing the job…. lol. Ahh, I wish I had the time to write it!

It’s getting to be that time, that time frame where I know I need to be getting to sleep… yet, I don’t feel like sleeping. I’m also to tired to do much of anything else :-/. I don’t have to be up early for work tomorrow, unlike today’ish; but I instead have to work most of the day!

What I really need is a vacation. Time away from it all, with not a care in the world…. but then again, I would probably still be miserable lol.

I’m so sick of watching time pass by.

What a day at crockery design, inc.

Nothing like a late night to remind you that you’re alone, nothing like waking up in the morning for work; to remind you that your more of an asset then a person in your families bottom line.

I managed to survive work without to much damage, even got to be out in the rain for a bit after getting home (which I relish). Most of the afternoon was spent, well honestly I don’t remember much of it.

I did however come up with a possible solution to a small “Problem” I have with getting cwRsync to obey. Basically, I can’t make the S.O.B. contact the server (vectra) from sal1600. The idea is, instead of running rsync on sal1600 (client) over SSH to vectra (server), to do the usual one-shot daemon over encryption trick. Instead, make a script that causes sal1600 to launch a one-shot rsync daemon, and then to “phone home” to the server and cause it to trigger the rsync from server to client. The logic of fixing things under windows, the client doesn’t work, so make the client a server that tells the server to use a client like it was a server… ok, that’s just fucked up. I think however, with a little trickery to make it work that way via SSH; it will probably solve the problem. With much less pain then doing some kind of diff and patch crazyiness in place of rsync.

GCHQ’s also decided to re-elevate the priority on my fixing the mighty page. The basic problem, I’m a WO1 assigned to the “Special Operations Wing”, which belongs between the Commissioned Officers and the Senior Non-Commissioned Officers groups. Instead, I (and now Timbo, since his becoming a fellow WO1) was displaying at the end of the page, under the Vets list. It’s been that way ever since I ‘repaired’ a majority banaided and brain damaged bit of code that is integral to things working smoothly. Since I consider such a matter of ‘personal vanity‘, I’ve never had a problem with it being broken. But I reckon, those on high are right, it doesn’t look good if a high rank is listed below the rankless, lol.

In studying what makes the whole thing tick, I’m not sure whether or not it is just a huge crock of shit or a clever attempt at trying to produce faster code. Either way, if I ever meet the original author, I’ll punch the fuckers lights out. Then I’ll give each of my fellow admins a chance ^_^. While the initial problem was painfully obvious, finding ‘why’ it happens was not quite so simple. When I found the next clue, I got curious and began to concentrate further until the light bulb turned on.

When the light bulb turned on, I decided either the original programmer must’ve tried to tune every ounce of speed out of the algorithm—working under the assumption that every instruction is equal to the sum of their quantity, rather then their cost times their quantity… or it was put together by some asshat who expected it to result in a “Write once, run always, read never” body of code with no concept of software engineering.

Either way, if I ever meet the person, they will loose teeth if we discuses software-stuff.

On the upside, out of all of todays stuff, I did finally get some SWAT action in… with all the work I’ve been doing lately, it was probably 3 days since I got a decent game. Or should we say, around 15GB of encrypted network traffic to shuffle to and frow, ain’t fast and don’t mix well with games.

Right now though, most everything is done; whew.

After more then 8 billion bytes of compressed data has been transfered, I now have *all* of my personal files under one hard disk; and am hoping it doesn’t HCF before I’m done with this lol.

Depressingly, this and a few things in my room, really is the sum of my existence here, isn’t it? *sigh* maybe this wasn’t such a good idea after all.

Everything is archived in the cold storage partition, once it is copied over to an NTFS partition (as FAT32 is havoc on unix file permissions), I’ll begin sorting, colating, and cleansing data. Very annoyingly hulu.com is not functioning correctly at the moment, so I’ve a bit of a battle for something to watch as well!

Once I’ve got all the data setup, it’ll be time to setup information distribution between each box… that’s gonna be tomorrow I am sure, considering the time of night.

Thinking and ramlbing out loud

Because of the games box, any solution needs to be efficient on the network; and only maintain an interesting connection on demand. While the laptop could (and has) put up with NFS/CIFS type solutions, I don’t want it clogging up bandwidth, the desktop is a bad enough piece of shit as it is >_>.

The concept that I was thinking of last year, was using a mixture of CVS and RSYNC to branch and version important files on a host specific basis, although important stuff like my $ENV and vimrc files are made highly-portable, not everything else is, hence the value of a VCS/SCMS. Whilist all the mumbo jumbo about the algoritm used by rsync would be used for mirroring file sets between boxen at login/logout.

I reckon now is a great time to abuse it into working.

Since I began initial testing, I have looong since moved to using Git for all my active projects instead of CVS and SVN. However the master source of everything still is Dixie, that is my laptop! While things have gotten fairly cramped on the desktop, mostly due to development files being shoe-horned into Windows XP; my laptop has plenty of free space, despite having A LOT of software and a plethora of development files.

My file server is still holding quiet nicely:

To days date is: Sun Aug 16 21:34:08 UTC 2009
Terry@vectra$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/wd0a 147M 41.8M 98.1M 30% /
/dev/wd0h 393M 46.0M 327M 12% /home
/dev/wd0d 98.3M 670K 92.7M 1% /tmp
/dev/wd0g 6.7G 995M 5.4G 15% /usr
/dev/wd0e 148M 40.6M 99.7M 29% /var
/dev/wd1a 11.8G 275M 10.9G 2% /usr/local
/dev/wd1d 44.3G 14.8G 27.3G 35% /srv

wd0 is an old Maxtor 8GB EIDE drive, wd1 is an 80GB EIDE drive. I also have a 40GB disk somewhere with the systems original Windows XP Home install somewhere.

wd1a was used to off load installed software to a second drive; basically a way of moving /usr/local off the original /usr file system. wd1d was created primarily as a sotrage depot for use with NFS/Samba.

In lacking a suitable place to dump crap, and not having a notion to put it under /var; I created a /srv directory to hold data for services. As such, it basically holds my code repositories, backups, and webserver files. It would be easy to rebuild the partitioning on wd1, or just create a new bsd partition:

# disklabel -p g wd1
# Inside MBR partition 3: type A6 start 63 size 156234897
# /dev/rwd1c:
type: ESDI
disk: ESDI/IDE disk
label: IC35L080AVVA07-0
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 16383
total bytes: 74.5G
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0

16 partitions:
# size offset fstype [fsize bsize cpg]
a: 12.0G 0.0G 4.2BSD 2048 16384 328
c: 74.5G 0.0G unused
d: 45.0G 12.0G 4.2BSD 2048 16384 328
#

‘c’ means the entire disk, meaning there is roughly 17GB held in reserve.

I think I will begin cleaning up stale files in /srv, and moving unimportants to the desktop, which has around 40-50GB of free space for cold-storage.

tbc