Well that’s another day blown

Slept in, since there was no need to get up before noon, I got out of bed around 1100—having originally woken up around 0800. I’ve yet to solve the sleep problem, but at least I am getting up earlier with much greater consistency, the down side is I don’t think I can sleep much longer then four or five hours at a time without waking up… beats the alternatives I guess.

I toyed around with my to do list program for the morning, as a way of passing time until it was time to leave; ma had to see a doctor to sort out some of the post-hospital stuff. So I spent most of my day sitting in a health clinics lobby, in the next county lol. After three or so hours of that was hiking around the supermarket while her perscriptions were being filled—so much for coding today.

Experiments in an SQLite3 based tasks manager are postponed, in favour of using Googles `Tasks` system that is mated to gmail and gcal. Until further notice, it looks like `gtasks` is m new todo management system; I’ll also take a look at RTM later tonight, and try to evaluate if it’s worth while.

While I don’t particularly care for it, I think it’s time to re-evaluate iGoogle as a way of integrating a few more things into my work flow.

Personally, I don’t care much for  being reliant on any company for my resource needs, I do however like good web applications, and Google Mail is exceptional! Docs, Cal, Groups, and Chat also makes things much easier. In point of fact, my preferred contact method is XMPP—which is the backend provider for Google Talk. Life would be so much cooler if the various major instant messenger systems (AIM, MSN, Yahoo!, ICQ) could integrate half as nicely as XMPP based solutions do.

I don’t need to use an Live mail account to email my friends, why should I need a Live ID to chat with them? Maybe Wave might change that someday.

What I would desire in a todo/task management system

Obviously it would need to offer a CRUD interface to some form of persistent storage, namely one that I can easily access anywhere; that makes the most idea solution a file in my home directory, or something accessible over the network.

It would have to support some notion of “Tagging“, every entry should be able to be tagged under multiple names and queried accordingly.

A list view comparable to the collapsible “Groups” in most instant messengering softwares buddy list, would be a perfect way to view tags, particular when combined with the ability to search todo’s by tag and other criteria: like date, title, and all other data.

While software oriented towards managing the software life cycle might be useful, I need something of a more general nature. The only real short coming of Google Tasks is that while it integrates into Mail and Calendar quite nicely, it unfortunately has no real concept of tagging. It’s more of a gimmick then a useful feature.

In all probability I could munge together some AWK scripts and an SQLite database to get exactly what I want, hahahahahahah! And maybe someday write a graphical front end. Hmm…

A look at a *good* PBI install script from 2007.

In looking around my ~/Projects folder, I found an old PBI install script I wrote a couple years back. When I was working on a TexLive PBI (only me and Oko were interested), I wrote a very robust script. Most PBI that use install scripts should be nearly like this but normally, they only handle the GUI case and screw you if you use text mode or have special need.

This script was written to the published API at the time, which basically amounted to $INSTALLMODE being set to tell you if you were in a GUI or not; a variable to tell you what name your PBI would have inside /Programs. This was an improvement over using “$1” everywhere, as was required in previous versions of the PBI API.

Here is my old script:

#!/bin/sh

# the year of this release, e.g. 2007, 2008 e.t.c. -> This should be equal to
# the Program Version we set in PBC.
YEAR="2007"

# the size of all our installed files in $PBI_BASE/texlive/$YEAR/
TEXSIZE="1.1GB" # as a string

# compat check.. should be unecessary but I don't trust PC-BSD. Since users can
# now override our install location and documentation does not talk to us about
# coping with it not being /Programs/$PROGDIR/, abort install rather then risk
# performing undefined/undocumented behavior should /Programs/$PROGDIR be
# overrided.

if [ -d "/usr/Programs" ]; then
PBI_BASE="/usr/Programs"
elif [ -d "/Programs" ]; then
PBI_BASE="/Programs"
elif [ -d "/usr/local/MyPrograms" ]; then
PBI_BASE="/usr/local/MyPrograms"
else
if [ $INSTALLMODE = "GUI" ]; then
kdialog --sorry "Can't find PBI Installation Directory... aborting"
else
echo "Can't find PBI Installation Directory... aborting"
fi
exit 255
fi

# set the path
MY_TEX_PATH="$PBI_BASE/texlive/$YEAR/bin/i386-freebsd/"


# XXX check if we are already installed or improperly installed

if [ -d "$PBI_BASE/texlive/$YEAR" ]; then
if [ $INSTALLMODE = "GUI" ]; then
kdialog --sorry "$PROGDIR appears to be already installed, aborting"
else
echo "$PROGDIR appears to be already installed, aborting"
fi
exit 255
fi

