Archived entries for References

BitTorrent, and BitTorrent Clients

I’m been investing a little time lately trying to learn more about BitTorrent. BitTorrent, a P2P distribution tool, is unique and potentially superior because it allows many people to download the same file without slowing down everyone else’s download. (More: Wikipedia | Y!Search). This background and client review will be a precursor to an entry on BlogTorrent that I’m still working on.

Traditional P2P distribution (Napster, Gnutella, Kazaa) let you download an entire file from another person on the network. BitTorrent is different. With BT, you initially download only a small map of the file. This map describes the many tiny files that comprise the complete file. This map file is called a tracker.

Once you’ve downloaded the tracker, a BitTorrent client takes over. The client coordinates the separate but concurrent downloading of each small file. It always choosing the fastest source. This is a faster and more stable process, capable of handling feature-length movies and other multi-gigabyte files.

Another distinction between BT and more traditional P2P technologies is that with BT, things go faster when more people are on the network. This is the opposite of other technologies, that bogged down on popular files. By definition with BitTorrent, if you’re downloading you’re also potentially uploading. The more people that want a particular file, the more people that have the file. More requesters equals more providers. And more providers equals a faster experience for everybody.

If you’re looking for a BitTorrent Client, I’ve posted personal research from my hours spent looking for the best one. I’m just sharing, I don’t profess to be an expert.


  • Current Version: 3.4.2 (Windows, plus python source code)
  • Release Date: April 4, 2004
  • Download: bittorrent-3.4.2.exe
  • File size: 2.71 MB
  • Homepage: Bram Cohen

Description and notes: Bram Cohen is the creator of BitTorrent, and made this client himself. It’s open source python.

BitTornado (Windows, plus python source code)

Description and notes: According to Slyck’s BT Guide, this is “[c]urrently the most popular and recommended modification to the [pure BitTorrent, above] source code.” The noteworthy tweak is the “ability to control the upload bandwidth used”.

Azureus Java BitTorrent Client (Cross-Platform, including Mac)

Description and notes: Azureus is a powerful, full-featured, cross-platform java BitTorrent client. It “offers multiple torrent downloads, queuing/priority systems (on torrents and files), start/stop seeding options and instant access to numerous pieces of information about your torrents” and is available in many many languages.

BitComet – a powerful C++ BitTorrent Client (Window)

Description and notes: “BitComet is a powerful, clean, fast, and easy-to-use bittorrent client. It supports simultaneous downloads, download queue, selected downloads in torrent package, fast-resume, chatting, disk cache, speed limits, port mapping, proxy, ip-filter, etc”. I more or less accidentally downloaded this one after desiring more features and a more comfortable look-n-feel that the original BitTorrent Client (by Bram Cohen, above)

(Thanks again to Slyck for info on the first two reviews, as well as background and format of reviews.)


While a few others exist, and are reviewed elsewhere, I think the software above represents the big players, and a wide range of interfaces and features.

I currently use BitComet. I’ll update you as/when that changes. Let me know your experiences and findings, and if you recommend any others.

Parting Note:

In my reading, I found this BitTorrent summary that caught my eye for it’s succinctness:

Bittorrent in a nutshell: A) Get a client, and B) Click on a .torrent link.

How To: Subscribing to Blogs / Feeds

Note: I sent this email to my dad this morning. It’s republished here for two reasons: 1) Hopefully it will be of interest or assistance to somebody else. 2) This is, I guess, the first installment of “how to actually integrate feed reading into your daily online life” series. This one is rough, but I wanted to throw it up as-is to help me bust through my writers block on this subject.

Hey Dad,

I have a blog to recommend (many actually, but we’ll start with this one). John Battelle writes about the search industry, and is very well connected to its pulse. I try to read five or six others that cover the same topic, but when I have to pick just one, it’s his. As with many blogs, it serves as a proxy for it’s like-minded blogs. If something interesting pops up on one, it’s usually echoed or references on the others. Plus, he’s a professional writer and generates lots of unique, insightful content:

