2011 has been a crazy year for me.  So crazy, in fact, that we’re in the middle of September and this is my first post of the year.

It was a great year at New York Media, where we continued to develop an amazing software development team, and made great progress on some hard-core replatforming.  It was hard to say goodbye, but in August I moved on to Condé Nast, where I am leading the product team in the Tech organization.  I’m also in my third semester at Columbia working on my Executive MS in Technology Management.  And my two wonderful little girls have turned 5 and 6.

So this has left no time to write anything significant, and probably will continue to leave a void here.  But I’m so excited to be at Condé, and part of a tech organization that has had, and continues to have such amazing talent…and to be working with such amazing brands.

Posted in Uncategorized | Leave a comment

Online Conversations and Seeds of Innovation.

Farm Radio- Ghana

credit: Gates Foundation

I was using Outlook today, reviewing my mail, and was thinking about how painful it was to review my mail.  There must have been about 10 concurrent e-mail discussions, with plenty of back and forth.  Simple date sorting for these notes left much to be desired.  Gmail sorts by disussion, and I hadn’t thought about it since it rolled out back in May ’04 (check out my quote in this PCWorld article), but it’s quite convenient.  Even my iPhone organizes my e-mail this way, and it just makes sense.  Outlook kind of supports this, although I hadn’t realized.  In fact, I’ll try it tonight.

But this also made me think of Facebook, and relevance.  Facebook sorts their default view, and considers how recently an update to the discussion is made, among other things, to determine the order.  I used to hate it, but I’ve grown to like it; it’s gotten rid of plenty of clutter in my Facebook page.

Google has also been experimenting with another sorting system that considers “importance” of a discussion based on the sender (among other things).  While my trial didn’t go so well, I’d like to give it another shot, because I think the idea is spot on.  Unfortunately, it could cause us to miss important messages from seemingly unimportant strangers, so it is not a replacement for perusing all of your e-mail.

What this all boils down to, really, is that it’s all about the conversation.  Individual e-mails and comments can be interesting, but discussions are a lot more interesting.  And the social web has really hit a homerun in recognizing this.  I believe more businesses need to start taking advantage of these kinds of discussion-based tools to bring their employees closer together, and to help drive innovation.  The conversations could be seeds of innovation.

Posted in Social Media, Team Management | Tagged , , , , , , , | Leave a comment

Roy Fielding is Awesome (and so was Day Ignite)

Roy Fielding

Roy Fielding

I met a serious living legend this weekend at the Day Ignite conference in Chicago.  I don’t usually get star-struck, but Fielding is one of the principal authors of HTTP, the creator of the REST architectural style, not to mention tons of other contributions to, well, the world.  Browsers work the way they do, largely, because of him and his work.  Just about everyone on the planet uses HTTP.  And I have a career because of his work.  My wife asked “so it’s his fault I always have to type HTTP?” And the answer is, well, yes, but that’s a good thing :)   I’m looking forward to learning more about waka, his next contribution.

The conference was a great experience.  I had the opportunity to meet David Nuescheler (for the second time) who is the spec lead for JSR-283, for Java Content Repositories.  I also had the opportunity to speak with Jean-Michel Pittet, Day Software’s SVP of Engineering, Greg Klebus, a Day product manager, and Lars Trieloff again, also a product manager at Day, who I met for the first time a few months back.  I had the opportunity to chat with many of Day’s great customers, including Warren Habib from MTV, who I met for the first time about a year ago at an event in New York.

Most importantly, I got to enjoy an incredible event with some developers on my team. I wish I could have brought them all, but I had a great time with Andrei, @parito, and @filku, and we were able to learn a lot about Day’s plans for CQ 5.4, which is currently in beta.  Thank you to New York Media, who flipped the bill for us to attend this conference.  We’re hoping to return in 2011 in San Francisco!

Posted in Software Development | Tagged , , | Leave a comment

Foursquare – A Geek’s Perspective

I went to the town fair with my wife and kids last night, and there were a total of three Foursquare check-ins: myself, my wife, and one other person.  I’m certain most of those kids at the fair had cell phones with browsing, so why aren’t they using Foursquare?  Even if their parents didn’t want them to, that would be just more motivation to do it.

So I have to wonder, is generation Z into it at all?  According to ignite Social Media only 8% of FourSquare users are under 25.  Does that mean doom for FourSquare?

