<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
 xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
>

<channel>
<title>METALABEL</title>
<link>http://metalabel.com</link>
<description>Beyond Labels</description>
<language>en-us</language>
<copyright>Copyright &#x26;#169; Metalabel Development, LLC 2008</copyright>
<pubDate>Sat, 31 Jul 2010 6:22:39 GMT</pubDate>
<lastBuildDate>Sat, 31 Jul 2010 6:22:39 GMT</lastBuildDate>
<docs>http://metalabel.com</docs>
<managingEditor>rss@metalabel.com</managingEditor>
<webMaster>rss@metalabel.com</webMaster>
<generator>HTML::Mason / XML::RSS / Perl 5.8.8</generator>

<image>
<title>Metalabel</title>
<url>http://metalabel.com/images/logo.jpg</url>
<link>http://metalabel.com</link>
<width>50</width>
<height>50</height>
<description>Beyond Labels</description>
</image>
<item>
<title>Oops</title>
<description>I&#x27;m dissing myself, because this morning, April 8, I lost the past couple of days worth of comments in the database. It was totally my fault, mucking about with things I shouldn&#x27;t have done while working on the backup system. Sorry folks. &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/bulletins/Oops.html?id=186</guid>
<pubDate>Tue, 8 Apr 2008 13:22:29 GMT</pubDate>
</item>
<item>
<title>Accordions</title>
<description>I just want to let folks know that we changed an aspect of the user interface. The accordions&#x26;mdash;the fly-out folder-thingies that used to open when you hovered your mouse over them&#x26;mdash;now open when you click them. It was getting a little clumsy. It&#x27;s much better now. &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/bulletins/Accordions.html?id=173</guid>
<pubDate>Fri, 28 Mar 2008 01:45:58 GMT</pubDate>
</item>
<item>
<title>Play and Listen Counts</title>
<description>We added a new feature to the site today! We added a counter to the number of times a song gets played. So whenever people listen to the samples, it goes up. Artists can see this play count in their private statistics pages.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;em&#x3E;There&#x27;s a lot more coming&#x3C;/em&#x3E;, so keep your grapes peeled and subscribe to the RSS feed!
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Amiri &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/bulletins/Play_and_Listen_Counts.html?id=155</guid>
<pubDate>Wed, 27 Feb 2008 21:38:09 GMT</pubDate>
</item>
<item>
<title>How To Use the Site</title>
<description>Hey folks! We posted an addition to our info page. It is a little section on how to use various aspects of the site. If you ever wondered, have a look-see. E-mail us with any suggestions! &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/bulletins/How_To_Use_the_Site.html?id=142</guid>
<pubDate>Mon, 18 Feb 2008 16:03:26 GMT</pubDate>
</item>
<item>
<title>RSS Feeds!</title>
<description>We have an RSS feed at &#x3C;a href=&#x22;http://metalabel.com/feeds/metalabel.xml&#x22;&#x3E;metalabel.com/feeds/metalabel.xml&#x3C;/a&#x3E;. It shows our recent posts, all music reviews, public bulletins, and public events.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
The really cool part is that you have your own feed too! Click the little icon on your homepage. Your music reviews, public bulletins, and public events are syndicated, and you can link to it anywhere on the web. Others can too.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
It is in the form of &#x3C;a href=&#x22;http://metalabel.com/feeds/akbeats.xml&#x22;&#x3E;metalabel.com/feeds/akbeats.xml&#x3C;/a&#x3E;, (with your name instead of mine). &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/bulletins/RSS_Feeds!.html?id=141</guid>
<pubDate>Sun, 17 Feb 2008 00:30:14 GMT</pubDate>
</item>
<item>
<title>Fresh New Features!</title>
<description>We have some fresh new features to share with you.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Have you noticed the new links to events, bulletins and music reviews on the nav bar? Or the new &#x22;Bulletin your Peeps&#x22; feature on your home page?
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
You can write a blog about some music, click the &#x22;music review&#x22; button, and it will be publicized. It&#x27;s the same with bulletins and events.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Click the proper checkbox, and your post or event will be visible to the Internet, not just logged-in Metalabel users.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Do it to it! &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/bulletins/Fresh_New_Features!.html?id=138</guid>
<pubDate>Thu, 14 Feb 2008 19:27:05 GMT</pubDate>
</item>
<item>
<title>Strange Interviewing Experiences</title>
<description>&#x3C;p&#x3E;I moved from New York where I had a good job with bad bosses to Los Angeles, California, one of the epicenters of the economic crisis.&#x3C;/p&#x3E;
&#x3C;p&#x3E;I&#x27;ve been on my new job for 3 weeks now, and I am settling in enough to reflect a bit on the job hunt.&#x3C;/p&#x3E;
&#x3C;p&#x3E;It sure was strange!&#x3C;p&#x3E;
&#x3C;p&#x3E;Perl experts kept telling me a couple of things over and over:&#x3C;/p&#x3E;
&#x3C;blockquote&#x3E;
&#x3C;strong&#x3E;Interviewer:&#x3C;/strong&#x3E; How do you switch a hash&#x27;s keys and values?&#x3C;br /&#x3E;
&#x3C;strong&#x3E;Me:&#x3C;/strong&#x3E; reverse %hash&#x26;hellip;&#x3C;br /&#x3E;
&#x3C;strong&#x3E;Interviewer:&#x3C;/strong&#x3E; WRONG! You fail!&#x3C;br /&#x3E;
&#x3C;strong&#x3E;Me:&#x3C;/strong&#x3E; Um&#x26;hellip;&#x3C;br /&#x3E;
&#x3C;strong&#x3E;Interviewer&#x3C;/strong&#x3E; How would you print sorted the values of a hash?&#x3C;br /&#x3E;
&#x3C;strong&#x3E;Me:&#x3C;/strong&#x3E; print sort values %hash&#x26;hellip;&#x3C;br /&#x3E;
&#x3C;strong&#x3E;Interviewer:&#x3C;/strong&#x3E; WRONG! You fail!&#x3C;br /&#x3E;
&#x3C;strong&#x3E;Me:&#x3C;/strong&#x3E; Wait a second, that&#x27;s correct&#x26;hellip;&#x3C;br /&#x3E;
&#x3C;strong&#x3E;Interviewer:&#x3C;/strong&#x3E; &#x3C;em&#x3E;No it&#x27;s not.&#x3C;/em&#x3E; Next question. Have you ever written your own assembly implementation of partial sort?
&#x3C;/blockquote&#x3E;

&#x3C;p&#x3E;The above happened to me twice. Not in so many words, but you get the idea: combine a flagrantly outdated understanding of Perl with the desire to show off hardcore l33tn355, and keep the belly laughs coming!&#x3C;/p&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Strange_Interviewing_Experiences.html</guid>
<pubDate>Wed, 10 Feb 2010 16:10:04 GMT</pubDate>
</item>
<item>
<title>A Meager Attempt at CatchUp</title>
<description>&#x3C;p&#x3E;Well, I am definitely busted back down to paper man now. But I have a real good reason. I was &#x3C;a href=&#x22;http://warpedreality.org/2009/06/the-power-of-jfdi.html&#x22;&#x3E;JFDI&#x3C;/a&#x3E;. I was &#x3C;a href=&#x22;http://samcrawley.wordpress.com/2009/06/29/the-three-stages-of-learning-to-test/&#x22;&#x3E;learning to test&#x3C;/a&#x3E; (I&#x27;d say I am level 1 for the moment). Boy, is testing a strange enterprise for the beginning tester. Like millions before me, I did &#x22;testing&#x22; the other way round: write, run, tweak, run, tweak, run, etc., etc., ad infinitum. Basically, you have to turn your mind inside out and think about your code in what feels like a pretty much inverted way. But I like the discipline it imposes.&#x3C;/p&#x3E;

