Wherein your movie going host gives a brief update on his experiments with Asterisk, and reviews the mediocre new movie release Team America. Sorry folks, it just wasn’t very funny.
Category Archives: Audioblogs and Podcasting
What R.A.D.I.O. Can Teach Podcasting
There has been an explosion of podcasting stories around, and one of the absolute best that I’ve found so far can be found here. There is lots of good stuff to absorb here, including equipment reviews of radios, tips for producing radio programs, and reviews of public radio programs. I haven’t listened to his podcast yet, but if it is anywhere close to the quality of the rest of his site, we are in for a treat.
Smarter Playlists for iTunes
Here is a little tip that I just figured out. I was trying to use a smart playlist to create a special playlist which contained all of my most favorite daily podcast shows that have arrived in the last three days. The normal smart playlist interface allows you to specify a list of conditions, but they are all connected with either an AND or an OR. For instance, what I wanted to do is create a playlist for all shows added in the last three days, AND is one of ‘Evil Genius Chronicles’ OR ‘Linux Link Tech Show’ OR ‘IT Conversations’.
The trick is to used nested playlists. Create one smart playlist which contains all the shows that you find interesting. Then create a second playlist which specifies that ALL the conditions must be met, and add a rule which is “Playlist is My-Favorites” and another rule which is “DateAdded is in the last three days”. Voila!
I didn’t invent this idea, but I did find it useful, and hope you do too.
Podcast #19
Where your host tries to get in touch with his inner geek, ponders the world of functional programming, and then rambles about VOIP and Asterisk.
- I like Geek News Central. They have begun podcasting too.
- You can learn about Haskell, Ocaml and Standard ML on the web.
- I’m taking advantage of dreamhost.com’s 7th anniversary deal to provide some more server bandwidth for my podcasts. Let me know if you have any difficulties downloading them by sending me email.
- Binary Revolution – The Revolution will be Digitized! — Episode 60 has a nice bit about VOIP and Asterisk.
- The Asterisk Home Page
- A useful VOIP site
- The Darker Side already have a real phone number that you can dial in and leave comments for their show.
mod_bt: making things better for seeders
While digging around, I found out about mod_torrent, a project which appears to be moribund, but also mod_bt: making things better for seeders, which appears to be alive. Both are Apache modules which are supposed to be able to transparently server files via bittorrent. I think I might have to give this a try. I’ll let you know when/if it works and is ready for testing.
More ideas for ipodding clients
Well, my experiments with podcasting are revealing a couple of problems with the current podcasting solutions, and I thought I’d write a couple of them down so that others can comment and/or integrate them into their future developments.
Please, please, please, set the user agent fields in your ipodder requests…
Programmers out there, please set the user agent field in your http request, including a version number and a web address where we can learn more about your client. I’ve had a number of clients who seem to access my podcast directory in a particularly unfriendly way, often repeatedly downloading the same file up to a dozen times. I would like to be able to determine if I am doing something wrong or potentially report a bug to your client, but I can’t if I cannot identify which client you were using.
Be a polite client
Please, use ETag and Last-Modified tags. Try to do something sensible with all status codes that are returned from the HTTP server. In particular, make sure that you act appropriately with redirects, accept status codes like 503 (resource unavailable) and read the suggested Retry-After response code, and handle ranges and partial downloads. Take some time to really make the HTTP transactions processing in your client bulletproof.
Scheduling ipodder updates…
Most ipodder clients now have way of scheduling the times when an ipodder polls and downloads new content. I’m going to put forth the bold suggestion that most of these are actually bad: the reason being that certain intervals are too short to be friendly to the remote site’s bandwidth, and they tend to cluster around the top of the hour, and cluster around certain common hours. I’m beginning to see this fairly clearly in my access logs. What this means is that occasionally my http server is completely idle, and other times people are contending for my bandwidth in trying to download my latest/greatest podcast.
A much more polite system would be for the downloading script itself to pick random times to update, and at infrequent intervals. This would help even out the access patterns at the server, and would make for better download speeds at the client side. If your client properly handles the status code 503, you can even have your client back off and retry (perhaps with exponentially decaying frequency ala Ethernet).
Addendum: It is probably counterproductive to do this with BitTorrent. In that world, you actually want lots of people to collide at the same time, so that you can take maximum advantage of the parallelism available. Perhaps your webserver should deny requests for BitTorrent feeds until it reaches some threshold, and schedule them (perhaps using RetryAfter) to all come back at some later time to create a more efficient Torrent Network.
Integrating functionality to the http server
Some of the above requires cooperation from the http server, so why not integrate the functionality directly into an http server. If you pick a high performance but simple server like thttpd or boa, you could (at least in theory) directly implement throttling, access control and perhaps even P2P functionality like BitTorrent into a single server which would be simpler to setup and to manage.
Just some ideas and hints. Feel free to comment.
Memory Walk 2004, Incredibles Wrap Party and General Network Chaos
Wherein your host has an exhausting Saturday filled with a charity walk, general networking problems of great mystery, and ends the day in a tuxedo for The Incredibles wrap party.
Other links of interest from the show:
- Ben Gross sent me a nice email.
- The Linux Link Tech Show is a great show, and they’ve been at it for quite some time. I bet now that ipodder exists, they will have a lot more listeners.
Podcasting, Debates and My Weekend
Wherein your host talks once again about the nascent field of podcasting, gives his impressions of tonight’s debate, and describes a busy weekend.
I also mentioned the short story Report on the Barnhouse Effect by Kurt Vonnegut, which is part of the book Welcome to the Monkey House.
More success…
I am the King! I am the King!
Well, my little podcasting video was an enormous success, so enormous in fact that I am left scrambling looking for a better site to host my files. As of three o’clock this afternoon, over 58 people had downloaded at least some part of it, which choked a lot of my available bandwidth. Luckily, my brother runs websites with much greater bandwidth requirements, so I suspect I’ll have an easy solution fairly soon. Till then you can take advantage of Gordon Smith’s generous offer and get it from his mirror site. Hope that helps.
Incidentally, the illustration on the left comes from The Project Gutenberg eBook of Nonsense Books, by Edward Lear, which contains many illustrations and bad limericks. Give it a peek.
Mirrors, anyone?
I’m getting hammered pretty hard by requests for my “podcast.wmv” file. Anyone want to create a mirror for it? Send me an email.
The first rule of podcasting…
I just finished listening to the latest of Dave Slusher’s Evil Genius Chronicles (love the show Dave!) and thought I’d merely give my comments about a topic that he brought up: the common criticism that the only thing podcasting is talking about is podcasting itself, existing only for the self-gratification and aggrandization of people who make podcasts.
To anyone who would like to lodge this particular criticism, I would merely respond with two questions:
- If you are upset with the content of someone’s podcast, why are you bothering to listen to them?
- If you think that you know better about what the format and content of a podcast, why aren’t you bothering to create one for the enjoyment of those who are forced to listen to the rest of us?
Podcasting, as exciting as it is to some of us, is essentially still an experiment. There are lots of things that need to be done to streamline the creation, distribution and consumption of podcast feeds. People have good ideas, and are using the bootstrapped version of this medium to distribute these ideas so that the evolution of this idea can proceed rapidly. If you’d like to criticize, perhaps you should do so by example: by writing the software and creating the podcasts that shame the rest of us into doing better, or shine light on areas of darkness that we have not yet explored.
Dave seemed to be a bit angry, I’m just amused. People sometimes ask me why I build telescopes when I could just go buy one. If someone asks you that question, there is likely to be no answer that you can give them. Similarly, if someone thinks that podcasting sucks, well, then tell them to feel free to ignore it. Time will unfold and show us one of two outcomes:
- Podcasting emerges as an innovative, important new style of media, and they finally catch the trailing edge of its importance, or
- We are all deluded, and it’s just a flash in the pan phenomenon of no significance.
I can take being wrong a whole lot easier than I can take the knowledge that I had the opportunity to participate in some small way to the propagation of a cool new idea and I let it slip by because some people thought it was dumb.
Podcasting Video
During my last audio podcast, I promised that I was going to make a short video showing how I record my audiopodcast sessions, and here is the resulting video, encoded in as a Windows Media file. It runs for 6:42, and is about 10Mbytes in size. (Normally, I would use a more standard format like MPEG2, MPEG4 or DivX, but the Windows Media Encoder that I used encodes to this format by default, and heck, this is for people running Windows…)
This short video shows how I load my bumper music, run Audacity, and how I adjust the various Audio Properties to achieve the enormously high sound quality (not to mention the wry humor and sparkling wit) that have been the trademarks of BrainWagon Radio for nearly three weeks. Enjoy! If you have any questions or suggestions, try dropping me an email. Thanks.
Fight Club, Stark Effect, VP Debates and Stair Dismount
Wherein your host describes his future plans for drawing up some useful information for other podcasters, configures BitTorrent, plays far too much with Stair Dismount, plays some unusual music tracks by Stark Effect, and talks about the gaff by Dick Cheney during the debates yesterday.
Victim of your own podcasting success?
I passed another minor milestone: according to my script which peruses my http logfiles for downloads of my podcasts, over 100 unique IP addresses have accessed at least one of my audio podcasts. Kudos to me! Long live the king!
But success comes at a price: I host my webpages on my home machine (ssh, don’t tell anyone) and occasionally in the last week, I’ve noticed that I can no longer get any work done on my home machines because the uplink speed of my cable modem becomes saturated. Even my son has noticed this: I suspect that this was the cause of at least one mysterious “power outtage” on my webserver.
The problem is throttling: uplink for my home network is nominally about 300Kbits/second, or roughly 28Kbytes/second. This means that the average 10Mbyte podcast (mine have run a bit longer than this, but this is a back of the envelope calculation) takes about six minutes to download, running my uplink flat out. This means that about 10 people per hour can get my podcasts, or about 250 per day. Probably once the listeners reach half that amount, it probably means that my network uplinks are saturated over half the time, and it will be impossible for me to use my network for any other task. So I’ll be watching my logs to see how close I am to getting to this point.
But let’s imagine for a second that you don’t reach this point, and stabilize at some smallish number of subscribers, well within the capacity of your network pipes. How can you help reserve some of your total bandwidth to make sure you can get access to your machines without h-a-v-i-n-g t-o w-a-t-c-h c-h-a-r-a-c-t-e-r-s c-o-m-e o-u-t 1 p-e-r s-e-c-o-n-d?
Well, I figured out a way.
On yesterday’s blog, I mentioned that I was trying to figure out a way to throttle the bandwidth used by Apache to send mp3 files so that some guaranteed headroom would be available for things like ssh. Years ago, I ran thttpd, the throttling http server written by Jef Poskanzer. It was cool for many reasons (small size, fast, portable, easy to configure and secure) but had one unique feature: you could specify a file of regular expression patterns and a maximum and minimum bandwidth that you wanted the server to dedicate to files which matched that URL. While thinking aloud on my blog, I wished that there was similar functionality in Apache. I run WordPress as my weblog, which requires PHP and that’s something thttpd can’t handle, at least without experimental patches.
But then I realized there really was a simpler solution: use Apache to serve my weblog, and thttpd to serve mp3 files.
To make the idea more concrete, I store all my brainwagon.org audio files in a particular directory, which can be referenced as https://brainwagon.org/audio, so my enclosure url’s all look like https://brainwagon.org/audio/2004-10-04.mp3. Let’s imagine that I change the URL to https://brainwagon.org:8080/audio/2004-10-04.mp3, and run thttpd to serve the same files. Now, I can create a very simple throttle file:
# Slow down the download of mp3 files to keep from # choking our uplink. # **.mp3 20000 # 20K per second, even locally.
From the thttpd documentation:
Throttling is implemented by checking each incoming URL filename against all of the patterns in the throttle file. The server accumulates statistics on how much bandwidth each pattern has accounted for recently (via a rolling average). If a URL matches a pattern that has been exceeding its specified limit, then the data returned is actually slowed down, with pauses between each block. If that’s not possible (e.g. for CGI programs) or if the bandwidth has gotten way larger than the limit, then the server returns a special code saying ‘try again later’.
The minimum rates are implemented similarly. If too many people are trying to fetch something at the same time, throttling may slow down each connection so much that it’s not really useable. Furthermore, all those slow connections clog up the server, using up file handles and connection slots. Setting a minimum rate says that past a certain point you should not even bother – the server returns the ‘try again later” code and the connection isn’t even started.
Cool!
Now, the maximum amount of bandwidth used by serving mp3 files will be 20Kbytes/sec, or roughly 70% of my total bandwidth. This should leave enough headroom for my interactive sessions to remain snappy. The headroom means that the download will take about eight minutes instead of only six, but we never max out the channel.
I’ll probably start serving my files this way beginning with my next audio post.
Engadget on Podcasting
Engadget has a nice article on getting and making podcasts. It’s mostly Mac-centric, but still could be of use to others.