Search Results: "ana"

1 February 2006

David Nusinow: Humility

Erich, I don't think we should be so smug about how great we are when we are clearly failing to meet the needs of a lot of users. Even among linux users, we're hearing very loudly about people moving to other distros, with those moving to Ubuntu currently being the loudest. Remember, we've managed to become very widely thought of as the distro that you derive from but don't actually run. Debian is doing some great things, but we clearly have a lot to improve.

David Nusinow: Modular Server Debs!

I've been relatively quiet lately because I've been plodding along, working on modular packages for Xorg. For those who don't know, the next release of Xorg will actually be two releases of the same code. One release, 6.9, will be based on the old monolithic build system. This system requires me to build every single part of Xorg whenever I want to update any one part. This means that whenever I push out an Xorg fix, no matter which component it's in, you have to download all the other components even if they are 100% identical to the previous version already on your hard drive. We've all lived with this for a long time, and while it's not pleasant, we all seem to get by. The packaging apparatus for this system is mature, stable, and well understood, if complex. That's why I've been able to get the 6.9 release candidate packages out to experimental fairly quickly after they are released.

The other release happening is for 7.0, which is obviously a major version number bump. The actual code you run for 6.9 and 7.0 is 100% identical, but the build system has been totally rewritten around the venerable autotools (you know... configure /make/make install). Each piece has been split out from the others so that you can build any one component without building all the others. This means that if we want to ship a driver update, you don't have to download all of the fonts and other things that weren't touched. That also means that you won't have to install the drivers for cards you don't own if you don't want them. Furthermore, it lowers the barrier for things like hacking on X significantly.

The problem with the modular tree is that the packages for it are brand new. Ubuntu shipped modularized versions of the libraries, and I've already stolen those, fixed them up for Debian, and built them locally (they're sitting in our svn repo, but running them won't get you anything at this point.) The server and driver packages are brand new, and I've been taking the packages from Ubuntu's development branch and working on them for Debian. Today was a milestone day because in addition to the libs, with Daniel Stone's constant help I've finally managed to build packages for the modular X server itself. Now I can't run it yet (I haven't packaged the drivers and a few other bits) but the fact that I managed to produce what will be a functional server package is a huge step, and constitutes the cornerstone of the whole thing.

Once we can create packages that can actually run on at least the machines of the XSF, we can start looking at getting the packages in to the archive. Since these aren't well tested like the monolithic packages, we'll have to do a lot of polishing to get them to the same level of quality. My goal is to get that done for etch though, and I think we can do it. Exciting things are happening, and I'm hoping that the modular packages will encourage more people to hack on X, leading to even more exciting things. Build that momentum.

David Nusinow: Halfway Point

Long time no blog I guess. Things haven't been that exciting on the Debian front for me. Many of you may have noticed the Xorg -8 packages just hit unstable, complete with minor annoying debconf bug (fixed in svn now). That work was almost all packaging bugs, most of which are now taken care of. All those changes apply to the 6.9 packages too, so it's like I'm getting a two for one. This means that the 6.9 packages will be pretty well cleaned up on the Debian side of things when they actually ship. Thanks to Sven Luther, Julien Cristau, and Ari Pollak we can build 6.9 for powerpc, sparc, and amd64 (although there's currently an unrelated bug on amd64 stopping us from building any X packages there). Hopefully we can get the remainder of the arches ready to go so that we can drop 6.9 in to unstable as soon after it's released as possible.

One of the very cool changes that's come about lately is that David Mart nez Moreno has taken up the torch for xterm and produced a package for experimental. xterm never really lived at X.Org, and now we're getting it from the real upstream source. So thanks to David we'll have an up to date xterm ready to go with 6.9. It's sort of a little taste of the modular tree: if you need to get an xterm update for some reason, then you don't have to update all of X in the process.

