<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4295847628703168438</id><updated>2011-11-27T16:16:33.433-08:00</updated><category term='id3v2.2'/><category term='sandbox'/><category term='flash'/><category term='last.fm'/><category term='google chrome security bug incognito'/><category term='id3v2'/><category term='id3'/><category term='iTunes'/><category term='logo last.fm'/><category term='Apple'/><category term='security'/><category term='PBKDF2 login bsd source global settings'/><title type='text'>s3mp blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-2872789816046971179</id><published>2009-07-12T19:19:00.000-07:00</published><updated>2009-08-18T12:39:41.158-07:00</updated><title type='text'>Progress update</title><content type='html'>When I started writing s3mp, I wrote it because I wanted to be able to access my music whenever I was in front of a computer and a browser.  Once it reached the point where it basically did that with all the features I want (searching by tag is more important to me than playlists), development slowed.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But that's no excuse.  Here's the current todo list:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Fix the bug where an mp3 starts downloading, but not playing.  Why this happens is a bit of a mystery.  The library that comes with Flex has is supposed to send notifications when a sound's downloading or it's ready for playing.  S3mp gets the download progress notification, but never one indicating it's ready to play.&lt;/li&gt;&lt;li&gt;Add seek functionality.  The Flex library doesn't support getting the total length on an mp3.  In order to get it, I need to manually read the first few KB of the file and figure out its size and bitrate, and then calculate...unless it's variable bitrate.  In that case, I need to search for either a LAME or XING header that holds the length of the song.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;UI cleanup and features.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-2872789816046971179?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/2872789816046971179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=2872789816046971179' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/2872789816046971179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/2872789816046971179'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2009/07/progress-update.html' title='Progress update'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-2625650788891999489</id><published>2008-10-24T23:16:00.000-07:00</published><updated>2009-01-14T15:56:19.111-08:00</updated><title type='text'>SSL Man in the Middle Attack: What's it look like?</title><content type='html'>&lt;a href="http://spaf.cerias.purdue.edu/"&gt;Security experts&lt;/a&gt; tell us tell us that sending credit card numbers across the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;internet&lt;/span&gt; is safe; it's more likely that an employee on the other end could take it or your wallet is stolen than the NSA breaking the encryption that protects your personal information.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So your information is safe from &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;eavesdropping&lt;/span&gt;, but what about a &lt;a href="http://en.wikipedia.org/wiki/Man_in_the_middle_attack"&gt;man in the middle attack&lt;/a&gt;, an attack where someone pretends to be, say, Amazon.com?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;browser&lt;/span&gt; lets you know.  Instead of seeing a page you're accustomed to, you'll see a big warning about an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SSL&lt;/span&gt; certificate being bad.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Developing s3mp, I use a tool called &lt;a href="http://www.parosproxy.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Paros&lt;/span&gt; &lt;/a&gt;that lets me look at encrypted web traffic by doing just that attack.  Whenever I debug, I get a warning, making sure I know that someone between me and Amazon is looking at what I'm doing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's what &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Firefox&lt;/span&gt; 3, Chrome, and Internet Explorer 7 display so that if you encounter the message you know what's going on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Firefox&lt;/span&gt; stops you in your tacks with a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;popup&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;UI&lt;/span&gt; designers call this a "&lt;a href="http://en.wikipedia.org/wiki/Modal_window"&gt;modal window&lt;/a&gt;").  On one hand, it gets your attention, but on the other, it stops you from even closing another &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;webpage&lt;/span&gt; as your boss is about to look over.  The icon isn't &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;particularly&lt;/span&gt; informative and the text is loaded with &lt;a href="http://en.wikipedia.org/wiki/Technobabble"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;technobabble&lt;/span&gt;&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/_M5Mk0H_7Wig/SQK7qoVgc8I/AAAAAAAAAC4/xHqGPfwn3tU/s320/ff_mitm.png" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 233px;" alt="" id="BLOGGER_PHOTO_ID_5260973655778685890" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Chrome lets you know the connection isn't secure with huge type and a red border (though for people with color blindness (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;protanopia&lt;/span&gt; or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;deuteranopia&lt;/span&gt;), the red border is more of a brown).  To the designers' credit, it says "an attacker may be trying to intercept your communications" and "you should not &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;proceed&lt;/span&gt;."&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_M5Mk0H_7Wig/SQK75xsw9qI/AAAAAAAAADA/fdc4lY2U5vY/s1600-h/chrome_mitm.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 245px;" src="http://4.bp.blogspot.com/_M5Mk0H_7Wig/SQK75xsw9qI/AAAAAAAAADA/fdc4lY2U5vY/s320/chrome_mitm.png" alt="" id="BLOGGER_PHOTO_ID_5260973915990193826" border="0" /&gt;&lt;/a&gt;Internet Explorer shows a page that looks much like the normal error page, but with a red security shield.  Like Chrome, it has a human-readable description of what happened, stating that this "might be an attempt to fool you or intercept any data you send to the server."  It &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;recommends&lt;/span&gt; not &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;proceeding&lt;/span&gt;, and unlike Chrome, I always find myself hitting the button that doesn't load the page.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_M5Mk0H_7Wig/SQK8JpsgN1I/AAAAAAAAADI/U2PU_ULjOu4/s1600-h/ie7_mirm.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 250px;" src="http://3.bp.blogspot.com/_M5Mk0H_7Wig/SQK8JpsgN1I/AAAAAAAAADI/U2PU_ULjOu4/s320/ie7_mirm.png" alt="" id="BLOGGER_PHOTO_ID_5260974188719519570" border="0" /&gt;&lt;/a&gt;&lt;div&gt;Overall, I like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;Chrome's&lt;/span&gt; warning the most, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;IE's&lt;/span&gt; second, and hate &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Firefox's&lt;/span&gt;.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Firefox&lt;/span&gt; just doesn't explain what happened very well, the modal dialog is obnoxious, there isn't a "run away" button, and ignoring it is a pain.  IE came in a close second, but I really like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;Chrome's&lt;/span&gt; red border.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-2625650788891999489?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/2625650788891999489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=2625650788891999489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/2625650788891999489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/2625650788891999489'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/10/ssl-man-in-middle-attack-whats-it-look.html' title='SSL Man in the Middle Attack: What&apos;s it look like?'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_M5Mk0H_7Wig/SQK7qoVgc8I/AAAAAAAAAC4/xHqGPfwn3tU/s72-c/ff_mitm.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-5268600473138814317</id><published>2008-10-24T09:07:00.000-07:00</published><updated>2008-10-24T09:13:43.190-07:00</updated><title type='text'>Support for large buckets (1000+ files) added</title><content type='html'>s3mp now supports buckets with a large number of files, although support is still in beta.  It required a re-write of "List" code, so the tag cache has also been rolled back to beta.  The color scheme changed, but this was just an experiment, so it's not permanent (but don't expect it to be changed before parts of the UI are redesigned).&lt;br /&gt;&lt;br /&gt;After a little more testing and configuring error handling, the next thing on the todo list is getting seek to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-5268600473138814317?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/5268600473138814317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=5268600473138814317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/5268600473138814317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/5268600473138814317'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/10/support-for-large-buckets-1000-files.html' title='Support for large buckets (1000+ files) added'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-1886904941193580904</id><published>2008-09-28T00:59:00.000-07:00</published><updated>2008-09-28T01:17:05.720-07:00</updated><title type='text'>Tag caching and progress slider</title><content type='html'>&lt;div&gt;First, what's the tag cache?  s3mp is, at least for now, almost entirely client-side, so to get the meta data (artist, song title) of an mp3, it downloads a small initial chunk and a smaller final chunk from the file, looks for tags, and if it finds them, stores them.  The process of looking takes a while, but if all the tags are already stored in a handful of files, the process is a lot faster.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I changed how tag caching is handled.  Instead of letting the user choose a bucket to store tags in, s3mp now (once this beta is released) automatically stores a tag cache (with intentionally obvious names like &lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;.s3mp_tag_cache.0.xml.z&lt;/span&gt;) for the all mp3s in a given bucket in that same bucket.  I had an ugly dilemma to sort through on this one.  A tag cache for each bucket is easy for both me and the user, and loading a single bucket, or making it public to share, works as expected.  The problem is in how it's handled when the user doesn't have permission to write in that bucket.  All of the solutions put a strange burden on the user to pick, with foresight, where to put the tags.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For now, if you want to use the tag cache, make sure you have write access on the bucket.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://4.bp.blogspot.com/_M5Mk0H_7Wig/SN88RnDIMTI/AAAAAAAAACY/5GgwaWKuD-w/s200/progressslider.png" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" border="0" alt="" id="BLOGGER_PHOTO_ID_5250981963774832946" /&gt;&lt;div&gt;The Progress Slider is making a lot of, um, progress.  The UI basically works, it just needs keyboard support, and the progress portion already indicates progress downloading a song.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-1886904941193580904?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/1886904941193580904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=1886904941193580904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/1886904941193580904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/1886904941193580904'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/09/tag-caching-and-progress-slider.html' title='Tag caching and progress slider'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_M5Mk0H_7Wig/SN88RnDIMTI/AAAAAAAAACY/5GgwaWKuD-w/s72-c/progressslider.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-5779141933536231677</id><published>2008-09-10T22:43:00.000-07:00</published><updated>2008-09-11T08:47:42.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google chrome security bug incognito'/><title type='text'>Google Chrome, s3mp, and security</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_M5Mk0H_7Wig/SMix0odiCoI/AAAAAAAAABw/1DNScQHVd7o/s1600-h/s3mp_in_chrome.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_M5Mk0H_7Wig/SMix0odiCoI/AAAAAAAAABw/1DNScQHVd7o/s200/s3mp_in_chrome.png" alt="" id="BLOGGER_PHOTO_ID_5244637283845540482" border="0" /&gt;&lt;/a&gt;Seeing that &lt;a href="http://www.google.com/chrome"&gt;Chrome &lt;/a&gt;was just released, I decided to make sure it works with s3mp, and I'm pleased to say that it does (see screenshot).  That said, when playing with s3mp in Incognito mode, I found a disturbing security hole that allows "cookies" to not only be retained between Incognito sessions, but leak from a regular session to Incognito.&lt;br /&gt;&lt;br /&gt;I said cookies, but I meant Flash &lt;a href="http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary648.html"&gt;SharedObjects&lt;/a&gt;.  They're basically a way for Flash applets to store information locally (s3mp uses them to store "Local Settings").  Unlike cookies, Chrome doesn't flush these from Incognito mode or sandbox them.&lt;br /&gt;&lt;br /&gt;Aside: Adobe has a &lt;a href="http://www.adobe.com/go/52697ee8"&gt;knowledge base entry&lt;/a&gt; on how to manage and disable shared objects.&lt;br /&gt;&lt;br /&gt;I made a proof-of-concept that logs what web pages the user visits using a Flash SharedObject to escape the Incognito sandbox.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://s3mp.s3.amazonaws.com/chromd/Index.html"&gt;Chrom'd&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Using it's easy; go to the main page, then some random combination of Chrom'd pages (page 1, page 2, etc.), then back to the main page, and the main page will display the history.  The "Clear" button removes the cookie from your computer.&lt;br /&gt;&lt;br /&gt;To break out of Incognito mode, go to the &lt;a href="http://s3mp.s3.amazonaws.com/chromd/Index.html"&gt;Chrom'd main page&lt;/a&gt; in an Incognito session.  Browse a few pages, then close the session (or all of Chrome).  Browse to the Chrom'd main page, again, and the Incognito browsing (only Chrom'd pages) history will be shown.  Even better: since SharedObjects are shared across browsers, fire up up IE or explore your way to Firefox and load the page.&lt;br /&gt;&lt;br /&gt;Putting on my black hat, what could be done with this hole?  Nothing that isn't already a problem on other browsers.  One of the more clever applications would be to couple SharedObjects with cookies as a means of detecting whether a user is frequently browses a web page Incognito, then display security related ads to paranoid users.&lt;br /&gt;&lt;br /&gt;Chrome might offer some security features, but history, cache, and cookies are only part of security.  As plugins become required for the web experience, without plugin-aware security, Chrome will be one step behind web developers, and further behind black hats.&lt;br /&gt;&lt;br /&gt;Now... Where did they hide the "disable flash" button?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-5779141933536231677?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/5779141933536231677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=5779141933536231677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/5779141933536231677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/5779141933536231677'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/09/google-chrome-s3mp-and-security.html' title='Google Chrome, s3mp, and security'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_M5Mk0H_7Wig/SMix0odiCoI/AAAAAAAAABw/1DNScQHVd7o/s72-c/s3mp_in_chrome.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-4446187253224132958</id><published>2008-08-17T00:39:00.000-07:00</published><updated>2008-08-18T23:38:34.491-07:00</updated><title type='text'>Small website changes</title><content type='html'>I made a few changes to the UI, today.  They were mainly aimed at cleaning up the About page, but through the magic of CSS, the app page changed, too.  I narrowed the whole layout and put the page content in a white box.  Hopefully it makes the About page barable on a widescreen monitor.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_M5Mk0H_7Wig/SKfWfaYDq8I/AAAAAAAAABA/2snO8hLyDLc/s1600-h/ui_changes.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_M5Mk0H_7Wig/SKfWfaYDq8I/AAAAAAAAABA/2snO8hLyDLc/s400/ui_changes.png" alt="" id="BLOGGER_PHOTO_ID_5235388926986005442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More interestingly, I designed the song scroller.  Flex doesn't have a scroller+progressbar built-in, so I worked on one that matches the feel of Flex's default toolkit.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_M5Mk0H_7Wig/SKfYW4hp70I/AAAAAAAAABI/Fk4t6QtyU64/s1600-h/stream_scroller.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_M5Mk0H_7Wig/SKfYW4hp70I/AAAAAAAAABI/Fk4t6QtyU64/s400/stream_scroller.png" alt="" id="BLOGGER_PHOTO_ID_5235390979483758402" border="0" /&gt;&lt;/a&gt;I think I'm so pleased with how it turned out that I'm going to have to redesign the volume control, too. It's amazing how many places I drew inspiration (&lt;cough&gt;stole) from for the UI.  The larger play button was from Windows Media Player, and the scoll bar is a combination of the Flex toolkit style (border, suble gradient, button), Gawker's videoModule and Vimeo's loading style, and YouTube's bubble button.&lt;/cough&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-4446187253224132958?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/4446187253224132958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=4446187253224132958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/4446187253224132958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/4446187253224132958'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/08/small-website-changes.html' title='Small website changes'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_M5Mk0H_7Wig/SKfWfaYDq8I/AAAAAAAAABA/2snO8hLyDLc/s72-c/ui_changes.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-7171332115710491934</id><published>2008-08-10T22:16:00.000-07:00</published><updated>2008-08-10T22:24:05.434-07:00</updated><title type='text'>I'm back</title><content type='html'>Sorry for not posting or developing for a while, but I found myself busy with other things (mostly related to wireless networks).  I gave the blog a logo, and I have a few ideas for website reshuffling, but for now, I'm going to focus all new development on a few features that I think are sorely needed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support for buckets with lots (1000+) files&lt;/li&gt;&lt;li&gt;Display information about the song in the "ticker"&lt;/li&gt;&lt;li&gt;Allow seeking though songs&lt;/li&gt;&lt;li&gt;Playlists&lt;/li&gt;&lt;li&gt;Directory support (only a problem in File Mode)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And one of these days, ad a few advertisements.&lt;br /&gt;&lt;br /&gt;I don't have a schedule, but it would be nice if each of those only took a week, but I know I should multiply that number by two if I want to finish on time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-7171332115710491934?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/7171332115710491934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=7171332115710491934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/7171332115710491934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/7171332115710491934'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/08/im-back.html' title='I&apos;m back'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-1301297795491700435</id><published>2008-07-20T14:59:00.000-07:00</published><updated>2008-08-23T12:52:49.497-07:00</updated><title type='text'>Sprint Music Store: "Error M506: Unable to Play Song."</title><content type='html'>A little white ago, I got a Samsung SPH-M620 Upstage phone that has a build in mp3 player.  It included a 32 or 64 mb micro SD card, so initially, I just had a few mp3s on it.  I finally spent $20 for a 2gb card, but when I copied a lot of songs to it, on some, the phone would pause for a second, then say:&lt;br /&gt;&lt;blockquote&gt;Error M506: Unable to Play Song.&lt;br /&gt;file:///memorycard/...mp3&lt;br /&gt;cannot be played.&lt;/blockquote&gt;&lt;br /&gt;But the file was fine; Winamp and Windows Media Player played it just fine.  I did some googling, but just found the problem--no solution.  After a LOT of poking around and reverse engineering, I found out why: id3v4 tags only &lt;span style="font-style: italic;"&gt;sorta &lt;/span&gt;work.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;How to fix it:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Slvr"&gt;There are a few &lt;span style="font-style: italic;"&gt;other&lt;/span&gt; things that cause this&lt;/a&gt; (you'd think error codes would be unique, but no such luck).  Older versions of the "Sprint Music Store" mp3 player have problems with long filenames (32 characters seems to be the approximate limit) and files in the upper 1gb on a 2gb memory card.  The fixes here are short filenames and not storing too many files.&lt;br /&gt;&lt;br /&gt;Onto my problem:&lt;br /&gt;&lt;br /&gt;Windows users: use &lt;a href="http://www.mp3tag.de/en/index.html"&gt;mp3tag&lt;/a&gt; (it's free). Drag all your songs into it, then hit the save button (or File, Save Tag). Even though you didn't change anything, it will rewrite your tags as id3v2.3 tags by default.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;*nix users: use &lt;a href="http://eyed3.nicfit.net/"&gt;eyeD3&lt;/a&gt; (available as audio/py-eyed3 in FreeBSD) to convert tags to id3v2.3.  Run this command in a directory to convert all your mp3s:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:courier new;"&gt;find . -iname "*.mp3" -exec eyeD3 --to-v2.3 {} \;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Basically, use id3v1, id3v2.2, or id3v2.3 tags.  If v2.4 tags are important to you, strip off the TXXX frames.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Technical details behind Sprint's bugs (headaches begin here):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When text encodings (these are used to store non-Latin characters as song names) in an &lt;a href="http://en.wikipedia.org/wiki/Id3"&gt;ID3v2 &lt;/a&gt;(most modern programs store the artist, title, track number, etc. in an "ID3 tag.") are mixed, the parser chokes for no good reason.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Files with only unicode (UTF-16 w/BOM) tags work fine&lt;/li&gt;&lt;li&gt;Files with only ASCII (ISO-8859-1) tags work fine&lt;/li&gt;&lt;li&gt;Files with A,U work fine&lt;/li&gt;&lt;li&gt;Files with U,A work fine&lt;/li&gt;&lt;li&gt;Files with A,U,A work fine&lt;/li&gt;&lt;li&gt;Files with A,U,A,U work fine&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Files with U,A,U don't work with id3v2.4&lt;/span&gt; (but work fine with id3v2.3)&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;For those who like too much information, here's a hex dump of a tag that will cause Error M506, but works fine if the fourth byte (04, indicating ID3 version 2.4) is changed to 03:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;00000000   49 44 33 04  00 00 00 00  10 00 54 49  54 32 00 00  ID3.......TIT2..&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;00000010   00 1D 00 00  01 FF FE 4B  00 69 00 63  00 6B 00 20  .......K.i.c.k.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;00000020   00 53 00 6F  00 6D 00 65  00 20 00 41  00 73 00 73  .S.o.m.e. .A.s.s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;00000030   00 54 50 45  31 00 00 00  13 00 00 01  FF FE 53 00  .TPE1.........S.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;00000040   74 00 72 00  6F 00 6B 00  65 00 20 00  39 00 54 52  t.r.o.k.e. .9.TR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; 00000050   43 4B 00 00  00 05 00 00  00 31 2F 31  32 54 49 54  CK.......1/12TIT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; 00000060   33 00 00 00  13 00 00 01  FF FE 53 00  74 00 72 00  3.........S.t.r.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; 00000070   6F 00 6B 00  65 00 20 00  39 00 00 00  00 00 00 00  o.k.e. .9.......&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Yeah, it's a headache.  Nothing in the id3v2 specs makes frames with differing encodings illegal.&lt;br /&gt;&lt;br /&gt;But that wasn't everything.  There were a bunch of TXXX (user-defined) frames added, and when I tried to add one back into the shortened tag, I got the error, again.  When I switched the version to id3v2.3, it worked fine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Why were reports so random?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What made this a little hard to debug was that people, myself included, found it happening randomly.  Nothing indicted a single cause.  The only solution that was posted was to use iTunes (which readers of my blog already know &lt;a href="http://s3mp.blogspot.com/2007/11/itunes-2.html"&gt;uses obsolete&lt;/a&gt;, but seemingly compatible tags).  Playing around with Winamp, I noticed that tags get rewritten when changes are made, even if the change wasn't to other fields, and Winamp uses id3v2.3 (but can read 2.4).  If the tag was edited in Winamp, it will work with Sprint's mp3 player.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-1301297795491700435?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/1301297795491700435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=1301297795491700435' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/1301297795491700435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/1301297795491700435'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/07/sprint-music-store-error-m506-unable-to.html' title='Sprint Music Store: &quot;Error M506: Unable to Play Song.&quot;'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-4599804524156408826</id><published>2008-01-28T11:53:00.000-08:00</published><updated>2008-01-28T12:02:18.905-08:00</updated><title type='text'>Website launch</title><content type='html'>It's up!  It's far from perfect, but I thought it was time to get the beta out there; it's been working well, so there was no reason not to release.&lt;br /&gt;&lt;br /&gt;That said, expect bugs and test code everywhere, and the website didn't escape from bugs, either.  IE6 doesn't display it right, but Firefox, Opera, and IE7 do, so it's probably not my fault (just my problem).&lt;br /&gt;&lt;br /&gt;Hopefully I get some &lt;span style="font-style: italic;"&gt;actual features&lt;/span&gt; added, soon.  The deadlines are "whenever," but the priorities are the status display, playlist, and hacked up position seek (hacked up for VBR, pretty close for ABR/CBR).  Next week would be nice, but a month is more realistic.  There are still a few pesky bugfixes I need to work on.  And the plan is to add advertising, so that's somewhere on the list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-4599804524156408826?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/4599804524156408826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=4599804524156408826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/4599804524156408826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/4599804524156408826'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/01/website-launch.html' title='Website launch'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-1118317972846086338</id><published>2008-01-16T23:40:00.000-08:00</published><updated>2008-12-08T16:55:34.766-08:00</updated><title type='text'>Visualization algorithm</title><content type='html'>If you've ever been to MySpace and played a song, you probably saw this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_M5Mk0H_7Wig/R48H8A81BHI/AAAAAAAAAAs/pvTQO7_HE4Q/s1600-h/myspacegeq.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_M5Mk0H_7Wig/R48H8A81BHI/AAAAAAAAAAs/pvTQO7_HE4Q/s400/myspacegeq.jpg" alt="" id="BLOGGER_PHOTO_ID_5156348825991185522" border="0" /&gt;&lt;/a&gt;I wouldn't say it competes with s3mp, but it is a related product.  One thing I wanted to improve was the graphic equalizer.  Not only does it not look good, it's just an animation--it doesn't match up with the music.&lt;br /&gt;&lt;br /&gt;Flash actually can do better.  For &lt;span style="font-style: italic;"&gt;embedded&lt;/span&gt; sound, it can give you equalizer data points--enough to make a real version of what you see above.  For streaming sounds, however, all it offers are left and right levels.&lt;br /&gt;&lt;br /&gt;I implemented a visualization that has a certain resemblance to the s3mp logo.  None of it was particularly hard, and I added a falloff so it looks smoother.  The problem came with music like, oh, Me First and the Gimme Gimmes, where level is pegged at the top.  I tried several things in different combinations, including tacking mean and standard deviation.  So far, the most acceptable results display good levels, but just don't match the music right, since it's based on rolling statistics.&lt;br /&gt;&lt;br /&gt;For now, I'm using a cubic function to remap the levels--grading on a curve, if you will.  I'm not quite satisfied with the results, so I plan on trying a quintic function.  With both, the goal is to make the quiet sounds louder and the loud sounds quieter, while keeping levels in order.&lt;br /&gt;&lt;br /&gt;Technical details aside, there's an important lesson here: for those coders out there who think you won't need math, you're wrong.  I used calculus and statistics for this, and couldn't have done anything without them.  Sometimes, the easy way is good enough, but other times, you really need to know what you're doing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-1118317972846086338?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/1118317972846086338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=1118317972846086338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/1118317972846086338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/1118317972846086338'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/01/visualization-algorithm.html' title='Visualization algorithm'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_M5Mk0H_7Wig/R48H8A81BHI/AAAAAAAAAAs/pvTQO7_HE4Q/s72-c/myspacegeq.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-1165923022305226732</id><published>2008-01-14T23:20:00.000-08:00</published><updated>2008-12-08T16:55:34.971-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='logo last.fm'/><title type='text'>Update</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_M5Mk0H_7Wig/R4xh1g81BGI/AAAAAAAAAAk/XpVPEMoVsvQ/s1600-h/s3mp.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_M5Mk0H_7Wig/R4xh1g81BGI/AAAAAAAAAAk/XpVPEMoVsvQ/s400/s3mp.png" alt="" id="BLOGGER_PHOTO_ID_5155603245438403682" /&gt;&lt;/a&gt;I've been busy moving, so sorry, not much progress, but I have two pieces of cool news:&lt;br /&gt;&lt;br /&gt;s3mp finally has a logo (pictured on right, obviously).  It isn't quite as serious a web 1.0 logos, but it lacks the immaturity that characterizes &lt;a href="http://www.fontshop.com/fontfeed/archives/the-logos-of-web-20/"&gt;web 2.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And the more important news when it comes to a release: I have a last.fm developer key, so the feature can go public without a TOS violation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-1165923022305226732?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/1165923022305226732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=1165923022305226732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/1165923022305226732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/1165923022305226732'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2008/01/update.html' title='Update'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_M5Mk0H_7Wig/R4xh1g81BGI/AAAAAAAAAAk/XpVPEMoVsvQ/s72-c/s3mp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-4948030578841084102</id><published>2007-12-11T00:24:00.000-08:00</published><updated>2007-12-11T00:28:46.435-08:00</updated><title type='text'>Preferences and login modes done</title><content type='html'>Well, as always, almost done.  A few things don't update when they should, but it's generally working.&lt;br /&gt;&lt;br /&gt;Looking at the early inline todo list,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            /* &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;               Todo:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;               * Work with public directories&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;               * Get the rest of the list stuff&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;               * Cookies&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;               * UI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cookies are implemented, the UI was modified, public, private, and shared directories work.&lt;br /&gt;&lt;br /&gt;It's coming together, but there are still a few things missing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-4948030578841084102?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/4948030578841084102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=4948030578841084102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/4948030578841084102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/4948030578841084102'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2007/12/preferences-and-login-modes-done.html' title='Preferences and login modes done'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-6564993813311004054</id><published>2007-11-28T00:36:00.000-08:00</published><updated>2008-08-28T22:28:49.260-07:00</updated><title type='text'>S3mp.org AS3 PBKDF2 library</title><content type='html'>Now available at its &lt;a href="http://code.google.com/p/as3-pbkdf2-lib/"&gt;Google Code project page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-6564993813311004054?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/6564993813311004054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=6564993813311004054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/6564993813311004054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/6564993813311004054'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2007/11/s3mporg-as3-pbkdf2-library.html' title='S3mp.org AS3 PBKDF2 library'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-8453226482115364835</id><published>2007-11-28T00:30:00.000-08:00</published><updated>2007-11-28T00:36:26.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PBKDF2 login bsd source global settings'/><title type='text'>Global settings and PBKDF2 basically done</title><content type='html'>Global settings and the PBKDF2 are basically done.  Global settings needs to jump to the right mode (tag or file).&lt;br /&gt;&lt;br /&gt;As for PBKDF2, I just wrote the function; I haven't used it, yet.&lt;br /&gt;&lt;br /&gt;Since this part of the project might benefit other Amazon S3 applications, I'm releasing the PBKDF2 source code under a BSD license to help other developers, S3 or otherwise, and to show how your account information is protected.  Wikipedia gives a good overview of &lt;a href="http://en.wikipedia.org/wiki/PBKDF2"&gt;PBKDF2&lt;/a&gt;, for those who are interested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-8453226482115364835?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/8453226482115364835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=8453226482115364835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/8453226482115364835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/8453226482115364835'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2007/11/global-settings-and-pbkdf2-basically.html' title='Global settings and PBKDF2 basically done'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-719156552160084362</id><published>2007-11-23T18:54:00.000-08:00</published><updated>2007-11-23T19:09:04.959-08:00</updated><title type='text'>Tag cache making progress</title><content type='html'>The tag cache is very usable when reading existing caches, but there might be a bug in the cache writing function (or the calls leading up to it).  The write code seems to be working, but it isn't plugged into the UI, yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-719156552160084362?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/719156552160084362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=719156552160084362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/719156552160084362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/719156552160084362'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2007/11/tag-cache-making-progress.html' title='Tag cache making progress'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-7038875315262422438</id><published>2007-11-14T21:17:00.000-08:00</published><updated>2007-11-14T21:53:27.467-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='last.fm'/><category scheme='http://www.blogger.com/atom/ns#' term='sandbox'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Last.fm bug fixed</title><content type='html'>The difficult-to-track-down Last.fm bug should be fixed. After hours of looking at debugging output, proxy logs, and packet dumps, it seems the Flash sandbox thought there was a security violation. What made it especially hard was that logging in always worked, so I assumed the bug wasn't with security. Basically http://any.domain.com is allowed, but http://1.2.3.4 isn't. Audioscrobbler provided me with a URL with an IP address.&lt;br /&gt;&lt;br /&gt;Luckily, the URL doesn't seem to change. Reverse DNS gave a reasonable domain name, but it didn't actually resolve. I set a domain under a domain I control to resolve to that IP address. It makes sense that it's fixed, but that shouldn't be a fix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-7038875315262422438?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/7038875315262422438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=7038875315262422438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/7038875315262422438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/7038875315262422438'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2007/11/lastfm-bug-fixed-2.html' title='Last.fm bug fixed'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4295847628703168438.post-4880854157560938648</id><published>2007-11-14T21:16:00.001-08:00</published><updated>2007-11-14T21:53:05.142-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='id3v2'/><category scheme='http://www.blogger.com/atom/ns#' term='iTunes'/><category scheme='http://www.blogger.com/atom/ns#' term='id3v2.2'/><category scheme='http://www.blogger.com/atom/ns#' term='id3'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>iTunes</title><content type='html'>I ran across the first ID3v2.2 tag I've seen, yesterday. This version was created in '98, and is considered obsolete. The more recent ID3v2.3 (also '98) is the most common version.&lt;br /&gt;&lt;br /&gt;For some unknown reason, iTunes, according to Wikipedia (&lt;a href="http://forums.slimdevices.com/archive/index.php/t-29719.html"&gt;and other sources&lt;/a&gt;) "writes tags in Unicode ID3v2.2 by default."  iTunes was released in 2001.&lt;br /&gt;&lt;br /&gt;I can't think of a good reason for Apple to use it in the first place, and I can't think of a good reason for them to keep using it.&lt;br /&gt;&lt;br /&gt;Incompetence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4295847628703168438-4880854157560938648?l=s3mp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s3mp.blogspot.com/feeds/4880854157560938648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4295847628703168438&amp;postID=4880854157560938648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/4880854157560938648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4295847628703168438/posts/default/4880854157560938648'/><link rel='alternate' type='text/html' href='http://s3mp.blogspot.com/2007/11/itunes-2.html' title='iTunes'/><author><name>David</name><uri>http://www.blogger.com/profile/16048816261005476769</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
