Add to Technorati Favorites



 

...where sanity comes to die.
Visit my blogBlur the lines between genius, insanity, and utter stupidity.WALDOLand Music CentralDevelopment WorkAbout MeContact MeWALDOLand Site Map
 

 Monday, March 24, 2008

Well it's about goddamn time!

I get home and flip on my laptop. I look up and there's an alert from Apple. I have new downloads available. I open the dialog and, voila. Safari version 3.1 (525.13) is ready for download!

Apple finally released a version of Safari for Windows that doesn't crash INSTANTLY!

Yay.

Thank God. It's been months since Apple released a version that didn't crash within 3seconds of starting up. I haven't been able to do successful Safari development or testing in months. That's really great when you're about to release a large scale production website. Uh, we hope it works.

Everybody and their momma would tell Apple about it. Apple would keep releasing Safari like it worked. We'd all fire up Safari and guess what? Same thing.

Apple: "It works now."
    Users: "Uh, no it doesn't."
Apple: "OK, it works now."
    Users: "Uh, no it doesn't."
Apple: "How about now?"
    Users: "Nope. Nothin'. Still broke."
Apple: "Now?"
    Users: "Nada."
Apple: "I said it works. Now leave me alone!"
    Users: "Hello? Is anyone there?"

Labels: , , ,

 Saturday, January 26, 2008

Yet another reason why MySpace Sucks and Facebook Rules

Just the simple fact that the blogs in MySpace can't be cross-posted or imported.

If I write a blog post on this site, I can let Facebook import my XML Feed and blammo, instant cross-post into their Notes feature.

With MySpace, I literally have to manually copy and paste every blog post I write and re-post it in MySpace. For someone who posts regularly, this is an incredible pain in the ass. On top of that, MySpace's wysiwyg editor is complete crap. If I post markup that for example, has a <table> tag in it, MySpace thinks they're clever and scrubs it out and replaces it with bad markup. Their scrubbed markup is not even close to XHTML-compliant (or even HTML-compliant), so I'm limited in what I can actually post to MySpace.

Labels: , , , , ,

Saw this and thought it was awesome

HTML tattooTo all my tech geek friends, you should find this hilarious.

I was surfing the web and stubled across this image of a dude who has HTML markup tatooed on the back of his neck. More specifically, a closing </head> tag, followed by an opening <body> tag.

To quote Desirea, awesome. :)

Labels: , , , ,

 Sunday, December 16, 2007

Facebook vs. MySpace

You know, Facebook kicks so much ass over MySpace.

MySpace is good for a public identity. Like if you're a band or a comic or a celebrity or something and you need a web presence, MySpace is the way to do it. It's a quick way to get a feature-laden web site up for free with built-in publicity. Easy. Simple. Done.

Facebook on the other hand is much better for the personal level of social networking. In stark contrast to MySpace, you're not riddled with random friend requests, otherwise known as MySpace Spam. Friends on Facebook are grouped by their affiliation with you (high school, college, job, etc.) making them much easier to find because they are targeted searches. you will actually have a network of your friends. MySpace is kind of a free-for-all. Any random schmuck will try to be your friend.

Facebook is MUCH cleaner, prettier, more functional than MySpace. MySpace offers its users the ability to customize their layout, but that usually leads to someone putting as much garbage as they can in a layout, which then makes the layout slower, offensive, or non-functional to the casual viewer. When I just want to add you as a friend, I don't want to sit and wait for your layout to load, with your f***ed up graphics and your music player blasting Omarion at me. I just want to add you ass a friend. Some of m best friends on MySpace have the poorest choices in layouts.

Facebook has the ability to add and or design fun web applications which can be installed like plug-ins to a user's profile. This alone creates business/developer/strategic partnerships with Facebook, something MySpace is currently unable to capitalize on.

