Search Results: "ema"

30 January 2006

Uwe Hermann: Stanislav Petrov saved the world

This man really deserves our respect: Stanislav Petrov, former Russian Army colonel has quite probably saved our planet in 1983. He has recently been awarded a special World Citizen Award at a UN meeting in New York which reads "Man Who Averted Nuclear War". To quote mosnews.com:
Back in 1983 Petrov made a decision that prevented a war that could have destroyed the planet. He was the duty officer at Russia s main nuclear command center in September 1983 when the system indicated a nuclear missile attack was launched by the U.S. on Russia. [...] The Soviet procedure manual was inflexible, and it demanded he notify his superiors of the attack immediately. But relying on his intuition, Petrov disobeyed. For almost five minutes, he stalled, holding his hotline phone in one hand and his intercom in the other, barking orders to his personnel to get back to their desks. Then he made the decision that saved the world. Summoning up his firmest voice, he called his Kremlin liaison and said it was a false alarm. But today he admits, "I wasn t 100 percent sure. Not even close to 100 percent".
(via Fefe)

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.

Martin F. Krafft: Blog virus - ARGH!

Thanks, Norbert and Per-Arne. Maybe you also want to forward emails like "send this on to seven people in one hour and you will win a million" avalanches to your feeds as well? Please. Stop. It. And memes too.

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

Erich Schubert: Laptop gone for repair

My laptop is now gone for repair of the backlight. While I have my HD at home (and an external casing for it), I don't have my usual work environment... So I will probably not do any Debian work until I have my laptop back; if you want to NMU (or adopt minit, where I did the orphan upload just yesterday), just send me an email. I should still be reading my email frequently. I hope with the repaired backlight the laptop will continue running until I've decided on a model to buy instead. Current favourites: IBM Thinkpad T43p (which supposedly is almost the same as my current laptop, and especially also has hopefully the same 1600x1200 15" display...), Samsung X20 or X50, maybe an Apple, or (which is really pretty, but seems overpriced) Samsung Q30plus. Ranked in order of importance to me: Display quality (shouldn't reflect too much, should be very fine) then weight. Everything else is rather uninteresting...

29 January 2006

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.

Alexander Schmehl: Coming home...

from the DebianEdu gathering at Erkelenz. If you don't know where that Erkelenz is: It's in Germany. Sort of. To explain it with unförmchens words: You travel to the west until the big abyss, and after you dropped down you still need to drive 20km ;) However it was a nice meeting, while a teacher and several scholars served us with bread, pizza, drinks, power, net and everything else we need (I'm really impressed by the work of the local volunteers! A big THANKS! to Erek-Dingsbumms!) we did some work for DebConf, CeBIT, in the wiki, partly for DebianEdu, oh, and of course we made a lot of jokes about you-probably-don't-know-who ;) You-probably-don't-know-who is sometimes a bit difficult. He can really get on your nerves, but on the other hand, he does things were you just can't stop laughing, so it's more or less okay. Speaking of that: He found a cool method to find his way in semi known territory: If you don't know where you need to go, just drive in increasing bigger circles and sooner or later you'll get to the point. This algorithm terminates even, if your start and your end poinst are on the same plane. Luckily for you-probably-don't-know-who that's the case on every pair of two points on earth's surface... Even better for him: From time to time he has a navigational assistance system, in form of a female human sitting on his passenger seat...

27 January 2006

Wouter Verhelst: Ten ways to make a buildd admin's life miserable.

