This post is based on a talk titled “Couples Counseling for Software Development” given at GROW Talks in Vancouver.

So addicted to this album right now.

(Source: Spotify)

Tags: music spotify

damanbahner:

Short post here as I’m headed right back to Stipple, but wow - they put a lot of thought into this. I LOVE how rolling over a photo can produce so much data, especially liking the Twitter stream with the rollover as shown. I can’t really imagine all the creative uses this will have as people…

(Source: geek-grind)

To ward off luchador vampires? (Taken with Instagram)

To ward off luchador vampires? (Taken with Instagram)

Beer ops (Taken with instagram)

Beer ops (Taken with instagram)

Gaming at La Boheme (Taken with instagram)

Gaming at La Boheme (Taken with instagram)

marksweep:

Via: iamrobertbain.com

When President Obama asked Steve Jobs what it would take to make iPhones in the United States, the late Apple co-founder supposedly quipped: “Those jobs aren’t coming back.”

When I read this, it reminded me of something my dad presented to us as kids a long time ago- The Beer Game.

My dad…

My idea to “Kill Hollywood”

This is in response to the excellent Y Combinator "Kill Hollywood" request for startups.

I think it’s simple (though not easy): beat them at their own game by starting a new studio. A kind of studio that has never existed. A kind that could not have existed before. We are now at a moment in time where the internet, home theater, and mobile devices have coalesced into a ubiquitous media experience for a critical mass of people. The nascent ubiquity of web-enabled media devices provides an unprecedented opportunity to completely disrupt the traditional cinematic distribution model.

Our new studio will work like this:

1) Every movie production will be funded and executed like a tech startup. Terms for new productions will be transparent and consistent. The studio will operate like an angel investor: writers/directors will pitch production ideas to the studio through a well-defined (and primarily web-based) process and the best ideas will receive a term sheet. Terms will vary based on the talent involved and budget requirements, but will be consistent within these dimensions (for example, the studio will usually get x% equity stake when backing a brand new director, a bit less with a mid-tier director, and the smallest stake with a top-tier director).

2) In exchange for such transparency and equitable terms, directors/producers for each production must manage budgets extremely tightly. In fact, budgets will be doled out on a recurring basis and any excess budget needs must be raised independently of the original term sheet. For example:

  • The studio green lights a 4-month, $10M production. Funds for the production will be disbursed on a pre-determined timetable (say, $4M the first month, $2M per month for the next three months). The disbursement timetable is set forth in the initial term sheet. The director/crew must therefore be very mindful of monthly spend and do careful planning up front. Say that, at the end of the four months, the production still needs 4 weeks of post-production work, estimated to cost an addition $2M. The production stakeholders (including the writers/director) will have to raise this money, very likely not from the studio itself. The expectation is that they will raise this money by shopping around the unfinished product and selling a portion of their equity stake to outside investors.
3) Marketing spend also comes out of the original budget and the high-level marketing plan is set forth as part of the original term sheet. Marketing for productions will eschew traditional the Hollywood approach in favor of online strategies. Trailers will be produced, but primarily distributed via online/mobile (instead of shown in theaters behind a barrage of shitty car commercials). In fact, we are completely side-stepping the symbiotic cancerous beast that is the current studio/theater cabal (see #5 below).

4) Cast and crew will be compensated normally, but writers/directors will be expected to act as equity stakeholders alongside the studio investors. They will typically receive a personal stipend during production, but their real payday will not come until after the film’s release and revenues are generated. Basically, every writer/director gets “points” and significantly more than the Hollywood studio system typically provides. Also, no “creative accounting” on the studio’s part. Accounting methods for calculating and paying out rev share will be agreed to at the outset, as part of the original term sheet.

5) Online/mobile streaming only. $0.99 per viewing. That’s it. You click “watch now”, we charge you $0.99. “What if it’s a short?” you ask. “What if it’s a 3-hour epic?” you ask. Doesn’t matter — $0.99 per viewing.

6) An open source API will be provided, so that 3rd-party platforms can easily make the studio’s productions available for viewing anytime, anywhere, on any device (for $0.99 per viewing).

7) Merchandising will be managed by the studio, primarily e-commerce driven, and revenue sharing terms worked out ahead of time as part of the original term sheet.

The portfolio of productions that the studio creates will be carefully curated (as part of the pitch/vetting process) in order to maintain profitability. In other words, certain types of productions can actually be quite profitable with very low production budgets. We have 100 years of Hollywood box office numbers from which we can easily deduce what types of productions these are. Think of it as “Moneyball for movies” — that is, what types of successful film productions does Hollywood tend to undervalue in favor of large, expensive (and tremendously risky) blockbuster attempts?

Experience suggests that such “sleeper” productions that slip through the current studio system tend to be intelligent, well-written, well-directed films that focus primarily on storytelling rather than eye candy or star appeal, are enjoyable to watch, and can typically be consumed in 90 minutes or less. How awesome does that sound?

I suspect that Harvey Weinstein would grok this pretty well.

Moving On

I’m proud to announce that I have accepted a new position as Vice President of Software Engineering with Stipple, a tech startup in San Francisco. Stipple has created an exciting new platform that turns static images into dynamic marketing channels, pioneering a new form of advertising that is much more effective than banner ads or (shudder) popovers, while being much less obtrusive for the end user.

