Got a new MP3 player – iRiver X20

Lately my 3rd generation 20Gb iPod battery started to die very early. It barely lasted for 2 hours. Changing a battery3rd Generation iPod through Apple’s israeli representatives is not a very nice thing or easy to do and I didn’t want to wait for a replacement do-it-yourself battery from eBay so I’ve decided it was time for a new player.

In addition to that a 3rd gen iPod has only 32Mb of RAM (it optimizes the battery life by loading ~32Mb from the drive every time, thus reducing the need to go back to the hard drive every time) and Apple recommended to have files of 9mb or less for best battery performance. Being the semi audiophile that I am, my newer MP3s are ripped at 320Kbps and I was in the process of re-ripping my older ones for higher quality after setting up my home storage server.

It was getting harder and harder for my poor little iPod to handle these files.

There were a couple of factors I considered while evaluating players (not necessarily in that order):

  • Battery Life – I want a good player with GOOD battery life at least bigger than 12 hours
  • Battery replacement should be easy – this prolongs the player’s shelf life considerably (if the battery is reasonable priced)
  • No stupid proprietary or any other software to load music and/or files to my player – I really hate iTunes and the other programs are simply annoying. Let me just copy god damn it!
  • Linux support with a minimum to just copy music and files.
  • Storage size – The bigger the better
  • Physical size – The smaller the better :-)

Taking all these parameters into account I had to choose if I want to go the hard drive way or the flash way.

I had to make a paradigm shift in my head and stop thinking I can take all of my MP3s with me all the time since they are getting bigger in size and quality and it will affect various parameters of the player itself (physical size, price, fragileness – hard drive based players seems a bit more fragile due to moving parts).

Seeing how my iPod degraded over a period of about 3 years (which is quite good for a hardware device) I’ve decide I want to go with a small, flash based player that has really good sound quality (the iPod is relatively good in that area, but has quite a few contestant in the sound quality department) and is relatively small.

I eventually settled on two devices:

The iAudio i7 is a very small and very good looking. It has 8Gb (there is a new version with 16Gb but it wasn’t available in Israel when I was looking) and its specs say it has 60 hours of play time which is VERY impressive. Even half of that is very impressive.

Both the iRiver X20 and the iAudio i7 has support for MP3, WMA and OGG as well as video support for most format (though some videos might need pre-processing using the player’s PC software or other software before showing correctly on the tiny screen). They have a microphone and the ability to record directly to MP3.They both support the ability to just copy files to them and work without a problem on ALL operating systems including Linux out of the box. I have tested it on Windows Vista, Windows XP, Mac OS X (10.4.9), Linux – Gentoo and Ubuntu 7.10).

Having said that, there are 2 distinct and major advantages to the iRiver X20. The first is that it has a MicroSD slot so I can expand it with a couple of Gb. 1Gb and 2Gb MicroSD cards are relatively cheap and larger sizes keeps on popping in relatively low prices. The second is the fact that the battery is EASILY replaceable. You just pop out the back cover and take it out, the same as you would in your cell phone.

The sound quality is relatively the same in both player. If you have good earphones (and you should have good earphones, otherwise, why invest in a good player… ;-) ), they difference is really small.

I really don’t need a color display (it’s nice to see the cover album but not really necessary) and I’m really not going to watch movies on this tiny screen, but if I’m getting it and it doesn’t hurt overall I say “Why not?” :-)

I eventually went with the iRiver X20 because of the MicroSD expansion and the easily replaceable battery.

Up until now (had it for about a week now) I’m quite pleased with it. The sound quality is good and the battery is holding out great. It even supports Hebrew characters, though its displaying it from left to right, but its still better than the stupid hack you need to do to make an iPod display Hebrew characters in ID3 tags and filenames.

I recommend it for anyone with semi (or full) audiophile tendencies that knows to recognize a good player when they hear one, likes to get enough features and quality per buck and good support on all operating system.

OAuth C# (very) Basic Library

I know it took me a while (sorry) but I had a couple things on my plate.

At first I wanted to release a more complete integration of OAuth within ASP.NET, but that will have to wait to the next time frame I can allocate to work on this.

In the meantime, there is some basic C# code in the OAuth code repository which generates the OAuth signature, which is the most complicated thing to implement in the spec (not that it’s that difficult to implement :-) It’s actually quite easy).