Facebook is geared much more to Web 2.0. If you don't know or understand what Web 2.0 is, then don't bother reading this section. Rather than having pages laden with large blocky advertisements and javascript errors like MySpace does, Facebook is slick, easy to use, easy to navigate, and takes advantage of those things that should be used when designing in Web 2.0, like AJAX. The bottom line is that Web 2.0 is supposed to be all about the user experience (usability). MySpace is clunky kludgy, hard to use, riddled with errors, and undergoes maintenance nearly every other week, which usually doesn't fix some of its major issues. Facebook on the other hand is clean, cutting edge, feature rich, functional, and very rarely (although I have spotted a few, no question) has errors. Or at least has significantly fewer errors than MySpace.

I've even heard multiple companies (including the one I work for) including Facebook applications as part of their overall product base. How often does that happen? Although, granted a lot of media (TV/Film/Radio/Music/Comedy) includes MySpace as part of publicity campaigns, so I will give them credit for that.

It seems like you could break down your major social networking sites like this:
Professional: LinkedIn
Media/Entertainment: MySpace
Personal: Facebook

Facebook just seems like more of a personal touch to me. Although yes, I will continue to use both, I'm going to begin gravitating more toward Facebook.

Labels: , , , , , , , , , , ,

 Tuesday, December 11, 2007

Most Searched

I was checking Google Analytics and Google Webmaster Tools on Friday and I was presented with a slightly disturbing fact.

The most searched term in Google that produces a top-ranking hit on my site is:

"He-bitch man sex"

Trailing just behind are
  • '09 Camaro
  • Transformers Soundtrack and
  • Harumi Nemoto

Who knew I was so popular among the he-bitch man sex crowd?

Actually I should stop typing that before Google thinks I'm an authority. It's like "My Tivo thinks I'm gay!"

Labels: ,

 Sunday, November 18, 2007

Son of a bitch! It worked!

The goddamn Towel Trick worked! I finally tried that shit on my XBox 360 and it worked! No more Red Ring of Death for me!

Dude, I'm back! I've been playing Call of Duty 3 for the last few hours. I'm so going out and buying Guitar Hero 3 now.

Labels: ,

 Sunday, November 04, 2007

Need to find that receipt

I really need to find that receipt for my XBox 360. I really want to play Ace Combat 6 and Guitar Hero III.

Right now I've still got the Red Ring of Death. The warranty extension from Micro$oft for soldering bullshit parts to the motherboard is still valid so I can still return it but dammit I need that receipt.

Labels: ,

 Tuesday, October 30, 2007

No longer supporting legacy development

As I'm sitting here reinstalling software on my laptop, I've made a decision. In order to save hard drive space, I have decided not to install any Visual Studio 6 components or Visual Studio 2002/2003 components. Therefore I will no longer be supporting any legacy app development. All of my applications that were built with earlier versions of the studio will be ported to Visual Studio 2005 if code was not already developed in parallel. Visual Studio Add-Ins will continue to have backwards compatibility with 2002/2003 versions, but will be built by, deployed by, and targeted to Visual Studio 2005/2008.

Labels: , , , , , , ,

 Sunday, October 28, 2007

Well I fucked up my PC again.

Here I am on a Sunday night, backing up my files from my laptop yet again. I have to reinstall my OS because some shit I installed trashed my Wireless adapter, causing my services (services.exe) to crash every time I boot up. F-Guk! I have another three days of reinstalling software to look forward to.

What prompted me to install this crap ass software was me getting banned from allmusic.com. I needed something to disguise my IP address. I should have just went with TOR like everyone else. Instead, I went with the first thing I found on Google and tried to download a cracked version which had several trojans in it. My Anti-Virus software stripped out the trojans like it should have, but left the installer in a fucked up state. Dammit. Should have known better, but this is why I do this type of shit on MY PC.

Oh well. Maybe this time I won't install quite so much shit. I may actually have room for my music library (which is well over 45 GB) and my software to coexist on the same box. At some point, probably not until after Christmas, I will buy a new laptop with a substantially bigger hard drive. I'm going to try for 200 GB at least. I'll probably end up selling my laptop to Alan for cheap, or just giving it to someone who needs a laptop.

Labels: , ,

 Saturday, October 27, 2007

Banned!

Summummabitch!

