Archive for May, 2006

Open-Source

Thursday, May 11th, 2006

I created an account for myself over at SourceForge. This is a website that many people use to provide open-source software on. Many services are available such as defect tracking, forums, tasks, screenshots, and even some source-control using CVS.

The whole reason I’m looking into SourceForge is that I want to go public with my Automagic Podcaster software soon that I use with Dreamy Audio. I’m looking into a couple of things before I do it. Besides places to host the files and collaborate with others, I also need to look into licensing.

Although I wish to distribute the code as free open-source software, I also need to protect it. I want to allow people to modify it, but I don’t want them to package it up and resell it. I also want credit where credit is due. I also don’t want people to redistribute there modified version without stating what they have modified from the version that they received.

There are many licenses out there. I just have to find the rite one that matches my intent.

I don’t know what to write

Wednesday, May 10th, 2006

This post is pointless. I have no idea what I should write about. Perhaps just writing about it is enough on it’s own accord. It’s as if I found a way to take advantage of writers block by writing about it. Too bad I can’t do it every day though.

It seems that this post is going to be small as well. I ran out of things to say about not knowing what to write.

Sneaky Tags

Tuesday, May 9th, 2006

I’ve started to have a look at the tags in other MP3 sources other then the files that I make myself for DreamyAudio. The purpose is to test the compatability of my software with MP3 files. It’s like throwing a monkey wrench into a running motor. I started off with DarkCompass and found a few bugs that I had fixed quickly.

During this time, I stumbled upon four ID3v2.3+ tags that I hadn’t seen before (PCST, TDES, TGID) in the DarkCompass podcast. I haven’t found any documentation on these tags when googling them, but from the content within, they appear to be related specifically to podcasts. I came upon similar tags (TID, TDS, WFD, TDR) in another podcast that was using ID3v2.2 tags. Thankfully, the 2.2 tags were documented on many sites on the internet.

One thing that grabbed my attention was the content withing the tags of an old podcast that I grabbed off of Odeo. It actually had the URL of my feed in it. I started thinking a bit about this and realized that if I redistributed the MP3 file to friends and such, that eventually it could be traced back to me. It seems that Odeo had dynamically threw in its own ID3 tags that identify my account.

Perhaps in the future, ID3 tags (or any embedded metadata) could become a privacy concern. Imagine if more sensitive data was stored within those tags such as email addresses, phone numbers, or any sort of contact information without your knowledge and you let your friends get a copy and listen to it. Further down the line after friends sending friends sending their friends the MP3 file, someone gets a hold of it who knows how to read all of that data. Now a stranger has your personal data and could sell it or make use of it in malicouse ways.

Ok, so I’m really going over the edge here and blowing a little thing up to infinite proportions. Who cares if the alien Captian Zorgon from the planet TH-87w discovers our planet and designates you as the offender of the careless audio. What if he makes use of a tool specifically crafted for him to carry out his will of removing any source of that aweful sound and targets you just because your email address was in a small tag in the file.

Back to reality. It’s just a little thing really. I’m just a bit unsettled that someone had inserted some information with my account name as part of a url feed into the ID3 tags without my knowing.  Still, maybe it isn’t Odeo that did it.  Maybe iTunes inserted this data in there behind my back when it downloaded the MP3 file from the feed.  If that is the case, iTunes is the culprit for exposing that extra information.

Variable Bitrate

Monday, May 8th, 2006

I’ve been having a go at improving the accuracy and format of my DreamyAudio podcast. The accuracy being the part where I read information embedded within the MP3 files.

I decided to challenge myself and display the playtime for a mp3 file encoded with a variable bitrate (VBR). It was tough just trying to detect that the file had a VBR. It’s actually simple now that I figured it out.  You need to detect if an Xing header is present in the audio data a few bytes after the MPEG header.  The tricky part is figuring out what position those bytes are at in the file.
After figuring out if the file has a VBR, I noticed that the estimated playtime is out of wack. It’s based on a constant bitrate (CBR). So now I’m plagued with a problem.

I assume that I could go ahead and read through the individual audio frames and tally the bitrates from each one and divide it by the number of frames found. The thing is, there are thousands of frames. Perhaps I can find a way to read the first few hundred and give an estimate based on the number of bytes remaining.
Bah. No time for it today.

You will never live to be 18

