Dancing over the Windows, Day II-B

After getting the backups taken care of, I took a few moments to clean up after the more intrusive installations. That involved turning off the MSSQL related services, telling Javas jusched updater to take a hike—instead making a scheduled task for it, which is what the installer should have done! After that, I sanitized the %Path% environment variable back to the default, and used my documented list of where I installed everything, to write out the desired environment variables.

In order to keep the systems path clean, yet make it easy to make regular changes as part of batch scripts (like compiler specific ones) or per-user profile variables. Here is a list of my creations:

%DEF_PATHEXT% and %Def_Path%
These are just references to the systems default values for %PATHEXT% and %Path%, so they can be referenced later without concern for the actual system values.
Userprofile overrides for %PATHEXT% and %Path%
I’ve set PATHEXT to %DEF_PATHEXT%;%Extra_PathExt% and Path to %Def_Path%;%GoogleChrome_Path%;%RemoteUtils_Path%;%Utilities_Path%;%WWW_Path%;%MediaPlayers_Path%;%Graphics_Path%;%OfficeApps_Path%;%Games_Path%;%JavaRuntime_Path%;%Gtk2Runtime_Path%;%Perl5_Path%;%PHP5_Path%;%Python2_Path%. Which provides my user with virtually everything I could want, short of access to compilers and what not.
%Extra_PathExt%
Extra extensions that I would like to *not* have to type, namely making Perl/Python/Ruby use and coexistence much easier.
%RemoteUtils_Path%
Various remote utilities that I use often, things like PuTTY.
%Utilities_Path%
Slips several frequently used programs into my path: like SysInternals and Archivers. Yes, I do use a command prompt to unzip crap often enough to warrant this :-P.
%WWW_Path%
The paths to world-wide-web related programs, that are only meaningful with an internet connection. Instant messengers, VoIP, web browsers, blah blah. This also means I can have a lot of fun without reaching for the mouse ^_^.
%MediaPlayers_Path%
Quick access to MPlayer / MEncoder and anything else that comes in handy.
%Graphics_Path%
Software for manipulating images, GIMP, Dia, Wings 3D, Blender, et alii.
%OfficeApps_Path%
Paths to the kind of software often found in office suites, most importantly a snappy PDF reader. There’s not much else that I use regularly, since word processors are often brain damaged from a productivity standpoint.
%Games_Path%
Various games, of the kind that can actually be run without changing directories; that is no unreal engine garbage.
%JavaRuntime_Path%
The systems standard Java Runtime Environment, suitable for responding to Java applications that need to make me wait an hour for them to startup ^_^
%Gtk2Runtime_Path%
The systems
%Perl5_Path%
Reference to all that Perlicous goodness, can’t have a box put to work without a copy of perl setup, now can we?
%PHP5_Path%
In case I need to test some code, I always keep an interpretor within arms reach; for things that require a server, I just SCP it over to another box, that happens to be running Apache.
%Python2_Path%
I decided that this time I would run both versions of Python, this chooses the 2.x branch. For better or worse, not all valuable libraries have made the transition Python 3.x yet :-/
%Python3_Path%
Same as the above, for for Python 3. It should be most useful to me, for testing scripts for compatibility with 3.x
%Ruby_Path%
A language that I rarely use these days, but always keep available for a rainy day 😉
%Devel_Path%
Pointer to various development tools that are not very implementation specific and should be optionally available to all user accounts. It’s made up of other environment variables, just like the %Path% override.
%Devel_Utils%
Assorted utilities like tags generators and build tools
%ScmTools_Path%
Qucik access to source code management: Subversion, CVS, blah blah. The only thing I actually give a flying flub about, is Git.
%JavaDevel_Path%
One huge Java development kit with more bells and whistles then I could care to look at. This variable basically exists to provide access to javac and relations
%Qt4Devel_Path%
Paths to the Qt SDK, the best toolkit for doing graphical software that I’ve ever found. API wise, I reckon WxWidgets would be more natural to Windows developers fingers (wxNames::LikeThis instead of QNames::likeThis) but I’m perfectly happy with Qt.
%Gtk2Devel_Path%
Basically a software development kit for GTK+ apps in C/C++, kept independent of the systems Runtime—so build time will never break Pidgin, Gimp, & friends
%MinGW_Path%
For setting up quick access to the GNU Compiler Collection.

