Archive for October, 2006

Netvibes: Best Homepage Ever

Tuesday, October 31st, 2006

I’ve been using Netvibes for around a month now, and it’s one of the best online tools I’ve used (especially since I use it very frequently). The best way I can sum it up is that it’s a “web desktop” and definitely the most “web 2.0″ thing I’ve used aside from 30boxes. Netvibes Screenshot After getting a few co-workers hooked on it, I thought I’d post about it since myself and others I’ve showed it to find it so useful. I came across it quite some time ago and didn’t think all that much of it, but they recently released an enhanced design and I decided to give it a go and came away both very impressed and hooked.

What does it do? It’s an RSS reader (which supports importing and exporting OPML), it integrates other services such as Flickr, del.icio.us, eBay, Myspace, weather.com, any sort of iCal based calendar, etc. I like it a lot better than a standalone RSS reader because it does a lot more stuff, and I can customize the various widgets I have on each tab. Basically I leave it open in a Firefox tab all day and use it to keep up with my various feeds.

Another advantage is that I have one central place to login to in the event that I find myself at a computer that’s not my own. Essentially all that I need to do to get caught back up is to login to Netvibes to get a quick overview on what is in my various email accounts, what is happening on my favorite RSS feeds, etc.

Another great thing about it is how open it is. You can create modules, suggest RSS feeds, share tabs, and much more. So if for some reason it doesn’t support your favorite site already out of the box, you can make your own module to add support for it. I seem to always find some sort of new feature (ie, I just found that you can share tabs today), and I find this site to be really phenomenal.

I started using it around the time that the new Google Reader interface came-out and I still haven’t found a reason to use Google Reader again since creating a Netvibes account. I’d strongly urge you to give it a try for a couple of days and see what you think.

Guide And Best Practices For Subversion Branching

Monday, October 30th, 2006

Since switching to Subversion for version control about two years ago at work, there have always been questions about best practices here and there which were certainly debatable. One of the last long discussions/e-mail threads we had about Subversion was about when to branch, when to stay on trunk, etc. Ned Batchelder wrote a great introduction to branching which you can check-out here.

Using a branch is always more involved than using the trunk, so the trunk should be used by the majority, and the branch should belong to the minority. Subversion is easier than other source control systems in this regard, but the rule still holds: when trying to decide what goes on the trunk and what goes on the branch, put the code that most developers want on the trunk, and put the minority on the branch.

I think one not-immediately-obvious thing to think about when branching is that none of your incremental changes to the branch will show-up in the trunk revision once you’ve merged the branch back into trunk. Instead, you only get the revision where the changes were merged back into trunk. Being that we link revisions with tickets and tasks, it presented a difficult problem to track down changes because people were using branches way too often. For the most part, we now follow the basic rule that you should only create new branches while doing some major changes to existing implementations, or interface changes, while most everything else such as maintenance, new features, and bug-fix type items belong in trunk.

Flash Player 9 And World of Warcraft in Ubuntu

Friday, October 20th, 2006

I actually wrote this entry a couple of days ago but at the time when I wrote it I couldn’t get to my server to post it and am just getting around to posting it now. I think I’m pretty much convinced it’s time to stop being cheap and get a VPS account running Ubuntu or FreeBSD to host my stuff on rather than hosting from home. ;)

Adobe released Flash Player 9 Beta for Linux earlier this week which I installed and it seems to work perfectly. I’ve only done a “sniff test” so far as watching some streaming video online, but the video worked and the sound was synced-up correctly. It’s also very easy to install– you basically just create a plugins directory in your home/.mozilla directory, copy the .so file there, and you’re done. I was really impressed with how easy it was as well as that it worked the first time, etc. Thanks Adobe! While admittedly I can be an OSS zealot at times, I certainly don’t have any problem most of the time with closed commercial software in Linux as long as it does what it’s supposed to, and from what I can tell, the new Flash Player 9 beta is a shining example of that.

