Haven’t been keeping pace with my Journal for the last couple days, let’s just say I don’t want to talk about the Holidays.

Dixie spent about 2 days solid compiling ports, nearly 240 of mine and well over 800 when dependencies are included. That’s finally finished, so my beloved laptop is again ready for getting stuff done :-D.

Here’s the list I fed through updater.sh:

devel/pkg-config
devel/gmake
devel/autoconf-wrapper
devel/automake-wrapper
lang/perl5.10
devel/p5-ExtUtils-Depends
devel/p5-ExtUtils-PkgConfig
lang/python26
devel/py-setuptools
lang/python31
lang/ruby18
lang/guile
java/javavmwrapper
graphics/png
graphics/ruby-libpng
graphics/jpeg
graphics/tiff
devel/nasm
devel/php5
devel/glib20
devel/glibmm
devel/gamin
devel/gio-fam-backend
devel/p5-Glib2
devel/py-gamin
devel/py-gobject
devel/ruby-glib2
converters/libiconv
converters/ruby-iconv
devel/gettext
devel/p5-Locale-gettext
devel/ruby-gettext
devel/p5-ReadLine-Gnu
devel/p5-ReadLine-Perl
devel/p5-Storable
devel/p5-Term-ReadLine-Zoid
devel/p5-Term_ReadKey
devel/pcre
devel/pcre++
devel/php5-pcre
security/gnupg
secruity/ca_root_nss
security/gnutls
security/py-gnutls
security/nss
security/openssl
security/php5-openssl
security/py-openssl
www/libwww
ftp/curl
ftp/curlpp
www/p5-WWW-Curl
ftp/py-curl
ftp/wget
mail/php5-imap
net/php5-sockets
net/librsync
archivers/p7zip
archivers/unrar
archivers/unzip
archivers/zip
devel/bison
devel/bisoncpp
ports-mgr/portmaster
ports-mgr/portupgrade
ports-mgr/psearch
graphics/dri
graphics/libdrm
x11/xbitmaps
x11-themes/xcursor-themes
x11-fonts/xorg-fonts
x11/xorg-apps
x11/xorg-libraries
x11/xorg-server
x11/xorg-drivers
x11/xorg-docs
x11/xdm
x11/rxvt-unicode
devel/dbus
devel/dbus-glib
misc/hicolor-icon-theme
misc/shared-mime-info
x11-fonts/terminus-font
x11-fonts/webfonts
textproc/expat2
textproc/libxml++26
textproc/libxml2
textproc/libxslt
textproc/p5-XML-LibXML
textproc/p5-XML-Parser
textproc/py-expat
textproc/py-libxml2
textproc/ruby-libxml
devel/libIDL
devel/ORBit2
devel/boost-all
accessiblity/py-papi
audio/freealut
databases/sqlite3
databases/py-sqlite3
databases/ruby-sqlite
databases/p5-DBD-SQLite
databases/p5-DBI
databases/php5-mysql
databases/php5-sqlite
graphics/GraphicsMagick
graphics/ImageMagic
graphics/freeimage
lang/clisp
math/py-numeric
multimedia/libdvdcss
multimedia/libdvdnav
multimedia/libdvdplay
multimedia/libdvdread
textproc/docbook
textproc/docbook-tdg
textproc/docbook-xsl
textproc/doocbook-xsd
textproc/py-docutils
textproc/aspell
multimedia/win32-codecs
emulators/linux_base-f10
x11-toolkits/py-tkinter
devel/libglade2
devel/libglademm24
x11-toolkits/p5-Glade2
devel/ruby-libglade2
devel/libnotify
devel/libnotifymm
graphics/cairo
graphics/cairomm
graphics/p5-Cairo
graphics/py-cairo
graphics/ruby-cairo
graphics/ruby-gdk_pixbuf2
x11-toolkits/pango
x11-toolkits/pangomm
x11-toolkits/ruby-pango
graphics/cegui
accessibility/atk
accessiblity/ruby-atk
x11-toolkits/gtk20
x11-toolkits/gtkmm24
x11-toolkits/p5-Gtk2
x11-toolkits/py-gtk2
x11-toolkits/ruby-gtk2
x11-toolkits/qt33
devel/qt4
x11-toolkits/qscintilla
devel/py-qt4-qscintilla2
devel/qscintilla2
multimedia/mencoder
multimedia/mplayer
www/opera
www/libxul
www/firefox35
www/mplayerplug-in
www/linux-f10-flashplugin10
www/nspluginwrapper
x11-toolkits/vte
archivers/php5-bz2
archivers/php5-zlib
devel/php5-spl
devel/py-xdg
devel/xdg-user-dirs
graphics/driconf
sysutils/fusefs-kmod
sysutils/fusefs-sshfs
audio/cdparanoia
deskutils/notification-daemon
devel/cmake
devel/cscope
devel/ctags
devel/doxygen
devel/bazaar-ng
devel/git
devel/mercurial
devel/subversion
lang/pcc
devel/qtcreator
devel/xdg-utils
devel/desktop-file-utils
editors/abiword
editors/emacs
editors/mg
emulators/wine
graphics/evince
graphics/dia
graphics/geeqie
grahpics/gimp
graphics/hsetroot
graphics/inkscape
mail/hairloom-mailx
math/gnumeric
net-im/pidgin
net-im/pidgin-libnotify
net-im/pidgin-otr
net/rdesktop
net/rsync
shells/bash
shells/ksh93
shells/pdksh
shells/v7sh
shells/zsh
sysutils/bsdstats
sysutils/cdrdao
sysutils/cdrtools
sysutils/dvd+rw-tools
sysutils/e2fsprogs
textproc/antiword
textproc/webcpp
www/arora
x11-wm/fvwm2-devel
x11-wm/transset-df
x11-wm/xcompmgr
x11-wm/xfce4
x11/xrefresh
games/chromium-bsu
games/doom-data
games/doom-freedoom
games/doom-hr
games/openarena
games/prboom
games/supertux
games/wesnoth
games/xgalaga
accessibility/atk-reference
x11/libgnome-reference
x11-toolkits/pango-reference
devel/ORBit2-reference
devel/glib20-reference
devel/glibmm-reference
devel/libglade2-reference
graphics/cairo-reference
textproc/libxml2-reference
textproc/libxslt-reference
x11-toolkits/gtk20-reference
x11-toolkits/vte-reference