I’ll likely write a set of development environment scripts, that will handle tailoring my cmd environment to a specific task. Exempli gratia: MinGW, Watcom, MSVC, JDK, Py2, and Py3.

Because I know from first-hand experience, many games built around Unreal Engine 2 among others, still treat the Operating System like MS-DOS, I’ve also taken the liberty of setting up a “Gamers” group. That should make playing RvS/SWAT without elevated privileges as possible as it ever is going to get… lol. Considering how crappy they are on the inside, and being UE2, I don’t expect it to actually be possible without further abuse. Really, I wonder how some companies get this crap on the market…

Anyways, time to setup the games 🙂

To be continued…

Dancing over the Windows, Day II

Installed XFire, and very interestingly only the administrator can change where it downloads files to, which should be in %AppData%Xfire along with the users chat logs. I suspect the intention behind this “Odd” design choice was to force all downloads to occur in a shared folder, which can be automated for a routine virus scan – or because many games are so crapply made that they need to run under Administrators lol.

Xming, TeamSpeak2 were quickly smashed. The most important utilities to get installed were 7-Zip and InfoZip, for dealing with the archive files involved. After that I setup Python 2.6 and 3.1, Ruby, and Perl 5.10.0. The file associations can wait until later, but quite seriously I ain’t going anywhere without Perl installed ;-).

Because I have both Python 2.6 and 3.1 installed, and the MSI installers override one anothers file associations, I had to manually setup the mappings that I want; which includes mapping .py2 and .py3 to their respective interpreters.

C:2install>ftype | findstr /r /i "Python"
Python.CompiledFile="C:DevFilesLanguagesPython31python.exe" "%1" %*
Python.File="C:DevFilesLanguagesPython31python.exe" "%1" %*
Python.NoConFile="C:DevFilesLanguagesPython31pythonw.exe" "%1" %*

C:2install> assoc .py2=Python2.File
C:2install> assoc .py3=Python3.File

C:2install> ftype Python2.File="C:DevFilesLanguagesPython26python.exe" "%1" %*
C:2install> ftype Python3.File="C:DevFilesLanguagesPython31python.exe" "%1" %*
C:2install> ftype Python.File="C:DevFilesLanguagesPython26python.exe" "%1" %*

C:2install> ftype Python.File="C:DevFilesLanguagesPython26python.exe" "%1" %*
C:2install> ftype Python.CompiledFile="C:DevFilesLanguagesPython26python.exe" "%1" %*
C:2install> ftype Python.NoConFile="C:DevFilesLanguagesPython26pythonw.exe" "%1" %*


C:2install>assoc | findstr /r ".py"
.py=Python.File
.py2=Python2.File
.py3=Python3.File
.pyc=Python.CompiledFile
.pyo=Python.CompiledFile
.pyw=Python.NoConFile


C:2install>ftype | findstr /r /i "Python"
Python.CompiledFile="C:DevFilesLanguagesPython26python.exe" "%1" %*
Python.File="C:DevFilesLanguagesPython26python.exe" "%1" %*
Python.NoConFile="C:DevFilesLanguagesPython26pythonw.exe" "%1" %*
Python2.File="C:DevFilesLanguagesPython26python.exe" "%1" %*
Python3.File="C:DevFilesLanguagesPython31python.exe" "%1" %*

I wonder how many people never knew you could change file associations from the Command Prompt? It is oh so much faster then screwing with Windows Explorer!!! Later on I’ll add .pl;.py;.py2;.py;.rb to an environment variable that users can append to their %PATHEXT% at will.

Tools for getting work taken care of next: GIMP, Dia, and Pidgin+GFire plugin. Vim is the only one that I actually care about, but since getting the newest version with all the right features that I want, means compiling my own from a CVS/SVN checkout: it might help if I installed MSVC and CVS first; will get to that later.

Misc office/unproductivity apps: GnuCash, Abiword, Gnumeric, OpenOffice.org, and AutoHotKey. Then remaining non-dev utilities: WinMD5Sum, Qlipboard, Unlocker, GNU PG.