Sunday, May 7th, 2006

My mother would swear up and down a few times that I would not make it to the age of eighteen. Of course, it was just little things that kids get in trouble for that made her say it. Luckily I made it past the big day in one piece.

So lately I was thinking about milestones with age and such. Being 18 is the big one because you get so many rights and privledges (along with the satisfaction that your mom wasn’t rite for a change). At age 21, you are permitted to legally drink. At age 25, you are able to rent vehicles. At age 35, you can become president. When I become 65, I may be able to retire work as a wal-mart greeter.

As you get older, there seem to be some pretty large gaps. I figured out a new milestone that is comming up. 1 billion seconds. Call me crazy, but I figured it out. On February 3rd of next year (2007), I’ll turn 1,000,000 seconds old at approximately 7:26 and 40 seconds in the morning.

I’m estimating that I was born between five and six in the morning. Either way, my billionth birth second will be that day. So how old is that in years? Thirty one. So if you are
at 31 years of age and about four months from your next yearly birthday, I wish a happy billionth bithsecond to you.

HTTP Conditional Get

Sunday, May 7th, 2006

I was looking into a way to cache my generated pages on the server with PHP. I couldn’t find anything to do it on the server-side, but I did find something to prevent a client from asking for the page via client-side caching.

When a web browser requests a page for the first time, it will save a copy into its local cache. If the person visits the web page a second time, the browser will send the date and time when the page in the local cache was originally retrieved. The server checks the date and responds with either a new page, or a message stating that the page hasn’t been modified since the last time the request was made.

This helps out servers to decrease how much bandwidth is being sent accross the internet. Some of us are charged extra if we go over so many gigabytes per month. It also helps my server from doing unnecessary processing of scripts.

I was working out a way to take care of this. PHP has a method to access the client headers individually called getallheaders(). The problem is that this only works on apache web servers. I’m testing things here at home on an Internet Information Server (iis). Although my website is hosted on apache (I think), I still would rather have support for multiple platforms.

I continued to run through some problems until I found a PHP implimation of conditional get. It was pretty easy to impliment and it worked immediately. The method expects a parameter of a date to compare. I read the date that an MP3 file was last modified and passed it in there. The method did the rest of the work telling the web browser that the information had not changed.

I didn’t realize that this term, “Conditional Get”, was coined for this pattern. The PHP implementation referred to a very good article about it called HTTP Conditional Get for RSS Hackers. It goes into detail about the whole process of it all. It’s amazing how much detail you can get into that amounts to just a few lines of code.

Tomorrow I’ll look more into caching data on the server. I found a method (md5_file()) to get a hash of a file that I can use to see if the files contents have changed since the last time I created cached xml documents and images referring to its contents. Reading all of that data from MP3 files constantly could perhaps have a toll on the servers performance that I want to avoid.

Trademarks

Sunday, May 7th, 2006

I was reading the ID3 podcast magazine with an article about Trademarks (Trademark Law Can Protect Your Podcast’s Name). Although there are some laws protecting the name of your podcast without having to register anywhere, they suggest that you do so with the United States Patent and Trademark office (USPTO).

I was curiouse and had a look. I found a page to help me get started with trademarks. I soon found the link to forms to file for trademarks. A few moments later, I found exactly what I was looking for. I found the trademark filing fees were $325 US to file electronically ($375 by paper). On top of that, you need to file an Alligation of Use form ($100) if someone else uses your mark.

Of course, there are a ton of services that help you file trademarks to make it easier for you. One of them that I had seen charged $159 in addition to the application fee and includes a trademark search. They also claim that a lawyer would charge $1,285.

Why is this trademark office so money hungry? Perhaps if there was a fee of $25 dollars, I would file with the name of my podcast as a trademark. How involved is it, really? Someone clicks a button that says “Approved”. Where is the value of $325 going? What does that itemized list of services that they actually provide look like?

Back in the day when I went to school, we had been told that the simplest way to make a case for your trademark was to put it in an envelope and mail it to yourself. The reason behind this is that the United States Postal Service (USPS) would mark it with the place and date that it was received in the system.

When you receive the letter - don’t open it. It gets filed with your important papers and to be opened in court if the need arrises. This helps prove your case that you were using the trademark earlier then someone else and the federal government was used to prove the date. The main rule for trademark laws is that you need to be the first to use it. I think if you can prove that you used the mark earlier then someone else who is using it (even if they registered it), then you win. I could be wrong there.