The process I use to subscribe to blogs follows:

  1. Have a account
  2. Browse to an interesting site (like or
  3. Click your “Easy Subscribe” bookmarklet from either your Bookmarks Folder or, more commonly, your browsers Links Toolbar.

    (“Bookmarklets” or “favelets” are special links that — generally containing a small bit of Javascript instead of a URL — perform little tasks. As with any bookmark, you simply drag a link to your Bookmarks Folder or Links Bar.) This page has the Easy Subscribe links to drag to your toolbar (depending on browser) and more of a description:

  4. Choose which of the available feeds to subscribe to.
    • Sometimes there will be a “full articles” feed, a “summary” feed and sometimes a “comments” feed. (I always go for the full feed.). Of all the options you’re presented with, this is the only one that really matters since it actually represents different blocks of content.
    • Other times, as seems to be the case with the first two options on, they’re just different technical formats (.xml, .rss, .atom, .rdf). If this is the case then it’s pretty trivial — they’re all basically the same — and you’re safe picking ANY of them.
    • Other times (this is the case with the 3rd and 4th battellemedia options) they are third-party-generated feeds. In this case, these are provided by Technorati and Feedburner. If given a choice, I try to get the official feed from the site itself. But it’s pretty trivial again, and any of the four options will get you the same content.
  5. Enter your preferences (like which folder to store the blog in, notification preferences, descriptions, etc)

That’s it. Pretty soon you’ll be reading scores of feeds like me. (view my blogroll — a blogroll is the term for the list of blogs somebody subscribes to.

Other Ways to Subscribe

If you’re using bloglines but not the Easy Subscribe Bookmarklet you can go directly go to and enter the URL of the site or feed. This is less efficient for me, because I have to leave the interesting site to subscribe to it… On the other hand, if you have the bookmarklet on your toolbar you just click-subscribe immediately from any cool site.

Part of the thing with reading blogs is that I’m always discovering interesting new feeds to subscribe to. The easier it is to subscribe the better! The downside is that I sometimes end up with tons and tons of blogs. To combat this, I keep a special folder that new feeds go into as a form of initial probation: “Blogs I’m Considering”. If I continue to be interested in that feed on the next weeks, it gets upgraded to it’s rightful place in my personal hierarchy of feeds.

OR, If you prefer to read your feeds on you can go to and enter the URL of the feed or site. After adding it, it’ll show up on your personal My Yahoo page.

CSS Hack vs CSS Filter

I was in the midst of some late-night coding. Well, not really late-night I guess. Let me rephrase.

It was 10:30pm and I was just getting started with some nighttime coding. I was searching for something, and ended up reading a july 2003 evolt post. In it, PPK describes the difference between CSS Hacks and CSS Filters. I’ve read tons about each, but this is the first time that I really noticed their definitions.

CSS Hacks
Techniques and syntax that achieve desired results by exploiting a bug in a particular browsers rendering engine.
CSS Filters
Techniques and syntax that achieve desired results by exploiting a feature that a particular browsers rendering engine does not yet support.

MIME Type Test Suite

I pointed to Juicy Studio’s article It’s all in the MIME a few days ago in my mini-blog. Well, Gez Lemon, the author of Juicy Studio, follows that up with some MIME Type Test Suites.

Did you notice the shameless plug for my Mini-Blog? Good. Enjoy it. (The 8 most recent posts to my mini-blog are included in the right column on my main blog.)

Why have a mini-blog? What’s the difference? Who’s idea was it? First of all, it wasn’t my idea. I remember noting it first at my friend Ernie’s blog, but it’s pretty common and you’ll find something similar at mezzoblue and even Digital-Web’s What’s New area.

Why have a mini-blog? The idea it to be able to quickly blog lots of things, without diluting the quality of the main blog. My mini-blog is hosted for free by bloglines. I read most of my feeds at Bloglines (it’s my recommended RSS Aggregator). Their integrated publishing/blogging capabilities make it trivial to blog things of interest without breaking stride. Instead of writing a long entry of for this blog, I can just quickly and effortlessly flag things of interest and they show up in my mini-blog.

Anyways, I hope this will allow me to publish even more content, and that you find it interesting.

Now, go get a free Bloglines account, I can’t recommend it enough!

The Behavior Layer – Unobtrusively

I’ve been working on a framework called Layered Semantic Markup for I guess a few years now. While I spend most of my time considering the Structural Layer (Content, aka HTML) and the Presentation Layer (CSS), there is a third layer: Behavior Layer (scripts and the DOM). Having stable and appropriate Content and Presentation layers are helpful before one can appropriately address the Beharior Layer, which is why I’ve spent my time as I have.

A foundational idea of Layered Semantic Markup is Accessibility (and not just in the Section 508 of Accessibility for indivisuals with disabilities). Content should be accessible to ALL. Content should be available without Presentation. Presentation should be available without Behavior. In other words, each can only reach their potential (and some would argue bare minimum) if they are isolated and independent.

I don’t want my snazzy Javascript DHTML behaviors (which makes my navigation more efficient to desktop computer users) to make my navigation unusable to cell phone browsers. With a nod to “One man’s treasure is another man’s trash”, what’s good for one user may be detrimental to another.

With this in mind, take a look at this great tutorial on how to write an Unobstrsive Behavior Layer, or as the author brands it, “Unobtrusive Javascript

Javascript is a wonderful tool to enhance the usability of web sites. It is the extra layer above the mark-up ‘what is this text’ and the CSS ‘how should it be displayed’. Javascript adds a new dimension, the ‘how should this element behave’.

On the following pages we will discuss and see how we can use Javascript, but still maintain accessibility. The technique to completely separate Javascript from the other two layers of web development has become commonly named ‘unobtrusive Javascript’, as ‘accessible Javascript’ does not quite cut it. You can have a perfectly separated Javascript and still be totally inaccessible.

Hat tip to little. yellow. different’s mini-blog.

Video of Screen Readers in Action

I suppose I’ve talked about this before, but it came up again at work today:

“Introduction to the Screen Reader” with Neal Ewers of the Trace Research Center is a short 6 minute video demonstrating how screen readers assist people who are blind navigate the web, access the electronic page, and more.

That and more:

If you’re involved in web design or web development, or if you spend time thinking or working on accessibility, it’s well worth your time to watch this and the related videos.

San Francisco, California | Creative Commons By-2.5 License | Contact

RSS Feed. This blog is proudly powered by Wordpress and uses Modern Clix, a theme by Rodrigo Galindez.