Archived entries for Tutorials

Good Advice from Russell

To-do lists and blogging don’t mesh. Just write it now.

His advice:

I tell people who are starting to blog to not make a list of things you want to write about, because the simple act of putting the topic down on a piece of paper negates that “blogging urge.” Better to write it out quickly – even a paragraph or two – than jot down a list, because you’ll *never* get back to writing about them.

Right now I have at least 15 posts in some stage of draft. So, I’m going to do my best to let his advice take hold. I hope the urge to blog is stronger than the urges to edit, ponder and rewrite.

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.

Douglas Bowman’s presentation from Web Essentials 2004 in Sydney

Doug Bowman, of Stopdesign and adaptive path, famous for the Blogger and Wired News redesigns, posts his great presentation Pushing Your Limits (And Other Secrets of Designing with CSS) from the Web Essentials 2004 conference in Sydney.

It’s a great presentation, and beautiful too. Whether you know your CSS or not, it’s well worth a click-through.

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.

Improve the Quality and Functionality of the Treo 600 Camera

There are at least two pieces of software that will increase the quality and functionality of the Treo 600 camera.

The first is qset, which allows you to modify the compression ratio used when saving your photos. Treo photos are stored in JPG format, which is a lossy format. By default, the Treo uses a compression/quality factor of 20, which results in files weighing approximately 20kb. Using qset, you can specify a factor up to 99. Any increase beyond 20 will be immediately noticeable, with 99 generating photos up to about 200kb. (I don’t know what scale this quality factor is on.)

I definitely recommend this piece of software. After you’ve added it, launch it from your apps menu and enter a new number. I recommend 90. With this new number added — which is a low-level system preference — all photos will be at the new quality.

The second program is called Pickem. Pickem provides quick sharing of photos as attachments, and more seamless web sharing, but it’s two other features are more noteworthy. First, it provides zoom functionality. Pressing “z” while in picture-shooting mode toggles the zoom mode. It’s digitial zoom not optical, of course, but it still helps in certain situations. Second, many users have suffered from the ‘blue dots of death’ problem that plagues the Treo 600’s camera. Pickem cures that problem.

If you’re using Pickem, it can exist in parallel with Pictures the default camera program. You can remap your launcher buttons to always use Pickem if you want, by going Apps -> Prefs -> Buttons.

Happy shooting!

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.