&#x3C;p&#x3E;I was working on &#x3C;a href=&#x22;http://search.cpan.org/~amiri/Catalyst-Helper-Controller-DBIC-API-REST-0.03/lib/Catalyst/Helper/Controller/DBIC/API/REST.pm&#x22;&#x3E;Catalyst::Helper::Controller::DBIC::API::REST&#x3C;/a&#x3E;, which I blogged about &#x3C;a href=&#x22;http://metalabel.com/derailleur/Automatic_CRUD_in_your_Controllers.html&#x22;&#x3E;once before&#x3C;/a&#x3E;. It&#x27;s my first CPAN module, and I&#x27;m very proud of that fact! I&#x27;m not so proud of the fact that I had to upload the thing about 5 times to get it right. In any case, it&#x27;s a good feeling to be a contributing member of the thriving Perl 5 community. Thanks &#x3C;a href=&#x22;http://search.cpan.org/~ribasushi/&#x22;&#x3E;ribasushi&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://search.cpan.org/~ilmari/&#x22;&#x3E;ilmari&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://www.shadowcat.co.uk/blog/matt-s-trout/&#x22;&#x3E;mst&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://blog.cachemiss.com/&#x22;&#x3E;Caelum&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://warpedreality.org/&#x22;&#x3E;arcanez&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://www.opensourcery.com/blog/hans-dieter-pearcey&#x22;&#x3E;confound&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://search.cpan.org/~lsaunders/&#x22;&#x3E;lukes&#x3C;/a&#x3E;, Fitz Elliott, and everyone else I bothered while putting that thing together.&#x3C;/p&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/A_Meager_Attempt_at_CatchUp.html</guid>
<pubDate>Mon, 29 Jun 2009 19:17:17 GMT</pubDate>
</item>
<item>
<title>The New Musical Middle Class</title>
<description>&#x3C;p&#x3E;From time to time I do manage to pull myself away from building Metalabel 2.0 (we&#x27;ve been rewriting the site for a couple of months now, mostly to make it easier to add new features) in order to focus on the business aspect of the business we&#x27;re in.&#x3C;/p&#x3E;

&#x3C;p&#x3E;This is one of those times. Today I was reading &#x3C;a href=&#x22;http://hypebot.com&#x22;&#x3E;Hypebot&#x3C;/a&#x3E;, and I came across an article that I really appreciated. Bruce Houghton wants to compile a list of artists who have made successful careers without major label backing. This is what we&#x27;re all about: carving out a space for independent artists to make real money off of their music. It&#x27;s all about providing the tools to enable the &#x22;artistic middle class&#x22; to thrive, and to allow the music business to become something other than what it has been, something more focused on the substance, the stuff, the work, the music! As we continue to grow, we hope to put some Metalabel artists on that list! &#x3C;a href=&#x22;http://www.hypebot.com/hypebot/2009/06/dont-need-a-major-label.html&#x22;&#x3E;Check out the article&#x3C;/a&#x3E;.&#x3C;/p&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/The_New_Musical_Middle_Class.html</guid>
<pubDate>Thu, 18 Jun 2009 19:10:58 GMT</pubDate>
</item>
<item>
<title>Automatic CRUD in your Controllers</title>
<description>&#x3C;p&#x3E;The first version of the module to generate CRUDdy controllers automatically is up &#x3C;a href=&#x22;http://github.com/amiri/Catalyst-Helper-Controller-DBIC-API-REST-0.01/tree/master&#x22;&#x3E;on my github&#x3C;/a&#x3E;. It&#x27;s for &#x3C;a href=&#x22;http://search.cpan.org/~lsaunders/Catalyst-Controller-DBIC-API-1.003000/lib/Catalyst/Controller/DBIC/API/REST.pm&#x22;&#x3E;REST&#x3C;/a&#x3E; first. &#x3C;a href=&#x22;http://search.cpan.org/~lsaunders/Catalyst-Controller-DBIC-API-1.003000/lib/Catalyst/Controller/DBIC/API/RPC.pm&#x22;&#x3E;RPC&#x3C;/a&#x3E; comes next. It doesn&#x27;t use the normal syntax of calls to &#x3C;a href=&#x22;http://search.cpan.org/~flora/Catalyst-Devel-1.18/lib/Catalyst/Helper.pm&#x22;&#x3E;Catalyst::Helper&#x3C;/a&#x3E; (e.g., myapp_create.pl)--or, rather, it uses the normal syntax differently. When you type&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;
$ catalyst.pl myapp
$ cd myapp
$ script/myapp_create.pl controller API::REST DBIC::API::REST myapp
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;Instead of you naming the specific controller you want to create, as usual, you just write &#x3C;code&#x3E;API::REST&#x3C;/code&#x3E;. The module loads your schema from the name of your app, e.g., &#x3C;code&#x3E;myapp&#x3C;/code&#x3E;, and makes all your controllers in lib/myapp/Controller/API/REST/.&#x3C;/p&#x3E;
&#x3C;p&#x3E;This module is incomplete. It remains to basically fill in the template to supply a whole&#x3C;code&#x3E;__PACKAGE__-&#x3E;config(...)&#x3C;/code&#x3E;. I also need to write out the lib/myapp/Controller/API.pm and the lib/myapp/Controller/API/REST.pm, in order to supply the base of &#x3C;a href=&#x22;http://search.cpan.org/~lsaunders/Catalyst-Controller-DBIC-API-1.003000/lib/Catalyst/Controller/DBIC/API.pm#setup&#x22;&#x3E;the chain all the result-class controllers use&#x3C;/a&#x3E;. I think I&#x27;ll release this one to CPAN when I&#x27;m done, cause this one is independent, unlike the moosified branch of Loader.&#x3C;/p&#x3E;
&#x3C;p&#x3E;Any and all feedback welcome. Hit me up on IRC.&#x3C;/p&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Automatic_CRUD_in_your_Controllers.html</guid>
<pubDate>Mon, 15 Jun 2009 15:54:02 GMT</pubDate>
</item>
<item>
<title>I&#x27;m In Ur Loader</title>
<description>&#x3C;p&#x3E;So, I&#x27;ve been working on this &#x3C;a href=&#x22;http://github.com/amiri/DBIx-Class-Schema-Loader-0.04999_07/tree/master&#x22;&#x3E;Loader&#x3C;/a&#x3E; thing, trying to get it to write Moose attributes for all sorts of class data and stuff.&#x3C;/p&#x3E;
&#x3C;p&#x3E;One major problem was that Loader runs through its cycle twice, and it dumps the schema twice. The first time there&#x27;s no relationship information, because it hasn&#x27;t gotten it. The second time, after it gets the info and writes its relationship declarations... you still can&#x27;t get it! There&#x27;s a huge &#x3C;code&#x3E;{_dump_storage}&#x3C;/code&#x3E; key in Loader&#x27;s &#x3C;code&#x3E;$self&#x3C;/code&#x3E;, but if I wanted to parse that language, I would have stayed getting it from the files on disk. I honestly still don&#x27;t know what Loader does with all the relationship info after writing it out.&#x3C;/p&#x3E;
&#x3C;p&#x3E;Well, that was dispiriting. So I gave up and just decided to get the info again and build my own relationship hash while iterating through the classes. It works pretty well.&#x3C;/p&#x3E;
&#x3C;p&#x3E;One outstanding issue is how more subtly to handle relationships to other tables. Right now, if the relationship method is &#x3C;code&#x3E;might_have&#x3C;/code&#x3E; Loader says&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;
has &#x27;posted_item&#x27; =&#x3E; (
	isa =&#x3E; &#x27;Test::Schema::PostedItem&#x27;,
	is =&#x3E; &#x27;rw&#x27;,
);
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;If the relationship method is &#x3C;code&#x3E;has_many&#x3C;/code&#x3E;, Loader says&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;
has &#x27;discussion_topics&#x27; =&#x3E; (
	isa =&#x3E; ArrayRef[&#x27;Test::Schema::DiscussionTopic&#x27;],
	is =&#x3E; &#x27;rw&#x27;,
);
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;It&#x27;s sort of a one-trick pony.&#x3C;/p&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/I&#x27;m_In_Ur_Loader.html</guid>
<pubDate>Sun, 14 Jun 2009 00:34:22 GMT</pubDate>
</item>
<item>
<title>Some Module Ideas</title>
<description>&#x3C;p&#x3E;I hope I&#x27;m not too late in my third week of posting for the iron man contest. My last post was on May 31, and so I should have posted something by June 7, but I was traveling cross-country to my original hometown of Los Angeles! &#x3C;a href=&#x22;http://metalabel.com/derailleur/An_Iron_Man_With_Stone_Age_Technology.html&#x22;&#x3E;Talk about a car city&#x3C;/a&#x3E;. I think that&#x27;s a good enough excuse. We&#x27;ll see if I get busted back to paper man.&#x3C;/p&#x3E;
&#x3C;p&#x3E;I wanted to extend on my last post about a way to make sure your multiple-table-inheritance database can be updated properly across whatever views you are running your app off of. But I just got some new code to look at for that, and haven&#x27;t quite grokked it yet. So that will have to wait till next time.&#x3C;/p&#x3E;
&#x3C;p&#x3E;Meanwhile, I&#x27;d like to present a couple of ideas I have been working on in my Metalabel rewrite, and perhaps solicit some feedback. I&#x27;d love to hear suggestions or strategies. The first is a module some people have seen around&#xE2;&#x80;&#x94;it is called &#x3C;a href=&#x22;http://github.com/amiri/Moosifier&#x22;&#x3E;Moosifier&#x3C;/a&#x3E;, and it takes &#x3C;a href=&#x22;http://search.cpan.org/~ilmari/DBIx-Class-Schema-Loader-0.04006/lib/DBIx/Class/Schema/Loader.pm&#x22;&#x3E;DBIx::Class Schema::Loader&#x3C;/a&#x3E; result class files, reads them, and adds &#x3C;a href=&#x22;http://search.cpan.org/~drolsky/Moose-0.81/lib/Moose.pm&#x22;&#x3E;Moose&#x3C;/a&#x3E; bits at the top and bottom to allow you to use your auto-generated classes with &#x3C;a href=&#x22;http://search.cpan.org/~mstrout/Reaction/&#x22;&#x3E;Reaction&#x3C;/a&#x3E; or whatever.&#x3C;/p&#x3E;
&#x3C;p&#x3E;Before:&#x3C;/p&#x3E;
&#x3C;p&#x3E;&#x3C;pre&#x3E;&#x3C;code&#x3E;
    package Test::Schema::Amazon;

    use strict;
    use warnings;

    use base &#x27;DBIx::Class&#x27;;

    __PACKAGE__-&#x3E;load_components(&#x22;TimeStamp&#x22;, &#x22;Core&#x22;);
    __PACKAGE__-&#x3E;table(&#x22;amazon&#x22;);
    __PACKAGE__-&#x3E;add_columns(
      &#x22;asin&#x22;,
      {
        data_type =&#x3E; &#x22;text&#x22;,
        default_value =&#x3E; undef,
        is_nullable =&#x3E; 1,
        size =&#x3E; undef,
      },
    ...
    1;
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;/p&#x3E;
&#x3C;p&#x3E;After:&#x3C;/p&#x3E;
&#x3C;p&#x3E;&#x3C;pre&#x3E;&#x3C;code&#x3E;
    package Test::Schema::Amazon;

    use Moose;

    extends &#x27;DBIx::Class&#x27;;

    has &#x27;asin&#x27; =&#x3E; (
                    isa =&#x3E; SimpleStr,
                    is =&#x3E; &#x27;rw&#x27;,
                    required =&#x3E; 0

    );
    has &#x27;locale&#x27; =&#x3E; (
                    isa =&#x3E; SimpleStr,
                    is =&#x3E; &#x27;rw&#x27;,
                    required =&#x3E; 0

    );
    has &#x27;filename&#x27; =&#x3E; (
                    isa =&#x3E; SimpleStr,
                    is =&#x3E; &#x27;rw&#x27;,
                    required =&#x3E; 0

    );
    has &#x27;refetchdate&#x27; =&#x3E; (
                    isa =&#x3E; Int,
                    is =&#x3E; &#x27;rw&#x27;,
                    required =&#x3E; 0

    );

    use namespace::autoclean;

    __PACKAGE__-&#x3E;load_components(&#x22;TimeStamp&#x22;, &#x22;Core&#x22;);
    __PACKAGE__-&#x3E;table(&#x22;amazon&#x22;);
    __PACKAGE__-&#x3E;add_columns(
      &#x22;asin&#x22;,
      {
        data_type =&#x3E; &#x22;text&#x22;,
        default_value =&#x3E; undef,
        is_nullable =&#x3E; 1,
        size =&#x3E; undef,
      },
    ...
    __PACKAGE__-&#x3E;meta-&#x3E;make_immutable(inline_constructor =&#x3E; &#x27;0&#x27;);
    1;
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;&#x3C;/p&#x3E;
&#x3C;p&#x3E;I wrote it because I thought I was going to be using Reaction in my rewrite, but &#x3C;a href=&#x22;http://www.catalyzed.org/mt/mt-cp.cgi?__mode=view&#x26;blog_id=1&#x26;id=34&#x22;&#x3E;phaylon&#x3C;/a&#x3E; advised against it. &#x3C;a href=&#x22;http://search.cpan.org/~mstrout/Reaction-0.002000/lib/Reaction/Manual/Intro.pod&#x22;&#x3E;It adds a whole other layer to Catalyst&#x27;s M, V and C&#x3C;/a&#x3E;, and I agreed that it&#x27;s wisest to make sure the basic rewrite is solid before adding a whole new layer, and, for instance, having to think about chopping my as-yet-unwritten templates into widgets or what have you.&#x3C;/p&#x3E;
&#x3C;p&#x3E;Thus &#x3C;a href=&#x22;http://github.com/amiri/Moosifier&#x22;&#x3E;Moosifier&#x3C;/a&#x3E;. It&#x27;s pretty darned simple: it works by reading the result class files and using a bunch of regexes to extract the &#x3C;a href=&#x22;http://search.cpan.org/~drolsky/Moose-0.81/lib/Moose/Manual/Attributes.pod&#x22;&#x3E;Moose attributes&#x3C;/a&#x3E; from the &#x3C;code&#x3E;__PACKAGE__-&#x3E;add_columns(...)&#x3C;/code&#x3E; lines. I was excited to put it up and finish it, but no sooner had I done so than I hit upon another problem. Now that I had my classes written, I had to make my controllers.&#x3C;/p&#x3E;
&#x3C;p&#x3E;Metalabel 2.0 needs at least 76 controllers. There&#x27;s no way I&#x27;m going to write those by hand. I could use myapp/script/myapp_create.pl helper script to make skeleton controllers, of course. But that&#x27;s just a skeleton. What about &#x3C;a href=&#x22;http://search.cpan.org/~hkclark/Catalyst-Manual-5.8000/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod&#x22;&#x3E;basic CRUD&#x3C;/a&#x3E;? There&#x27;s no way I&#x27;m going to write CRUD for 76 controllers by hand.&#x3C;/p&#x3E;