Terrifyingly, I've reached a point where I can start working on the modular packages the moment I sit down to do Debian work next time. I'm going to repeat what I did with 6.8 and start with the Ubuntu packages and work from there. Now that I know a little more about how the whole thing is laid out I feel a lot more confident in what I'm doing. Last time it was really by the seat of my pants. The scariest thing for me is that I finally have to break down and learn the autotools, which is something I've managed to avoid until now. That should be the biggest hurdle for me in moving the modular packages forward. I have no idea how long it'll take, although history has shown that my time estimates are about 1/3 of the time that it actually takes to do a thing :-) The first third of what I set out to do (get Xorg in to Debian) is finished. The second third will be when 6.9 is in testing. The final third is when the modular packages that I'm happy with land in testing. It may take the entire etch release cycle to run this marathon, but I feel like I've reached the halfway point around now, with 6.9 stabilizing.

I've started talking with people about where to go after all that. Once the Debian packaging work is done, I want to start working on the Xorg codebase itself, preferrably on making the xserver a little nicer on the user. I have a project or two in mind, but I don't want to start on them until Debian's X packages are well in hand for the forseeable future.

David Nusinow: Xorg Progress

I didn't make it in time for dinstall today, but I uploaded xorg-6.8.2.dfsg.1-6 to unstable a few minutes ago. Most of the fixes aren't that exciting to the average user, but we did clear out a few developer-related bugs that are holding Xorg out of testing. The big thing is that David Mart nez Moreno kicked some serious ass and not only fixed a lot of those RC bugs, but he even backported the savage driver from CVS HEAD! So savage users, you've now got the latest stuff around.

Meanwhile I've been whittling away at 6.9rc0. I've finally managed to produce packages and run the thing, so the majority of it is good to go. Once I got the basic build issues worked out, Michel D nzer suggested that we switch the way our xserver-xorg-dbg package was built. In the past, the code that loads the individual drivers and other modules in to the X server was a source of serious problems, and because of that the debugging server was built entirely staticly linked, with every driver and module built in to the thing no matter what video card you had. For 6.9 the default loader has been switched to a much better one, so Michel suggested we make a more normal -dbg package. This sounded like a good idea to me, so I spent a few days working that out, and it seems to be finished. There are 100 files that I was able to remove from the debian packaging dir (a lot less to keep track of!) and the -dbg packages for all the libraries in addition to the xserver have shrunk considerably. As such, these packages should take up less space on your hard drive, should you ever need to install them.

With that out of the way, we have a few more things before I can actually upload 6.9rc0 to experimental. Upstream has split out xterm and we'll be doing the same. xterm has lived at Thomas Dickey's website for a long time now, and we're finally going to start using that as our primary upstream for the program. David Mart nez Moreno has volunteered to take this on, and he already has the work done, it's just waiting for an svn repo creation. I also need to update both the render and xrender packages in experimental, since Xorg requires both to build. Once these things are done, 6.9rc0 will hit experimental, hopefully beating rc1 out of the gate. From there, some basic tuning on 6.9 will be ongoing while we work on getting the 7.0 packages moving. Things are happening, and while they might not be as fast as I'd hoped, I'm pretty happy with how they're progressing.

David Nusinow: Oh GNOES! SCM DISCUSSIONZ0R!!!!!!

After seeing everyone shill for their favorite scm lately, with most of the predictable ones getting the attention, I thought I'd throw my choice out there, just to see it represented.

I primarily use svn with my work on X in Debian, and it's a wonderful system. Fortunately though, I don't have to maintain the repos, and when something goes wrong I can cry to our beloved DPL to get his admin on, and he fixes things up. This works out fairly well for me as a basic user, but I don't want to be dealing with these sorts of hassles for smaller projects. The distributed scm thing appealed to me in this sense, so when arch started to become a serious buzzword in the Debian crowd I had a look.