A couple small games: prboom, OpenArena, Battle for Wesnoth, and Chromium BSU; I’ll get UrbanTerror, Raven Shield, and SWAT 4 setup later.

And now time for the huge hulking development stuff…. since it’ll take at least 15 minutes to download the remaining Microsoft development packages, I started on MinGW, MSYS /w DTK and WATCOM. I usually use Visual C++ for compiling under Win32 whenever possible, but out of respect and potentional handy’ness, I usually keep a copy of Open Watcom around; it also has one of the most polite installers ever created on Windows! Setting up the MSys kits is painless, upgrading them is not always so. MinGW, well just boring to setup 8=). After that came making sure that there is a full Java development kit and Ant available. PHP, PhpDoc, GDB, and Exuberant CTags followed.

Time for the build and scm tools: Ant, CMake, SVN, Git, and CVS.

Next up a few game development related tools: q3map2, QuArk, Wings3D, and Blender.

Wrapping up with an installation of MPlayer & Mencoder binaries (the Git ones) with codecs. Most of the development-related libraries, I don’t want installed until Visual C++ is installed, so time to get that done now. Rather then bugger with Daemon Tools Lite, I chose to try out ImDisk, something that appears less intrusive on ones computer experience ;-). After mounting the Visual Studio Express editions DVD ISO, it was a fairly quick bombing run to get C:DevFilesVisual Studio setup and running; it’s still ashame that it forcefully crams a few things into %ProgramFiles%, but I reckon that is the price of an automagic installer 8=).

Ok, time to get the rest of the development stuff setup. First off, Debugging Tools for Windows, followed by the DirectX SDK. The Qt SDK & PyQt4 bindings fell into place, GTK was a simple unzip followed by installing the appropriate Py* packages. WxWidgets is a quick installer, but still needs to be compiled later (per compiler); that can wait until I have need of compiling anything against WxWidgets, which is pretty rare.

As much as I love XML and hate XML parsers, LibXML2 / LibXSLT are just to valuable not to have installed. OpenSSL and ZLib are also kind of useful ^_^. Xerces-C++ and SDL will take a while to compile, so I will save those for later.

I would like to take a few minutes break to get some of the backups restored, while Cygwin goes and fetches a couple things (e.g. rsync).

To be continued…

Dancing over the Windows, Day I

Reinstalled Windows NT 5.1.2600 / XP Media Center Edition.

After rebooting, the machine gave a message that it was prepairing windows for start up; it was obviously trying to establish a network connection, assumably in order to phone hone registration data. That didn’t work, so the computer restarted itself and tried again, when that failed, it finally put up, shup up, and let me go through the boring setup screen.

As usual, I set the machine up for a U.S. environment but with GMT time zone and no DST adjustments, this gives me accurate enough GMT/UTC settings :-).

Was forced to create a “Regular user account” which also happened to be created as a passwordless adminisrator account: oh what a wonderful defualt! Named it “appeasement” and moved on. On the first ‘usable’ boot up, I used the double ccntl+alt+del trick to login as the pseudo-hidden Administrator, and get to work on setting up the machine. I created my limited user account, locked it with a password — then locked the forced-admin account with a ~90char password and locked it, generated manually useding my usual algorithim for creating pseduo-random passwords. Then I did like wise to the guest account, setting a random ~150char password. Both appeasement and guest were doubly checked to ensure they were properly locked down. I’ve elected to make use of Adminisrator directly for setting things up, since I’ve always used a separate admin account in the past and really see much value in hiding Adminisrator; however I do admit a temptation to rename it “Bill” as a joke between friends.

I also took the liberty of forcing Windows XP to use the classic login dialog, rather then the XP welcome screen; it’s a shame that it remembers the last used user name though, which kind of defaults the point of not listing user names (which was mentioned in the CPL). My reason for switching to the classic login screen however, is because I find it more convientant for quickly logging into the system, then having to play with the icons on the welcome screen.