As some of you know, I've been scouring content from the web to make my MP3 collection pages more SEO friendly. So of course with my huge collection of songs it would take until the end of the next millennium to gather reviews, artist bios, and lyrics manually. Naturally, I built a tool.

Now of course, my tool has to be as unnecessarily sophisticated as it can be, which means I'm doing major website scraping, multithreading, thread pumping and dynamic throttling. I ran my tool for every artist/album/track in my collenction against AMG and other sites. Over 30,000 website hits in a matter of a few hours. Collected everything I could. Sweet.

Of course as I'm reviewing my results, I realize there's a major bug in my screen scraping routine. D'oh! I go to run my tool again, and suddenly, I get no results. I check my search result manually and this is the message I get any time I do a search on AMG from my home laptop:

Through traffic monitoring of our websites we have identified your IP address accessing allmusic.com at a rate and speed inconsistent with the noncommercial and personal use permitted by our site's Terms of Service. As a result, further access to allmusic.com has been denied. Because IP addresses can be shared by numerous users, your access may be being denied based on the aggregate use of your IP address rather than your own individual use. To ensure that this is not the case, simply create your own individual user account by becoming a Registered Member of allmusic. [Click on the “Register” button in the upper right hand corner of the home page.] Once you’ve become a Registered Member and are logged in, you will once again have full access to allmusic, and will continue to have access, as long as your usage remains consistent with our Terms of Service. If you are already a Registered Member of allmusic, simply ensure that you are logged in when you use the site. Thank you. - xxx.xxx.xxx.xxx
Dammit!

Though technically, it is for personal use, I suppose I could see how after reviewing their logs they could interpret my usage as a Denial of Service attack. Come on, what If I were a search engine spider? Hehe. I just thought that was way too fuckin' funny! Now of course, you know me. I'm not going to let this stop me, but this was great! Hah!

Labels: , , , , ,

 Thursday, September 20, 2007

Aptana Javascript IDE

Someone at work asked me the question "Do you know of any good javascript editors out there with documentation and intellisense built-in?"

Visual Studio has never been really smart about javascript. Yes, it does provide intellisense, but only at a very minimal level. Only if you are typing within a <script></script> block contained in an HTML or ASPX page, does it provide you with anything, and even then, InterDev left a better footprint of intellisense. VS doesn't validate syntax, or even precompile classes in javascript. VS is very limited. Perhaps in future versions, Micro$oft will

Believe it or not, I didn't have an answer for him. I had been doing javascript for so long (almost 10 years now) that I didn't really have a personal need for intellisense. Everything I put together, I usually knew what I was looking for. Javascript has just become so native for me, that I rarely have to look up documentation for a method or property.

But in the spirit of being a good sport, I decided to see if I could find him one. I did a little research on the net. I came across a few, that looked like they had potential, but I wasn't really love with any of them.

That is, until I stumbled upon Aptana.

Aptana is a full-blown javascript IDE with massive intellisense, syntax validation, and precompilation which lends itself to intellisense. It totally rocks, dude! Nice. But don't take my word for it. Go check it out for yourself.

http://www.aptana.com/

Labels: , , , , , ,

 Tuesday, September 11, 2007

Dammit, Red Ring of Death

I blame this on Sydd. ;)

I have been playing a lot of XBox 360 lately. I talked to Sydd for a second on MySpace and he mentioned that he had the Red Ring of Death. Of course the very next time I go to turn on my XBox...Dammit!



In bumming around the internet, I actually found a video blog article that demonstrates how to solve the red ring of death with TOWELS...yes, towels. I haven't tried it yet, but it sounds just bizarre enough to work.

<a href="http://www.techeblog.com/index.php/tech-gadget/video-fix-the-xbox-360-s-red-ring-of-death-with-towels-" target="RedRingFix"><img src="http://www.waldoland.com/images/blogimages/xboxtowel.jpg" style="border: 0px;" /></a>

Xbox 360 Three red lights ( The Ring of Death )
VIDEO: Fix the Xbox 360's Red Ring of Death with...Towels?

Labels: ,

 Thursday, August 02, 2007