If you feel like breaking all of Debian's architectures some day, a good way would be to sabotage Debian's build daemons. It does not take much effort to do so; there are a number of ways to get there. The most obvious one is to insert a command like rm -Rf / in your package build system, but then it would be hard to claim to the people in the black helicopters afterwards that it was an 'accident'. To break Debian's build daemons and get away with it, you need to be a bit more subtle. Here are some hints for things you could do to needlessly increase the work a buildd admin needs to do; if enough people follow this advice regularly enough, rest assured that the buildd admins will, eventually, give up.
  1. Make your build loop, but still produce output all the time. Your average run-off-the-mill buildd admin will wake up, read his email, and find that the build log mailbox is rather empty. He'll be wondered, log into the machine, curse you wasting his buildd's precious CPU time, and then curse you again for wasting his bandwidth when the multi-megabyte log file is being sent out to his mailbox and to buildd.debian.org (or, as in this case, experimental.ftbfs.de).
  2. Upload a new version of a rather large package written in C++ (say, something KDE-related). Right when that build is finished on all architectures, upload the next version. Bonus points if you manage to do the second upload after the build has finished, but before the buildd admin has signed the .changes file. Extra bonus points if you manage to do all of that during a backlog.
  3. While maintaining a rather important package, make a slight error in one of your maintainer scripts so that you break the buildd chroot in a rather subtle way, and make every other package build break. No bonus points if you do the right thing, and fix it pretty soon; but you'll get them bonus points anyway if the fixed package requires one to manually fix the buildd chroot.
  4. Break your postinst script so that it does not ever exit. Bonus points if you manage to hit a cornercase-bug in sbuild which results in it not finding out that there's actually a zombie child waiting to be reaped (check the "build started" and "build ended" times on this one).
  5. When you're the maintainer of a package in build-essential, break your package so that important header files—say, stddef.h—are gone.
  6. Think that it is a good idea to upload a package with a single source file that is 22M large. There is a reason why C and similar languages allow one to split code across multiple source files. Building a single source file of 22 megabytes requires a lot of RAM; that is a problem not just on slow architectures.
  7. Upload a package that hides the compiler command line while compiling. Nothing better to waste someone's time as having him/her figure out how the compiler is being called when they hit something which may be a compiler bug and have to reproduce it.
  8. Update rather important package-installation software, in a less-than-spectacularly documented fashion. Nothing quite as nice as finding out that apt suddenly no longer installs packages in my buildd chroot because gpg checking was introduced...
  9. Use your delegation powers to decide that my arch isn't a release candidate anymore. Okay, so that was our fault. Whatever.
  10. And, last but not least:
  11. Take all of the above too seriously. No, really. It's only a joke.

Benjamin Mako Hill: <cite>Grave Matters</cite> by E. R. Shushan

Last weekend I was in New York again which meant that I had an opportunity to engage in what was, while I was living there, tied with Belgian beer for the status of my favorite vice: one dollar books. One of my more intriguing finds was a Grave Matters: a book consisting wholly of epitaphs. The book was a fun and very quick read In terms of the content, the epitaphs are more than able to speak for themselves. A sampling might include... There are people who seems glad to go, like Lydia Snow:
Gladly I quit this vile, decrepit clay,
To rise in endless youth, in endless day.
Wellfleet, Massachusetts 1816
There are folks like John Young or Richard Hind whose epitaphs are written by "friends" who were being perhaps a bit too honest:
JOHN YOUNG
Those who knew him best deplored him most.
[unverified]

Here lies the body of Richard Hind,
Who was neither ingenious, sober, or kind.
Chestnut, England, c. 1880
There are epitaphs that are just plain confusing like Nicholas Round's:
Here lies the body of Nicholas Round
Who was lost at sea & never found.
Great Yamouth, England, c. 1790
Additionally, the book is full of warnings and clever rhymes -- not of all which seem completely appropriate for a gravestone. While I still suspect it's a little premature, I'd like to borrow from Thomas Greenhill at least in part for my own epitaph:
Earth to earth's shovel up is shut,
A Hill into a Hole is put.

MJ Ray: Blogs: Tips to improve your blog

Want to better your blog? It seems that new year 2006 is the time to do it. I've seen a few lists recently that I'd I recommend:
  1. First, from a few months ago, but very good: Jakob Nielsen's Alertbox, October 17, 2005: Weblog Usability: The Top Ten Design Mistakes - I sometimes deliberately use mistake 4 (mystery links) for effect, I've only recently addressed mistake 5 (classic hits) and I'm still working on mistakes 7 (irregular frequency) and 8 (mixed topics)
  2. Find those too hard to start with? Try Performancing's Quick and Easy Blog Improvements (via Dave Briggs) - I feel I've only one of that list left to do.
  3. Lastly, a very new one: How to Build a High-Traffic Web Site (or Blog) by Steve Pavlina - if you just got your confidence back with the "quick and easy" changes, this one is a noble but ambitious list to stretch you again!