Well, more than a look. I fought for over a month with tla and baz and found that they were both so unuseable and poorly documented that I couldn't do more than scream and cry. bzr looked cool, but it wasn't ready (I sorta tried to manage one of the X.Org releases in Debian with it and failed miserably). Darcs was slow and in a minority language, which was a major turnoff for me. And I don't have a ton of diskspace, so git was out. Svk struck me as a hack (it still does) so I didn't want to go with that. Monotone was ok, but not good enough, so I sighed, gave up, and went back to svn thinking that this was as good as it could get. Indeed, we added a quilt-based patch system to the Xorg packages, so now I have a mini-scm (quilt) inside an scm (svn) and it works amazingly well.

But one of my friends just got hired by the people who make Xen, and he mentioned that they used mercurial, and asked if I had tried it yet. I scoffed and said no, and that all scm's suck harder than anything has ever sucked before, but I had a lot of time to kill while I was waiting on an X build, so I gave it a look.

Mama, I'm home. I was stunned that I was able to pick up mercurial in about half an hour after tearing my hair out for over a month with arch.

The UI is apparently very darcs-like (by accident, according to the mercurial author) which is known to be fantastic. Branching, merging, etc is simple as can be so far, although upstream is still working out better methods to deal with merging.

It's very fast, built for large trees (i.e. the kernel) so it will be suitable for managing X with (although I haven't tried this yet, but I plan to). For X, I'll need something fast to keep my sanity. This rules out darcs and baz (which has somehow managed to get amazingly slow in addition to being difficult as of late).

Unlike git, it keeps changesets in xdelta format rather than storing whole files, so it doesn't eat my hard drive.

It's written in python, so it's something I could hack on if I want to.

It supports an easy server setup with apache, and you can push your repos and serve them via static http if you don't have a server, like me.

Like monotone, it exposes hashes to the user, but unlike monotone it also provides a local revision number to make sure you don't spend all your time copying and pasting hashes, which is what put me off from monotone.

It has a fairly small command set, with 39 commands in the current tip (i.e. HEAD) as opposed to the > 150 in baz which made me weep.

It feels like using bzr, except it's here now and ready for production. Indeed, it's already used in production in making Xen.

There's a bunch more that I won't talk about, mainly because these are the things that have grabbed me. A note of caution is that I've only been hacking on local projects by myself (mainly configure-debian) with it, so I don't have the tons of real world experience with multiple trees that the thing is built for yet. I'm thinking about putting up a parallel mercurial tree to the XSF tree just for fun (the svn repo would remain the canonical one) if people are interested and I can find a server. I hope though, that all the people out there who, like me, were bouncing around trying out scm after scm and never being quite happy with any of them at least give mercurial a fair chance. I'm still amazed at how much I like it, and I think some others might feel the same.

David Nusinow: 6.9 RC0... I'm Working On It

A number of people have been asking for the X.Org 6.9 Release Candidate 0 packages I promised a little while back. I don't have them because I haven't been able to build them yet. I've managed to build 6.9rc0 itself, but not actual packages as of yet. Debian makes various alterations to the standard build, and these have been causing snags. I'm currently working my way through various build failures one at a time as they come, crossing my fingers each time I run dpkg-buildpackage. Hopefully in a few days I'll get packages ready, but I can't really give an estimate since I don't know all the build issues until they've been solved. I won't be able to work on X packages for a few days starting late in the week for various reasons, so things may be delayed. I still want very badly to get 6.9 pre-release packages in to Debian before 6.9 itself is released, and I'm going to keep at it until that happens.

In the meantime, hopefully the 6.8-5 packages recently uploaded to unstable will tide people over. Thanks to Jean-Christophe Dubacq, who provided easy drop-in patches of backports from X.Org's CVS HEAD, the -5 packages have the most up to date i810 drivers available. Many people reported problems with the old version of the driver, and this backport should help out with some of those issues. I've blogged previously about the other various features in -5 that were added, so I won't repeat them here. You can also read the massive changelog for -5 to see for yourself what we were up to while waiting for our own build dependencies to get fixed. I have to admit, looking at the changelog, I'm proud of our team.