# give the user a chance to abort the installation
if [ $INSTALLMODE = "GUI" ]; then
kdialog --warningyesno
"The installation requires approximatly $TEXSIZE of disk space Continue?"
if [ $? -gt 0 ]; then
exit 1
fi
else
echo "The installation requires approximatly $TEXSIZE of disk space"
echo -n "Continue?[yes/no]"; read GO
echo $GO | grep -i "no"
if [ $? = 0 ]; then
exit 1
fi
fi


# Do installation
echo 'MSG: Setting up TeX Live directory'
mkdir -p $PBI_BASE/texlive/$YEAR
ln -s $PBI_BASE/texlive/$YEAR $PBI_BASE/$PROGDIR/TEXLIVE_$YEAR

echo "MSG: Installing TeX Live files..."

# extract our texlive installation
cd /$PBI_BASE/texlive/$YEAR/ &&
lzma d texlive${YEAR}.tar.lzma -so | tar -xpf -

# prompt for a default paper size
if [ $INSTALLMODE = "GUI" ]; then
PAPER=`kdialog --combobox "Select default paper size"
"A4 Paper" "US Letter"`
else
echo -n "default paper size [A4 Paper, US Letter]: "; read PAPER
fi

echo $PAPER | grep -i "Letter"
if [ $? -eq 0 ]; then
texconfig-sys paper letter
fi

echo $PAPER | grep -i "A4"
if [ $? -eq 0 ]; then
texconfig-sys paper a4
fi


echo "MSG: Updating TeX filename databases"
texconfig-sys rehash


if [ $INSTALLMODE = "GUI" ]; then
kdialog --yesno
"Congratulations! Installation complete -- test installation?"
if [ $? = 0 ];then
cd /tmp/
$MY_TEX_PATH/pdflatex sample2e.tex && kpdf /tmp/sample2e.pdf
if [ $? -gt 0 ]; then
kdialog --error
"The test may have failed to load, please report any errors: $?"
fi
fi
echo "MSG: Displaying readme file"
kwrite $PBI_BASE/$PROGDIR/PBI_README.txt
else
# I don't know a programa off hand to use for console output.
more $PBI_BASE/$PROGDIR/PBI_README.txt
fi

What is wrong with that script? Nothing compared to what is wrong with the PBI script API.

$PROGDIR should expand to /Programs/ProgNameVer instead of ProgNameVer.

The maintainer shouldn’t have to treat GUI and TEXT mode differently – the API should do it. In fact, that was the main impetus for the EPI spec creating platform independence. In an EPI, people would have said ask the user a question. Not have to understand shell script and massive toggles for GUI/TEXT mode install.

I believe PBI now also do similiar idiocy in regards to fonts handling that should be done at a higher level. However, according to the officially published documentation, my old script is still the correct way to go with a PBI.

One of the reasons I gave up on Kris Moores PBI, was the brain damaged design, the other reasons were the total miss management of PBI…

Under the draft spec’s I wrote for EPI, the above script would have become something like this:

# optional EPIL script for EPI

define question dialog with
title = "TextLive EPI"
message = "Please set a default paper size"
default = "A4 Paper"
options = ['A4 Paper', 'US Letter']
launch as paper_size

if paper_size == "A4 Paper" then do
execute "texconfig-sys paper a4"
else
execute "texconfig-sys paper letter

Now I ask you, if you were not a programmer, which one do you understand? Then let me ask you, if you just want to get on with your life, which would you rather write?

Both the PBI sh and EPI EPIL scripts would result in a simple dialog asking you to choose from one of two options. If you know how to use TexLive, the EPIL script would be totally unnecessary because you already know how to change paper sizes. That means you don’t even have to write a script at all in a normal case.

End result? Oh so simpler.

Manually refreshing Windows desktop wall paper

Every now and then, the windows box ends up with “No” wall paper; typically due to issues with certain poorly created Unreal Engine 2 / DirectX games >_>. Earlier today, someone asked me a rather stupid question that brought me to thinking, is rundll32 even documented?

In poking my nose around, i found out that (as expected) Windows XP stores the name of the wall paper as a path to the BMP file in the registry; more specifically a REG_SZ in the form of: HKCU/Control Panel/Desktop/Wallpaper. In theory I could write a program to manipulate that value: then hook it up to my wall paper changer in place of utilities like hsetroot, mauhuahaua! The problemo is that Winsucks only seems to read that value on log in/out. The solution?#—Google. Third party programs can change the wall paper in real time, so obviously there has to be a way of doing it (hey, Windows does…), and As far as I know, most such routines would be tucked away in the shell32 and user32 libraries some where; enter rundll32.

rundll32 user32.dll,UpdatePerUserSystemParameters

problem solved 😉

Dancing over the Windows, Night I / Day III / Day II-C / oh fsck it

