Been spending time studying things like Plan 9 and understanding the strengths of its design on some issues such as namespaces and thinking about how best to do it in Linux. Al Viro did a private namespaces in Linux hooking into the "clone" system call with additional flags. On FreeBSD this could be done in rfork() and on Mac OS X we don't have either of those so we'd have to find an appropriate mach_task setting or implement rfork to do something similar.
Private namespaces are very cool and can do away with such things as symbolic links and jails/chroots if implemented properly. DragonFlyBSD has an implementation of something called "variant symlinks" in which a special environemnt variable can complete a portion of a path for a symbolic link. /usr/lib/libqt.VAR.so could point to many different versions of qt based on an environment variable. Pretty neat stuff.
Not sure how far I'll get trying to implement stuff like that in xnu [darwin/Mac OS X kernel] but it's just for fun right now anyway.
I'm going to repartition my Firewire drive and get a bootable Panther installation on there for playing around.
Also documenting xar and trying to help it grow into a suitable archive format for a packaging system.
Still learning Scheme/Haskell/Lisp and doing the work stuff.
Moved from Mississippi to the Seatlle WA area back in June too. Lots of life changes... all good IMO.
26 May 2004 (updated 26 May 2004 at 06:20 UTC) »
For the hell of it I decided to write that "content_index" calculator in scsh.
With a lot of help from Riastradh on #scsh I've now got the following:
(let ((read-ls-output (field-reader (infix-splitter (rx (+ " ")) -8))))
(format #t "~A kilobytes"
(/
(fold + 0
(map string->number
(run/strings
(| (find "." -name "content_index" -print0)
(xargs "-0" ls -l)
(begin
(read-line)
(awk
(read-ls-output)
(record fields) ()
(#t (format #t "~A~%" (list-ref fields 4))))))))) 1024))(newline))
Which works but is incredibly ugly.
It performs the find as you would expect. Then I use the scsh "awk"-like functionality to filter out the 4th field [size]. run/strings builds a list of strings which I convert to numbers using map with string->number.
To sum the items I call fold with + and 0 [is the identity of addition]. I divide it by 1024 and use the result in a format statement [works like printf for scheme]. The let statement binds me an expression holding the result of field-reader which produces a function. The -8 means that I expect at least 8 records and the rest are seen as the final record. This is for
ls -lwhen you have files/directories with spaces.
Nasty eh?
There are better ways...
And here it is:
(begin (format #t "~A kilobytes" (/ (fold + 0 (map file-info:size (map file-info (run/strings (find "." -name "content_index"))))) 1024)) (newline))
Again... thanks fo Riastradh for teaching me about the REPL.
L8er...
http://ranchero.com/bigcat/
I was able to use this Finder plugin thingy to write a bash script that allows the tarring of many directories from finder with a few clicks.
here is the script:
#!/bin/sh# Tar directories.
while [ "$*" != "" ] do if [ -d "$1" ] then echo "tar cvfz $1.tgz -C `dirname $1` `basename $1`" tar cvfz $1.tgz -C `dirname $1` `basename $1` fi shift done
chmod u+x and stick it in ~/Library/Application\ Support/Big\ Cat\ Scripts/Files. Now select a bunch of directories and ctrl-click [right click] and find the scripts context menu and select whatever you named the above script.
It will echo what it's doing to the console log. If you don't want this behavior remove the echo line.
Saves me a bunch of time...
Dave
Other than that my work-work has picked up more again. This is good of course. I hate being idle.
8 Mar 2004 (updated 26 May 2004 at 06:23 UTC) »
You may or may not notice that content_index files get very large in your ~/Library/Mail folder.
To find them do "find . -name "content_index" -print0 | xargs -0 ls -l
If you have many mailboxes and accounts this can get pretty big... I checked mine today and it was 1456KB.
I used this one liner script to calculate:
echo `find . -name "content_index" -print0 | xargs -0 ls -l | awk 'END { for (i = 1; i < NR; ++i) print "+"; print "1024/p"} {print $5}' | dc` kilobytes
It's using awk to pipe commands to dc... reverse polish notation rules.
Still trying to keep my hands dirty in OpenDarwin related stuff. Right now my focus is libFoundation and occasionally 7WX! [http://www.7wx.org]
Also chillin out on orkut these days... It's oh so trendy... please get a friend to sign you up so I can be connected to more of the hundreds of thousands of folks out there.
Also learning Haskell and continuing to love emacs...
-- launch iTunes and start music slowly increasing volume set volume 5 try tell application "iTunes" activate play playlist "easy" set i to 10 repeat 100 times set the sound volume to i set i to i + 1 delay 0.25 end repeat end tell on error beep end tryThanks again Jason
4 Jul 2003 (updated 4 Jul 2003 at 03:04 UTC) »
NDA's kick ass :)
I sent Soeren Schmidt some hardware for an SiI 3112 controller chip
and he has supported this nice SATA device in FreeBSD... its coming
to you for FreeBSD 5.2
Check here!!
Its good to know that, though I haven't had enough time to code stuff myself lately for my favorite open sourced projects, that I can still make a bit of a difference somehow.
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!