&#x3C;p&#x3E;I asked on &#x3C;a href=&#x22;irc://irc.perl.org/catalyst&#x22;&#x3E;#catalyst&#x3C;/a&#x3E; whether there are any tools to help generate CRUD automatically in your controllers, and glob recommended &#x3C;a href=&#x22;http://search.cpan.org/~lsaunders/Catalyst-Controller-DBIC-API-1.003000/lib/Catalyst/Controller/DBIC/API.pm&#x22;&#x3E;Catalyst::Controller::DBIC::API&#x3C;/a&#x3E;, for which there are &#x3C;a href=&#x22;http://search.cpan.org/~lsaunders/Catalyst-Controller-DBIC-API-1.003000/lib/Catalyst/Controller/DBIC/API/RPC.pm&#x22;&#x3E;RPC&#x3C;/a&#x3E; and &#x3C;a href=&#x22;http://search.cpan.org/~lsaunders/Catalyst-Controller-DBIC-API-1.003000/lib/Catalyst/Controller/DBIC/API/REST.pm&#x22;&#x3E;REST&#x3C;/a&#x3E; implementations. Of course, these just provide a way to write your CRUD. They don&#x27;t do it for you. So I had a new automation problem: &#x22;How can I automate the creation of basic but smart RPC or REST controllers for my Catalyst app, based on my DBIx::Class::Schema::Loader result classes?&#x22;
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
Of course I asked on irc first. Knowing that I had done something similar with Moosifier, &#x3C;a href=&#x22;http://www.shadowcat.co.uk/blog/matt-s-trout/&#x22;&#x3E;mst&#x3C;/a&#x3E; suggested that instead of reading the files from disk, I take the table info directly from the database using DBIx::Class::Schema::Loader. Why the hell not? It makes much more sense than stepping through a file with regexes and substitutions and such.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The goal is to create 76+ controllers (in this case, of the RPC subclass) like this sample code from the &#x3C;a href=&#x22;http://search.cpan.org/~lsaunders/Catalyst-Controller-DBIC-API-1.003000/lib/Catalyst/Controller/DBIC/API.pm&#x22;&#x3E;Catalyst::Controller::DBIC::API documentation&#x3C;/a&#x3E;: 
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
    &#x3C;pre&#x3E;
        &#x3C;code&#x3E;
    package MyApp::Controller::API::RPC::Artist;
    use base qw/Catalyst::Controller::DBIC::API::RPC/;
    
    __PACKAGE__-&#x3E;config ( action =&#x3E; { setup =&#x3E; { PathPart =&#x3E; &#x27;artist&#x27;, Chained =&#x3E; &#x27;/api/rpc/rpc_base&#x27; } },
    class =&#x3E; &#x27;MyAppDB::Artist&#x27;, # DBIC schema class
    create_requires =&#x3E; [&#x27;name&#x27;, &#x27;age&#x27;], # columns required to create
    create_allows =&#x3E; [&#x27;nickname&#x27;], # additional non-required columns that create allows
    update_allows =&#x3E; [&#x27;name&#x27;, &#x27;age&#x27;, &#x27;nickname&#x27;], # columns that update allows
    list_returns =&#x3E; [qw/name age/], # columns that list returns
    list_prefetch =&#x3E; [&#x27;cds&#x27;], # relationships that are prefetched when no prefetch param is passed
    list_prefetch_allows =&#x3E; [ # every possible prefetch param allowed
        &#x27;cds&#x27;,
        qw/ cds /,
        { cds =&#x3E; &#x27;tracks&#x27; },
        { cds =&#x3E; [qw/ tracks /] }
    ],
    list_ordered_by =&#x3E; [qw/age/], # order of generated list
    list_search_exposes =&#x3E; [qw/age nickname/, { cds =&#x3E; [qw/title year/] }],
    );