Disabled Windows Firewall and installed my wifi adapters drivers, but had no luck in getting a connection to my home network :-(. After a bit of abuse, I killed the poorly written network management utility that came with the driver, along with all the programs and service it created. After that, I was able to get a clean connection to my AP :-). Personally, I think any time a network device driver tries to override the systems network configuration software by default, means either they were assholes or the system has terrible network support. Over the years, I’ve found that Windows does have terrible network support (compared to FOSS unix systems) but configuring network settings, especially wireless: is very painless under XP.

To avoid nagging, I turned off Windows auto update crap, and fired up IE6; hitting update.microsoft.com I jumped through the hoops to download/install Service Pack 3. After the rebooting dance that followed, I then returned to update.microsoft.com in order to update things. That resulting in installing _60_ updates for my computer and another reboot, after that was taken care of, I turned on Windows updates. Guess what it told me after that? There are more updatse for your computer ^_^. It has been nagging me to reboot every couple minutes since then. Two cool comments: nVidia and Creative drivers were listed, speeding up my installation of the latest nVidia drivers xD.

Kicked off cmd, explorer, control, regedit, and mmc (Micro$oft Management Console) so I could start work on making Some changes:

 Set IE8 to a higher security level for Internet use
Set IE8 to reject third party cookies
Prevent Winsucks Explorer from hiding file extensions - come one, seriously?
Automatically search[ing] for network folders and printers turned off in Explorer
*.js? *.reg, *.sh?, *.vb?, *.ws? file associations remapped to Notepad
Error Reporting set to MS/Win crap onnly
Tell Security Center not to whine about FW/AV.
Killed sticky keys & compatriates; made this default for new users
Data Execution Prevention (DEP) on for all programs
Remote Assistence / Remote Desktop / NetMeeting RDS / Remote Desktop Help Session Manager turned off
UPnP & SSDP services disabled
Remote Registry service disabled
Net Logon service disabled
Media Centre services disabled
Aleter service disabled
Computer Browser service disabled - I don't want it
Distributed Link Tracking Client disabled
Help & Support set to manual - FWIW
Network Location Awareness (NLA) set to automatic
Network Provisioning Service disabed
Print Spooler service set to manual - I rarely print stuff
Security Center service disabled
Server service disalbed
Shell Hardware Detection (autoplay) service disabled
TCP/IP NetBIOS Helper service disabled - just piss off lou
changed Windows Time server from MS to NIST
Cleared the "Register this connection's addresses in DNS" thing Disabled LMHOSTS lookup on my wifi connection
Disabled NetBIOS over TCP/IP on my wifi connection
Don't auto-restart after crash
Don't dump core on crash
Disabled hibernation support
Configured Windows to clear the pagefile on shutdown
Set power mangemenet policy to minimal (just kill monitor)
Set the system to use the Metric system by default.
Set the system to use ISO standard date/time format by default.
Turned off the advanced language/text stuff; I don't need to input Hanzi/Cyrillic

At this point, I rebooted the system:

 shutdown -t 2 -r

and logged in with my limited user account. Ahh, the passionate joys of bending computer software to your evil bidding!!! The first thing I did was double check IE8 settings, and go install Google Chrome ;-). The second thing was open a Command Prompt — I never go without having one available.

I could configure Internet Explorer 8 more diliengly for secure operation, but I don’t use the bloody thing, except when programs (like XFire) require embedding IE or when visiting update.micro$oft.com. My life is spread across Chrome, Firefox, lynx, and links; but Chrome is my preferred beast of surfing burden.

From here on in, it was time to get cracking! C:2install was setup for storing downloaded files. After taking a few moments to get Chrome hooked up, my next stop was downloading PuTTY, making it a painless process to gain access to my OpenBSD server down the hall. Namely, the cute girl holding all of my backup data lol. When I took backups of SAL1600 today, I made saved a file named software.list with a table of every thing I need to fetch & install, written as: programtt-turl and sorted in sequence.

Although my PuTTY settings are unreachable without PuTTY, since the exported registry keys for all my sessions are on Vectra, I have sufficant memory to reach her manually.

Oh yeah, now I could finally hit 949thebull.