David Nusinow: X Strike Force Moving Forward

Today was a good day in Debian X land. X.Org released the "zeroth" release candidate for both the 6.9 (monolithic) and 7.0 (modular) versions of the X.Org tree. I downloaded the 6.9 tarball, imported it in to the XSF svn repo, and got to work on the patchlist. I'd already ported a number from 6.8, and tonight I managed to finish the rest. Except for a massive GNU/kFreeBSD patch, every single patch in the debian tree has been ported over to 6.9. This work took multiple weeks with multiple people for 6.8 using dbs. Using our new quilt-based patch system I blogged about in the past, this took me about half a week, with the bulk of the work over the past two nights.

Now I haven't actually been able to build 6.9rc0 yet, nor have I been able to build 6.8 for a few days. There's currently a bug in the linux-kernel-headers package that breaks the X.Org build, so the XSF has been working on polishing the -5 release. Eugene Konev has fixed things to we now build HTML docs for xspecs again, for those of you who hate the postscript versions. David Mart nez Moreno has been doing an enormous amount of cleanup, generally dealing with a lot of the bugs that have come in and taking care of the new translations that have been flooding in almost as fast as we can change the debconf templates :-) Christian Perrier has joined the team as translation coordinator, so as soon as he can get svn access the X packages should be well taken care of in his amazingly capable hands. Finally, I've included a new script for /etc/init.d supplied by Petter Reinholdtsen that will give Debian LiveCD-derivatives a standard way of generating an X server configuration on boot. Nothing too fancy, but we're tightening up the package a bit more and those fixes have already been merged in to the 6.9 branch.

So if people need updated drivers from Xorg's HEAD, keep an eye out for 6.9rc packages to hit experimental. As soon as I can build and test them, I'll put them there for people to play with. My goal is to get 6.9 in to unstable on the day it's released by upstream. We're (or at least, I'm) going to begin work on 7.0 as soon as 6.9 hits experimental as well, borrowing one more time from Ubuntu and attempting to stabilize that packaging alongside them, if they haven't already beaten us to it completely :-) So things are moving and we're going to try and keep up the momentum.

Some people have also been asking about xcompmgr/transset packages. It's still not packaged for Debian because it's either slow or crashy, depending on your driver, although fixes are in the works. I may have found someone to maintain it for Debian, and I'll try and keep people posted about it when I know more.

David Nusinow: X.Org Has Been Uploaded

I wish I could say that the subject says it all, but that's not quite true.

First off: it's true that X.Org has been uploaded to unstable. Steve Langasek talked with the gcc maintainers and they decided that X.Org wouldn't block gcc4, so I got the approval to upload. Steve, as ever, is awesome.

Then Daniel Stone noticed that the packages are missing updated MANIFEST files for many of the ports. These files were put in place in the X build system long ago so as to manage to complexity of new upstream revisions. Because there's just so much stuff in the X source tree, there had to be an automated way to deal with making sure everything was present and accounted for. The end result of this is that if a MANIFEST that we have doesn't match up with the one generated while building the package, the build will fail. So what's going to happen is that with this upload, some architectures will get the X.Org packages, and others will not due to build failures. I uploaded i386 packages, so that will definitely go through right away, and ppc, sparc, amd64, and I believe mips should all go through as well.

The reason we went with this plan is that when the builds fail, the build logs will give us a diff for the MANIFEST for each arch. So what I can do is use those to fix the MANIFEST files tomorrow, rebuild as fast as my laptop can manage, and upload the -2 revision which has correct MANIFEST files. Steve, Daniel, and Ryan Murray all directed me in deciding on this plan, and I owe them a ton for all their help.

Already we've hit a build error in s390 that we're working through, but hopefully we can get all the ports in line ASAP so that this can transition to etch. But here it is. After a long wait and lots of work by lots of people, X.Org is finally entering Debian.