&#x3C;/code&#x3E;
&#x3C;/pre&#x3E;
&#x3C;/p&#x3E;
    &#x3C;p&#x3E;
I figure I can dump out such a controller for every table I need by pulling the whole database into a hash using DBIx::Class::Schema::Loader, and using this hash to populate the &#x3C;code&#x3E;__PACKAGE__-&#x3E;config(...)&#x3C;/code&#x3E; for each table/controller. For instance, the class name is easy. So is &#x3C;code&#x3E;create_requires&#x3C;/code&#x3E;: those are the non-nullable columns in the table, besides any auto-incrementing serials or sequences. &#x3C;code&#x3E;create_allows&#x3C;/code&#x3E; is every column but those in &#x3C;code&#x3E;create_required&#x3C;/code&#x3E;, also excluding serials and sequences. &#x3C;code&#x3E;update_allows&#x3C;/code&#x3E; is the columns in both &#x3C;code&#x3E;create_allows&#x3C;/code&#x3E; and &#x3C;code&#x3E;create_requires&#x3C;/code&#x3E;. I can&#x27;t escape some manual labor here: I am going to make &#x3C;code&#x3E;list_returns&#x3C;/code&#x3E; return every column in the table. I&#x27;ll go through the controllers by hand to customize those. The same with &#x3C;code&#x3E;list_prefetch_allows&#x3C;/code&#x3E;: the object of every relationship identified by DBIx::Class::Schema::Loader is going into &#x3C;code&#x3E;list_prefetch_allows&#x3C;/code&#x3E; (none are going into the default &#x3C;code&#x3E;list_prefetch&#x3C;/code&#x3E;). I&#x27;ll have to customize those manually, as well. &#x3C;code&#x3E;list_ordered_by&#x3C;/code&#x3E; may need to be manually specified later as well, but using date column if it exists might be a good default. &#x3C;code&#x3E;list_search_exposes&#x3C;/code&#x3E; will expose everything by default. 
&#x3C;/p&#x3E;
&#x3C;p&#x3E;So, I am in the process of writing 2 modules to do this: one for RPC and one for REST. They&#x27;ll be on my &#x3C;a href=&#x22;http://github.com/amiri&#x22;&#x3E;github&#x3C;/a&#x3E; soon.&#x3C;/p&#x3E;
&#x3C;p&#x3E;Meanwhile, using DBIx::Class::Schema::Loader to read table definitions directly from the database in these modules has made me realize I need to change Moosifier to do the same. In fact, D::C::S::Loader simply needs to be able to write the Moose declarations itself. Moosifier needs to move into Loader.&#x3C;/p&#x3E;
&#x3C;p&#x3E;That&#x27;s my next project.&#x3C;/p&#x3E;
&#x3C;p&#x3E;EDIT:&#x3C;/p&#x3E;
&#x3C;a href=&#x22;http://github.com/amiri/DBIx-Class-Schema-Loader-0.04999_07/tree/master&#x22;&#x3E;There&#x27;s a branch for it now&#x3C;/a&#x3E;. I need some tests though. &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Some_Module_Ideas.html</guid>
<pubDate>Mon, 8 Jun 2009 17:20:39 GMT</pubDate>
</item>
<item>
<title>How I Learned to Write A Real Database Schema</title>
<description>&#x3C;p&#x3E;This is about how I learned to make a real database schema. It was my first exposure to roles and the generally more robust practice of &#x3C;a href=&#x22;http://www.shadowcat.co.uk/archive/conference-video/nwepm/postgres/&#x22;&#x3E;&#x22;multiple inheritance&#x22; object-oriented database design&#x3C;/a&#x3E;. This is one wheel I would never have reinvented on my own, either.&#x3C;/p&#x3E;
&#x3C;p&#x3E;So, I had no clue what I was doing, really.&#x3C;/p&#x3E;
&#x3C;p&#x3E;My data &#x22;model,&#x22; or my &#x22;domain model,&#x22; if it can even be called  
that, was nowhere near relational. It wasn&#x27;t even a &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Data_warehouse&#x22;&#x3E;data-warehouse  
model&#x3C;/a&#x3E;. It was just a bunch of stuff in some tables. There were no  
foreign key constraints.&#x3C;/p&#x3E;

&#x3C;p&#x3E;I had to manually (in the application, which was no where near MVC)  
update everything to maintain the merest shred of &#x22;referential  
integrity.&#x22; In virtually every Mason component there was a huge &#x26;lt;%init&#x26;gt; block that not only pulled in data, but did maps, sorts, extractions, validation, etc. I might as well have been grepping through spreadsheets. I  
remember the day in early May 2007, when someone I considered a  
hardcore Perl programmer told me, &#x22;Oh, you&#x27;ll see. My ORM keeps it  
real simple. You do all that stuff application side.&#x22; Ah, hubris.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Here&#x27;s how it used to look:&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;img src=&#x22;/images/MySQL.png&#x22; alt=&#x22;old schema&#x22; width=&#x22;500&#x22; /&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;Here&#x27;s how it looks now:&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;img src=&#x22;/images/Pg.png&#x22; alt=&#x22;old schema&#x22; width=&#x22;500&#x22; /&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;Wow. You can&#x27;t even really read the newer graph it&#x27;s so dense and interrelated.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The thing is, the current model grew organically, and I was just  
updating my MySQL tables and my class files manually for every  
additional column and accessor. After 18 months of that, adding new  
features, expanding this, modifying that, I had grown myself an  
unmanageably large helping  of spaghetti. Everything was application  
side, remember? No constraints in the DB, no transactions.&#x3C;/p&#x3E;