As excited as I am about the opportunity with Stipple, the decision to leave Memphis has been a very difficult one. I love Memphis, and one of the reasons for moving back here in 2008 was to help grow the Memphis entrepreneurial community and, in the process, start up a successful tech business of my own. To this end, I led the launch of both MarksMenus and Ernie’s over the last couple of years. Through hard work, the teams I’ve had the pleasure of leading on these projects have accomplished a lot and seen some real success, but not enough in terms of revenues or investment for these businesses to really take off.

When considering why we didn’t make it one could point at the people involved and say I was the wrong leader or that Mark, Eric, Christian, Mike, Irvin, Brad, Sam, and the many others that worked with me on these projects just weren’t talented enough people. My own leadership notwithstanding, let me unequivocally dispel any doubt about the wonderful folks I’ve worked with. There are lots of extremely smart and talented folks here in Memphis and it’s been my great privilege to meet and work with many of them on these business ventures.

So why didn’t we make it? In reflecting on this question, I recently read another of Paul Graham’s wonderful essays on technology and entrepreneurship and I believe he nails it. In "Why Startups Hubs Work", Mr. Graham writes that it is the natural outcome for startups to fail. This doesn’t mean that it’s impossible to succeed — just very, very hard. Without any mitigating factors, failure is far and away the most likely outcome. Graham goes on to argue that the San Francisco Bay Area has attained a critical mass of startups that — in and of itself — increases the chances of success of any tech startup within that ecosystem. As he states, this doesn’t mean it’s impossible to succeed elsewhere, just much harder.

So, this is an admission that I don’t have it in me to continue the much harder path of creating a successful startup in Memphis. I sincerely hope others do. And I strongly encourage the local business, investor and political communities to wake up and smell the coffee. The world isn’t just changing, it has already changed. For Memphis to grow economically, she must invest in and support the creation of new companies. A radical shift in perspective is needed. A lot of local attitudes need to change. I fear the alternative.

Node.js, Express and MongoDB on Snow Leopard - Step by Step

So, I started experimenting with a new technology stack recently. Namely:


While there are many good blog posts out there around these various components, installing this particular stack is a swiftly moving target so I thought I would share my most recent experiences. Here’s my quick how-to for installing and running these on Mac OS X Snow Leopard.

MongoDB 
(many thanks to Chris K.)

  1. Download and install

curl http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-1.6.3.tgz > mongo.tgz
tar -xzvf mongo.tgz
sudo mv mongodb-osx-x86_64-1.6.3 /usr/local/mongodb
cat << EOF > /usr/local/mongodb-osx-x86_64-1.6.3/mongodb.conf
dbpath = /usr/local/mongodb
logpath = /var/log/mongodb/output.log
bind_ip = 127.0.0.1
EOF
sudo chown -R root:wheel /usr/local/mongodb-osx-x86_64-1.6.3
sudo ln -s /usr/local/mongodb-osx-x86_64-1.6.3 /usr/local/mongodb

  2. Make a launchd job for MongoDB.

Save the following as “/Library/LaunchDaemons/org.mongodb.mongod.plist”:


Label
org.mongodb.mongod
ProgramArguments

/usr/local/mongodb/bin/mongod
run
--config
/usr/local/mongodb/mongod.conf

RunAtLoad

KeepAlive

WorkingDirectory
/usr/local/mongodb
StandardErrorPath2
/var/log/mongodb/output.log
StandardOutPath
/var/log/mongodb/output.log



Load the launchd job:

sudo launchctl load /Library/LaunchDaemons/org.mongodb.mongod.plist

Pull up http://localhost:28017 in your browser and verify that MongoDB is running

node.js and friends(many thanks to Isaac S.)

  1. Install node.js and npm (node package manager)

echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
mkdir ~/local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/local
make install
curl http://npmjs.org/install.sh | sh

  2. Install Express, Jade and Mongoose

npm install express
npm install jade
npm install mongoose

Putting it all together(many thanks to Éber D.)

cd ~/path/to/my/project
mkdir views
mkdir models

  1. Create the following files:

./app.js

var sys      = require('sys'),
express = require('express'),
app = express.createServer(),
Counter = require('./models/counter');

app.configure(function(){
app.use(express.methodOverride());
app.use(express.bodyDecoder());
app.use(app.router);
app.use(express.staticProvider(__dirname + '/public'));
app.set('view engine', 'jade');
});

app.get('/', function(req, res) {
Counter.count(function(num_records) {
if (num_records > 0) {
var c = new Counter();
c.num = 0;
c.save(function(){
res.render('index', {locals: {count: c.num}});
});
} else {
Counter.find().last(function(c){
c.num = c.num + 1;
c.save(function(){
res.render('index', {locals: {count: c.num}});
});
});
}
});
});

app.listen(3000);
sys.puts("HTTP server is listening on port 3000");

./models/counter.js

var mongoose = require('mongoose').Mongoose,
db = mongoose.connect('mongodb://localhost/db');

mongoose.model('Counter', {
properties: ['num']
});

module.exports = db.model('Counter');

./views/layout.jade

!!! 5
html(lang="en")
head
title= "My Test App"
:javascript
| if (foo) {
| bar()
| }
body
div!= body

./views/index.jade

h1 My Test App
#container
p This page has been viewed #{count} times

  2. Start your node server

node app.js

  3. Bask in the glory of your success by visiting http://localhost:3000

If all went well, you’ll see a welcome message and a counter of the number of times the page has been viewed. Happy coding!