FreeBSD 8.0 day 2.0: upgrading ports

Since I have accumulated a lot of stuff since 7.0 was released, I have elected to do a clean slate — nuke it all and rebuild. The perfect chance to get rid of any stale leaves hehe.

# cd /var/db/pkg && pkg_delete -f *

As Mal.exe reminded me, this is equalivulent to pkg_delete -a; I forgot about that hahahaha!!!

while all the ports are being put under the hbomb, I set to work in an already running session of vim (since it depends on plenty of ports with my builds!) and wrote a list.

Every time I update my laptops ports, I use a customised “updater.sh” script, which does exactly what I want. The portmaster and portupgrade systems are only used when needed for an expedient coverage of issues marked /usr/ports/UPDATING. It was just smoother to write my own small script around the ports tree, then live with the qirks in portmaster and portupgrade: mine does just what I want and without the hub bub.

My updater.sh is programmed to parse a file, expecting input lines in the format of category/portname, which tell it what ports need upgrading. In my experience, it works better then portmaster and without that need for constantly asking “Are you still running?” that portupgrade has…

updater.sh is in the middle of fetching ~230 distfiles, and setting any stray build options. So that everything will be ready op for compiling all this junk. At least I can go play SWAT while things compile, but need all the stuff fetched and recursively configured before I can have fun hehe.

Will post the input list later.

The first FreeBSD upgrade to ever piss me off

I built world, two kernels: (my custom) VIPER, and GENERIC. I took about 2 hours using make -j6 on my lowly Sempron.

Fetched updates to the ports tree via portsnap while waiting for the install kernel to finish; I noticed that the boot into single user mode for mergemaster’ing was blazingly fast. Everything went well until the first multi user boot.

The blasted wireless card stopped working. Changing in the ath manual and the release notes info about Atheros support made me expect there might be problems. Plugged in a spare (broken) Ethernet cable and did a search on the FreeBSD forums where a thread mentioned cloning the wireless interface to a generic wlan0…. it worked.

ifconfig wlan0 create wlandev ath0

and volia!

So, just how did this creep up on me, and why wasn’t it in the release notes… (that anyone I know seems to have noticed)???

The manual for rc.conf explains this under network_interface:

If a wlans_ variable is set, an wlan(4) interface
will be created for each item in the list with the wlandev
argument set to interface. Further wlan cloning arguments
may be passed to the ifconfig(8) create command by setting
the create_args_ variable. One or more wlan(4)
devices must be created for each wireless devices as of
FreeBSD 8.0. Debugging flags for wlan(4) devices as set by
wlandebug(8) may be specified with an wlandebug_
variable. The contents of this variable will be passed
directly to wlandebug(8).

which makes the fix in rc.conf, adding wlans_interfacename=”wlan0″ into the mixture:

wlans_ath0="wlan0"      
ifconfig_wlan="self censored :-P"

In order to find some backstory in /usr/src/UPDATING, I had to GREP for it:

20080420:
The 802.11 wireless support was redone to enable multi-bss
operation on devices that are capable. The underlying device
is no longer used directly but instead wlanX devices are
cloned with ifconfig. This requires changes to rc.conf files.
For example, change:
ifconfig_ath0=”WPA DHCP”
to
wlans_ath0=wlan0
ifconfig_wlan0=”WPA DHCP”
see rc.conf(5) for more details. In addition, mergemaster of
/etc/rc.d is highly recommended. Simultaneous update of userland
and kernel wouldn’t hurt either.

As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta
modules were merged into the base wlan module. All references
to these modules (e.g. in kernel config files) must be removed.

If changing from FreeBSDs natural to wlan for that makes one damn lick of sense what so ever (eth0 lovers aside), I will leave it to someone who knows to comment…. because I don’t know, and I don’t really give a fart.

The release notes in provides two helpful sentences: wlan pseudo devices are now used and check out the ifconfig manual.

Other then wasting an two hours of my time over a change that probably isn’t even the bloody handbook yet, everything went smoothly.

Wow, either Internet Malware is getting worse then ever or Firefox 3 just sucks worse then ever >_>. Javascript just took over Firefox, tried to convince me to install an Antivirus program — loaded “Explorer”‘s my computer page (in Firefox), obviouly faked scanning files and finding a few thousand bits of malware, before trying to redirect me back to their “Antivirus program” — and setting a Windows XP like pop up right in the middle of the Explorer-replicating page, that’s so obviously not a pop up window but a web hack. The irony of this? I’m running FreeBSD, and the most damage the account being used can do is write data to /dev/null (a black hole file). Are Windows lusers really stupid enough to fall for that trick? Wait, don’t answer that question.

Operation Triage: Day 1.1 at the RTM

Last night I setup an account on rtm for evaluating it’s usefulness to my todo list problemo. It provides all the features that the gmail/gcal/ig integrated tasks buddy from Google is lacking, and integrates perfectly into their workflows—awesome job RTM!

Remember The Milk (rtm) is a web based application and supporting service, for managing tasks; you could probably keep your grocery list on this thing too, if you had a decent phone. It supports the obvious stuff, due dates, time estimates, repeaters (oy), and combines it with attributes more often found in social systems, like tagging and sharing. The amount of ways to work with rtm alone make it easier to mate with ones workflow on a level, that most web apps on the net could only dream about reaching. Without a doubt, Remember The Milk has been designed to be the supreme queen in web usability, and provides such a nifty set of keyboard shortcuts that give Geeks like me an extra edge on top of it. I almost think my mother could use this website… it’s that easy lol. The power-user features also make it well worth learning how to utilise every ounce out of the system. So far the only negative thing I can say about rtm, is that adding a due date on the rtm website doesn’t magically add it as an event in my gcal, but alas no one is flawless :-P.

I’ve imported all my todo list, after filtering the 5 month out of date file through my brain log along the way, plus put in everything everything on the immediate plate; took me about an hour. Everything of major importance has been marked accordingly with reminders scheduled to be sent to one of my Instant Messengering accounts. Three things that attracted me to rtm: the ability for using tags (as fellow delicious & gnolia fans will enjoy) in addition to regular task lists; reminders by most forms of contact like email, sms, and virtually every IM method short of an automated phone call; not to mention integration with Google Mail & Calendar.

Currently I’ve created Cleaning, Contact, Projects, Reading, SAS, and Writing lists to go along side the standard issue Inbox, Personal, Study, Work, and Sent lists. Tags are being used so I can quickly study what’s on the list according to subject matter; this way when any of the various hats needs a quick servicing within a group of tasks, I can dip into those open loops and screen out the others. Smart lists also make it possible to quickly study tasks by meta-criteria; my first smart list is one to show me all open tasks, that have a priority marker set.

As I told a friend earlier, I essentially don’t have to do nothin’ but stay white and die, the huge ass list of todo’s is mostly projects I’m involved with, and usually get clobbered by the fact that I get interrupted 200+++ times a day by the surviving parental unit, until they fade off the days agenda. Fortunately most of my tasks are in the format of, to do before hell freezes over—but most I would like to get done within the much shorter term! That’s where Operation Triage comes into play.

Everything is being trimmed back in accordance with what I have time and energy to deal with at this point in life, and to get as much of the stuff that I want gotten done organised so it doesn’t “Fall off” the water fall. Continently the only urgent loops being to get my learners permit, tend to SAS business, and my most important projects. Other tasks are growing closer to completion, and RTM will help me keep them in line with reality.

For the most part, these tasks in the rtm system amount to crap I need to read (lower priorities :'() and things that I need to write: which is easily sorted by priority. The hard part is Just Getting It Done without having to threaten anyone along the way with bodily harm :-/. Actually that would be a productivity boost I’m sure, but it is most strongly against my gentle nature 8=). I need to do further study on how best to collate the development tasks, since they don’t quite fit into a box, so much as a creative juice meets free time equation.

To do list, I shall conquer you!

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 ^_^_^_^_^.