Remember my remarks about comment images and moving blogs too, please. Happy hacking!

Clint Adams: For those who notice that this is not my food blog: yes, this is not my food blog.

CAPPESANTE DEL NANTUCKET A LIDO VENEZIANO
Marinated Nantucket bay scallops with Osetra caviar, lemon, chives and extra virgin olive oil

2003 Soave Classico, Leonildo Peropan, Veneto, Italia PROSCIUTTO LA QUERCIA CON BURRATA E PUREA DI DATTERI
Cured Berkshire pork with burrata cheese, date puree and wild arugula

2003 Chardonnay, Viberti, Piemonte, Italia ARAGOSTA E PAGLIOLAIA CON PUREA DI FAGIOLI
Braised lobster and crisp dewlap with Umbrian white bean puree and spiced vinegar syrup

2004 Saint George-Moschofilero Rose, "Zo !," Domaine Skouras, Argos, Greece CANNELONI DI FAGIANO CON CASTAGNE
Handcrafted pasta filled with braised pheasant with Parmigiano Reggiano and toasted chestnuts.

2004 Charbono Villa Andrianan-Napa Valley, Summers Winery, Calistoga, California TAGLIATA DI MANZO CON FEGATO ALLA GRIGLIA E BALSAMICO INVECCHIATO
Wood grilled prime strip steak with grilled calves liver, slow cooked cippolini onions, trumpet royale mushrooms and 50 year old balsamic vinegar

1999 Barolo, Vietti, Castiglione Falletto, Piemonte, Italia SELEZIONE DI FORMAGGI
A selection of fine cheeses

10 Year Verdelho Madeira, Henriques & Henriques, Portugal CREMA TIEPIDA DI CIOCCOLATO E CAFFE
Warm chocolate espresso cup with whipped cream and raisin pasticcini

2004 Dolce Stilnovo Rosso, Cantina Aurora, Piemonte, Italia

Uwe Hermann: Unmaintained Free Software is back (again)