I guess you could call that system “the poor mans trademark protection”. However, I don’t think you can use the ® symbol after your trademark since it isn’t registered with the USPTO. I wonder if it would be cheaper to register with other governments just so that you could use the ® symbol.

From what I have seen on the internet, you can still use the ™ or SM Symbols as long as you are claiming to have rights to the mark. It is possible that people do this even when those rights may not be valid.

Note: This is not legal advice.

Automagic Podcaster

Saturday, May 6th, 2006

Since my interest in recording my dreams has been renewed, I’ve started fixing up the code to my audio blog. I mainly call it “Automagic Podcaster” due to the fact that all the end-user has to do is upload MP3 files onto there site. The code reads all the meta data about the MP3 files that have ID3 tags embedded within them.

Some of the MP3 tagging software that I’ve been using lack features such as Unicode support and chapters. I tried doing translations of my dreams in Japanese, Arabic, Chinease, and Portuguise and saving them as lyrics. Most other languages that I translated using google had problems with some characters. I soon fixed that by using html entities to represent the special characters. I sent an email off to the author of a particular piece of software. I’m hoping that maybe he is already working on somethng similar for the next version of his software.

Anyhow, I’m thinking that soon I may just package everything up, clean the code a little, and look into posting it as open source software. I don’t know what all is involved. I’m using a flash applet to read and play XSPF feeds on my pages to play the mp3 files, so I need to contact the author to see if I can distribute it along with my code and what additional requirements there may be.

WS-200S Digital Audio Recorder

Friday, May 5th, 2006

Today my Digital Audio Recorder came in the mail.  It was still in its original packaging.  It was a little smaller then I had thought and very light in its weight. I’m loving this new little device.  Here are some initial observations that matter to me:

  1. Microphone Recording Quality
  2. Device Playback Quality
  3. Transfer Quality
  4. Transfer Speed
  5. Drag & Drop Files in Explorer
  6. Storage Capacity
  7. Easy to use in the dark
  8. Less work to do before posting as MP3 file
  9. No unnecessary software

The quality in both recording and playback on the device itself is great.  Transferring to the computer was easy and fast over USB 2.0. Windows recognized it as a USB mass storage device without the need of any additional software.

Playback on the computer was great.  There were not any scratching sounds or thwaps at all.  This was a common problem on my old W-10 recorder.  I no longer need to use Audacity to remove those annoying sounds.  It’s a good thing to as Audacity doesn’t support the WMA format that it records in.  I did find a small utility (called switch) to convert between many audio formats including MP3 and WMA.  I even found out that it can convert to both CBR and VBR bitrates.  This is something that I needed to have for a small project of mine for reading MP3 files.

The buttons are easier to get a handle on.  I can sense where the record button is in the dark much easier.  It also has a red LED that lights up to let me know that I’m recording. It has a longer rope on the end that I could let it hang from my neck.  I usually just hang the old one on my bed post and fumble to unhook it before I start recording.  This new one lets me record without taking it off the post.  It also detatches with a quick release by squeezing a plastic piece together.  Talk about convenience.

Digital Voice Recorders

Goslings and Road-Rage

Friday, May 5th, 2006

Two geese had some goslings recently and were watching over them at the pond in front of where I work.  The two geese took off with four of there goslings and left three behind since yesterday.  The feathers of the remaining goslings are already starting to turn dark on there backs and they don’t seem to mind people walking up to them.  I just found it a bit interesting to see what appeared to be yellow chicks with big black feet like ducks.  Later in the day, someone else mentioned that the goslings were gone, but that four geese were around the pond now.

One of my coworkers sufferd some road rage.  A woman speed past her and cut in front of her from the merge lane.  Then slowed down and just laid on the horn.  Then she stopped at the light (which was green), got out of her car and told my co-worker to roll down the window.  The co-worker just drove around the womans car.  So this woman chased followed her all the way in.  The guy at the front desk was called to come meet her as she came in. This woman started yelling at him and a few other people around there.  She started really getting into the face of this other person who was in a van asking her to calm down.

Well, that’s just wierd people for you.  I hadn’t seen road-rage go that far before.  That’s just harassment.  My co-worker was concerned that the woman may even be stalking her until she left work for the day.