I think I need a glass of scotch.

David Nusinow: Today Was A Good Day

Today was a very good day. One of those days where somehow things just go very well.

First, I managed to debug a problem at work over which I've been tearing my hair out for the past year. This means I can start generating some real data tomorrow and maybe even graduate one day.

Second, I checked my mail to find that kick-ass ftpmaster Joerg Jaspert has approved almost all the modular packages I uploaded to experimental. This includes the protocol headers and libraries which are a big chunk of the whole. He also gave me some stuff to fix up on two packages which didn't make it, so I'll be working on getting those two ready ASAP, but simply having some of the mass start to enter experimental is nice. Note: I seriously do not recommend running the modular stuff yet from experimental, since the change from X11R6 to X11R7 introduces a serious change that will break unless you know what you're doing or have a full X11R7 system (which you won't). I'm not even running 7.0 yet outside of a chroot, which brings me to the next item...

Third, I finally managed to get the modular X server running entirely from what's packaged in our svn repo. This is a huge step because it means that I'm getting much closer to the full functionality offered by the current 6.9 packages. This is a major milestone for me personally, because I'm starting to see the end of what I set out to do when I took on the Xorg packages a few months ago. It also gives me a serious hope for shipping 7.0 with etch. Needless to say, I'm pretty happy.

31 January 2006

Adam Rosi-Kessel: Misunderstanding Legal Process

I wonder how often things like this (“Dear Sir, calling StarForce ‘Anti-copying malware’ is a good enough cause to press charges and that is what our corporate lawyer is busy doing right now”) actually have their desired effect. I suppose it might work in cases where the recipient is actually dumber than the writer. On the plus side, that sort of letter could certainly create declaratory judgment jurisdiction; the recipient could turn around and sue the sender for a declaration that they have done nothing unlawful. I also wonder whether companies like StarForce actually have a “corporate lawyer,” and if that person is aware of these emails. I sure hope not. Update: Apparently this story has been slashdotted. I try not to post about things that also appear on slashdot, on the theory that most people will have seen the story somewhere else at that point, but this entry went up before the slashdot article. A commenter makes a good point, though, that Cory Doctorow (the recipient of the abovementioned threat) is Canadian and lives in London—something the writer of the threat seems to have no clue about.

Clint Adams: ari, export this

Christine, reading only the first three Wheel of Time books seems like a pointless exercise in suffering.

30 January 2006

Ross Burton: Sound Juicer "J'd Up To The Boom" 2.13.4

Sound Juicer "J'd Up To The Boom" 2.13.4 is out. Tarballs are available on burtonini.com, or from the GNOME FTP servers. Bug fixes: Translators: Adam Weinberger (en_CA), Ales Nyakhaychyk (be), Ankit Patel (gu), Clytie Siddall (vi), Evandro Fernandes Giovanini (pt_BR), Francisco Javier F. Serrador (es), Funda Wang (zh_CN), Gabor Kelemen (hu), Ignacio Casal Quinteiro (gl), Ilkka Tuohela (fi), Jean-Michel Ardantz (fr), Kjartan Maraas (nb, no), Lasse Bang Mikkelsen (da), Theppitak Karoonboonyanan (th), Tino Meinen (nl). NP: Gorillaz, Gorillaz

Antti-Juhani Kaijanaho: Counting lines