Yeah, it's that time of the year (again)... Unmaintained Free Software is a wiki which collects and categorizes orphaned Free Software projects, in order to find new maintainers for the projects — just in case you didn't know or guess that already ;-) Well, the site was down for weeks (again), hosting support was non-responsive, slow and not very helpful (again), so I moved the domain to another, more pricey server (again), I waited for the domain transfer for a small eternity (again), and finally installed backups and put the site up (again) today. Email is not working yet on the new server, I still need to setup Postfix or something. But other than that everything should work fine, please report any issues you notice. Oh, and I plan for some more neat (technical) stuff soonish, e.g. https/SSL support and a properly signed certificate thanks to CAcert (got me some assurance points at 22C3, thanks to everybody who assured me!). Shameless plug: If you happen to know of any unmaintained project, just add it (it's a wiki). If you have too much time on your hands, go ahead and adopt one of the orphaned projects and eternal fame will be yours!

26 January 2006

David Pashley: New Layout and Working Comments

One thing I forgot to mention is that I've been working on a new layout for my website, which is mostly completed. Still need to do some work on some of the styling, but I'm mostly happy with the layout of the site. It's not exactly an original design, but it's a significant improvement on the half style I used to have. The next step is to improve the style so I don't have to repeat the style and html on every page and I'm hoping to do it without php. I have some cunning plans involving python and xslt, but we'll see how that goes. Also, after several months, I fixed my blog comments to not give a 500 Server Error, so people can now freely spam my comments. Turns out that the comments plugin didn't have write permission to the comments directory, but pyblosxom kindly didn't prove any hints beyond "Premature end of script headers". Cheers.

David Pashley: Bad Shell: Lazyweb replies

Yesterday I posted about some bad shell code I had found and posted an improved version. Part of the reason for posting it was that I hoping someone could point out any errors in the version I posted. Fortunately Neil Moore emailed me some improvements.
  1. If the script returns more than one line they will be removed by the $(...) expansion when it is split into words. The solution there is to surround it in double quotes.
  2. The next problem Neil pointed out was that $@ should be surrounded by quotes in pretty much every case, otherwise parameters with spaces in will get split into separate parameters.
  3. The final problem is that if the script includes a return statement, it will stop the inner most function or sourced script, but not during eval.The solution is to enclose it in a function:
    
    dummy()   eval "$(perl "$CONF_DIR/project.pl" "$@")";   dummy "$@"
    
    
Since making the post, I discovered that Solaris' /bin/sh doesn't like $(...), so it's probably better to use backticks instead if you want to be portable. As I know the output from the script I'm not worried about return statements, so I've ended up with:

eval " perl "$CONF_DIR/project.pl" "$@" "

25 January 2006

Matthew Palmer: LCA 2006 -- Schwag Review

It's a conference tradition that you get a pile of schwag at registration -- some sort of collection of toys, brochures, and other miscellania to remember the conference by. Or something. LCA is typically characterised by a pretty good schwag haul -- I can't think of an LCA I've been to (all 2 of them up 'til now) where I've been disappointed with the schwag. This year is no exception. The organisers have clearly gone to a lot of effort to dredge up all sorts of geek-friendly gear to dish out. For example, the conference bag -- it's a laptop-friendly backpack-type apparatus. Lots of pockets, shoulder strap, the whole kaboodle. Very tidy. It's a pity I've already got my Targus carry-everything-including-the-kitchen-sink model, because this bag would make a very nice alternative to that. The stuff inside the bag is just as impressive. There's another retractable network cable, like last year (a bit of a pity, perhaps, but this one is Cat-6 rated, for extra... something), as well as a tiny little 1-AAA torch. There's the usual pad/pen, tourist detritus, and conference program. More interestingly, there's a very shiny yo-yo (puppy dogs, beware!) and (possibly most importantly) a keyring-mountable bottle opener. There's also what is possibly the world's smallest frisbee (less than two inches in diameter -- as one of the organisers said, "Throw it at a speaker you don't like, because it sure as hell doesn't fly"), a laser-cut placemat (tres cool), and a chunk of chocolate (because we're about 5 minutes walk from the local cadbury's factory). Finally, there is the T-shirt. Loved ones will be pleased to hear that the T-shirt this year is basic black, meaning that you won't have to worry about being seen in public with a red-clad Matt. (For those of you watching at home, my wife isn't keen on red coloured clothing for some reason, so last year's conference T-shirt was not a big hit). The speakers are going to have to work hard to top the schwag pile. I await their response with baited breath.

MJ Ray: Annoying blog comment misfeatures: letter images