Well, here are some of my thoughts based on using FourSquare for quite some time now:

  1. I’ve now proven I don’t get out enough.  The only place I can really hold up as mayor is my office.
  2. My iPhone 3G is awful since I’ve upgraded to iOS 4, and I lose my patience trying to check-in.
  3. That’s if I even remember to check-in.  After months of this, it’s still not a habit.
  4. I like knowing when my friends are on my train…great for meeting up.
  5. There are times you simply should not check-in.  Be careful not to do it anyway out of habit.  This is not such a problem for me.
  6. WeePlaces is by far the coolest app tied to FourSquare.  Follow my travels on a map and timeline!
  7. Foursquare spreads virally.  I easily have 10-20 friends that have added foursquare after I showed it to them…and they actually use it.  And I’m sure they’ve passed it on as well.
  8. I still don’t know why I use Foursquare.  But I keep using it anyway.
  1. I went to the town fair last night and there were a total of three check-ins.
Posted in Social Media | Tagged , | 2 Comments

reBlog from avc.com: A VC

I found this fascinating quote today:

Every board meeting should end with an executive session. The term executive session is an oxymoron because it is a meeting of all the board members other than the executives of the company.avc.com, A VC, Apr 2010

You should read the whole article.

Leave a comment

The NoSQL Movement: The Object – RDMBS Incompatability

I could prove that I’m a dinosaur and say “are you out of your mind — No SQL?”  But then, I would be the one out of my mind.