Insipired by Daniel Burrows’ tests, I decided to do mine. The object is to come up with a Haskell program that performs the job of wc -l as efficiently as possible. My test material is a randomly generated file with all lines less than 80 characters long. Summary: my final idiomatic version is twice as slow as wc -l, and my final nonidiomatic version is as fast as wc -l, or at least within the margin of error. First, the baseline:
$ time wc -l testfile
7798137 testfile
real    0m12.127s
user    0m0.765s
sys     0m0.399s
Then the most idiomatic program. Honestly, I expect it to suck performance-wise:
main = getContents >>= print . length . lines
And it does:
$ time ./wcl1.hs < testfile
7798137
real    1m14.993s
user    0m54.182s
sys     0m0.573s
But only by a factor of six. My first hypothesis is that garbage collection is the culprit. And, indeed:
$ time ./wcl1.hs +RTS -sstderr -RTS < testfile
./wcl1.hs +RTS -sstderr
7798137
25,236,174,340 bytes allocated in the heap
5,070,193,924 bytes copied during GC
117,484 bytes maximum residency (3750 sample(s))
96274 collections in generation 0 ( 26.36s)
3750 collections in generation 1 (  0.74s)
2 Mb total memory in use
INIT  time    0.00s  (  0.00s elapsed)
MUT   time   27.17s  ( 42.72s elapsed)
GC    time   27.10s  ( 33.72s elapsed)
EXIT  time    0.00s  (  0.00s elapsed)
Total time   54.27s  ( 76.44s elapsed)
%GC time      49.9%  (44.1% elapsed)
Alloc rate    928,824,966 bytes per MUT second
Productivity  50.1% of total user, 35.5% of total elapsed
real    1m16.616s
user    0m54.278s
sys     0m0.700s
As you can see, GC takes half of the processing time. Unfortunately, minimizing GC time does not have as big an effect as I hoped:
$ time ./wcl1.hs +RTS -H100M  -RTS  < testfile
7798137
real    1m1.354s
user    0m44.371s
sys     0m1.171s
Here, I’m effectively telling it to use a 100-megabyte heap. A separate GC profiling run tells me that GC time has dropped from 50 % to 1 %. The memory problem seems to be a red herring. What we’re doing here is creating four separately allocated memory cells for each character in the input. Of course, the cells are generated lazily, that is, a cell pair is allocated when the lines function demands another character; it then creates another cell pair to denote the same character in a list of lines. As soon as each line has been counted, the four cells become garbage. This sounds like a lot of work! But apparently it isn’t; I tried a few variations that did away with the stream of input altogether, not much unlike what Daniel did in his tests. Surprisingly, the performance worsened a lot. The lesson: functional programming language implementations, unlike typical imperative ones, are built on the assumption that you’ll be doing a lot of allocation. What I suspect is taking a lot of the time is arithmetic. Haskell’s Int is boxed, and lazy by default, adding a lot of overhead. I hand-fused length and line, yielding a tail-recursive countLines function, and I added the command-line switch -funbox-strict-fields, which enables a few significant optimizations of the laziness of Int. The results were nice:
ajk@kukkamaljakko:~/scratch$ cat wcl4.hs
module Main (main) where
main :: IO ()
main = getContents >>= print . countLines 0
countLines :: Int -> String -> Int
countLines n ('n':r) = countLines (n + 1) r
countLines n (_:r) = countLines n r
countLines n [] = n
ajk@kukkamaljakko:~/scratch$ ghc -O -Wall -funbox-strict-fields --make wcl4.hs -o wcl4
Chasing modules from: wcl4.hs
Compiling Main             ( wcl4.hs, wcl4.o )
Linking ...
ajk@kukkamaljakko:~/scratch$ time ./wcl4 < testfile
7798137
real    0m37.961s
user    0m29.853s
sys     0m0.495s
ajk@kukkamaljakko:~/scratch$ time ./wcl4 +RTS -H100M < testfile
7798137
real    0m25.153s
user    0m13.497s
sys     0m0.803s
ajk@kukkamaljakko:~/scratch$
With a large heap, the program is only twice as slow as the baseline. This is pretty good, considering that the code is still idiomatically functional. The following rather ugly, imperative program does away with the lazy stream and carefully avoids any laziness without doing any too dirty tricks:
ajk@kukkamaljakko:~/scratch$ cat wcl7.hs
module Main (main) where
import Data.Word
import Data.Array.IO
import IO (stdin)
count :: Int -> (Int, Int) -> IOUArray Int Word8 -> IO Int
count 0 _ _   False = undefined -- force ac evaluation
count ac (l,u) _   l > u = return ac
count ac (l,u) ar
    = do a < - readArray ar l
         let ac' = case a of 10 -> ac + 1
                             _  -> ac
         count ac’ (l+1, u) ar