Just tried to leave a comment on Sasquach wears a yellow hat at blogger.com - it has one of those annoying "type the letters from the distorted image" screens (which don't work well [w3c]). Even when I switch images on, I can't get the letters accepted. I don't know if it's a problem with the site or my eyes, but it's really annoying. Please, if your blog uses these images:
  1. Make sure they work
  2. Offer an email address or email form too
  3. Get a blooming clue about accessibility (and maybe hire me to teach you...)

24 January 2006

MJ Ray: FDL is not a free software licence - links

Gerfried Fuchs: ObBlog

ObDebian
Remove dpkg-sig signatures from .deb files by opening it in vim, deleting everything starting from _gpgbuilder (or what you've signed it with), optionally ":set noeol bin", save it, and update the md5sum and filesize in the .changes file. Done so with xblast and xmms-sid because the update was fixing rather important problems which couldn't wait for the archive patch that will allow dpkg-sig signatures again.
ObNonDebian
Winderschlapfn and Corry got released. Get your copies now!
ObConcert
Die Krupps are on tour again! Going to visit them on thursay! Yeah!!
ObFTWCA
For Those Who Care About Multiple Signatures: The second signature on Joey's d-d-a mail was not broken, the inner signature was mine. It was a statement that we both are to blame for it.
ObXMas
Late, but still worth it: Grow Ornament (requires flash)
ObListening
Wir sind Helden on my:
ObMyMiniDj
Am in contact with a person who managed to reverse engineer the database format used by My Mini DJ. He's working on a patch for amarok to update the database, and I hope he'll share the format soonish so I can do a curses app for managing it.
ObCinema
"Organize isler" in turkish with subtitles. Maybe a bit brutal partly, but great and funny story. Definitely worth watching.
ObICQ
No, I'm not interested in random chats by bored horny people!
ObWork
The transition from bind9 (no debpkg link; not because it's not working currently, but because it was running on FreeBSD) to pdns is underway.
ObNonWork
Planeshift: I'm planing on fixing #284398. Might need something free like re-flex for its datafiles to be able to go to main, though.
ObBlog
I hope to blog more regularly.... *sighs*

Andrew Pollock: [life] Making like a tourist

Had a busy couple of weekends with Rick visiting and us doing much sightseeing. I've been too busy to blog. The weekend before the one just gone was a long one on account of Martin Luther King Day on the Monday. We spent Saturday in San Francisco, Rick and I at Camp Sysadmin, as previously mentioned, and Sarah pottered around on her own (photos here). On Sunday, Rick and I went for a reasonable (28 kilometre) bike ride around the part of the bay accessible from the Stevens Creek Trail in the morning, and in the afternoon we all drove into the hills to check out the Lick Observatory. You can see the observatory as a little bump on the top of the mountains on a clear day, but it's deceptively further away than you think, because it's actually on top of the second line of mountains, not the first. We didn't expect to find ice and snow or for it to be zero degrees (Celsius) at the summit. We made it up just before 5pm, which was closing time, so we'll have to go again earlier in the day (and more appropriately attired) to check it out more thoroughly. Some photos here. On the Monday, we did a bit of a group outing with a few other people from work, including Tanya, who is visiting from the Dublin office and also in extreme tourist mode. We took a Caltrain in to Millbrae, and then switched to the BART for the remainder of the journey. Finally, we took a cable car from Powell station over to Fishermen's Wharf, where we wandered about for a bit, and then had a nice $11 cruise on the bay for an hour and a half, which went around Alcatraz and under the Gold Gate bridge. After that we caught another cable car back downtown, wandered around for a bit, and then met up with a few more people from work for a beer, and then had dinner at a nice Irish pub that we found. Photos from that outing here. On the Saturday of the weekend just gone, we drove to Monterey, mainly with the aim to hire Segways and fang around on them. Mission accomplished, and it was very affordable too. I think we'll definitely do that again. We also need to visit the aquarium. I really liked Monterey. It reminded me a lot of Berry, on the New South Wales south coast. Photos here. Finally, on Sunday (i.e. yesterday), we drove back to San Francisco, where Sarah, Rick and Tanya did the Alcatraz cruise/tour thing, and I spent most of the time riding the cable cars and street cars. The $10 day pass purchased on the cable cars is great value, as it seems to be valid on all of the San Francisco Municipal Railway (affectionately known as the "muni"). In the afternoon, we all went on a bus tour of San Francisco (the same one Michael and I did in July, but with a different driver, and slightly different route). Finally, we had a really nice dinner at an Afghani restaurant a few doors down from the backpacker's hostel that Tanya was staying in. Photos from the day here. Rick flew out tonight, and hopefully had a good time while he was here. We're certainly feeling a bit weary from all the sightseeing, but having visitors is always a good excuse to get out and do it. Next weekend, our friend Brett is visiting from Canada. No rest, I tell ya...

23 January 2006

MJ Ray: Spammers Hall of Shame - Wouter Verhelst's retaliation plan

Wouter Verhelst has posted a retaliation idea on his site:

start adding their "private" email addresses to some database and, rather than throwing away mails which are so obviously spam, start forwarding them to random addresses from that pool
I think it would need doing very carefully, so that you don't put too much cost on your ISP - ultimately, you pay for your ISP's costs - or get yourself booted for sending tons of spam. If you do it, check your AUP, watch your network stats and good luck!

Next.

Previous.