&#x3C;p&#x3E;I knew I needed some help. I hired shadowcat, and they told me first to send them my current domain model. I did. They pretty much threw it out and we rewrote it from scratch.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Let&#x27;s take a couple of objects as an example.&#x3C;/p&#x3E;
&#x3C;ul&#x3E;
&#x3C;li&#x3E;
User
&#x3C;/li&#x3E;
&#x3C;li&#x3E;
Artist
&#x3C;/li&#x3E;
&#x3C;li&#x3E;
Album
&#x3C;/li&#x3E;
&#x3C;li&#x3E;
Metalabel
&#x3C;/li&#x3E;
&#x3C;li&#x3E;
Track
&#x3C;/li&#x3E;
&#x3C;li&#x3E;
Label
&#x3C;/li&#x3E;
&#x3C;li&#x3E;
Scout
&#x3C;/li&#x3E;
&#x3C;li&#x3E;
Blog
&#x3C;/li&#x3E;
&#x3C;li&#x3E;
Photo
&#x3C;/li&#x3E;
&#x3C;li&#x3E;
Friend
&#x3C;/li&#x3E;
&#x3C;/ul&#x3E;
&#x3C;p&#x3E;
I&#x27;m only going to talk about a couple of these in detail, but you&#x27;ll get the idea. This first thing &#x3C;a href=&#x22;http://www.catalyzed.org/mt/mt-cp.cgi?__mode=view&#x26;id=34&#x26;blog_id=1&#x22;&#x3E;phaylon&#x3C;/a&#x3E; noticed was that a user can do a couple of different things. A user can be an artist or a label and a user can create a metalabel. A metalabel does a subset of the functions of a user: it can make friends and it can post blogs and some other stuff. &#x3C;a href=&#x22;http://www.shadowcat.co.uk/blog/matt-s-trout/&#x22;&#x3E;mst&#x3C;/a&#x3E; said &#x22;Smells like a role.&#x22; phaylon agreed, and came up with a couple of class declarations:&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;
role Creator {
    has blog_entries_about isa ArrayRef[BlogEntry];
    has blog_entries isa ArrayRef[BlogEntry];
    has bulletins isa ArrayRef[Bulletin];
    has comments_about isa ArrayRef[Comment];
    has comments isa ArrayRef[Comments];
    has discussions isa ArrayRef[DiscussionTopic];
    has events isa ArrayRef[Event];
    has friend_requests isa ArrayRef[Friend] where is_accepted is false;
    has friends isa ArrayRef[Friend] where is_accepted is true;
    has photos isa ArrayRef[Photo];
    might have style isa CustomStyle;
    has creator isa ArtistIdentity |
                    Band |
                    Label |
                    Metalabel |
                    Scout |
                    User;
}
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;This Creator role will be consumed by all 5 classes that can &#xE2;&#x80;&#x9C;create&#xE2;&#x80;&#x9D; stuff. Those classes are ArtistIdentity, Band, Label, Metalabel, Scout, and User. Each of those classes have their own definitions. For instance:&#x3C;/p&#x3E;

&#x3C;pre&#x3E;&#x3C;code&#x3E;
class User does Addressable, Artworkable, Bloggable, Commentable, Creator, Discussable, Pollable {
    has artist_identities isa ArrayRef[ArtistIdentity];
    has credit isa CurrencyValue;
    has messages_out isa ArrayRef[Message::Private] where sender is me;
    has messages_in isa ArrayRef[Message::Private] where recipient is me;
    has messages_out isa ArrayRef[Message::Bulletin] where sender is me;
    has messages_out isa ArrayRef[Message::Bulletin::Friend] where sender is me;
    has rsvps isa ArrayRef[Event::RSVP];
    has metalabels isa ArrayRef[Metalabel];
    has labels isa ArrayRef[Label];
    has playlist isa Playlist;
    has address isa Address;
    has favorite isa Genre | Subgenre;
    might have open_id isa OpenID;
    has mail_preferences isa MailPreference;
}