Because of my insane nack for planning these things better then NASA can launch a space shuttle, it was a rapid file breeze downloading most of the software I need to install, and the last 9 hours have been pretty interesting. All that is left to fetch, is basically Microsoft compiler/ide/runtime stuff and my mouse drivers. Most of tomorrow will likely be spent installing/configuring everything while waiting for the backups to SCP back over. Right now only the most minimal kit is setup and as soon as this virus scan completes, I’m hitting the hay, it’s already after 0830 in the morning….

There is also one more thing that I need to do, start checking more in depth the default access control and system policies. Despite often presenting pure idoicy as a matter of standard operating procedure, Windows NT does have some very nice security features; they’re just hidden so far from the average desktop user, that most will likely never discover them :-/. One of these days, I really need to setup some custom templates in order to speed all this crap up!

To be continued…

Chuckle of the day, 2009-09-24

Because most of the Win32 subsystem operations have been moved to kernel mode drivers, in Windows NT 4 and later CSRSS is mainly responsible for Win32 console windows, GUI shutdown, and threading. It is critical to system operation, therefore terminating this process will result in a Blue Screen of Death.

Wikipedia:Client/Server Runtime Subsystem

_Rolling_On_The_Floor_Laughing_My_Freaking_Hindend_Off_.

Well, I always figured that Microshaft(tm) didn’t share my belief that no user-visible program should be able to take down the Operating System, other wise it wouldn’t be so easy :-D.

1 less job of the week…..

I spent most of the morning scrubbing globs of dog hair off baseboards at work… not fun, but I’ve had much worse tasks over there. The great thing was only having to work half a normal day!

It looks like I might be looking at having Thursday’s off work. The financial situation of todays client, is stiffening up, and as usual with my mothers choice of business: we’re the among the first to be let go. For all the countless times my mother has driven me out of my freaking skull over there, I’m not going to miss having to suffer through that job every cycle, nor am I going to miss spending a few _hours_ of the day just lugging crap up and down staircases!!! Although, I do have to admit it was always good exercise… lol. Consistently Thursday has always been the hell-job, usually the one out of the week, that most closely equates to torture. I’m too used to having to work Thursdays to ever have peace… whatever the future holds, I don’t expect it to become a restful day.

The problem is that it means H.R.P. is going to be digging into me even about her own finances then before; its already started. As far as I am concerned, any attempt to reinterpret_cast<CashCow_t>(Me) from a Slave_t is not valid code… she forfeited that right years ago. Ma is looking at a $100/month loss in her bottom line, and the bottom line is the overruling factor in every thought and action for most people in my family. I’m perhaps the only only one who rejected mercenary behaviour, as a way of life.

Now I need to put up with her jabs about having to pay off a loan, the one she took out to cover my glasses. Somehow I don’t think I will ever hear the end of that one, even though she only had to do it, because she already had to “Borrow” every damn sent I had in order to fix the car, lol. Other wise I would’ve paid for them myself, and it’s not like I was the one who pissed away the rest of the loan money on stock piling stuff.

Combined with everything else that’s going on, it just slams Operation Redeemer and my freedom further back; this damn equation is never going to get solved at this rate. In order to get my license *and* be able to make use of it, I need to solve the petrol problem, the problem to that, is how the bloody hell to solve that one, without her royal pain trying to dig hooks into it. The rest of operation redeemer is also dependent upon solving that in order to proceed with the next factor. Why do I even bother any more? There may as well be a big bulls eye on the back of my head.

I’m nether bank nor animal, but when is it remembered that I’m a person?

Much of the weeks coding has been focused around exploratory coding with OGRE and related libraries. My star fighter game was originally planned to be built around SDL, but if this goes well I might actually use OGRE, and replace GIMP/.png with Blender/meshes for the entities of interest in it lol. Being the thing I am most familiar with, the prototype work is focused around a First Person Shooter type environment for right now.

My current thing to muck around with has been input; I’d rather like to set things up to use runtime choice of OIS/SDL for handling input and OpenAL/SDL for audio; right now I’m using just OIS for the prototype (and no audio).

