Archive for May 2009

Domain specific knowledge in Music. Mainstream hip-hop’s problem.

As a follow up to one of my previous opinions of the importance of domain specific knowledge to be productive, I happened across an interesting example worth sharing.

Domain specific knowledge not only helps with productivity, it also makes a big difference in accuracy. That’s where the example comes in.

I’m a big fan of Lupe Fiasco’s music, and his old mixtapes were some of the best works in hip hop since the early 90s. So I was listening to his “Happy Industries”, enjoying his brilliant lyrics and mash-up abilities. So I figured I should check out the full lyrics and post it on facebook. This is what I found on each of the top 5 google results for “Lupe Fiasco Happy Industries Lyrics”:

Once upon a time not long ago
An ID yeah that’s what I had
To take DNA
As a little pro two
With my MCing ways and make em mad
Just having fun not chasing cash
Apologise now for it make ya mad
Had to call g wall tell em warm up the mic
Put the pendant on the wall tell em make some maaagiicc
Shorty it’s nothing lavish
Matter of fact
It’s just an attic
Background noise from the family
Hearing the mic slaying in the outside traffic
Still turned out fantastic
Turn my vocals up just a tad bit
Fresh from the first and fifteen
Quarantine touching you super cool that asset

I’m sorry, but this is utter crap. Some fan with very little knowledge about the music industry must have transcribed this. It makes no sense whatsoever, and unfortunately the state of hip-hop is such that most people will accept that fact that it makes no sense. But Lupe tends to have great lyrics, so on listening to the song again, this is what he’s really saying:

Once upon a time not long ago
An idea yeah that’s what I had
To take demon days
And a little pro tools
With my MCing ways and make a mash.
Just having fun not chasing cash
Apologize now if I make ya mad
Had to call g wall tell em warm up the mic
Put the pendant on the wall tell em make some maaagiicc
Studio is nothing lavish
Matter of fact
It’s just an attic
Background noise from the fan
Hearing the mic slaying in the outside traffic
Still turned out fantastic
Turn my vocals up just a tad bit
Fresh from the first and fifteen
Quarantine touching you super cool thats just ah sick!

Notice what just happened. The lyrics went from some song filled with what we can only consider to be slang we don’t understand and randomly “slaying the mic” to a song about him making “sick” music using just his laptop and his little home studio in his attic, not here to make money but here for the magic. He talks about using Pro Tools, something that people with experience in the music industry knows about, and making mash-ups between tracks. Funny, because the song itself is exactly a mashup of Gorillas’ Demon Days album and his lyrics. It should be obvious that these are the correct lyrics.

If Hip-Hop is so infused with the ideas of making money that a song saying “its not about money” can so quickly become so convoluted… You be the judge.

BruteSoft comes out of stealth!

In between my studies and research (which is drawing to a close, by the way!) I’m also involved in BruteSoft, a startup pushing a dramatically different system for enterprise software distribution. We’ve been working hard at this over the last 6 months (although preliminary talks started almost 2 years ago), and we’re ready to come out and play!

To give you a snippet of the kind of things we do, I’ll pull out some highlights from the product page:

Today, BruteSoft provides enterprises with a radically new approach to managing their computers in an efficient and effective way, saving you money and reducing your carbon footprint.

BruteSoft innovates software solutions based on our patent-pending federated distribution technology (DBx). Our solutions are secure, exponentially scalable and self-healing, eliminating hardware layers and delivering unrivalled speeds in an energy efficient way. DBx decouples client demand from distribution servers, which enables software distribution to an unlimited number of clients without the need for additional infrastructure.

Our products have reached the pinnacle of software distribution efficiency. As a proof point, our products are capable of transferring the equivalent of a DVD of 5GB within 5 minutes to 10,000 desktops on a 1Gbit LAN/WAN.

Go check out the website, and if you’re managing a large amount of computers (or know people who do!) send them out way!

Python is Wrong

I recently did about 3 days of solid hacking in Python, and discovered some limitations and some nice features of the language and its libraries in the process.
I can complain about how limited the lambda is compared to my experiences with Scheme, or how lacking its process management utilities are, but more importantly, there’s something fundamentally wrong with python.

You see, it has this neat easter egg. “import this” prints the following poem, see if you can state the gross error. To make it easier, I’m putting the gross error in BOLD.

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

Oh come ON! Anyone who’s ever done numerical simulation or any kind of computational physics knows that Implicit has the same error as Explicit but is unconditionally stable!

Give me implicit euler integration or give me death.

The 10x programmer’s secret – Domain Specific Knowledge

There’s an interesting discussion going on on Hacker News, about “coding fast” and the mythical “10x programmer”. I know at times I’ve been that 10x coder, and at other times I was the 0.1x guy confused in the back, so I was curious to see what others were thinking.

The discussion centers around learning languages and becoming comfortable with the features, the APIs and your tools, but some comments focused on another area of programmer productivity that can be called “Knowing what to write”. Domain specific knowledge allows you to have huge boosts in productivity since you only code what is really necessary, and you don’t waste time coding peripheral features or get mired down in struggling with where to start and how to move forward.

The discussion is here:

So I have one suggestion for both building domain specific knowledge and avoiding the slump of getting stuck, or writing unnecessary code: Prototype and Iterate! It’s already a fairly well established idea in design and programmer circles, but the advantages of prototyping becomes even more clear if you consider it in the light of learning a domain.

That 10x programming speedup you’re looking for probably lies in coding simple systems, and building on top of them, rather than spending hours writing code that “will come in handy later” or attemping to complete some set of the code before moving on to the next.

My friend Marcello mentioned the amount of projects he’s started – much more than he’s ever finished. I think that this points to going through the process of learning a domain by building prototypes, throwing them away, and letting your ideas organically grow as you build things.

So let’s go be productive!