&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;In the User class, we first define the roles it consumes. You can see it consumes multiple roles, among them, Creator. So far, this is fairly clear, I hope. It&#x27;s just a sort of &#x3C;a href=&#x22;http://search.cpan.org/dist/MooseX-Declare/lib/MooseX/Declare.pm&#x22;&#x3E;MooseX::Declare&#x3C;/a&#x3E;-like pseudocode now, but the basic idea is that every class does stuff. Some classes do the same stuff. That is a role. Some classes are really just instances of other superclasses. Like the Label, for instance:&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;class Label isa User, does Addressable, Bloggable, Creator, Commentable, Discussable, Genred, Pollable {
    has address isa Address;
    has artists isa ArrayRef[Label::Artist];
    has billing isa Billing;
    might have paypal_id isa PayPalID
    has company_name isa Str;
    has is_incorporated isa Bool;
    has corp_state isa Str;
    has tax_id isa Str;
}
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;The real mind-bending stuff for me came when we actually began implementing this stuff in SQL. The most important conceptual thing for me was how everything that consumes a role has to have a unique ID. Because a role is implemented in SQL as a primary-key only table!&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;
create table creator (
    id integer primary key not null
);
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;Obviously, if 5 classes are going to be consuming this role, you cannot just start each class&#x27;s table with &#xE2;&#x80;&#x9C;id serial primary key not null,&#xE2;&#x80;&#x9D; because then you coulnd&#x27;t look up a Creator by its ID. Ther would be multiple Creators with the same ID, and your database would be useless.&#x3C;/p&#x3E;
&#x3C;p&#x3E;So all role consuming classes share a sequence:&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;create sequence entity_seq start 1;&#x3C;br /&#x3E;...&#x3C;br /&#x3E;
create table artist_identity (
    id integer primary key not null default nextval(&#x27;entity_seq&#x27;),
    date timestamp not null default &#x27;now&#x27;,
    &#x22;user&#x22; integer not null,
    name text
);

&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;
This doesn&#x27;t only go for things like Creators, which are &#xE2;&#x80;&#x9C;active&#xE2;&#x80;&#x9D; tables, but also for things like Albums, which can be acted upon. My Album in Moosey pseudocode is:&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;
class Album does Artworkable, Bloggable, Commentable, Discussable, Genred, Pollable, Videoable {
    has tracks isa ArrayRef[Track];
    has artist isa MusicProvider;
    has title isa NonEmptySimpleStr;
    has coverart;
    has notes isa Str;
    has is_deleted isa Bool;
    has date isa TimeStamp;
    has creation_date isa Date;
    has album_only isa Bool;
    has free isa Bool;
}
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;So, the Album object does 7 roles. It can be acted upon in 7 ways. It obviously also needs to share in the database-wide unique sequence, so I can look up any particular, say, Bloggable item by its ID:&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;
create table album (
    id integer primary key not null default nextval(&#x27;entity_seq&#x27;),
    date timestamp not null default &#x27;now&#x27;,
    provided_by integer not null,
    title text,
    creation_date date not null,
    notes text,
    album_only boolean,
    free boolean,
    deleted boolean
);
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;
Finally, each object that consumes any role needs to have foreign keys to that role. So, the Album object needs a FK to each role it consumes. It needs 7 Fks:&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;
alter table album add foreign key (id) references artworkable (id);
alter table album add foreign key (id) references bloggable (id);
alter table album add foreign key (id) references commentable (id);
alter table album add foreign key (id) references discussable (id);
alter table album add foreign key (id) references genred (id);
alter table album add foreign key (id) references pollable (id);
alter table album add foreign key (id) references videoable (id);
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;My User object needs 8:&#x3C;/p&#x3E;
&#x3C;pre&#x3E;&#x3C;code&#x3E;alter table &#x22;user&#x22; add foreign key (id) references addressable (id);
alter table &#x22;user&#x22; add foreign key (id) references artworkable (id);
alter table &#x22;user&#x22; add foreign key (id) references bloggable (id);
alter table &#x22;user&#x22; add foreign key (id) references commentable (id);
alter table &#x22;user&#x22; add foreign key (id) references creator (id);
alter table &#x22;user&#x22; add foreign key (id) references discussable (id);
alter table &#x22;user&#x22; add foreign key (id) references pollable (id);
alter table &#x22;user&#x22; add foreign key (id) references videoable (id);
&#x3C;/code&#x3E;&#x3C;/pre&#x3E;
&#x3C;p&#x3E;This is to make updating your tables across views easier when records are created or deleted.
&#x3C;/p&#x3E;
&#x3C;p&#x3E;I still don&#x27;t fully understand that bit, so I&#x27;ll try to write about it next time. Meanwhile, if you&#x27;re not doing something like the above, and you find yourself doing lots of manual record updates in your code, you&#x27;re not using your database effectively!
&#x3C;/p&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/How_I_Learned_to_Write_A_Real_Database_Schema.html</guid>
<pubDate>Sun, 31 May 2009 20:07:55 GMT</pubDate>
</item>
<item>
<title>An Iron Man With Stone Age Technology</title>
<description>&#x3C;p&#x3E;Well, yeah, a bike isn&#x27;t stone-age technology, but it is wood. No, all bikes aren&#x27;t wood, but they used to be. Some of them anyway.&#x3C;/p&#x3E;
&#x3C;p&#x3E;In any case, bikes are essentially primitive in a high-tech kind of a way. Or high-tech in a steampunk kind of way. Right?&#x3C;/p&#x3E;
&#x3C;p&#x3E;A bicycle is the essential hypostasis of the age of enlightenment, human progress under the banner of science and reason, Promethean humanity boostrapping Babel, all under their own power. But, God Almighty, that&#x27;s a lot of work! Who can navigate a modern city on a bike?!?!? Modern cities are built around cars, which are so much easier.&#x3C;p&#x3E;

&#x3C;p&#x3E;Cars are essentially high-tech in a primitive way. They&#x27;re the ultimate hypostasis of the age of disillusionment, human stagnation under the sign of quick fixes and easy rationalizations.&#x3C;/p&#x3E;

&#x3C;p&#x3E;They&#x27;re superconvenient. And superdeadly. It makes you start to wonder about all the work it takes to build and operate a bike. Maybe with car-age, twenty-first century techniques and a bit of &#x3C;a href=&#x22;http://www.enlightenedperl.org/&#x22;&#x3E;that good old enlightenment spirit&#x3C;/a&#x3E; we can...? Nah. The Tesla&#x27;ll be available soon. Forget it.&#x3C;p&#x3E;

&#x3C;p&#x3E;When I began to build this site in April 2007, it was like building a bike at the turn of the twentieth century. Just a bit too late for my tools (and methods) to be viable into the future.&#x3C;/p&#x3E;

&#x3C;p&#x3E;But then, some of the super-fashionable, fully-automated, black-box, computerized conveniences of the Web 2.0 age aren&#x27;t quite viable either. Have you cleaned any spark plugs recently? On a car made in the past couple of years? Can you even find the carburetor? I began to feel like one of the magnificent Ambersons.&#x3C;/p&#x3E;

&#x3C;p&#x3E;So I&#x27;m rebuilding the whole thing from scratch. I got my titanium-alloy tubing, ice-hardened tempered-steel gears and cams, diamond-polished ball bearings, expert advice from &#x3C;a href=&#x22;http://474.at/&#x22;&#x3E;phaylon&#x3C;/a&#x3E; and &#x3C;a href=&#x22;http://www.shadowcat.co.uk/blog/matt-s-trout/&#x22;&#x3E;mst&#x3C;/a&#x3E; at &#x3C;a href=&#x22;http://www.shadowcat.co.uk/&#x22;&#x3E;Shadowcat&#x3C;/a&#x3E;, all the IRC channels, like #dbix-class, #catalyst, #moose, #reaction, mailing lists, etc.&#x3C;/p&#x3E;

&#x3C;p&#x3E;When you get right down to it, neither my bicycle metaphor nor my bike/car disjunction are perfectly appropriate. The simple truth is that I had a dream that metalabel was a bike.&#x3C;/p&#x3E;
&#x3C;p&#x3E;That&#x27;s fine with me, though, cause I&#x27;m just introducing myself and my &#x3C;a href=&#x22;http://www.shadowcat.co.uk/archive/conference-video/nordic-workshop-2009/ironman/&#x22;&#x3E;Perl Iron Man&#x3C;/a&#x3E; blog. My first substantial post will about how I learned to write a real database schema.&#x3C;/p&#x3E;
&#x3C;p&#x3E;Look for it very shortly.&#x3C;/p&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/An_Iron_Man_With_Stone_Age_Technology.html</guid>
<pubDate>Wed, 27 May 2009 19:07:57 GMT</pubDate>
</item>
<item>
<title>I Hate to Say We Told You So&#xE2;&#x80;&#xA6;</title>
<description>But we did. MySpace Music has finally launched and it&#xE2;&#x80;&#x99;s just as underwhelming and biased as &#x3C;a href=&#x22;http://metalabel.com/blogs/amiri/The_MySpace_Record_Label_Deal_Sucks.html&#x22;&#x3E;we predicted it would be&#x3C;/a&#x3E;.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
It&#xE2;&#x80;&#x99;s not because we&#x27;re some great geniuses that we were able to foresee this, but because it&#xE2;&#x80;&#x99;s been obvious for years to anyone watching that MySpace takes independent artists for granted.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Listen up &#x3C;a href=&#x22;http://metalabel.com/registration/index.html?a=1&#x22;&#x3E;artists&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://metalabel.com/registration/index.html?u=1&#x22;&#x3E;fans&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://metalabel.com/registration/index.html?l=1&#x22;&#x3E;labels&#x3C;/a&#x3E;&#xE2;&#x80;&#x94;listen up &#x3C;a href=&#x22;http://www.theorchard.com/&#x22;&#x3E;Orchard&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://www.a2im.org/&#x22;&#x3E;A2IM&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://www.merlinnetwork.org/home/&#x22;&#x3E;Merlin&#x3C;/a&#x3E;: It&#xE2;&#x80;&#x99;s time to stop chasing the crumbs from the majors&#xE2;&#x80;&#x99; table. It&#xE2;&#x80;&#x99;s time to stop chasing vague promises of ad revenue from MySpace. You need to get down with Metalabel.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
We are building a genuine, lasting alternative: a place where independent labels, artists and fans can come and share, discover, sell, and purchase the music we love. Independent music is not a second thought for us: it is why we exist.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
We are exclusively for the growing world of independent music, and at Metalabel, the indies are the stars. &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/I_Hate_to_Say_We_Told_You_So&#xE2;&#x80;&#xA6;.html</guid>
<pubDate>Wed, 1 Oct 2008 15:08:21 GMT</pubDate>
</item>
<item>
<title>Top 50 Rappers Ever</title>
<description>&#x3C;p&#x3E;I came across &#x3C;a href=&#x22;http://rap.about.com/od/toppicks/ss/Top50Emcees.htm&#x22;&#x3E;this survey&#x3C;/a&#x3E; today, and I thought it was pretty cool. I agree with it mostly. Any chart without KRS-One and Rakim in the top 2 spots is a joke, first of all, so this survey gets that right.
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
I can bet a lot of people won&#xE2;&#x80;&#x99;t like how Jay-Z isn&#xE2;&#x80;&#x99;t closer to the top, but that&#xE2;&#x80;&#x99;s just cause they don&#x27;t know their history! And Nas doesn&#x27;t really deserve to be so high up, considering his supreme lyricism was last on display&#xE2;&#x80;&#xA6;14 years ago.
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
Oh well. &#x3C;a href=&#x22;http://rap.about.com/od/toppicks/ss/Top50Emcees.htm&#x22;&#x3E;Check it out though&#x3C;/a&#x3E;!
&#x3C;/p&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Top_50_Rappers_Ever.html</guid>
<pubDate>Sat, 2 Aug 2008 00:15:29 GMT</pubDate>
</item>
<item>
<title>Gnarls Barkley</title>
<description>I watch MTV every so often, but I usually don&#x27;t pay attention&#xE2;&#x80;&#x94;I just have it on while I&#x27;m doing something else.

But when the &#x3C;a href=&#x22;http://www.youtube.com/watch?v=Yfe3EJ3Laho&#x22;&#x3E;video for &#x22;Run&#x22;&#x3C;/a&#x3E; came on, I was transfixed.

Cee-Lo delivers a psycho preacher Sunday morning sermon on acid, and the choir sounds corresponding freaked out.

I have never seen or heard anything like it. I don&#x27;t know if I like it, but I had to pay attention. &#xE2;&#x80;&#x98;Nuff said. &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Gnarls_Barkley.html</guid>
<pubDate>Tue, 13 May 2008 07:10:21 GMT</pubDate>
</item>
<item>
<title>Big Changes</title>
<description>&#x3C;h3&#x3E;Metalabel already has the highest artist payout rate on the planet at a full 80 percent. We&#x27;re proud to announce that we&#x27;re making it even better.&#x3C;/h3&#x3E;
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;a href=&#x22;/registration/index.html&#x22;&#x3E;&#x3C;strong&#x3E;Artists can now register to pay an annual fee of $200 for unlimited sales. No percentages&#xE2;&#x80;&#x94;just pure upside&#x3C;/strong&#x3E;&#x3C;/a&#x3E;.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
For current users, our new e-mail notification system is up. You will be notified of new messages, comments, replies, events, music recommendations, announcements, and blogs about you or your music. Of course, &#x3C;a href=&#x22;/users/editprofile.html&#x22;&#x3E;you can customize your notification settings&#x3C;/a&#x3E;.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Last but &#x3C;em&#x3E;definitely&#x3C;/em&#x3E; not least, we are also very happy to announce our first advertising campaign through &#x3C;a href=&#x22;http://indieclick.com&#x22;&#x3E;IndieClick&#x3C;/a&#x3E; and &#x3C;a href=&#x22;http://undergroundhiphop.com&#x22;&#x3E;Underground Hip Hop&#x3C;/a&#x3E;, one of our most favoritest sites on the Internet. Keep a look out for our ads on your favorite music websites and blogs! &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Big_Changes.html</guid>
<pubDate>Thu, 24 Apr 2008 06:40:30 GMT</pubDate>
</item>
<item>
<title>Wise Words From a Jazz Vet</title>
<description>Jeremy Steig is a lifelong jazz man, a real vet. (He&#xE2;&#x80;&#x99;s also &#x3C;a href=&#x22;http://jeremysteig.info/download.html&#x22;&#x3E;a painter&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://amiribarksdale.com&#x22;&#x3E;like me&#x3C;/a&#x3E;. That&#xE2;&#x80;&#x99;s his artwork on this blog. Wild palette, right?) I&#xE2;&#x80;&#x99;m talking like 45 years in the music business. I reached out to him through a drummer friend of mine, and tried to talk to him about selling some of his music  through &#x3C;a href=&#x22;http://metalabel.com&#x22;&#x3E;Metalabel&#x3C;/a&#x3E;, but he has serious reservations about the digital music business, and the music business in general. I can&#xE2;&#x80;&#x99;t say I blame him, after what he&#xE2;&#x80;&#x99;s seen and experienced.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
But during that conversation, he was so personable and engaging that I couldn&#xE2;&#x80;&#x99;t get off the phone with him! &#x3C;a href=&#x22;http://jeremysteig.info/bio.html&#x22;&#x3E;He plays jazz flute&#x3C;/a&#x3E;, which is my favorite woodwind instrument (yes, even above the sax. I love the flute&#xE2;&#x80;&#x99;s sound so much I sought to purchase one and take lessons, but &#x3C;a href=&#x22;http://wwbw.com/Pearl-Flutes-Flutes---Piccolos-c61+4294900173+4294940224.music&#x22;&#x3E;even the student flutes were so expensive&#x3C;/a&#x3E; I had to try to learn &#x3C;a href=&#x22;http://www.ridenourclarinetproducts.com/&#x22;&#x3E;clarinet instead&#x3C;/a&#x3E;). I just think the instrument just has a beautiful voice, and &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Eric_Dolphy&#x22;&#x3E;Eric Dolphy&#x3C;/a&#x3E; is my favorite classic jazz player.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
We ended up scheduling a dinner, and on Friday, April 4, &#x3C;a href=&#x22;http://metalabel.com/Ryann.html&#x22;&#x3E;Ryann&#x3C;/a&#x3E; and I met him at &#x3C;a href=&#x22;http://nymag.com/listings/restaurant/bar-6/&#x22;&#x3E;Bar 6&#x3C;/a&#x3E;, &#x3C;a href=&#x22;http://metalabel.com/about.html#cafe&#x22;&#x3E;the same caf&#xC3;&#xA9; where we first discussed Metalabel&#x3C;/a&#x3E;. We all ordered cr&#xC3;&#xA8;me br&#xC3;&#xBB;l&#xC3;&#xA9;e, and Jeremy proceeded to drop knowledge for about 4 hours.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
We ended up walking back to his crib, cause I wanted to buy some CDs. So we got to meet his wife, and continue our discussion.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
I ended up buying four CDs, all full of good music. My favorite is &#x3C;a href=&#x22;http://www.jeremysteig.info/store.html?pid=2630&#x22;&#x3E;&#x3C;em&#x3E;Flute on the Edge&#x3C;/em&#x3E;&#x3C;/a&#x3E;. He does a lovely rendition of &#xE2;&#x80;&#x9C;You Don&#xE2;&#x80;&#x99;t Know What Love Is,&#xE2;&#x80;&#x9D; and &#x3C;a href=&#x22;http://www.jazzreview.com/guest/review-17546.html&#x22;&#x3E;I&#xE2;&#x80;&#x99;m not the only one who thinks so&#x3C;/a&#x3E;!
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
It&#xE2;&#x80;&#x99;s been almost two full weeks since that evening, and it took just about that long for me to wrap my mind around all we discussed.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
While I won&#xE2;&#x80;&#x99;t go into specifics, I can tell you that meeting Jeremy reconfirmed us in our mission to supersede the record label system and construct another avenue for independent artistic success.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
I&#xE2;&#x80;&#x99;m saying&#xE2;&#x80;&#x94;when labels don&#xE2;&#x80;&#x99;t even want to pay for studio time for their own artists, or when they have to &#x3C;a href=&#x22;http://metalabel.com/blogs/Ryann/Soap_Company_to_Make_Sucky_Sudsy_Music.html&#x22;&#x3E;partner with soap companies&#x3C;/a&#x3E; to be able to &#xE2;&#x80;&#x9C;afford&#xE2;&#x80;&#x9D; marketing their own artists, we need something new.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
So, thanks, Jeremy, for the wisdom and knowledge. Keep playing! &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Wise_Words_From_a_Jazz_Vet.html</guid>
<pubDate>Tue, 15 Apr 2008 22:19:32 GMT</pubDate>
</item>
<item>
<title>The MySpace Record Label Deal Sucks</title>
<description>With this deal, MySpace shows once and for all that it doesn&#x27;t give a damn about independent artists.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
MySpace has been around in its current incarnation since &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Myspace&#x22;&#x3E;2003&#x3C;/a&#x3E;. I don&#x27;t know how many of you remember, but before that it was a part of eUniverse/InterMix Media, a &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Intermix_Media,_Inc.&#x22;&#x3E;gigantic adware/spyware shop&#x3C;/a&#x3E; that &#x3C;a href=&#x22;http://topics.nytimes.com/top/reference/timestopics/people/s/eliot_l_spitzer/index.html&#x22;&#x3E;Eliot Spitzer&#x3C;/a&#x3E;, he of &#x3C;a href=&#x22;http://www.myspace.com/ninavenetta&#x22;&#x3E;the whore&#x3C;/a&#x3E;, sued for illegally installing spyware on users&#x27; machines.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
We can talk later about exactly how much has changed, what with the general spamminess and sloppiness that continues to define the MySpace experience.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
For now, keep in mind that MySpace has been around for 5 years, claiming to be a friend of the independent artist. There are about 4 million artists on MySpace now. (You can see this if you browse by top genres and add up the columns.) Less than 1 percent of them have major label deals.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
What exactly has MySpace done for these 4 million artists in the past 5 years? Allow them to put up a page, post songs for listening or free download only, and post some band info. Great.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Oh, and a little more than a year ago, in September 2006&#xE2;&#x80;&#x94;around the time they banned outgoing links in all other Flash applications&#xE2;&#x80;&#x94;they finally introduced a way for independent artists to sell their music on MySpace! Yippee!!!
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
But what was it? It was a monopoly deal with Snocap, whereby independent artists can use the SnoCap Flash widget to sell their music on MySpace.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
And SnoCap is utter bullshit.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
If you&#x27;re a total indie artist, you pay a yearly fee and 39 cents per song &#x3C;strong&#x3E;and&#x3C;/strong&#x3E; a retail fee of 10 or 15 percent&#xE2;&#x80;&#x94;whichever is larger. If you&#x27;re on an indie label, you can negotiate some of those terms. If you&#x27;re on a major label, of course, you can negotiate everything!
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Starting to get the picture?
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;a href=&#x22;http://www.theregister.co.uk/2006/07/19/myspace_royalty_snub/&#x22;&#x3E;MySpace has tried in the past to defend its utter negligence of independent artists&#x3C;/a&#x3E;, but I&#x27;m not buying it. There&#x27;s no way crappy deals with SnoCap and T-shirt sales are gonna cut it for independent artists in the twenty-first century.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
So, &#x3C;a href=&#x22;http://www.nytimes.com/2008/04/03/technology/03cnd-myspace.html&#x22;&#x3E;when MySpace announced its deal to sell music for the major labels&#x3C;/a&#x3E;, with the majors still setting &#x3C;a href=&#x22;http://metalabel.com/info.html#80years&#x22;&#x3E;the same terms as they have for the past 80 years&#x3C;/a&#x3E;, I just had to laugh.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
It&#x27;s a slap in the face to the independent artists who, for better or worse, have made MySpace their home up to this point, and have given MySpace whatever little credibility it has. (Remember, this is a company that got its start installing spyware.)
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Not only have the independent artists gotten no love for the past 5 years, but now, the majors&#xE2;&#x80;&#x94;having trouble selling their crappy overpriced product, and looking to colonize the user bases of online networks, come a&#x27;knockin&#x27; at MySpace&#x27;s door. And MySpace opens up and says, &#x22;Sure, come right on in! We&#x27;re not really doing anything to sell our independent artists&#x27; music to our user base. Have at it! More Akon, T-Pain, and 50 Cent for everybody! Bring your auto-tuners!&#x22;
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Get the picture?
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
All the independent artists on MySpace are now &#x3C;em&#x3E;officially&#x3C;/em&#x3E; second-class citizens. They were before, with the &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/MySpace_Records&#x22;&#x3E;MySpace Records&#x3C;/a&#x3E; label, their &#x3C;a href=&#x22;http://www.news.com/8301-10784_3-9768308-7.html&#x22;&#x3E;&#x22;tour&#x22;&#x3C;/a&#x3E;, and the crappy SnoCap deal, but now it&#x27;s official.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
When we were starting &#x3C;a href=&#x22;http://metalabel.com&#x22;&#x3E;Metalabel&#x3C;/a&#x3E;, we wondered for months and months why MySpace didn&#x27;t just sell music for the independent artists on its site. We fought about it, thought about it, and wrote about it.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
But now it&#x27;s clear that MySpace wants a guaranteed income from the major labels&#x27; established artists&#xE2;&#x80;&#x94;&#x3C;a href=&#x22;http://arstechnica.com/news.ars/post/20071231-ho-ho-horrible-music-sales-plunge-20-percent-this-christmas.html&#x22;&#x3E;even if that is a declining figure&#x3C;/a&#x3E;, and even if they have to split up the &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Rent-seeking&#x22;&#x3E;&#x22;rent&#x22;&#x3C;/a&#x3E;&#xE2;&#x80;&#x94;and not even 5 years worth of user-generated content, artist uploads, and fan activity on the site, amassing a group of 4 million artists&#xE2;&#x80;&#x94;not even this is enough for them to even consider doing anything for the independent artist.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
We used to &#x3C;em&#x3E;wonder&#x3C;/em&#x3E; why they never did anything for the independent artist. Now we &#x3C;em&#x3E;know&#x3C;/em&#x3E;. And now we know that they never will. &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/The_MySpace_Record_Label_Deal_Sucks.html</guid>
<pubDate>Fri, 4 Apr 2008 20:24:32 GMT</pubDate>
</item>
<item>
<title>New Stuff</title>
<description>The Metalabel discussion forum is open! &#x3C;a href=&#x22;http://metalabel.com/static/&#x22;&#x3E;Start some static!&#x3C;/a&#x3E; The &#x3C;a href=&#x22;/static/&#x22;&#x3E;STATIC forum&#x3C;/a&#x3E; is open to the public&#xE2;&#x80;&#x94;you do not have to be a registered user to join in the mayhem.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;em&#x3E;And&#x3C;/em&#x3E; we are especially proud to announce that you can now &#x3C;a href=&#x22;http://metalabel.com/users/invite.html&#x22;&#x3E;invite your friends&#x3C;/a&#x3E; from other networks or elsewhere to join you on Metalabel!
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
If you&#x27;re an artist, now&#x27;s the time to break out the Rolodex and hit up your contacts, and tell your fans where to download your music!
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
If you&#x27;re a music lover, now&#x27;s the time to invite your friends and start a discussion.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
We have something else up our sleeve for the very near future, too, so keep an eye out! By the way, what do you think of the new logo?
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;strong&#x3E;Amiri and Ryann&#x3C;/strong&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/New_Stuff.html</guid>
<pubDate>Wed, 2 Apr 2008 04:35:34 GMT</pubDate>
</item>
<item>
<title>Billy Wooten</title>
<description>I love Keith Sweat, cause I&#x27;m just that kind of cat. When &#x3C;a href=&#x22;http://www.amazon.com/Make-Last-Forever-Keith-Sweat/dp/B000002H5A&#x22;&#x3E;&#x3C;em&#x3E;Make It Last Forever&#x3C;/em&#x3E;&#x3C;/a&#x3E; came out in 1987, I would play it all day long, all summer long, on my Fisher&#xC2;&#xA9; dual-auto-reverse smart-dubbing boom box (8 double-Ds, baby) at the swimming pool in our apartment complex in Houston, Texas, and try to talk to girls. I thought I was real cool.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Now I feel like a fool. Cause I didn&#x27;t know &#x22;In the Rain&#x22; was a remake! I was listening to Madlib and them&#x27;s &#x3C;a href=&#x22;http://www.stonesthrow.com/funky16/wooten.html&#x22;&#x3E;Funky 16 Corners&#x3C;/a&#x3E;, and I heard the original &#x22;In the Rain&#x22; by Billy Wooten.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Now that I think about it, of course it was a remake. Duh. &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Billy_Wooten.html</guid>
<pubDate>Mon, 24 Mar 2008 23:17:39 GMT</pubDate>
</item>
<item>
<title>Demain, le Monde!!!</title>
<description>Just kidding about &#x3C;em&#x3E;demain le monde&#x3C;/em&#x3E;. Not really. No, just kidding.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Anyway, we did fix a problem last night with the user registration form, like Ryann said in her bulletin. But it&#x27;s all good now.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
We wanna be as global in scope as music is universal in appeal, so we had to do it right! &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Demain,_le_Monde!!!.html</guid>
<pubDate>Thu, 21 Feb 2008 18:02:15 GMT</pubDate>
</item>
<item>
<title>Welcome to Metalabel!</title>
<description>
&#x3C;p&#x3E;
As I write this, it is February 4, 2008. We&#x27;re just getting started!
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
We started this business in an effort to change the landscape of our culture industry. Nothing less.
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
We want you, &#x3C;em&#x3E;the artist&#x3C;/em&#x3E;, to sell your music, connect with your fans, post your events, and become the artist that you always wanted to be, without compromise or being taken advantage of.
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
We want you, &#x3C;em&#x3E;the user&#x3C;/em&#x3E;, to discover artists, connect with other music lovers, and to take this social network outside the confines of cyberspace and into the world&#x27;s live music venues, clubs, and parties. We want to make social networking &#x3C;em&#x3E;real&#x3C;/em&#x3E;. We want you to be able to support the artists you like and have a more meaningful relationship to the artists and the music you love.
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
Metalabel will not sell you out or sell your personal information. The only thing we want to sell is music at a fair price for music lovers and the artists that make the music.
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
Metalabel was created by two people who want to end corporate domination of the world&#x27;s culture. Join us today and help make a new world!&#x3C;/p&#x3E; &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/Welcome_to_Metalabel!.html</guid>
<pubDate>Fri, 15 Feb 2008 05:58:11 GMT</pubDate>
</item>
<item>
<title>New Pictures</title>
<description>I posted some pictures from our April 2007 LA trip, when we were just beginning to build this business. Check &#x27;em out on my photo page! &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<guid isPermaLink="true">http://metalabel.com/blogs/amiri/New_Pictures.html</guid>
<pubDate>Wed, 6 Feb 2008 02:20:43 GMT</pubDate>
</item>
<item>
<title>Bus Mtg</title>
<description>Meeting. We&#x27;re discussing the VCs and our bus. plan. &#x3C;img src=&#x22;http://metalabel.com/users/pictures/thumbnails/amiri.jpg&#x22; align=&#x22;right&#x22; alt=&#x22;&#x22;&#x3E;</description>
<category> Events</category>
<guid isPermaLink="true">http://metalabel.com/events/amiri/Bus_Mtg.html</guid>
<pubDate>Mon, 6 Apr 2009 17:46:06 GMT</pubDate>
</item>
</channel>
</rss>