I’ve always used relational databases and SQL.  In fact, SQL could probably be called my second language.  And while I don’t have the gripes that others may have with the language itself [http://www.kellblog.com/2010/02/24/the-database-tea-party-the-nosql-movement/], relational databases do come with a bag full of limitations and challenges.  I’ll tell you my gripe.

My biggest gripe is that I believe in object oriented programming, and RDBMS doesn’t play nicely in the OO sandbox.  Now of course, you could write your own data tier that calls stored procedures, or that has prepared statements.  But this is asking developers to write in a second language for your application.  This leads to ORMs, and for anybody who hasn’t worked with me, know now that I hate them for anything beyond simple CRUD operations.

But the biggest problem is effective modeling.  You cannot effectively model some object or hierarchical relationships with RDBMS.  For example, try to model n-deep dynamic menus in a relational database.  Each menu node has a parent, and each menu node falls within some order relative to the other items under the same parent.

Example Menu Hierarchy

This is actually fairly easy to model in an RDBMS, but it is not very effective.  Each node has a parent node (except for the root node, which I left out for the sake of this example), and each node has a numeric ordering.

Data Model for a Menu in a RDBMS

Data Model for a Menu in a RDBMS

So here comes the problem.  What’s the SQL for selecting out your menu structure?  Since you do not know how deep the structure is (n-deep), you could do this with a crazy loop and some recursion.

  1. Get the root node [SELECT * from MenuNode where nodeParentNode is null]
  2. Get all of the first level nodes [SELECT * from MenuNode where nodeParentNode=0 ORDER BY nodeOrder ASC]
  3. For each node returned, get it’s children, recursively

For the example menu hierarchy above, this would result in 1 SQL call to get the root, 1 call to get its children, 1 call for each of those 4 children to look for their children, two calls to get the children of D3a and D3b, two calls to get the children of D3bA and D3bB, and one call to find the children of D3bBi.  SQL round trips are expensive, and this is a lot of calls for a small menu.  This does not scale at all.  And this doesn’t even address the problem of maintaining order within each level of the hierarchy.  Of course, there are other ways to skin this cat.  nodeOrder could be replaced with nodeAbove, using more of a linked list type of structure, but that doesn’t work well either.  It would probably be more efficient to grab all the nodes in one sql call, and put them back together as you load them into a proper data structure, which in and of itself will take processing and time.

The bottom line is that it’s not a natural fit.

So, NoSQL people, tell me how you would do this using other tools?  CouchDB?  MongoDB?  Cassandra?  MarkLogic?  I presume this problem has been largely solved.  I still don’t believe that RDBMS is a bad tool.  You need to use the right tool for the problem you’re trying to solve, and be careful to minimize the total number of data persistence tools in your organization.

Posted in Software Development | Tagged , , | 4 Comments

It’s One Thing to Hire People Smarter Than You…

…but it’s another thing to learn from them.  It’s important to trust your team, but why not get the most out of the experience?  Especially if you’re a technologist, you can’t ever stop learning (and probably wouldn’t want to).

Posted in Team Management | Tagged | Leave a comment

“No Surprises”

This is a great follow-up to my previous post about great managers.  What Great Bosses Know About ‘No Surprises’ by Jill Geisler at the Poynter Institute really hits the nail on the head regarding managers’ relationships with their employees.  Are you approachable?  Do you handle issues that are raised, and/or are you clear about what you can and will do about information that is raised to you?

While I’ve never had an explicit “no surprise” rule with my employees, it’s very true that I don’t want to be surprised, and would love for my team to be as open with me as possible.  If you want your team to be open with you, though, you have to act on their feedback.  It is important to note, though, that as managers we have to choose our battles.  But at the same time, your team needs to see that they’re not wasting their time by going to you.  I’m sure I’ve been guilty of not making it clear to my teams how I’ve addressed problems with the sacred cows, perhaps in an effort to protect my relationship with them.  But that may not be best.

A lot to think about.

Posted in Team Management | Tagged | Leave a comment

Being a Great Manager

From time to time I like to read books or articles on how to be a great manager, so that I can find ways to continuously improve.  Tonight, I instead decided to reflect on the qualities I’ve tried to emulate in my [best] managers past [and hope that I've succeeded].  It’s a good way to make sure I’m not slipping, and to continue to find ways to improve.  Here’s the short list of advice I’ve given myself:

  1. The best leaders consider themselves support for their team, rather than “bosses”
    Rather than give orders, ask for suggestions and try to gain consensus.  Look for the signs people give off when they need help to make progress.  Help them solve their own problems, or give them access to the resources and support they need to succeed.  Being an expert in what your team does is a huge bonus, but recognizing that members of your team may know some aspects better than you do is even more important.  And when the team screws up; focus on how to fix it, followed by how to prevent it from happening again, rather than getting angry.  In fact, let the team come up with solutions on how to prevent it from happening again.  Course-correct with evidence-based suggestions; not by using a stick.
  2. Lead by example
    Show excitement.  Be the first in the office, and the last out.  Work collaboratively, and work hard.  Show the team you’re not afraid to get your hands dirty and do some real work.
  3. Be organized and proactive
    Plan ahead as much as possible.  The more lead time you can give your team on a project, the less you’ll have to give your team frustrating last minute urgent tasks.
  4. Be patient, and not reactive
    Don’t respond to frustrating situations immediately unless absolutely necessary (kind of like the rule of not sending e-mail when you’re angry).  Don’t freak out when people screw up.  The last thing anybody needs after screwing up is a lecture.  Offer support,  suggestions and alternatives; not criticism.
  5. Always support your team with outsiders; but make sure you fix problems from the inside
    If you want everyone to see your team as great; tell them how great they are.  Focus on the positives when talking with outsiders.  When the team does fail, take responsibility, and talk about what you’ve all learned from the situation, and the actionable changes that you’ve put in place to prevent a repeat.  However, don’t let problems fester unaddressed within the team.  If you focus with outsiders on the negatives of the team, that’s all they’ll see.  Be your team’s cheerleader!

There’s certainly more, but I think a short list is most effective.  What did I leave out that should have made the top 5?  What would you add for the remainder of the top ten?

Posted in Team Management | Tagged | 4 Comments

Social Dying

The Way It Was Then

8:00 AM
Celebrity sent to hospital

10:00 AM
Celebrity pronounced dead

6:00 PM
Local TV announces death

Next Morning
Story printed on page 9 of the local newspaper

The Way It Is Now

8:00 AM
Celebrity sent to hospital

9:30 AM
Celebrity news site announces celebrity death

9:31 AM
Traffic on Twitter begins to explode with suspicions of drug related cardiac arrest

10:00 AM
Celebrity pronounced dead

10:30 AM
Rumors of other celebrity deaths spread on Twitter and other sites

10:45 AM
Celebrity tributes to dead celebrity begin

11:35 AM
Cable news networks announce death on network

12:00 PM
Cable news networks announce death on their web sites

Posted in Future of News, Social Media | Tagged , , , | Leave a comment