To use the C# code, simply do this (based on the samples in the spec):

using OAuth;

OAuthBase oauth = new OAuthBase();

Uri url = new Uri(“http://photos.example.net/photos?file=vacation.jpg&size=original”);

string signature = oauth.GenerateSignature(url, “dpf43f3p2l4k3l03”, “kd94hf93k423kf44”, “nnch734d00sl2jdk”, “pfkkdhi9sl3r4s00”, “GET”, oauth.GenerateTimeStamp(), oauth.GenerateNonce(), OAuthBase.SignatureTypes.HMACSHA1);

After that you can concatenate the relevant query parameters as well as the signature value to the URL and use it.

If you have a different timestamp and/or nonce generation method, you can inherit and override these methods.

If you require a different hashing algorithm other than the default HMAC-SHA1 or the PLAINTEXT (which MUST be used with a secure communication channel such as HTTPS) you can use the “GenerateSignatureBase” method to generate the signature base string and then call “GenerateSignatureUsingHash” passing the signature base and the hash algorithm you are using.

That’s about it. I’ll update when I’ll have some more integrative code.

Assembling a Linux based Home Storage Server

I’ve decided that I have enough data I want/need to store and backing it up with removable drives and/or burning DVDs is getting less useful each passing day.

I also like to have everything available all the time instead of going through backup DVDs searching for the right one and extract the information from it.

I have a friend who takes too many pictures in RAW format and have greater storage needs than I do but have little time or nerves to mess with installing and configuring something so he got a Thermaltake Muse NAS-RAID.

He is quite pleased with and it works flawlessly at his home adding yet another blue led to an ever growing group of blue led devices blinking in the darkness of his home at night ;-) .

Being me, I cannot bare the thought of using a hardware device that I can’t fully control and can’t fully expand to whatever needs I may or may not have in the future, so I’ve decide to build my own home storage server.

I wanted it to be a bit cheaper than the Thermaltake MUSE box and I actually managed to do that (cost of the drives are the same so the real difference is in the box itself).

The hardware specs I’ve settled for and eventually ordered are:

  • CPU: AMD Athlon 3800+ Dual core (AM2 socket) – It’s an over kill but it was very cheap and was the cheapest CPU in stock at my favorite high end (and high quality) hardware supplier.
  • MoBo: Gigabyte GA-M61SME-S2 – It was either that or a comparable ASUS mobo. This one won because of the price. I really like the quality of Gigabyte and ASUS mobos and have used them for years. The specs are more than fine with a gigabit ethernet card on board and a hardware RAID support of both 0,1,5 (not that I’m going to use them, it’s all software RAID for me baby!)
  • RAM: 512Mb (more than enough)
  • Case: Thermaltake Matrix – It was relatively cheap. It’s Thermaltake (need I say more?!). It’s an aluminum case that is very ventilated and eventually if I want to mount some 3.5″ drives on the 5.25″ spaces using a kit I can get to a total of 8 drives.

The sweet spot for hard drives in terms of gigabytes per buck (at least for me) was the 500Gb drives (more specifically, the Western Digital WD5000AAKS 7200 RPM with 16Mb Buffer) so I’ll grab 3 of those which should be enough for my current needs.

I haven’t decided on the configuration and drive size for the OS itself. It might even be a jump drive as a friend suggested (2 in a RAID 1 configuration). I still need to decide.

The software I’m planning on using is:

  • OS: Ubuntu Server 7.10 (I know it’s due out very soon)
  • RAID Configuration: RAID5 with LVM (I might go for EVMS if I’ll have time to mess with it)
  • File System: XFS (cause I can grow it without unmounting it!)
  • Samba – so that the rest of the machins in the house will have access.

All of this set me back ~$750 (these are Israeli prices for the hardware and some taxes applied in there as well), but I’m quite pleased with the price.

It’s going to be a fun weekend! Muhahahahahaha :-)

OAuth Core 1.0 Final Draft – Implement it while it’s hot

After Chris blogged about it Eran Hammer-Lahav wrote a Beginner’s Guide to OAuth I have little to add.

I will add though that my C# library which I’m promising for quite some time will get out very soon :-) (Sorry for the delay, it’s been hectic around here).