Also last night I decided to try and get World of Warcraft running on my workstation using Cedega. It was quite easy– I signed-up for a Cedega account, downloaded the Debian package and installed it. Once I ran Cedega it picked-up all of my hardware automagically. I then copied over my World Of Warcraft install from my Windows partition to my home directory, configured Cedga to use ALSA sound, and it worked pretty well. Unfortunately the machine I’m using is close to 3 years old, and it was pretty obvious at times, so I’ll probably continue to have to boot to Windows to play WoW until I get a new workstation (probably sometime next year after the quad-core CPU’s are fairly ubiquitous). I haven’t really messed with the config that much so after some more research I might be able to get it running pretty well, so I’m not quite ready to give-up on it yet.

Anyhow, it’s good to see that I’m able to do about ~98% of the things I would normally do in Windows in Linux. I’m essentially preparing myself for a fully Windows-less world at home because I simply will not be a Windows Vista customer given it’s very draconian licensing terms, built-in DRM, etc. I’m not someone who tends to lie down and take it when something violates my personal ethics, and as such, I think Windows XP is the last stop on the Microsoft train for me (I also switched to Open Office some time ago).

Why Interfaces In ColdFusion Are Irrelevant

Wednesday, October 11th, 2006

A post from Sean on Static vs. Dynamic languages reminded me that I needed to get around to finishing up a piece I started long ago about why I think Interfaces in ColdFusion are completely irrelevant. In particular, this quote is what reminded me about it:

I’ve built large systems in dynamic lanaguages. I’ve built large systems in static languages too. Neither is necessarily better or worse than the other in terms of maintainability - if you know what you are doing.

To me, a decent but not perfect general comparison of dynamic languages to static languages could be summed-up as a pair of safety scissors vs. a razor blade. Static languages are the safety scissors– they help protect you from cutting yourself and will probably last longer, but it might take a long time to cut something. Dynamic languages are a razor blade– they are very sharp and nimble and cut through most things very quickly, but they are easy to cut yourself with if you’re not careful and may have a shorter shelf-life depending on how they are used. Granted I don’t think this quite applies to any language in which you need to do memory management (C, C++, etc).

Since the introduction of ColdFusion MX, we’ve been able to use ColdFusion Components– ColdFusion’s take on Object Oriented Programming. CFMX 6.0 was certainly an “interesting” time for CFC’s, but luckily a lot of changes were made and CFC’s have basically stayed the same since CFMX 6.1. Since that time a lot of ColdFusion developers (including myself) have jumped on the OOP bandwagon (with great community evangelists and teachers like Sean Corfield and Hal Helms, how could you not?) and as we’ve progressed along we’ve wanted more and more rigid OOP practices available to us in CFC’s. There was a time when I would have liked to have interfaces and would have debated the topic to death in favor of them, though quickly my desires for them dissipated and now I don’t really see the point of having them in ColdFusion.

In Java, one of the advantages to using an interface is that it does compile time checking to make sure that classes implementing interfaces follow the contract dictated by the interface. Since ColdFusion is a dynamic language, there really isn’t a good way to do compile time checking of interfaces, so it would be a pointless endeavor.

When I find a need for an interface in ColdFusion, I essentially create my own pseudo interfaces / abstract “classes” which at least provide run-time checking in case an inheriting object’s method is called. It’s not a very good solution, but it does at least offer some sort of contract that an inheriting object can be tied to, mostly for documentation purposes. I’ve seen several other people do it as well, but it looks something like this:

foobar/Foo.cfc
[code]







[/code]

foobar/Bar.cfc
[code]







[/code]

These are just poor pseudo-code examples, but you’ll get the idea.

Overall, I think the bad reputation that dynamic languages get are because they are so easy to program in so most anyone can do it, while static languages like Java force even bad coders into at least some semblance of decent coding practices. I think it really all comes down to experience, discipline, and knowledge.

In summary, due to the nature of dynamic languages, the implementation of interfaces in ColdFusion would not prevent someone from breaking the contract of an interface before runtime, so I think there are bigger problems to solve in the next version of ColdFusion, currently code named Scorpio.

The Difference Between Retiring Unix and Windows Servers

Monday, October 9th, 2006