This type of program is quiet a different beast then I am used to working on, most programs that I write usually can care less about individual keystrokes and mouse movements lol. So I’ve laid out some thought in how to deal with things. I’ve decided settings will be saved in XML format and will employ a key = command style mapping(; whatever is considered normal, I’ve been around quake/unreal games enough that my brain thinks that way about mapping controls lol). Each command will be an instance of a subclass of a more general command class, in charge of figuring out what the heck /should/ happen when the command is given. The games input manager is to register a std::map of key sequence = command object pairings (hard coded for now, since I’ve to busy to muck with an XML parser right now). Whenever input occurs that an interested command object has registered itself for, the command listener has a method called with the details about the input it wanted to know about.

One of my reasons for doing this, is I would rather like to implement a Quake style console for communication with the game; which is a style of program more up my avenue of expertise… lol. And it seems that it would make it easier to use the same interface for both the input manager and the console, in order to dispatch commands.

The thing I have not figured out just yet, is how these command objects will relate to actually getting their work done; but hey, I have got to get some sleep eventually and life sucks anyway; the code ain’t going to go any faster then life is!

Time for me to crash to a pillow, work cometh on swift wings…

A shocking first… even for Windows!

In checking the documentation for some method, I ended up wondering what ‘_StringBase’ is (as I already knew Ogre::string was a std::string). Taking a look at OgrePrerequisites.h I found an interesting define and typedef:

00148     typedef unsigned char uchar;
00149 typedef unsigned short ushort;
00150 typedef unsigned int uint;
00151 typedef unsigned long ulong;
00152
00153 #if OGRE_WCHAR_T_STRINGS
00154 typedef std::wstring _StringBase;
00155 #else
00156 typedef std::string _StringBase;
00157 #endif
00158
00159 typedef _StringBase String;

Since my project is set to use the unicode character set, it would be more convenient if Ogre::String objects were basic_string instead of basic_string at heart. Because Ogre is being used, I have a Source/Ogre folder so I can compile whatever I want without effecting “my base set” and SDK files else wheres; then just move the libraries over to my Buildtarget area afterwards.

Generally MSVC++ is a pretty fricken fast C++ compiler on Windows compared to MinGW, but Ogre is not a midgit. I setup a batch build for release/debug dll/static of all the required libraries and plugins in VCExpress, then I launched SWAT 4. The game takes a little while to startup so I went about my usual stuff; when I returned I found that Windows XP had crashed!

A blue screen of death complaining about a page fault in a non paged area, and noting an nv4_disp.dll (nvidia) file.

Sometime when I can afford the downtime, I’ll likely conduct tests of the machines memory (…), graphics card, and do a reformat of Windows XP. Before any of it, I will also likely compile a custom FreeBSD kernel on the machine as a pre-test of her integrity.

I have never, ever, under any circumstances had a system crash while compiling code., no matter what I throw at it (although I admit, 90% of the time I compile code on a FreeBSD box lol). Run out of disk space yes, shout barely intelligible linkage errors yes, muckle buckle about crappy dependencies yes… but never, has any of these *****s crashed during a compile! So this is starting to worry me a bit… oi, it’s always more trouble when a computer has been both obsolete and off warrentee for a few years.

Dreams of haunted Hexadecimals

I dreamt there was two of us exloring a large house, of the dark and scary kind, like a brother / sister pair; much younger. The house was rather dark but vaguely reminds me of a real one somewhere; perhaps a strange composite of several places I’ve been. At one point I caught a roach, and she ordered me to put it out side, so I opened the door and let it scurry away – never mind that it was probably on the 2nd floor, but oh well lol. I noted that the clouds were rolling away into the distance, looked like a storm would be done passing by soon. We again returned to the search of the house, the girl being drawn to one of the doors and wanting us to split up; let’s just say, even without any lucidity, I’ve seen to many horror films over the years to fall for that ^_^. So, we headed in, it looked somewhat like a childs room, but not quite the nursery feeling that came to mind; for some reason it makes me think of an old movie about a haunted house, but I can’t remember the name of it. There was a strange picture and the girl appeared to be memorized with this room :/.

