Tuesday, September 30, 2008
Surfing the web, but nothing else to do: but watch the passing of the time on the clock. Also been thumbing though ~/Documents, I've quite a lot of things stored thre, both of my own and vaious things I've collected in my travels.
To tired to find something to work on, to awake to sleep, to much more to go, to just do nothing....
How long O LORD
Must I wrestle with my thoughts
And every day
Have such sorrow in my heart
Look on me and answer
O GOD my father
Bring light to my darkness
Before they see me fall
But I trust in YOUR unfailing love
Yes my heart will rejoice
Still I sing of YOUR unfailing love
YOU have been good to me
YOU will be good to me
-- source unknown
Monday, September 29, 2008
Family is driving me crackers a bit, ma is quite disturbed by the news and epecially paranoid about gas; what can I say?
I've expected a depression since ~1996
Business can not be trusted to self regulate itself (most of the time)
To many politicians care more about their political view then getting work done. (Although I my say s/politicians/republicans/ if I analyzed things more closely)
And I'm trying to code, not dig for oil wells !
From being stuck in a game that feels like a cross between Halo on Legendary and Call of Duty. Oddly a PP-19 Bizon in 9x18mm Makarov and a Colt M1911 is an interesting mixture for fighting aliens in CQB, along side a Covenant Plamsa-rifle hehe.
To being owner, court jester, lead cook, and chief flirt of a restaurant. To winding up in some kind of crazy Army of Darkness and Jason and the Argonauts skeleton-battle inspired global war, a pump action shotty with unlimited ammo is useful >_>. Alll the way to being trapped in a town under assault from vampires, and having to organize people into a resistence...
My dreams are crazy as a mad hatter lol
Vim rules text editing !
When I first took up programming, I had started with C++ (probably not a good choice), and I selected an IDE so I could concentrate on C++, not the compiler and debugger. When I started to learn other languages, which my C++ focused IDE didn't give a flying flub about, So I quickly came to the conclusion, that since I would never _stop_ learning, I would do best to find a general purpose code editor. Because if I kept using IDEs, I would spend more time learning to use Integrated Development Environment XYZ then programming something meaningful in language XYZ.
I knew that the most widely used (read if the machine supports text, it probably runs this editor) would likely be Emacs and Vim. I'm the kinda guy, I like to use the same tools without caring about the OS 'too much'. Although I don't mind if a program changes widget styles to match, I hate things like Firefox that change from Microsoft 'Tools->Preferences" and Unix "Edit->Preferences" instead of just creating a damn "Settings" entry in the file menu. So obviously, an editor that works that way, can
At that point in time, text editing consisted of Left, Right, Up, Down, Delete, Backspace, Page Up, Page Down, Home, and End... nothing else (I had yet to learn the control modifier to them). Currently, the number of actions I know in Vi and Vim, far exceed that by the size of the death star, hell... I know more emacs then that, and I haven't "really" used emacs in years. But I didn't really care about that kind of stuff at the time, I just wanted something with syntax highlighting and extreme portability.
I knew full well, that Vim and Emacs were extremely powerful tools; but they would take learning to use that effectively. A knife is a simple weapon, using it ain't. (And admitidly, if emacs was a pocket knife, it would be the "swiss army knife" to existing Swiss Army Knifes, as swiss army knifes are to classic pocket knifes.) The main thing that attracted me to Vim and Emacs, was hat they support many languages out of the box (vim 7.2 supports around ~500 by now, for syntax highlighting alone.), and could be extended with support for more.
So for one reason or another, I gave vim the first try. I couldn't even figure out how to open or save files with it; as I had elected not to use the graphical editing interface. I basically chucked Vim in the corner and started looking at emacs, choosing XEmacs over GNU Emacs. XEmacs proved to be a quite a nice editor and very useful to me. In fact, I think my user account on Josephine still has XEmacs for Windows as my default text editor. Later on down the road, I was reading a skit, using pico, gnu emacs, and vi. Reading the part on lowly Vi, it all looked pretty darn logical all of a sudden lol. So I started to play around with Vim, using the :help system to learn to use Vi. In a short period of time, I became much more effective at editing text then Iw as under XEmacs or Wordpad; in my case vi commands were also much easier to remember before muscle memory caught up.
Why do I use Vim, and utterly hate all other editors? (Except for vi and microemacs.) Most typical editors are week in the knees, trying to 'edit' text with them after living with vi/vim, just feels like dancing with a cement kimono, I work with textural information non stop, be it books, web browsing, television, instant messengering, e-mail, games, etc; even the operating systems command line interface, let alone editing text files lol.
*Actually* learning how to use vim the right way, quickly lead to editing smoothly and learning how to learn more ;-). One thing I like about vim, it is modal like vi, and my brain is essentially modal as well! And unlike emacs, it doesn't seem to slow my down when exercising my "ten fingered typist" style of using a keyboard. With vim, the only limit is you mind. Tonight, I've actually learned 4-6 new things (most of which are vi compatible hehe) tonight, that allow me to edit even more effectively then I have been. Which if I had to compare to the best offerings of notepad.exe or MS Word, Vim has allowed me to be 1,000,000,000,000,000,000^256 times more effective. And yesterday, I spent what, like 16 hours editing code?
If I had to use something like notepad for that, I would go out of my fucking mind !!!!!
Just for the heck of it, 1,000,000,000,000,000,000^256 is the equivalent of:
1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000
But I don't think I know how to count that high in written English LOL.
Sunday, September 28, 2008
- Went shopping
- Walked the dogs (as promised)
- Washed the dogs -- if their looks could kill!
- Cleaned the newts tank
- Field stripped Dixie and cleaned a few lbs of dog hair out of the keyboard
- Straighted that leaning tower of junk in the corner
- Took a cool shower
- Shaved, for once before hitting a proper beard...
- Covered the car
- And finally got to sit down, around 1930Q hehe
I've gotten almost no coding done, but it's still been quite the productive day!
I need to finish one program, build two more, build a mockup for a site, and I also want to work on another little app of my own... I call it 'nag', a note taking application to furfil the obvious purposes lool.
HOWTO boot FreeBSD, Linux, and Windows XP with GAG, GRUB, LILO, and BootEasy
Abstract
This posting endeavours to allow users to successfully boot the following Operating systems: Windows XP, most GNU/Linux distro, and FreeBSD/PC-BSD; using the following boot loaders: GAG, GRUB, LILO, PC-BSD (aka BootEasy). The target audience are PC-BSD users coming from Linux.
There will be several references provided at the end of the posting.
Using the Graphical Boot Manager, GAG
Simply boot off the install media and follow the on screen instructions.
Note well that must install a boot loader such as LILO or GRUB in a Linux / partition in order to boot Linux from GAG, like most other abstract boot loaders.
Using GNU GRUB
In order to boot PC-BSD from GRUB, you must tell GRUB which drive, slice, and
partition to load from; usign GRUBs own notation
syntax.
The systems kernel is stored on disk as /boot/kernel/kernel and it's Loadable Kernel Module (LKM) drivers are stored in the same directory; with a .ko suffix. Although it is possible to load the kernel directly, it is better to load stage three instead, which gives you an easier interface to loading the desired kernel.
You will have to edit the GRUBs configuration file. The name and location of GRUBs configuration varies based on your Operating System. Under Debian (and thus Ubuntu), OpenSUSE, and FreeBSD based systems, you will find it as /boot/grub/menu.lst. On Fedora/Red Hat Linux and Gentoo based systems you will find it in /boot/grub/grub.conf. Many distros may provide a symbolic link to /etc/grub.conf, please refer to your operating systems documentation if you can not find the file.
Open it as root and edit it accordingly with the settings for your system. This example is is meant for triple booting Windows XP, GNU/Linux, and PC-BSD, where they are installed in that order, into primary partitions.
title WindowsXP root (hd0,0) makeactive chainloader --force +1 boot title Foo Linux root (hd0,1) kernel /boot/vmlinuz title PC-BSD root (hd0,2,a) kernel /boot/loader
By default, if the slice number is omitted, GRUB searches the first slice which has a partition. I have however specified the slice number in this example.
If your distro has already configured Windows and Linux in menu.lst/grub.conf,
you should probably leave it as is; appending the PC-BSD entry to the
configuration. The location and file name of the linux kernel can vary a bit,
/boot/vmlinuz, /vmlinuz, and /boot/vmlinuz-x.y.z should be common, but my grasp
of Linux kernels dates to Linux 2.2, not modern 2.6 --- as always check your
operating systems documentation when necessary! initrd users please see the grub
manuls notes on
linux.
Using LILO
For those whom still prefer the LInux LOader, you can still use it for booting PC-BSD: edit /etc/lilo.conf accordingly:
# cp /etc/lilo.conf /root/lilo.conf.old # vi /etc/lilo.conf # /sbin/lilo
I will leave the top matter in lilo.conf as an exercise to the reader (if you use LILO, you should know this); so working off the GRUB example, the /etc/lilo.conf file should look like:
other=/dev/hda1 label=WinXP table=/dev/hda image=/boot/vmlinuz label=FooLinux root=/dev/hda2 table=/dev/hda other=/dev/hda2 label=PCBSD root=/dev/hda3 table=/dev/hda
NB that initrd users will want to add a initrd=/path/to/your/initrd/img rule to
the FooLinux image specs.
Users with multiple hard drives, please refer to the FreeBSD
FAQ for details.
Using the PC-BSD Boot Loader
The header is actually miss leading, as this is really just the boot loader used by FreeBSD, a.k.a. Boot Easy or /boot/boot0. Hence forth called BootEasy.
To boot your operating systems with BootEasy, once is installed - just reboot the PC. Following the previous examples, you would see a prompt like this:
F1: DOS F2: Linux F3: FreeBSD
Press F1 on the keyboard to load Windows XP, F2 to chainload FooLinux, or F3 to load PC-BSD.
Note well that you must have a suitable boot loader installed into the linux / partition in order to boot linux from BootEasy.
The FreeBSD FAQ specifically recommends to install
LILO into the Linux /, although GRUB should work fine when installed into Linuxes /
References
- GAG Graphical Boot Manager
- The GNU GRUB users
manual
- FreeBSD 6.x and 7.x
FAQ, Chapter 9 Disks, File Systems, and Boot Loaders
- The FreeBSD Booting
Process
- Installing
GRUB in FreeBSD/PC-BSD
Post script:
If you have a problem with my spelling, grammar, or punctuation: you can pay my family to go on a shopping spree and leave me free to type slower then I can physically move my fingers across the keys.
Disclaimer
The information provided here is done for your convenience at the authors expanse, it however is without any form of warranty or guarantee of fittness --- use at yur own risk, I'm not responsible.
Saturday, September 27, 2008
Tomorrow I need to clean the newts tank, work n deploying the next site mock up for Rouge, and finish more of todays work. It shouldn't take to long to have this site mock up ready, so I'll probably be working on my own stuff son, which reminds me; I wanted to make a quick back-scratcher for taking notes.
The personal project I'm working on, calls for a domain specific language; so I need to start writing the specification for it. Luckily the output is in a language I know well. All in all, it should be about as complex, as implementing a bc that compiles to dc, which is a lot simpler then implementing bc in C, lol.
This reminds me of why I stopped using the official AIM client from AOL, they turned it into a massive pile of horse-shit lol. MSN Messenger which was my first IM-technology, I gave up on Microsofts clients around 7.something. XFire is a balance between "acceptable" and "Good", but still lacks a lot of the more, ehh... "I use this thing all day" kind of bonuses.
In my experience, all instant messengering clients are piles of garbage, taped together with a pretty face. Pidgin is just a bit more bearable then most; I use pidgin daily on Windows XP and FreeBSD, ranging from AIM to XMPP support. It sucks plenty, but it sucks less then Kopete, and it's more portable then any other such app I've met :\. And it's still better then any IM client I've used. The only decent clients I've used, the very minimalist GoogleTalk client, the version of AIM that was out when I was a Potentional Recruit for [SAS], Pidgin, and Kopete, but all leave much to be desired... But they still beat the ever loving, flying, freaking heck, out of the last version of AIM I downloaded from AOL looool.
If such a thing were even possible
Damn the torpedos, full speed ahead!
I've kicked out most of the code base for this program, and filed todos for things that are just to rough to implement immediately. And I have the necessary springboards to finish up what remains. All in all, the past 2 runs of coding, has been more productive for this project, then since the last project meeting; and that only consisted of an overview on the flow-charts! lol.
I think I'm going to hit daemonforums.org, then power down and hit the PS2 before dinner. Find a game to play, that reminds me of this.
This reminds me, the Flash v7 plugin for Linux, stores it's files in a common format until the plugin exits; that can be easily played in with mplayer /tmp/plugintmp-
That reminds me, I've still need to write a cronjob to nuke the temp files, since one of the music streams I use, is flash based, and /tmp is nly ~512mb lol.
Run sleepy, run forever
almost 0530Q, I could keep on coding until around 0700, but my stomach is to damn hungry... and I keep typing hhhhh every time I need to move my cursor to fix a typo. I need to find a quick snack, and hit the hay. And resume coding tomorrow, when I can still pay attention without /having/ to look up things in the flowcharts.
Sleep... food.... sleep... sleep
h = vi movement key for moving the cursor to the left one space
The whole thing goes to pot, when the husband thinks he's having a heartattack and is rushed to the hospital. The wife is feels 'happy' at the thought of being free of him; never mind the sweet deathbed note he wrote, thinking he was dying lol. Which in turn leads to the divorce, both want the house and won't give it up... To the point, that they've worked on a system for dividing the house between them, in the words of the lawyer, "Does this seem rational to you both?", "I have more square footage >_>".
She denies him pills, he runs over her cat trying to drive to the store. She locks him in the sauna, he 'snots' the soup at her dinner party and pisses on the fish course (lmao!). She runs him over, monster-trucking over his Morgan with her big-ass SUV. Attempts to patch it up fail, ending with a waging war across the house (and a couple $100,000 in damage)... Including her trying to drop the chandelier on him, him trying to rape her turning into a more 'natural' moment, until she tries to bite his dick off loool (stupid bastard, should've seen it coming!). And more destruction of property, until finally they both end up sitting in the chandelier, as friends come to the rescue......
The cables holding the chandelier up, give way, since she loosed the cable, and they both fall to their death before help arrives.
If I ever get married, remind me to never get divorced!
Friday, September 26, 2008
Car of the future
I want one !!! lool
Coding like a drunken spider-monkey
The plan of attack is to take these days off regualr ps, and go ape on my task list. Because if I don't, I'm never going to get to work on homework lol.
- Operation BlackWidow: An overdue project that a few of us at forums.pcbsd.org have planned
- Operation Rooster: Finish the site mock ups for Rouge .
- Operation CleanSweep: Tidy ${HOME}, add more stuff to CVS as needed, revise my SOE scripts, and deploy necessary code in the right places .
I've always found it easier to name a project, then have to stop and think, The "uh X,Y, to the Z, and whatever" thing; both in mind and notation!
I'll be posting my absence message on SAS shortly, along with my cntact data. My primary goal, is to work on my own projects and standing SAS-projects. I really need to keep my head out of the servers, and on what I'm doing... So it's best if I essentially, lock myself in front of the laptop for the weekend lol. I figure, get the work done, get the stuff that's building up done, maybe watch a bit of TV for a change (when my head needs a rest).
This is as close to a vacation as I'm going to get, and it's a coding vacation lol.
Thursday, September 25, 2008
The way this day heads up
Hit in the head with the Vacuum -- don't ask lol.
And spun out of a fall, that almost twisted an ankle :\
I think I'm going to sit down, and not move, until work tomorrow!
Wednesday, September 24, 2008
Slithering around an aging question
It seems, no matter how much I try to circumvent it, Python is the best choice all around :\ And I've tried to knock it down to size lool.
Pythons str and list classes, I actually quite like; although I don't care much for dict (Pythons associative array class), that might change come Python 3. Most of the stuff built into Python, I like using. The regular expression support, well what can I say... I don't like any stuck on OOP or procedural interfaces, after having used Perl. The =~, s//, [m]//, and related $symbolic_vars in Perl are just to useful!!!! But Pythons 're' module is good enough for stuff, I guess. Between the built in xml.* and the third-party lxml interface to libxml2, that routes pretty much a snap. I get along well with Pythons IPC offerings about as well as I do with posix's C offerings. The zlib, gzip, bz2, zipfile, and tarfile modules are enough for the compression/archive formats I may eventually need to operate on. For network related operations, Python provides a lot of stuff plus a familiar sockets interface; I don't have no problems with sockets programming (although I rarely get a chance to use it in C), I just don't have time to say, implement FTP! For GUI toolkits, basically offered is TKinter, GTK+, WxWidgets, and Qt. And it looks like GTK+ will probably be my new default kit... The epydoc program also seems to provide the style of documentation I'm used to (Javadoc-style) with good options hehe.
Not to mention the best parts of using Python as my standard language (I and II)
Tuesday, September 23, 2008
This is how I relax.... lol.
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().
Monday, September 22, 2008
1 down, 2 to go...
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
v
a
c
a
t
i
o
n
Sunday, September 21, 2008
Scheming flirtations
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.
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 >_>
Saturday, September 20, 2008
the past ~48 hours
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 !!!
Friday, September 19, 2008
Laugh of the day
Hmm, that is one thing I regret, nevr having time to learn any dialects of lisp :\
Thursday, September 18, 2008
*sigh*
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
"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.
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 :\
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
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 " ".$topic['the topics name']." "; // ... do other crapWhere 'the topics name' is looking up a row in the database, which contains a non breaing space: 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 :\
Wednesday, September 17, 2008
My mother told me to get off the computer, so I did (for once). Turns out that the other end of her phone call wasn't who I thought it was, my Aount called and told her that Grandpa Ken passed away on Monday.
I've never met him, so I guess that's what bothers me. Most of my life, Grandpa Ken has sent me a check every birthday and Christmas, but never a card.... The one thing I actually wanted from him, was the card! (or even a note) But as Ma always said, it wasn't his way of doing things.
It reminds me, a couple of weeks ago; I had a very strange dream. I dreamt that for some reason we were all in Texas, and everyone was going off somewhere. But I was staying wih my grandfather and having lunch with him (Chili). In all my years of memories, never once can I recall dreaming of him :\. And I remember a few months ago as well, one of my pictures fell un-provoked on two occasions. In my room, on top of the TV is perched the DVD player, and an array of pictures standing guard. My mother and Father, and then one of each set of grandparents. The thing that had alarmed me, was that it was my parents picture to fall over... That really got me praying for my familes safety.
My mother usually reports that certain things will happen when certain other things happen, e.g. stuff falling for no reason == death. I don't really believe in such things, but she's generally as accurate as a sniper in the long run...
Ma is a little annoyed, because it's likey that my Aunt will get everything and I won't get crap. I don't want anything, I've never cared about money, people are what's important. I would very much have liked to see him, or at least to pay my respects at the funeral... Probably just as well, no way to have made the trip to and back anyway +S. To be honest, if I did inherit anything, I'd rather it be film of him and the rest of our family, or something like that rather then anything else.
That's another face, that I'll have to look for in heaven someday. My father, now both sets of grandparents, only one of which I ever met... A good friend, and two older brothers. And my God mother, but that's a day hopefully in the far future.
Tuesday, September 16, 2008
Awhile ago, I decided to read a few style guides for English. Not that I'm likely to ever follow one >_>. I've elected for at least one American and one British based. Because, A.) I am an American :-P, and B.) if you have a problem with color and colour in the same paragraph, blame it on to many people in [SAS] living outside of the USA hahaha.
I would very much like to improve the quality of my written English. But there is not really likely to be much change, as I still have to be an abusively quick typeset. I type with ten fingers available to me, and usually have to type about as fast as I can think the words in my head. The mos tcommmon problem sbeing thsi kind! But I can't really help the fact, that I have got to type and get my thoughts written down, before I end up getting interrupted and forced AFK (Away From Keyboard); which usually leads to interrupt upon interrupt, until I wish my head context switches better then my PC.
Who knows, maybe I'll someday prove my friends theory, that I've never heard of a semi colon, to be wrong ^_^. In fact, I have heard of it, but I spend most of my time writing it like this:
expression;
:-P
Days recap
I was up to around 0500 last night, I dunno why but I never seem to get much sleep lately lol. The other day, I thought I was getting to bed early, and it was 0430'ish, well.. an hour early then the two days before I guess hahaha. Tried to sleep in today, since work didn't start until the afternoon --- not much luck. At least though, Tuesdays job is more time consuming then strenuous, tomorrows job on the other hand... Is more so a pain in the ass, then it is time consuming.
One thing odd, I heard Amanda kicked Adam out and that he's staying with his parents again. Not a good sign in my opinion. Especially since, as memory serves, in 2007 I've seen and heard of a lot more people getting divorced or dying. 2008, I had somewhat hopped would put that incremental stream of numbers to an end lol.
One of these days, I really ant to take some time to write up a review of Google Chrome --- I love that freaking thing!!! And whether the V8 JavaScript engine is really THAT fast or Google is taking advantage, gmail is so snappy on loading + the seperate process per tab thing, means no more browser-locks when launching gmail. Google Chrome is enough of an improvement over Firefox 2.x, that I might actually be able to re-take control of my inbox, if I ever get a linux binary package to use on my FreeBSD box... or better still, a native binary ;-). Perhaps it would be more fair to compare it to Firefox 3, but I use Flock 1.x most of the time, which is based on Firefox 2.x. And in all honesty, I hate Firefox 2 when compared to Firefox 1.0,x-1.5.x, it's just lost that feeling I guess... I just don't like the changes, and Firefox 3's alpha builds didn't look like an improvement. Although, I do have FF3 installed on SAL1600 just in case, but more so because it's a newer version.
Google Chrome, I think is perhaps the best thing since Lynx and HTTPS but who knows >_>
As far as my efforts to standardize myself around 1/2 languages + what we use on [SAS], has fallen back into deadlock. Every way I slice the pie, Python seems to be the best choice for all of my needs, hell... The only time I've had an interpreted language come out as to slow for jobs I've tried to use them on, is an oddity. A script had to invoke perl so many times to process text, that it was faster to invoke sed/awk instead, which could actually be considered interpreted languages I guess lol. Some of the things I've heard about Python 3000 alarm me in that regard, but I'm not very concerned. The real problem is, I prefer C, but I don't have *time* for C. When it comes to using C++ for tasks, I look at it as a two edge sword. More time savers then C but they all go out the window, in situations where they are not helpful.
That and working with gtkmm on Windows will probably be a pain in the royal hind quarters when it comes time to link against stuff. Although, I rather think a combination of Boost, Qt, and libs used in gnome is a good idea. The odd thing? C++ is not actually a language that I like a lot, but hey... beats Java I guess :\
Java would actually be a perfect tool for my needs, except I don't want to have to write in Java that much loooool.
Pride
After a thread that came up about uniforms / arm patches, I interjected a comment on the way we used to handle it. I still have the arm patches issued to me as a recruit and trooper, plus the one I made for myself as a trooper. Pictured above is a GIF copy of the one [SAS] Shield issued me shortly after my tryout.
S'all the all rank I ever needed: [SAS] Trooper
Monday, September 15, 2008
Windows XP --- hates to run your programs
When I went to click on my user icon, it gave a balloon message, essentially saying:
Terry has 3 programs running Running to many programs reduces your computers performance. If you computer is running slowly, try closing a few programs
Now that, is just fucking funny lool.
Writer's Block: Perks of the Job
In this economic climate, not all employers are able to give raises. What perks would make you happy in lieu of a raise?
Sponsored by Microsoft Small Business
Live Journals Writer's Block
Hmm, I suppose it would depend on the situation.
I'm not a greedy person. As far as money goes in life, all I want is enough not to have to worry. So to me the idea of a pay raise has more to do with the cost of living then anything else. As far as a raise in the sense of a reward or something like that, I think a nice(r) discount on company products/services or if available, or a bonus paid in shares of stock in the company or offering the shares at much lower cost would be quite nice. Well, assuming the companies stock was worth something >_>
The ability to spend some of my paid time either working on things that interest me specifically (example: learning a new skill) or some of my vacation time counting as paid time, would be nice.
Even more so actually, because I almost never get to have a vacation, even as a kid I rarely had vacation time lmao.
Pay me enough to get through life without fighting to pay essential bills
Treat me with respect, not like a dog (I'm a human!!!)
Family comes first, job second: period
Let me grow -- I love to learn
With all of that from a job, I probably would sleep at my work station every now and then if necessary lol, let along care about perks offered :\.
Now if someone would just pay me for using my head......
Sunday, September 14, 2008
Reflecting on recent virtual events
Hmm, I am sorry to say it but in a lot of ways, I think the new Team Mercury / Hg4 is probably a good thing for [SAS].
With Rasa gone, it seems as if the last resistance to change is also gone. The [SAS] SOPs (from scratch) are now in the hands of a seasoned professional, and I am tasked with the technical aspects of getting them on the website. In Rasa's new home, he doesn't have to get things past 2 soldiers, an ex swat instructor, an 8 year veteran of [SAS] gaming, a former Sabre Squad 2IC, or the strict and realism first Spidey01. I miss my friend very much, but I think I'd rather see [SAS] move forward into the future.
It's amazing how much work is actually getting done now! I wonder, just what mischief he might've been up to since I left the RSMs post.... Recent events have left our SWAT 4 wing with less man power in the lower ranks, but progress these past few days has been like watching a bull charge
They (Hg4) have already grown through a few of the people on our "list" of prospective candidates, all of which know the Hg4 founders from there time as [SAS] Members, and each Hg4 founder knows much about our server regulars and what we think of them. Filterhappy, new Trial Member of Hg4's comment today; actually made me quite happy. Those who actually care about [SAS], are those who belong in the the selection course. I expect all of the people who are of interest to us, will be in Hg4 tags before long, as long as Hg4 does so with honor and those people find what they seek, I'm fine with this. I'd much rather see Hg4 grow, then see dead weight return to [SAS]. I want to see [SAS]'s kind of people make it into the selection course, first and foremost
Me, maybe I am a jerk, but I don't like people who waste my time. Time is life, life is time, and you don't get a refund if you fail to spend it wisely!
It is not our job to train the public in our ways of doing things, parts of Hg4 may have felt differently before leaving [SAS], but I don't. One of the reasons why I take part of my time, to teach recruits things when I can. Is because I hope they will benefit from it, and learn to be a stronger member out of it, and to help the NCOs with their tasks. If Joe Blow wants to learn our ways of doing things, they need to survive the selection course just like the rest of us did. A lot of people think we're too strict, me? I think it's about as close to the real life 22nd Special Air Service as you are going to find, without joining an army. And I call that a _good_ thing. I guess there is a difference between those that just look for the best they can reach, and those who want to be the best that they can be themselves, and then there are those who also want to help others to grow.
I know the things that I look for in a prospective member, and I've come to believe that [SAS]_CO_Random is right, after so many years... He ought to be lol. Jonsi, Nick, Caern, I know that I see the potential in them, the right attitude to move on. That's one of the reasons why I put extra effort into seeing that their training in the SC is/was successful. It's also why Timbo was a great loss in my opinion, both in man power and time invested in, should we say, "Let him shine through" hehe. But I guess it wasn't the path he was destined for. One needs great skill to pass one of our trooper tryouts, but there's more to it then that,
I made it into the [SAS] Selection Course, and I didn't even know how to use the Voice Commands system in RvS until about a week or two before becoming a Recruit! Back then, I guess it was a lot stricter. The tryout is hard by most peoples standards, but it really is easy in my opinion... If you're serious.
One of the reasons I joined [SAS], was because I like to play tactically and realistically. I found the things I was looking for there, Skill, Teamwork, Dedication, Friendship, and FUN, FUN, FUN!!! Most people who are in the team, are there because they enjoy it this way. We like the structure, the teamwork, and we live to improve our abilities while having fun with a few good m8s.
Getting through the SC was quite an exercise, I had to grow quite a lot in my skill set just to make the cut. All of the way, I had teachers helping me to grow, helping me learn the little things that makes this elite team as skillful as it is at what we do. I never really noticed most of it, just how much attention to detail there was here, until I started paying attention during training. My time with [SAS]_Trp_Rand, [SAS]_Cpl_WIZ, and [SAS]_Cpl_Relish most important of my teachers.
I don't totally agree with some of our SOPs, but they work and work well for the most part. If I wanted to play my way, I wouldn't have joined the [SAS], I would have made it a goal to prepare myself for BUD/S and pursue the real thing. Because it doesn't get much better then that outside of the [SAS],and groups like it. Hg4, is not a group like [SAS], and I say that because I know the founders of Hg4 ;-). I play the way I was trained, here are a few differences in how I would personally do things, but this is [SAS], not my back yard
Hmm, I still remember the time I got dumped into a team leaders boots else wheres, and I had to direct us against the other teams defenses. When issuing the insructions for our assault, someone in my attack group asked me if I was in the army :\, my reply? No, I'm in the next best thing -- the 22nd SAS Elite Virtual Regiment !
I don't think they got the joke, but they still enjoyed the win lol.[SAS]_Spidey01
Warrant Officer Class One
22nd Special Air Service,
The Elite Virtual Regiment
Watchin' the fireworks
I've been working on a simple class that provides the database usage schematics that I desire, namely... If I shoot myself in the foot, when in doubt -- explode. And simple iterator support for rows. There are numerous interfaces I'm sure, but I've yet to see one that provided *what* I wanted, and it seems faster to write my own rather then keep researching.
The basic frame of thought I have, is if debugging a fuck-up is to costly in time, make sure it is easier to debug. In fact, in implementing the class... I accidentally shot myself in the foot, and the class exploded on me. I tried to implement something without thinking about the state of the supporting code clearly. I had forgotten to support 1 of 2 possible successful outcomes of a lower level method, which assumed any non successful outcome from this method was a critical problem (and it is 99% of times I've seen it fail). Since the method is intended for a situation where paranoia is preferred over ignoring problems, and needs to *only* allow correct actions to pass by it's safe guards. The end result of my lack of thinking being, that I improved the iterator that started the chain reaction to report a problem that never occured to me as possible, and fixed the lower level support method in question to behave correctly, then tested it to ensure it works properly (along with methods depending upon it). If I hadn't had that failed test initially, I probably wouldn't have thought about fixing that until the next phase of testing (pre deployment), and would not have made that adjustment to the iterator, until I really got smacked upside the head using it lol.
Not exactly why I designed it the way I have, but it's starting to pay for itself I guess :\
Saturday, September 13, 2008
At least there was something decent on TV tonight, but I slept through half of it lol. When I woe up though, I was pleasantly surprised to find The Mating Season on. it's an old movie (1951), but it's a wonderful movie. If memory serves, a man basically ends up tapped on the rescue when his bosses socialite girlfriends had an accident, which ends up with them getting hitched a very little while later.
The young Mr McNulty breaks the bank and goes into hock six ways from Sunday, to give his new wife Maggie a decent apartment. Nothing extravagant but quite high for his modest sallery, all for the love of a rich girl. His mother that flipped burgers for years to get him through college, finally gives the bank collector the big slip one more time and sells the hamburger joint. Goes out and buys a new dress, expansive hat (even by todays standards for common folk, so in 1951 it would've been insane!), and she goes down to drop in on her son and his new bride.
When the mother gets there, the new Mrs McNulty is trying to throw a dinner party, except for one thing. She never learned how to cook or keep house! So she's expecting the maid her husband was sending over from the agency... When her mother in law shows up at the door, Maggie thinks that she is the maid, right off the bat, fair mistake. When the mother sees just how badly things are screwed up, she takes off the hat and puts on an apron. Just couldn't bare to embarrass her daughter in law I guess, lmao. When Mr McNulty returns, he's like WTF is going on here! but ends up cooking up a deal with his mom. To let her continue on as the 'maid', before she skips town and finds a worse job. And Maggie and the 'maid' become best of friends, and saves them a fortune on the shopping bill.
That's when all hell breaks loose. The other mother in law comes down to visit, being a stuck up, rich bitch of a snob: treats the 'maid' like a dog, and even goes so far as to having the poor asshole sleeping on the couch in his own home :\. Combine with his boss, his ex girlfriend, and his mother-in-law all trying to destroy their marriage, they drive the poor guy nuts. His boss, stealing a grand idea as his own and making him do the leg work, but doesn't invite him to the party. But luckily, his wife loaned out the new 'maid' to his bosses father (the head of the company), to take care of the old man while he was sick in bed.
She tells him the truth about whose idea it really is and gets her son invited. At the party, Maggies snobbish partner in a game makes a snide comment resulting in an argument. Without even knowing or asking what went on, the husband immediately takes the other womans side, because he wants "in" with the folk their at the club and the business deal to go through. So he forces his wife to apologize to the old bat, and she does. Making a big play up about possibly having an affair with his boss (who was her former boyfriend). Which starts a good quarrel between them. When Maggie's mother sees something odd in the middle of the night, she accuses her son in law of fooling around with the maid! When Maggie finds out that the maid is really her mother in law, and hat he has kept this secret the whole time, that's the last blow -- and she puts an end to the whole thing.
That's when his mother saves the day, lol. Getting together with the head of the company, they hatch a bigin' with setting up a meeting between the two parted but newly wedded morons, before Maggie can leave town. Later on the son presents his mother to the snob from the club, and throughly puts and end to his own snobbish ways by rejecting the club as not good enough for his family. Now that the "cat is out of the bag', his mothers able to speak freely with the other mother in law. When his mother in law decides that she's moving in for the long term to be with her daughter, his mom fixes it good :-). That this time, it would be no more slave labour, the two mothers would help out, and the rich bitch would be put to work ! Hahahahahahaha, it's priceless >_>
As that is all taken care of and the young couple is back together again, another twist of fate. The head of the company, having taken a liking to the 'maid' when she took care of him earlier. Hears his son (the boss from before) say that he would rather have his throat cut, then have a mother like Mr McNulty's, the old man comes to his decision. And finally asks her out in his limo <_<
It's a crazy movie, but it's hilarious some of the jokes that go through the scenes. You'd have to watch it to get it. If you ever had an in-law of an out-law move in, it probably would be even more funny then it is to me lol.
Some classics, are just classically funny if you sit and watch them.
For one reason or another, I've been using TWO web browsers at one time lately. Flock for websites poorly styled, Google Chrome for as much else as possible ^_^. Multiple windows, several tabs on each, in both browsers hahaha !!! This has yet to slow down the rate at which I surf the web, instead I think I'm getting faster :\
I found the article rather interesting. For me, I generally prefer editing configuration files. Because if they are actually well documented, I can usually find my way along faster. Most programs that I have used, usually do a poor job of documenting what various options do... The idea of using a GUI Wizard for setting up and configuring stuff is old as dirt, but so often done half-assed. I've seen many programs present Wizards, some do it very well, some do it to a point--that I'd rather do it the 'hard way', because it is easier!
The style of user interface I enjoy, is basically that offered by programs in /usr/bin. It's often simple to use (if you actually document it) and it's fairly easy to code. When I try to do a GUI, I usually try to create something that is simple to figure out, but still something that I *will* use. I typically will use what ever input method is closet at hand, if my hands are on the keyboard, I use it---one reason that I love vi! While if my hands on the mouse, I'll probably click my way about: unless it takes more then a moment.
GUI's all to often make simple tasks easy and complex tasks impossible.
A command line interface, you generally need to know how to use. It pays to at least ask for -h,--help, /? help, depending on what system your using. Most programs are fairly obvious in their behavior without arguments. And good programs that I've seen, try to make them intruitive to figure out. A GUI program by comparison, if you need to go much further then a tooltip for something that is almost obvious, but explicit. Then I think there is a problem. I generally pick up and use graphical programs without needing to read documentation, because using a spreadsheet is easy but the meanings of whats fed into them are not always so simple.
If I had to go through the same thing to setup a printer, I would probably say fuck it, and go do it in a way that actually deserves my attention, LPD lol. Although, I do admit: Windows does do printing well in my opinion, as long as you do not have to deal with print "jobs", then it sucks.
If the designers were half-smart about UI issues (like, say, Windows programmers) they'd probe the local network neighborhood and omit the impossible entries[1]. If they were really smart (like, say, Mac programmers) they'd leave the impossible choices in but gray them out[2], signifying that if your system were configured a bit differently you really could print on a Windows machine, assuming you were unfortunate enough to own one.
The difference between doing the job, doing the job well enough[1], and going that extra mile to make it better![2]. Designing a good UI is much harder then a lot of other things, but when it does happen in a good way---it's worth it.
I remember not to long ago, I replace my *nix based PDF/PS reader. I dropped KPDF along with most other KDE apps in my change over to blackbox. Gnomes Evince was one that had been on my list for awhile and the new Okular from KDE4 was not ready yet, so I tried Evince. The program turned out to be incredibly simple, so simple that there are no (real) settings to change. The only real configuration option is how you want to layout / size a page, namely fit to page, blah blah.
At first I found this quite disconcerting, but Evince has since become my idea of the worlds best PDF/PS reader. Evince is light, it's fast (unlike Adobe or KDE's offers), all of the important stuff is in quick reach, and all of the unimportant stuff is no where to be found. Like at long last, a PDF reader that just cuts the bullcrap and lets me read files gracefully.... without arguing with the PDF reader !
Structure and Interpretation of Computer Programs Video Lectures by Hal Abelson and Gerald Jay Sussm
Structure and Interpretation of Computer Programs Video Lectures by Hal Abelson and Gerald Jay Sussm
keywords: MIT SICP
Random thoughts
"The Perils of JavaSchools"
I've never been formally educated on a computing thing in my life :\. Having seen code by someone that was, whom I'd like to strangle... Some times I wonder if I should keep it that way >_>. I would still very much like to one day pursue a masters, an excuse to (hopefully) learn more then I can solo. But honestly, the odds of ever being free to do so are quite slim.
I still remember starting out in C++ for the first time, and having a problem handling the syntax for simple statements:
if (foo < bar) do_bar(); if (bar < foo) { do_foo(); do_bar(); }
At the time, it was actually the most complex thing I'd ever had to learn. After figuring out that the curly brace was only required if there was more then one line, the rest was easy as pie. Once the simple logic was sorted out, I never had a problem like that learning another language.
But, that's why I've come to look on learning a language differently then learning to write programs. A language has a syntax, how do you express something in written form? Through the languages syntax. One of the things that I love about C, is that for better or worse. You can cram the entire language syntax into your head. It's really that small and light, that leaves a lot more room for working on a problem and not feeling: "Oh, I didn't know I could write it like that" later on.
Actually creating a workable program is a bit different, it's not a question of how you may write it (e.g. if (expr) { do; } or if expr: do), but how do you write it? One of the big joys of programming for me, is to sit back and try to figure out how to solve the problem. That's the fun thing (y).
Friday, September 12, 2008
Writer's Block: Lunch Break
Do you bring or buy your lunch during the work week? How much money do you spend on food consumed during working hours?
Sponsored by Microsoft Small Business
Live Journals Writer's Block
Used to bring lunch, but it was a waste of time lol.
Get up, get dressed, get ready, go to work, work straight through, come home and either eat lunch or wait for supper time, depending on the time of day.
I'm generally used to eating twice a day plus an occasional snack. My living habits have conditioned me against eating a breakfast, to the point that if I do, I won't be hungry for lunch until hours later then normal. Some times when work is heavy, I skip eating until dinner, just to much bother: especially if work is early the next day, and eating dinner late wouldn't be that much good. Then again, until recently I almost broke my inhale dinner, take nap routine :\.
Lunch however, is generally my favorite meal of the day hehe.
Plan of Attack -- tongiht through the weekend+monday
0/
1/
3/
4/
6/
7/
10/
11/
You know, life would really be sweet.... If I could get paid to use my brain, instead of saving it all for my off-work hours lol. No if I new any companies in this burg that hire and train self-educating-geeks :\
Thursday, September 11, 2008
Japanese beaver or Blackwidow spider?
Since I've been unable to find anything suitable, I'll probably end up creating a new library of code for the website.... One that obey's a policy of not shooting the next coder in the foot, like the bastard taking pot shots at me through years old code >_>. The sad thing? I thought about the ideal implementation for hours at work (my job leaves me with my brain free 90% of the time). Yet, between various business.... It is approx 15 hours later....... I've still not had the freedom to work on it!!!
Yet implementing it,a nd making code on the website would improve a heck of a lot. Especially debug times, and probably save me more time in the long run. Which reminds me, looking at the code I'm charged with maintaining/fixing:
But what do you do, if the WTF's are rapid enough to be measured in seconds?
Wednesday, September 10, 2008
Tuesday, September 9, 2008
Muttering about my task list
I remember the 6th commandment of C Programmers,
If a function be advertised to return an error code in the event of difficulties, thou shalt check for that code, yea, even though the checks triple the size of thy code and produce aches in thy typing fingers, for if thou thinkest ``it cannot happen to me'', the gods shall surely punish thee for thy arrogance.
Especially since I'm the one being punished for anothers dickheadedness!
I really wish PHP had exception handling, WAIT !!! (a quick google of the reference manual later), PHP 5 added them, YKYMF! I smell a few additions to my utility library... unless what I need has already been universally implemented by someone hehe.
And in likewise reflection upon The 10 Commandments of C Programmers:
Thou shalt check the array bounds of all strings (indeed, all arrays), for surely where thou typest ``foo'' someone someday shall type ``supercalifragilisticexpialidocious''.
Some people just don't know how true that is!
Thumbing through the annotated edition, I can't help but chuckle at this... And hope such a thing befalls the bastard that did this to me lol.
verily there be many, many ancient systems in the world, and it is the decree of the dreaded god Murphy that thy next employment just might be on one. While thou sleepest, he plotteth against thee. Awake and take care.
Ok, so maybe I am a jerk sometimes ^_^
Anyway, I got a little bit of time before bed. I'll use that to take care of a few odds and ends, and I'll finish the other work I need to do tomorrow night.
GIGO, How to debug and fix code the hard way
I've finally found the problem that, i spent 3 hours trying to prove was broken. Only to find out, the 'contract' behavior it expected from it's environment at fault. And the rest of the module, is such a hopeless pile of shit, that I didn't realize it, until I found the simple fact.
Garbage In, Garbage Out, but no Error message.
I never checked the data stream output, because the interface test failed. But it actually did do exactly what it was supposed to do, just with garbage values, which through off the rest of the code... That ignores errors rather then handling them.
If I h ave got to kick the bitch in the teeth twice a day to do it, this website will furfil the [SAS]'s needs.Or it will get ripped apart bit by bit and rebuilt as something that will serve them well!
Monday, September 8, 2008
Song of the day: 2008-09-08 / Highwayman
[Willie Nelson]
I was a highwayman. Along the coach roads I did ride.
With sword and pistol by my side.
Many a young maid lost her baubles to my trade.
Many a soldier shed his lifeblood on my blade.
The bastards hung me in the spring of twenty-five.
But I am still alive.
[Kris Kristofferson]
I was a sailor. I was born upon the tide.
And with the sea I did abide.
I sailed a schooner round the Horn to Mexico.
I went aloft and furled the mainsail in a blow.
And when the yards broke off they said that I got killed.
But I am living still.
[Waylon Jennings]
I was a dam builder across the river deep and wide.
Where steel and water did collide.
A place called Boulder on the wild Colorado.
I slipped and fell into the wet concrete below.
They buried me in that great tomb that knows no sound.
But I am still around.
[in unison]
I'll always be around, and around, and around, and around, and around.
[Johnny Cash]
I fly a starship across the Universe divide.
And when I reach the other side,
I'll find a place to rest my spirit if I can.
Perhaps I may become a highwayman again.
Or I may simply be a single drop of rain.
But I will remain.
And I'll be back
[in unison]
again, and again, and again, and again, and again.
-- title: Highwayman; written by: Jimmy Webb; performed by: Willie Nelson, Waylon Jennings, Johnny Cash & Kris Kristofferson, "The Highwaymen"
And this appears to be the old music video, mmmm:
Of languages, libraries, and tools
So far, it seems to me that language wise my best thoughts:
Python, I don't really 'like' python but I can do a tremendous amount of work in it compared to other languages, time wise. And it's fairly easy to implement and test stuff -- worst thing I can say about it is it's interpreted and the regular expression support is done via a standard library module. Although jython (compile to byte code, but compares to a smaller version of an old CPython release) and ironpython (python for .net clr) should help the former, and the api for regex ain't that bad, but sucks compared to Perl lol (like most languages seem to, that don't steal Perls syntax or likewise make it a core element of the language syntax). Python also can handle interfacing with other languages well enough between the CPython, Jython, and IronPyhon implementations.
Java, great syntax and fairly logical. The byte code is portable enough between Sun JVMs and it even has the portable Swing GUI toolkit, although I'd probably end up using SWT or the WxWidgets bindings. The bad things about Java, although you can compile to native machine code, ya need to get the GNU Compiler for Java (GCJ) working first. Regular expressions are done via it's libraries rather then syntax, and. Well the only _nice_ way of saying it, most of the tools with the JDK eventually piss me off, but I like the language aside from that. The only major con is it is as OOP-centric as I've ever seen, and it's that way by design.
C++, lower level then any of the others and offering the best level of interface to C code of any of them around ;-). I personally prefer Java's syntax over that of C++ but it still gets the job done. It's just a question of how often you want to press Shift while typing... One of the best things, the STL is quite nice and well enough supported now to be worth using. Although, in my experience when working around C interfaces, the STLs value can go out the window, but maybe that's just how long I went before using the STL. One plus, unlike Java or Python, you get a more traditional pointer, not to mention a few interesting things in the std::namespace and boost libraries. Not sure what shape exceptions support is like under various system compilers, but I don't think that I've ever seen C++ code using exceptions outside of examples or perhaps the FAQ :\.
Useful points of interest:
WxWidgets for the GUI -- portable to target platforms of most interest and in all three of the above languages (and a few more too).
libxml2 for XML -- portable to target platforms, but seems to only have C++ and Pyhon bindings easily available, libxmlj (for java) I think would need compiling and I haven't tried that under FreeBSD or Windows yet.
Semi-Native Regular Expressions -- Boost libraries for C++, Pythons own regular expression module, and ditto for Java (not that I like them).
std::string, str, and String classes -- basic string handling in C++, Python, and Java. Boost and WxWidges also provides wxString.
MySQL bindings -- database operations; quickly available for C++, Python, and Java (JDBC based). Using SQLite in C++/Python is also easy enough but I'm a bit leerly of Java-related connections for SQLite3.
As to the other stuff that was on my list:
C++ and Python provide suitable IPC systems, never have looked at Java in that light. Most of the stuff I need, is basically provided by the C libraries under POSIX systems and Windos, Python has a suitable interface to it, so I'm happy hehe.
Python has good enough built in support for common compression and archive formats. Whatever can't be done via java.util.zip hopefully could be done via JZlib, I'm not familiar with anyhing ZLib under C++, but there is always the traditional interface ^_^.
I haven't considered the network side that much. Although I sometimes find it a bit lengthly, I don't really mind working with the C-style sockets library I've used here, using the windows sockets library shouldn't be to far off from the ones used on *BSD and GNU for my needs (aside from headers/linking). Python has support for a number of protocols (and pwns Ruby on documenting the classes for most protocols IMHO), Java well enough out of the box, and both Python and Java provide usable interface to TCP/UDP. WxWidgets also has a few things as well but more limited, that might be worth looking at, since I'd rather like to use a similar interface in each language, while still leaving code that can be read.
As to the ease of use and deployment, that is always a tough question. Under FreeBSD and Debian at least, they are all 'easy enough'. Windows of course, always has to be the pain in the ass. But for total portability this is an AoR where Python excels. When it comes to deploying stuff, it gets tricker. Windows lacks a package manager and you eventually have to draw a line between what you're stuck bundling and what your stuck making a dependency. One of these days I need to look at py2exe and see how it would work out for what I've a mind to setup.
Big pluses:
Qt4 for C++ and (generally) Python is great and works on all my systems, QtJambi I've never tried on FreeBSD yet, but would be interesting if it works. The only thing I hate about Qt, the commercial license costs an arm and a leg :-(, but most of my needs fit within the (free) Open Source Editions license terms with a smile.
WxWidgets seems to be less painful then GTK+ under Windows while still supporting many languages, although GTK+ would probably be more fun to learn in my case. It also has nifty things, including string/regex classes.
MySQL and SQLite are generally portable and have bindings to other languages quick & easy enough. I've never used SQLite on a project, since I run MySQL on one of my own systems to service all my SQL-related needs ;-)
When it is all said and done, I really think Pyhon is the best choice... I dunno why or how, but it seems that way! Hmm, to re-dive into using Python for most tasks, or to get C++ crazy... Or live with using both side by side? For my own sake, I think I should sake fuck Java! But it is a great language in it's own right.
Oh well, maybe in a few months I'll have figured out which path to take. I can always make use of other languages and tools, but I very much need to find a "primary" set to work with!
think: switch(choice) { case PYTHON_ONLY: // Python becomes my primary language break; case CPP_ONLY: // C++ becomes my primary language break; case PYTHON_AND_CPP: // use both side by side break; default: goto think; }
Sunday, September 7, 2008
My laugh of the day, 2008-09-08
I just couldn't help but smile, nod, and laugh lol. Vi is a fairly light weight program in todays world, and was designed in a time when just moving your text editors cursor was probably slow as watching paint drying. Emacs on the other hand, tends to be rather hefty in most good implementations, I think it was once a cottage indrusty to make light-weight emacsen.
And to this day in the form of GNU and X Emacs is, one small operating system, but a huge text editor compared to the nimble Vi. I don't go much in for the Vi Vs. Emacs stuff and vice versa, because I use the Vim which is the only thing better then Vi ;-)
The days woes
Even a spider needs sleep eventually
The best way to describe old code on the site, is a scripting language with many globals, almost no regard for scope, rarely any indentation, extremely long lines, and compounded with (often shitty)HTML embedded in multiple layers, and designed in such a way. That if you so much as add a comment somewhere you'll probably break something lol*. It's an exaggeration of course, but it is essentially _that_ bad to work with. Much worse when you consider that system upgrades can often make subtle changes that only an asshole would've assumed never would change. I'm tired of having to think up band aids around shit that shouldn't have been written in the first place. I'm no brilliant programmer, but for the love of HAL, at least try to do a decent job!
[SAS] has had one very negative impact on my life, I can't stand assholes that do things half-assed, whether it's running around like a headless chicken, or making toxic waste look pretty.
In a lot of ways, I wish I could just rip the website part... Build it anew, as Operation Excalibur was meant to experiment with locally. But people would likely not like that idea, because all they get to see is the 'outside' of the site, not the innards. *SIGH*, I don't like rewriting stuff from scratch, but I don't like being forced into bubble-gum solutions with bubble gum on the bubble gum either. I know Wiz isn't a code monkey, tbh he would have a good excuse to write putrid code, but the sad thing? The jackasses who wrote the code we're working on, were supposed to be an educated man. I really hope, if that person ever gets a job that involves computers and programming or webwork, they stick a cattle prod up their ass at the sight of the work being done. At least Wiz makes an effort, that's more then I can say of the person that hashed out most of the websites less-nice modules.
I still need to fix one module used in the selection course, and after having spent more then 3 hours reading, thinking, and testing. I still can't find the reason why it stopped working lol. The S.O.B. in question doesn't even have anything to do with our recent changes, but no... It's gotta be a prick and break, without reason, without word. To be honest, I never knew how much I would miss exception handling before I had to live without it, even if I never really used exceptions in most of my code lol.
Tis the nature of my sort, I think, to be pissed off and frustrated with such crocks. Including the kind that I wouldn't even wish on a machine let along a programmer. One thing I do know, it'll have to wait until at least Wednesday to get fixed, because I'm going to be working like a dog tomorrow and Tuesday. Oh man, what I would do if I had a week or two of nothing else to do but wage code-warfare upon building a more robust website.
* For those that don't know, a comment is a section of code that is totally ignored when running it, e.g. int foo = /* comment */ 1; is treated as if /* comment */ was never there.