maxn :: Int
maxn = 4096
main :: IO ()
main = do
  arr < - newArray (0,maxn) 0
  let loop :: Int -> IO Int
      loop acc = do n < - hGetArray stdin arr maxn
                    if n == 0
                       then return acc
                       else do acc' <- count acc (0,n) arr
                               loop acc'
  res <- loop 0
  print res
ajk@kukkamaljakko:~/scratch$ ghc -O  -Wall -funbox-strict-fields --make wcl7.hs -o wcl7
Chasing modules from: wcl7.hs
Compiling Main             ( wcl7.hs, wcl7.o )
Linking ...
ajk@kukkamaljakko:~/scratch$ time ./wcl7 < testfile
7798137
real    0m13.431s
user    0m10.342s
sys     0m0.467s
Of course, this program is not Haskell 98, but the nonstandard things it uses are fairly common. As can be seen, this version’s performance is, considering the margin of error, equal to the baseline. The compiler used in this test is The Glorious Glasgow Haskell Compilation System, version 6.4.1, as packaged in Debian sid.

Ross Burton: Blog Comments

This morning before work I hacked up a few Pyblosxom plugins to do word blacklisting and a basic Turing test on comment posters. The blacklist currently only contains 'phentermine', 'poker', 'xanax', and 'viagra', but that should filter out 90% of the comment spam. For the rest, the Turing test asks the poster to add together two small numbers. The lazy bit is that these numbers are hard-coded at the moment, I'll add that later... Hopefully I haven't broken something and if people pass these tests then comments actually work, if not the please email me. I'll release the plugins later this week when I've added documentation and ensured they work. NP: In Between Dreams, Jack Johnson

29 January 2006

Antti-Juhani Kaijanaho: He still looks like the President of Finland

The incumbent, Tarja Halonen, carried the runoff, taking 51.8 % of the vote. The runner-up, former minister of finance Sauli Niinist was left with 48.2 % of the vote. The margin was roughly 113,000 votes. The next Late Night with Conan O’Brien will be interesting to watch.

Radu Spineanu: Oops

It seems i managed to upset at least one person with my previous entry. Sorry for that.

I am sure students at famous uni's do A LOT more work than us, and in no way did i want to offend them. From now on, I'll restrict myself from posting school related stuff.

Clint Adams: The only thing different, the only thing new

When you are alleging that something has a citrus flavor, you should consider that peach, apple, guava, and pineapple may undermine your position.

Clint Adams: Charlie has a PhD

Dear Geoff, Hi there, thanks for the email...and although this seems ridiculous, I have a rule against dating Aquarians. Nothing personal (I know, right, HOW can it not be personal?) It's just that every Aquarian I've ever known cannot seem to handle deep emotional intimacy. More thinkers, more logical than I tend to be. I wish you well. Zen rocks. ~Charlie.

Jonathan McDowell: I'm becoming a wedding bore

Kathy and I went out for dinner last night at Tootsies with Becca, Dave, Eli, J, Kaz and Will. It was a good night (even if the girls beat us at Cranium), but I found myself having to stop talking about weddings - I could see J and Kaz starting to glaze over early in the evening. This a frightening event. Is this how people become baby bores? Anyway. Kathy and I managed to look at a couple of potential venues yesterday and have another one arranged for next Sunday, and a few more to ring this week to hopefully see next weekend. It's all still very scary.

Clint Adams: Not three dog night

But today there is no day or night
Today there is no dark or light.
Today there is no black or white,
Only shades of gr y.

Next.

Previous.