Last week I spent a surprisingly small amount of time setting up a new Ubuntu Server as a Virtual Machine which will be used to run ircd and a few other minor things internally to replace an existing FreeBSD “server” (it’s running on some old crappy spare hardware). I decided to use Ubuntu this time just because Java support on Linux seems to be much better than FreeBSD, and I wanted to see what Ubuntu was like to administer once you were only armed with a CLI (so far, awesome!)

During the process, I realized a major difference between retiring Unix servers and Windows Servers. Notably, I always find that retiring a Unix box to replace it with another one feels like the end of an era rather than an upgrade. For instance, the previous server was originally setup by employees which do not work with me any longer, on a mish-mash slapped together hardware primarily made of an old eMachines “computer”, yet it’s been surprisingly reliable:

[brandonh@hilo ~]$ uname -a
FreeBSD hilo 5.2.1-RELEASE FreeBSD 5.2.1-RELEASE #0: Mon Feb 23 20:45:55 GMT 2004
[brandonh@hilo ~]$ uptime
 6:07PM  up 231 days,  8:17, 1 user, load averages: 0.00, 0.00, 0.00

The last time it was taken down, it was to move to another location in the building. The worst problem I had with it other than trying to get Java 1.5 on it is explaining to the Security Department what cvsup is and why I needed firewall ports opened up so I could update the system. I’ve had the same experience many times as I’ve been using FreeBSD to host sites at home since 1999 or so, in fact I still have an infamous old 466 Celeron running FreeBSD sitting around on a shelf, unplugged.

On the contrary, old Windows servers always seem to get worse with age. The longer they are around, the more ready you are to get rid of them. I recently worked on a major enterprise application migration which saw many, many new Windows based servers deployed and existing applications moved to them at a new datacenter. There were several of the old servers I was glad to never have to work with again. As a Windows server ages, it seems to get slightly more erratic, to the point of needing to be pulled completely out of production, wiped clean, and reimaged. A friend of mine works for IBM as a Sr. Administrator doing work for a major corporation that needs reliable real-time transactions, and time and time again the Windows servers are the ones which are unreliable and causing expensive downtime under the limitless resources at IBM. Once a Unix box is configured properly, it needs minimal maintenance over a long period of time, while Windows needs lots of reboots and other maintenance which apparently lead to OS rot.

I could go on and on with other examples about reasons I prefer Unix in most all situations, but when it comes down to it, I’ve never been reluctant to see a Windows server replaced, while I’ve always felt at least a little resentment about retiring Unix servers even though they were 2-4 years old or more. Have you had similar experiences?

The Digg-Effect Again

Friday, October 6th, 2006