I setup RvS in between bites of dinner, luckily most of the procedure is just waiting on files to extract/copy, so I was free to sit and eat xD. I already have a collection of patches in various languages, so it was a simple matter of fishing out the v1.0-1.60 US patch.

Play testing and a quick spin around dxdiag showed that everything was good to go. All that I will need to do is setup my settings again (hoorah for archived ini files 😉 and install maps. I have a CD-ROM here which is so full of map files, that I barely fit them all on it back in the day lol. I’ve also got access to the SAS map packs and such, so shouldn’t be to much hassle.

Next up was setting up SWAT 4 with The Stetchkov Syndicate expansion pack; a quick job. Since I’m aware that SWAT 4 disks may be beyond a simple dd operation to clone, I chose to take ‘steps’ to archiving my copy of SWAT 4—I paid $80 in two installments with much waiting for a still unfinished and already abandoned product, so I have no interest in buying another copy if something happens to my disks! Before running the installer, I did a quick dump of the entire registry; after setting up SWAT4+TSS+Gez, I then took another dump of the registry. In theory, doing a simple diff of those registry dumps should allow me to create an import file, that can be used to recreate them (with needed local adjustments), then mate it with No-CD fixed EXE files, plus a lovely archive of all the latest game files; that means I should be able to backup/restore SWAT 4 at will, without having to dance through installers and patches, muahuahauha! At least, that is the _theory_ but it should work.

I’m sorry I didn’t think to do the same registry trick with RvS lol.

Since the games are poorly designed, there is probably little use in installing the game without administrative prives. Running them under a regular user isn’t to hard, in SWAT 4 all that needs to be editable at run time, is basically INI files, and that is easily adjusted with Access Control Lists. I haven’t tested RvS yet as my normal user, but it should work as well as SWAT does. I backed up the important things, but sadly I forgot to backup my in-progress SWAT 4 map files… so only Chester has a working copy of SAS Killhouse Redux, and I’ve lost all my work on the SAS Dept. of Agriculture :-(. Small loss though, since the former wouldn’t be tooo hard to recreate.

Since Windows XP by default only exposes a useless level of DOS-style permissions, I doubt most users have any concept of access controls or file permissions. I always kick Winsucks into showing my the “Security” tab in a files properties dialog. Although it is occasionally a whacky inconsistent mumbo jumbo to work with Microsofts various tools, Windows XP does actually have a very nice ACL and Policy implementation. Most Free Open-Source Unix like systems (e.g. GNU/Linux, FreeBSD, OpenBSD, etc) have support for Access Control Lists, and I believe the POSIX standards mandate them but don’t quote me. Most systems however, rely on the simple unix permission model; which is basically the most simple ACL system you could invent like 40 years ago lol. Until you get into the Policy related stuff in the MMC, there’s no serious differences. My one complaint is that working with the cacls command in XP, means putting up with DOS invocation style :-/.

I have used Microsoft operating systems since MS-DOS, and have used Windows since cica 2000, when we got our first Pentium PC with Windows 98 pre-installed on it. Since then, there are only 3 things that I have ever found, and actually like about Microsofts premier product: 0.) the start menu is a very nice file-system driven implementation, well the parts that are adjustable anyway (think All Programs); 1.) Windows NT has nice support for ACLs, and 3.) NTFS is a heck of a lot better then FAT12, FAT16, and FAT32 ever were. Beyond that, it all can go suck an egg :-P.

All that is left for me to do, is complete a few minor tweaks, like giving the File open/save dialogs a makeover and organizing files. Oh yeah, I still need to go and install KDE4 so I can get a decent Solitaire program running again ^_^_^_^_^.

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.

A few Thoughts turn to PC-BSD

Considering recent threads in the PC-BSD forums, largely centred around the projects deficiencies I’ve made a decision.

I have the DVD version of PC-BSD 7.1.1 x86 down loading, when it is complete, I’ll load it into a virtual machine for testing. Once that is done, I will conduct a ‘deep’ inspection of the systems current state—including the source code. The aim of it is to analyze the distributions weak spots, noting the areas where it does need improvement. After that is completed, I intend to publish my catalogue of the projects deficiencies along with suggested paths for improvement. It’ll probably be posted here on my LiveJournal, with links shared in the appropriate forums and mailing lists.

Why do I feel like doing this? Well, PC-BSD while it has some good qualities, generally fails (in my honest opinion) because of how it is handled. As I have often said and people can feel free to quote me on it, PC-BSD feels like a project born in Kris Moore’s garage: that never left. And like wise, as I have often expressed, PC-BSD development practices do *NOT* reflect those of a real BSD project.

In my experience getting anything done there, that is also worth doing: has usually been caused by the community screaming the developers ears off… perhaps consistently so. So writing an open letter might poke the project into cleaning up their ship, or at least demonstrate to the rest of us what “Not to do”, lol.