Johnny Depp? Hardly.

So I decided to have a little more fun with the facial recognition software on MyHeritage.com.

Yet again, not one brother.

This time, it came up with Johnny Depp, Leonardo DiCaprio, Ricky Martin, and Darren Hayes. Well, at least it's one Puerto Rican. It's not entirely a snow white cast.

BTW, who the hell is Darren Hayes?

http://www.myheritage.com

Labels: , ,

My Celebrity Look-alikes

This was an interesting little diversion.

I see more and more of these popping up all over MySpace, so I decided to give them a try.

MyHeritage.com uses facial recognition software to take a photo of you and match it up with photots they have of celebrities. I took a stock photo of myself and gave it a whirl.

The funny thing is that there's not a single brother in the bunch. None of these guys even look remotely like me :o)

But whatever. It was fun. Give it a try. All you need is an E-Mail address.

Labels: , ,

 Monday, July 23, 2007

So, do you have a MySpace page or something?

It just makes me laugh sometimes how technology is so well integrated into popular culture today. I was watching TV the other day and the commercial for the new episode of Psych on USA, featuring Lou Diamond Phillips came on.

He just blythely leans in to someone and says, "So, do you have a MySpace page or something?"

Has MySpace become the new substitute for getting digits? Did I miss this memo? Phenomenons like MySpace and Friendster and blogging in general have become so pervasive to modern society. So prolific that it's difficult to imagine a kid surviving without the ability to text his buddy in the next room.

Have I gotten so old that I think all of this is just silly?
Oh, yeah. BTW - Check out MY MySpace page

Labels: , , , , ,

 Thursday, July 19, 2007

Apple ITC File Format (revised)

I recently updated this article with new information and new code samples. Enjoy.

I've been developing some projects relating to iTunes lateley. iTunes 7.0.1 has a new feature called CoverFlow. It is the ability to view your music library by its album art. I thought this was phenomenal. In fact it almost has made a convert out of me, using iTunes almost exclusively now.

iTunes CoverFlow

Having the ability to see all of your album art at once is fantastic, but it also shows you how woefully incomplete your library is. Of course, me being the obsessive-compulsive perfectionist/completionist that I am, I had to find album artwork for EVERY song in my library.

I used the 'Get Album Artwork' function in iTunes to obtain my missing artwork. Everything was going swimmingly. iTunes found and downloaded high resolution album artwork for nearly every album I had in my library (over 8,500 songs). I was doing fine until I began playing those same songs in MusicMatch Jukebox and noticed that the artwork that iTunes had just downloaded was not showing up in MusicMatch.

Was this a coincidence? I had to be sure. I discovered that the 'Get Album Artwork' function in iTunes DOES NOT save the downloaded artwork into the actual MP3 files. Instead it creates .itc files in the folder

%USERPROFILE%\My Documents\My Music\iTunes\Album Artwork

The .itc files contain images and metadata for each album which has downloaded artwork. CoverFlow reads the files into memory and holds them there until the application quits, so that it can display album art images quickly and smoothly.

That's fine. Good for Apple. They have their own system for optimizing album artwork images. But what about poor little ole' me, who wants those images embedded in his MP3 files?

There have been a number of suggested ways to accomplish this thrown about the web. The easiest I can think of is to use the 'Get Info...' command in iTunes, switch to the Artwork tab, Cut the downloaded image from the viewer and re-paste the same image. This will embed the image in the actual MP3 file. This is effective, but also very tedious if you have a large number of files.

Another suggested way was to write a program which hacks the .itc files themselves. For some reason, this appealed to me.

Many places where I've found ways to carve up an .itc file suggest simply removing the first 492 bytes and the rest of the file is JPEG/PNG image data. That would be great if it worked consistently. What I've discovered on my own is that it does not work 100% of the time. Frequently I have found .itc files where the image data did not start until after the first 500 bytes, or other variations on that number.

Based on that inconsistency, I decided to inspect the format of an .itc file myself and see if I could infer a file specification myself. The .itc file seems to consist of four sections: a File Signature, a "Null Buffer", a Data Header, and Image Data.