My “Spider sense” if you wish to call it so, started busing – ducking my head out the door, I saw Hexadecimal creeping about downstairs, and urged us to flee. No luck, the girl was to hypnotized by the room, another look out the door, showed Hex was creeping up the stair case; I flung open an inner door and rushed into a side room, calling for her to follow. No such luck, so I slammed it behind myself and bugged out FAST, catching sight of Hexadecimal going into the room… In a last ditch (insane?) effort, I shouted until I got Hexes attention, then flipped myself over the stairs railing; making a set of “Drops” until reaching the ground floor. Ok, guess I’ve played to many Tomb Raider games in my life on that account lol. On hanging from the last railing, I excerted some kind of influnce, taking control of the house and demanding that all return to normal; resulting in Hex being deleted lol.

The next thing I can remember, is the two of us looking around again, and going through a hallway on the ground floor, with large windows overlooking the grounds, but it was dark as night out; where as before it had merely been a stormy evening. Someone warned us about our parents being due home soon, and I suddenly got a notion of what happens to movie Vampires when the sun comes up! In further exploring we found a wall that ‘rolled up’, revealing an old man with a work shop. I remember the visuals more then how to describe it, but it involved Python, dots, and a stuffed rabit. The last thing I remember, is chasing a leaping frog around, trying to catch it with a shoe box and get it into the bug catch. When suddenly it became a giant roach, like one of those rain forest critters the size of your hand. When it got lose and tried crawling over my foot, I woke up around 1015Q with my leg kicking at the covers! I haven’t had a wake-up like that in a looong time. Maybe it is a good thing that in the morning, Willow switches from my bed, to the couch in the living room.

My dreams are usually non sense, even at their finest moments.

So far, no luck in trying to sleep, even have tried burning more energy then normal, alas it appears to be hopeless. On the upside, tonight I’ve managed to overhaul my shell profile.

I spend most of my time behind a zsh, but also have regular contact with bash and various ksh; generally I avoid csh/tcsh on the grounds of muscle memory [sic]. The various Bourne style shells are a lot a like, but also a lot of differences once you grow past the /bin/sh of 30 years ago. I don’t care much for maintaining a profile/rc file for each shell I use, so approximately last year: I just wrote one central ~/.Terry_shrc file. The intention was for that file to be able to handle any OS/sh pair I’m likely to bump into, keeping to a portable subset of the scripting language & general unix. It only makes dialectual assumptions that functions (name() { list }) and aliases (alias name=’repl’) are supported; lesser portable constructs such as the $() and $(()) notations are totally ignored. My profile is so portable, that the bloody thing has even been easily adapted to Interix/SFU and Cygwin environments. The more OSes I encounter, the more portable the thing tends to get… lol. SFU/Cygwin basically required nothing, I just extended the platform detection stuff for the sake of creating workable aliases.

From the get go, the various shell specific rc/profile files were set to source my central profile, which in term was set to source a ~/.site_shrc file for site local changes; which of course is a symlink to ~/.site_shrc.hostname ;). Tonight I’ve extended it to source a .sh_funcs and .sh_funcs.osname for additional stuffs, as well some real improvements on how it goes about doing its magic.

Occasional SAS related stuffs, fiddling with my profile, and hashing out the various rs-* scripts for my rsync system aide, it’s been about 2 weeks since I’ve done any coding, and probably two or three months since I’ve done any hard core coding :-/. I’m always happier when I’m coding more….

Relax or ignore….

The desktop is still powered on, left her downloading the ISO image for later; right now I’m in front of the laptop. My status message on pidgin, is set to indicate that anything not related to relaxing, is gonna get >/dev/null‘d!
]

I plan to take the rest of the afternoon off to myself, if I can’t get a decent nights sleep, I may as well get a decent day off work, lol. Let’s see, what’s the plan…. Hmm, I need to get a few things typeset, tend to odds and ends—like catching up with a razor blade and a hot shower. Dixie is powered on, so that I can leave her unattended with the music streaming, while I get stuff done. There isn’t much on TV, but that is fairly normal 8=).

The dogs have been chasing me down, they’re angry that they can’t go out for a walk because of the rain :'(. In all fairness, I could use a walk myself; and the rain would help. The only problem is the idea of a 6 kg dog dragging a 73kg man through the mud >_>. Hopefully the rainy weather will subside a bit, so they can get their walks in for this weekend, and the internet connection will stay stable again 🙂