My Slashdotting entry is being dugg/digged again. More to follow, but so far today I’ve served up 8K users, and have a bunch of active connections:

Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp6       0      0  localhost.51933        localhost.http         TIME_WAIT
tcp6       0      0  localhost.51932        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            67.141.47.234.48406    ESTABLISHED
tcp4       0  30614  shadow.http            mail.hightowerco.40508 ESTABLISHED
tcp6       0      0  localhost.51931        localhost.http         TIME_WAIT
tcp6       0      0  localhost.51930        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            67.141.47.234.48410    ESTABLISHED
tcp4       0      0  shadow.http            67.141.47.234.48409    ESTABLISHED
tcp6       0      0  localhost.51929        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            67.141.47.234.48403    ESTABLISHED
tcp6       0      0  localhost.51928        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            67.141.47.234.48402    TIME_WAIT
tcp6       0      0  localhost.51927        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            outbound.plexus..25022 ESTABLISHED
tcp4       0      0  shadow.http            fj5008.inktomise.35679 FIN_WAIT_2
tcp4       0      0  shadow.http            outbound.plexus..25013 ESTABLISHED
tcp4       0      0  shadow.http            72.14.199.9.64611      TIME_WAIT
tcp4       0      0  shadow.http            fj301009.inktomi.33177 TIME_WAIT
tcp4       0      0  shadow.http            valaquenta.ath.c.54092 FIN_WAIT_1
tcp4       0      0  shadow.http            valaquenta.ath.c.54091 ESTABLISHED
tcp4       0      0  shadow.http            valaquenta.ath.c.54089 FIN_WAIT_2
tcp4       0      0  shadow.http            valaquenta.ath.c.54088 ESTABLISHED
tcp4       0      0  shadow.http            valaquenta.ath.c.54087 FIN_WAIT_2
tcp4       0      0  shadow.http            outbound.plexus..24982 FIN_WAIT_2
tcp4       0      0  shadow.http            fj301028.inktomi.54631 TIME_WAIT
tcp4       0      0  shadow.http            valaquenta.ath.c.54084 TIME_WAIT
tcp4       0      0  shadow.51926           web175.webserver.smtp  ESTABLISHED
tcp4       0      0  shadow.http            outbound.plexus..24976 FIN_WAIT_2
tcp4       0      0  shadow.http            puma.drama.uga.e.61517 FIN_WAIT_2
tcp4       0      0  shadow.http            valaquenta.ath.c.54083 TIME_WAIT
tcp4       0      0  shadow.http            puma.drama.uga.e.61516 FIN_WAIT_2
tcp4       0      0  shadow.http            puma.drama.uga.e.61515 FIN_WAIT_2
tcp4       0      0  shadow.http            puma.drama.uga.e.61514 FIN_WAIT_2
tcp6       0      0  localhost.49690        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            122.80-203-227.n.58368 TIME_WAIT
tcp4       0      0  shadow.http            122.80-203-227.n.58367 TIME_WAIT
tcp6       0      0  localhost.49689        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            user-12ldtsa.cab.2106  FIN_WAIT_2
tcp4       0      0  shadow.http            user-12ldtsa.cab.2105  TIME_WAIT
tcp6       0      0  localhost.49688        localhost.http         TIME_WAIT
tcp6       0      0  localhost.49687        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            83-71-110-149.b-.50004 FIN_WAIT_2
tcp6       0      0  localhost.49686        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            83-71-110-149.b-.50003 FIN_WAIT_2
tcp4       0      0  shadow.http            a157.thegrid.org.63608 TIME_WAIT
tcp4       0      0  shadow.http            a157.thegrid.org.63577 TIME_WAIT
tcp4       0      0  shadow.http            a157.thegrid.org.63309 TIME_WAIT
tcp4       0      0  shadow.http            a157.thegrid.org.63113 TIME_WAIT
tcp4       0      0  shadow.http            a157.thegrid.org.62666 TIME_WAIT
tcp4       0      0  shadow.http            a157.thegrid.org.62533 TIME_WAIT
tcp4       0      0  shadow.http            a157.thegrid.org.62139 TIME_WAIT
tcp4       0      0  shadow.http            a157.thegrid.org.61872 TIME_WAIT
tcp4       0      0  shadow.http            208-37-229-130.d.59685 TIME_WAIT
tcp4       0      0  shadow.http            208-37-229-130.d.59684 TIME_WAIT
tcp4       0      0  shadow.http            neraln4.nera.com.36758 TIME_WAIT
tcp4       0      0  shadow.http            neraln4.nera.com.36752 TIME_WAIT
tcp4       0      0  shadow.http            26.138-pool-xdsl.64897 TIME_WAIT
tcp4       0      0  shadow.http            a157.thegrid.org.60233 TIME_WAIT
tcp4       0      0  shadow.http            cpe-72-231-29-14.1335  TIME_WAIT
tcp4       0  13567  shadow.http            cpe-72-231-29-14.1334  FIN_WAIT_1
tcp6       0      0  localhost.49685        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            26.138-pool-xdsl.64896 TIME_WAIT
tcp4       0  13567  shadow.http            cpe-72-231-29-14.1327  FIN_WAIT_1
tcp4       0      0  shadow.http            66-192-47-2.stat.10672 TIME_WAIT
tcp4       0      0  shadow.http            cpe-72-231-29-14.1326  TIME_WAIT
tcp4       0      0  shadow.http            66-192-47-2.stat.10648 TIME_WAIT
tcp4       0  14946  shadow.http            neraln4.nera.com.36570 FIN_WAIT_1
tcp4       0      0  shadow.http            201-209-111-121..2385  TIME_WAIT
tcp4       0      0  shadow.http            201-209-111-121..2384  TIME_WAIT
tcp4       0      0  shadow.http            201-209-111-121..2383  TIME_WAIT
tcp4       0      0  shadow.http            crawl-66-249-66-.63299 TIME_WAIT
tcp4       0      0  shadow.http            201-209-111-121..2382  TIME_WAIT
tcp4       0      0  shadow.http            201-209-111-121..2381  TIME_WAIT
tcp4       0  25307  shadow.http            63.98.2.50.40403       FIN_WAIT_1
tcp6       0      0  localhost.49684        localhost.http         TIME_WAIT
tcp6       0      0  localhost.49683        localhost.http         TIME_WAIT
tcp6       0      0  localhost.49682        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            201-209-111-121..2379  TIME_WAIT
tcp4       0      0  shadow.http            201-209-111-121..2378  TIME_WAIT
tcp6       0      0  localhost.55330        localhost.http         TIME_WAIT
tcp4       0      0  localhost.55329        localhost.10025        TIME_WAIT
tcp4       0      0  shadow.http            pool-72-85-58-22.2949  TIME_WAIT
tcp6       0      0  localhost.65534        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            pool-72-85-58-22.2948  TIME_WAIT
tcp6       0      0  localhost.65533        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            cable-66-206-243.54910 TIME_WAIT
tcp4       0      0  shadow.http            201-209-111-121..2373  TIME_WAIT
tcp6       0      0  localhost.65532        localhost.http         TIME_WAIT
tcp6       0      0  localhost.65531        localhost.http         TIME_WAIT
tcp6       0      0  localhost.65530        localhost.http         TIME_WAIT
tcp6       0      0  localhost.61679        localhost.http         TIME_WAIT
tcp6       0      0  localhost.61678        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            241.236.8.67.cfl.2936  TIME_WAIT
tcp6       0      0  localhost.61677        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            241.236.8.67.cfl.2935  TIME_WAIT
tcp6       0      0  localhost.61676        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            lj611687.inktomi.54788 TIME_WAIT
tcp6       0      0  localhost.61675        localhost.http         TIME_WAIT
tcp6       0      0  localhost.61674        localhost.http         TIME_WAIT
tcp6       0      0  localhost.61673        localhost.http         TIME_WAIT
tcp6       0      0  localhost.61672        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            cable-66-206-243.50558 TIME_WAIT
tcp4       0      0  shadow.http            cable-66-206-243.50302 TIME_WAIT
tcp4       0      0  shadow.http            cable-66-206-243.49534 TIME_WAIT
tcp4       0      0  shadow.http            cable-66-206-243.49278 TIME_WAIT
tcp4       0      0  shadow.http            cable-66-206-243.53118 TIME_WAIT
tcp6       0      0  localhost.61671        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            lj611235.inktomi.57285 TIME_WAIT
tcp6       0      0  localhost.61670        localhost.http         TIME_WAIT
tcp6       0      0  localhost.61669        localhost.http         TIME_WAIT
tcp6       0      0  localhost.61668        localhost.http         TIME_WAIT
tcp6       0      0  localhost.61667        localhost.http         TIME_WAIT
tcp6       0      0  localhost.61666        localhost.http         TIME_WAIT
tcp4       0      0  shadow.http            71-15-122-53.dhc.4922  TIME_WAIT
tcp4       0      0  shadow.http            cable-66-206-243.64382 TIME_WAIT
tcp4       0   2706  shadow.http            71-15-122-53.dhc.4916  FIN_WAIT_1
tcp4       0      0  shadow.http            cosiwjmo.intelli.1212  TIME_WAIT
tcp4       0      0  shadow.http            cosiwjmo.intelli.1211  TIME_WAIT
tcp4       0      0  shadow.http            71-15-122-53.dhc.4914  TIME_WAIT
tcp4       0   7094  shadow.http            adsl-69-236-189-.3296  FIN_WAIT_1
tcp4       0  11538  shadow.http            adsl-69-236-189-.3295  FIN_WAIT_1
tcp4       0  13240  shadow.http            ovpn02.oma.ha-so.2752  FIN_WAIT_1
tcp4       0  13241  shadow.http            ovpn02.oma.ha-so.2751  FIN_WAIT_1
tcp4       0  12308  shadow.http            xd839143d.ip.e-n.54799 FIN_WAIT_1
tcp4       0  12307  shadow.http            xd839143d.ip.e-n.54801 FIN_WAIT_1
tcp4       0   2444  shadow.http            p54B6EB2C.dip.t-.2888  FIN_WAIT_1
tcp4       0   7734  shadow.http            199.64.72.252.43985    CLOSING
tcp4       0   7735  shadow.http            199.64.72.252.43875    CLOSING
tcp4       0      0  shadow.http            fxgate2.nmmu.ac..22064 FIN_WAIT_2
tcp4       0      0  shadow.http            nat1.norscan.com.2103  FIN_WAIT_2
tcp4       0  15887  shadow.http            nat1.norscan.com.2102  LAST_ACK
tcp4       0  15886  shadow.http            nat1.norscan.com.2101  LAST_ACK
tcp4       0      0  shadow.smtp            host-196.218.153.11313 TIME_WAIT
tcp4       0  15957  shadow.http            195-23-115-68.ne.44357 LAST_ACK
tcp4       0  15957  shadow.http            195-23-115-68.ne.43845 LAST_ACK
tcp4       0   4405  shadow.http            host-80-252-1-14.3445  FIN_WAIT_1
tcp4       0      0  shadow.http            cpe-66-108-253-2.1935  FIN_WAIT_2
tcp4       0  14426  shadow.http            x101-247-3.dhcp..2866  FIN_WAIT_1
tcp4       0  14427  shadow.http            x101-247-3.dhcp..2865  FIN_WAIT_1
tcp4       0  15894  shadow.http            h137.188.141.67..1920  LAST_ACK
tcp4       0   2841  shadow.http            p5482F163.dip.t-.1504  FIN_WAIT_1
tcp4       0  12990  shadow.http            h137.188.141.67..1919  LAST_ACK
tcp4       0      0  shadow.http            152.252.119.70.c.36482 FIN_WAIT_2
tcp4       0   8586  shadow.http            152.252.119.70.c.36480 FIN_WAIT_1
tcp4       0   4206  shadow.http            152.252.119.70.c.36478 FIN_WAIT_1
tcp4       0   1228  shadow.http            mnes.lit.auth.gr.1710  FIN_WAIT_1
tcp4       0      0  shadow.http            66-193-254-66.st.28909 LAST_ACK
tcp4       0  14586  shadow.http            66-193-254-66.st.28893 LAST_ACK
tcp4       0  12966  shadow.http            mnes.lit.auth.gr.1705  FIN_WAIT_1
tcp4       0  15979  shadow.http            194.65.5.235.29563     FIN_WAIT_1
tcp4       0  12990  shadow.http            lawlaw.polaris.n.1531  FIN_WAIT_1
tcp4       0   8635  shadow.http            lawlaw.polaris.n.1527  FIN_WAIT_1
tcp4       0      0  shadow.http            mail.cbchs.org.19001   FIN_WAIT_2
tcp4       0      0  shadow.http            mail.cbchs.org.18996   FIN_WAIT_2
tcp4       0      0  shadow.http            mail.cbchs.org.18857   FIN_WAIT_2
tcp4       0      0  shadow.http            24.115.76.113.re.16513 FIN_WAIT_2
tcp4       0      0  shadow.http            mismx01.mediserv.14960 FIN_WAIT_2
tcp4       0      0  shadow.http            PC-MallonM.human.51987 ESTABLISHED
udp4       0      0  shadow.58445           phobos.frii.com.domain
udp4       0      0  shadow.57403           phobos.frii.com.domain
udp4       0      0  shadow.60672           phobos.frii.com.domain
udp6       0      0  localhost.64913        localhost.64913

Unfortunately I was seeding a bunch of torrents before I found-out about it, so some people were likely to not make it to the site initially.

I’ll do a follow-up entry on what I see when the smoke finally clears. :)