File Signature

The fourth byte of the file would seem to be self describing, indicating the length of the entire File Signature. In the sample file below, the fourth byte has a value of 1C (28). The File Signature itself seems to have a fairly consistent structure, which has the sequence 69 74 63 68 (itch) beginning at index 4 and 61 72 74 77 (artw) beginning at index 24, terminating the File Signature.

"Null Buffer"

Following the File Signature is 256 bytes of 00 (null).

Data Header

The Data Header contains metadata about the file/artwork itself. So far, every .itc file I have inspected has had the fixed-length signature of 28 bytes, followed by the fixed-length null buffer of 256 bytes. Here is where the variable file size comes into play.

Just like the File Signature, the Data Header is self-describing. The length of the Data Header is a factor in determining where the actual image data begins. This is important because this is where the .itc files I have inspected may vary from the norm.

NEW!

Disposable information (4 bytes)
The first four bytes of the Data Header would seem to be disposable information for our purposes.

"item" sequence (4 bytes)
The next four bytes of the Data Header is the sequence 69 74 65 6D (item).

Data Header Length (4 bytes)
The next four bytes are an unsigned integer value indicating the overall length of the Data Header. In the sample file below, the Data Header length has a value of 00 00 00 D8 (216).

Disposable information (16 bytes)
Immediately following the Data Header length is 16 bytes of disposable information.

Disposable information (0-4 bytes)
When the value of the Data Header length is 212, the next section of metadata begins immediately. If it is 216, the next section is offset by an additional four bytes of disposable information.

Library Persistent ID (8 bytes)
The next 8-byte sequence is the iTunes Music Library Persistent ID to which this track belongs. The Library Persistent ID is a hexadecimal string converted from those bytes. In the example below, you can see the sequence D4 CC CA A6 22 F6 CD DC, which corresponds to my Library Persistent ID (which is the first part of the .itc file name).

Track Persistent ID (8 bytes)
The next 8-byte sequence is the Track Persistent ID if this track. Like the Library Persistent ID, Track Persistent ID is also a hexadecimal string converted from those bytes. In the example below, you can see the sequence 3D 82 AC 91 DD 2D 58 B0, which corresponds to the Track Persistent ID (which is the second part of the .itc file name). You can use the Library and Track Persistent IDs together to discover information about the track, using the iTunes Music Library.xml file.

Download/persistence indicator (4 bytes)
The next 4 bytes are either the string sequence 64 6F 77 6E (down) or 6C 6F 63 6C (locl), which when "down", indicates that the CoverFlow artwork was downloaded and not persisted in a music file's tag information. It also corresponds to the appropriate subfolder beneath the Album Artwork folder. The opposite is true of "locl".

Pseudo-File Format (4 bytes)
The next 4 bytes would seem to give a hint as to the format of the embedded image. When the four bytes equate to the string sequence 50 4E 47 66 (PNGf), the image format will be of PNG (portable network graphics) type. When the sequence is 00 00 00 0D, the image is a JPEG (joint photographics experts group) image.

Disposable information (4 bytes)
Four more bytes of disposable information.

Image Width (4 bytes)
The next four bytes are an unsigned integer value indicating the width of the embedded image.

Image Height (4 bytes)
The next four bytes are an unsigned integer value indicating the height of the embedded image.

Image Data

Once the size of the Data Header has been determined, the next block is the actual Image Data, starting immediately after the Data Header, and continuing to the end of the file. In the sample below, the next four bytes are the sequence FF D8 FF E0 (ÿØÿà) which, as some of you may know, are the signature for a JPEG image.

Apple ITC file strucure



So far, I have been able to consistently extract the image data from .itc files on my own machines. This has been very useful to me in collecting album artwork downloaded from iTunes without having to automate iTunes itself.


Since this is by no means official and an inference of the structure, it is entirely possible that you may find the structure to be different. I simply look for patterns in the chaos. If you find that this does not give you the ability to consistently extract album artwork then please let me know.

Labels: , , , , , ,