<p>If you were running a news site that created a list of 10 top news stories, and you wanted to make tweaks to your algorithm and see if people liked the new top story mix better, how would you approach this? </p>

<p>Simple Click logging in the DB associated with the post entry? </p>

<p>A/B testing where you would show one version of the algorithm togroup A and another to group B and measure the clicks?  </p>

<p>What sort of characteristics would you base your decision on as to whether the changes were better? </p>

[{'answer_id': 68306, 'author': 'tslocum', 'author_id': 1662, 'author_profile': 'https://Stackoverflow.com/users/1662', 'pm_score': 4, 'selected': False, 'text': '<p><a href="http://www.novell.com/products/linuxpackages/opensuse11.1/taglib-sharp.html" rel="noreferrer">TagLib Sharp</a> has support for reading ID3 tags.</p>\n'}, {'answer_id': 68407, 'author': 'mmcdole', 'author_id': 2635, 'author_profile': 'https://Stackoverflow.com/users/2635', 'pm_score': 6, 'selected': False, 'text': '<p><a href="http://www.novell.com/products/linuxpackages/opensuse11.1/taglib-sharp.html" rel="noreferrer">TagLib Sharp</a> is pretty popular.</p>\n\n<p>As a side note, if you wanted to take a quick and dirty peek at doing it yourself.. here is a C# snippet I found to read an mp3\'s tag info.</p>\n\n<pre><code>class MusicID3Tag\n\n{\n\n    public byte[] TAGID = new byte[3];      //  3\n    public byte[] Title = new byte[30];     //  30\n    public byte[] Artist = new byte[30];    //  30 \n    public byte[] Album = new byte[30];     //  30 \n    public byte[] Year = new byte[4];       //  4 \n    public byte[] Comment = new byte[30];   //  30 \n    public byte[] Genre = new byte[1];      //  1\n\n}\n\nstring filePath = @"C:\\Documents and Settings\\All Users\\Documents\\My Music\\Sample Music\\041105.mp3";\n\n        using (FileStream fs = File.OpenRead(filePath))\n        {\n            if (fs.Length &gt;= 128)\n            {\n                MusicID3Tag tag = new MusicID3Tag();\n                fs.Seek(-128, SeekOrigin.End);\n                fs.Read(tag.TAGID, 0, tag.TAGID.Length);\n                fs.Read(tag.Title, 0, tag.Title.Length);\n                fs.Read(tag.Artist, 0, tag.Artist.Length);\n                fs.Read(tag.Album, 0, tag.Album.Length);\n                fs.Read(tag.Year, 0, tag.Year.Length);\n                fs.Read(tag.Comment, 0, tag.Comment.Length);\n                fs.Read(tag.Genre, 0, tag.Genre.Length);\n                string theTAGID = Encoding.Default.GetString(tag.TAGID);\n\n                if (theTAGID.Equals("TAG"))\n                {\n                    string Title = Encoding.Default.GetString(tag.Title);\n                    string Artist = Encoding.Default.GetString(tag.Artist);\n                    string Album = Encoding.Default.GetString(tag.Album);\n                    string Year = Encoding.Default.GetString(tag.Year);\n                    string Comment = Encoding.Default.GetString(tag.Comment);\n                    string Genre = Encoding.Default.GetString(tag.Genre);\n\n                    Console.WriteLine(Title);\n                    Console.WriteLine(Artist);\n                    Console.WriteLine(Album);\n                    Console.WriteLine(Year);\n                    Console.WriteLine(Comment);\n                    Console.WriteLine(Genre);\n                    Console.WriteLine();\n                }\n            }\n        }\n</code></pre>\n'}, {'answer_id': 281381, 'author': 'Matt', 'author_id': 12747, 'author_profile': 'https://Stackoverflow.com/users/12747', 'pm_score': 5, 'selected': False, 'text': '<p><s><a href="http://UltraID3Lib.com" rel="nofollow noreferrer">UltraID3Lib</a>...</s></p>\n\n<p>Be aware that UltraID3Lib is no longer officially available, and thus no longer maintained. See comments below for the link to a Github project that includes this library</p>\n\n<pre><code>//using HundredMilesSoftware.UltraID3Lib;\nUltraID3 u = new UltraID3();\nu.Read(@"C:\\mp3\\song.mp3");\n//view\nConsole.WriteLine(u.Artist);\n//edit\nu.Artist = "New Artist";\nu.Write();\n</code></pre>\n'}, {'answer_id': 281413, 'author': 'Luke', 'author_id': 261917, 'author_profile': 'https://Stackoverflow.com/users/261917', 'pm_score': 9, 'selected': True, 'text': '<p>Thirding <a href="https://github.com/mono/taglib-sharp" rel="noreferrer">TagLib Sharp</a>.</p>\n\n<pre><code>TagLib.File f = TagLib.File.Create(path);\nf.Tag.Album = "New Album Title";\nf.Save();\n</code></pre>\n'}, {'answer_id': 3560409, 'author': 'Daniel Mošmondor', 'author_id': 166251, 'author_profile': 'https://Stackoverflow.com/users/166251', 'pm_score': 2, 'selected': False, 'text': '<p>I wrapped mp3 decoder library and made it available for .net developers.  You can find it here:</p>\n\n<p><a href="http://sourceforge.net/projects/mpg123net/" rel="nofollow noreferrer">http://sourceforge.net/projects/mpg123net/</a></p>\n\n<p>Included are the samples to convert mp3 file to PCM, and read ID3 tags.</p>\n'}, {'answer_id': 26444188, 'author': '0x8BADF00D', 'author_id': 3436418, 'author_profile': 'https://Stackoverflow.com/users/3436418', 'pm_score': 2, 'selected': False, 'text': '<p><a href="http://id3.codeplex.com/" rel="nofollow">ID3.NET</a> implemented ID3v1.x and ID3v2.3 and supports read/write operations on the ID3 section in MP3 files.\nThere\'s also a <a href="https://www.nuget.org/packages/ID3/" rel="nofollow">NuGet package</a> available.</p>\n'}]
['https://Stackoverflow.com/questions/68291', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/281/']