My Maryland Cream of Crab Soup with a Texas Twist [UPDATE]

Once a year, I am invited to a holiday potluck and every year, I’m asked to make my Maryland Cream of Crab Soup. My recipe has evolved over time and now, as a Texas resident, have added a new twist on it.

Ingredients

  • 1 quart of Half and Half
  • 1 quart of heavy whipping cream
  • 1 pint of milk
  • 1 cup of unsalted butter
  • 1 package of bacon
  • 1 Tbsp fresh parsley
  • 1 Jalapeño
  • 1/2 yellow onion
  • Salt
  • Pepper
  • Old Bay seasoning
  • 1 lb lump crab meat
  • Bourbon whiskey

Making Awesomeness

Step 1: Cook entire package of bacon until crispy

Step 2: In a big saucepan, combine the milk, Half and Half and heavy whipping cream together – gently to avoid bubbles and froth – and bring to a boil. Stir often.

Step 3: In a skillet, sauté diced onion in a 1/2 cup of butter. Optional: When the bacon is done cooking, sauté the onions in the bacon grease. It’s a personal choice what you want.

Step 4: Slice up a jalapeño for a bit of Texas variety. Keep seeds for additional hots, or get rid of them if you just want the sweet jalapeño flavor.

Step 5: When the “milk mix” comes to a boil, add a 1/2c of butter, the jalapenos, the fried onions (strain off the excess grease), the parsley, salt, pepper and bacon cut into tiny or small pieces. Add the crab meat slowly being careful to “scoop” it in. DO NOT USE A FORK. USE YOUR HANDS. Add 6 Tbsp of Old Bay gradually. Reduce heat and cook for an hour, stirring frequently on low heat. (See update below)

Step 6: Dinner is served. This recipe serves 8 and is based on my taste. You can experiment and make it yours. Add Old Bay, salt and pepper for extra garnish or add cornstarch to thicken it up.

That’s it. This is definitely awesome for cold nights. It’ll warm you to the core. It also does well as leftovers after the flavors have the chance to really blend together. It pairs well with Chardonnay or some light flavored beer like a Dogfishead 60 Minute IPA. It does not go well with heavy red wines or dark malty beers. It’s just all too heavy.

Enjoy! Let me know if you riff on this recipe.

Update: Add bourbon in. This was an added ingredient in 2012 and paired well with the bacon and jalapeño. Add 1/2 a cup or to taste before you add Old Bay in Step 5.

The Top 50 Stories Since the Invasion of Iraq

War is over, if you want it. ~John Lennon

This is a time of year, as we draw 2011 to a close and embark on 2012, to reminisce about the events of the last year. It’s a tradition followed by journalists, bloggers, and opinionistas alike. But since today marks the day where the War in Iraq is officially drawn to a close, I thought I’d share some of the top stories of the past nearly 8 years. The world has changed drastically. For those who served, bled and maybe died… we salute you.

50. Saddaam Hussein Captured (December 13, 2003)

A mere 9 months after the U.S. Invasion began, Sadaam Hussein is captured by Special Forces and turned over to the interim Iraqi Government. He was tried and convicted for crimes against humanity and was later executed by hanging.

49. NASA Mars Rover Confirms Water (March 2, 2004)

NASA Rover Opportunity confirms that the area where she landed on the surface of Mars once was covered in water. The discovery was made when Opportunity confirmed the presence of gypsum, a compound formed when calcium water encounters sulfates.

48. Massachusetts Gay Marriage (May 17, 2004)

Massachusetts becomes the first state in the United States to formally legalize gay marriage. This came about after a Massachusetts Supreme Court decision deemed it unconstitutional to limit marriage to heterosexual couples. Governor Mitt Romney ordered State agencies and government to issue marriage licenses in compliance with the Supreme Court ruling. Efforts continue to formally amend the Massachusetts Constitution.

47. Freedom Tower Groundbreaking (July 4, 2004)

After several years of planning and politics, ground is broke for the building of the new Freedom Tower at Ground Zero in lower Manhattan. When complete, the tower will stand 105 stories and cost over $3.1B. It is estimated to open in 2013.

46. Boston Red Sox win Game 4 of the ALCS (Oct 17, 2004)

Red Sox faithful are given a spark of hope when, after being down to the New York Yankees 3 games to none in a best-of-seven series, came from behind in the 9th inning to avoid elimination in Game 4. The game proved to be pivotal as the Red Sox went on to win the ALCS 4-3 taking the Yankees to Game 7 and then sweeping the St. Louis Cardinals for their first World Series win since 1918.

45. South Asian Tsunami (Dec 26, 2004)

Tragedy struck on Boxing Day as a powerful sub-oceanic earthquake triggers a tsunami that would affect the entire Indian Ocean rim. Most devastating were the effects in Sri Lanka and Indonesia where confirmed deaths approached 170k.

44. Scott Peterson Sentenced to Death (March 16, 2005)

Scott Peterson is convicted of the capital crime of murdering his wife, Laci Peterson, and their unborn child. Laci was 8 months pregnant and had gone missing. While Scott was a “person of interest”, it wasn’t until the remains of Laci and their child were discovered, that Scott was arrested and ultimately convicted. He was sentenced to death by lethal injection and remains on death row in San Quentin Prison.

43. Pope John Paul II Dies (April 2, 2005)

The Catholic Church and the world go into mourning at the passing of 84 year old Pope John Paul II. Born Karol Jósef Wojtyla to Polish parents, the Pope was renowned for his progressive world views and is widely credited with helping to bring about the end of communism in Poland. He served for 26 years.

42. Deep Throat Revealed (May 31, 2005)

Since 1972, the identity of the notorious Watergate informer was speculated on but never really known except to Bob Woodward and Carl Bernstein, the Washington Post reporters who legendarily covered the scandal. On May 31, 2005, Mark Felt, then the number two guy at the CIA, revealed himself as Deep Throat. Bob Woodward, when reached for confirmation, acknowledged the revelation to be true bringing to an end one of the most intriguing conspiracy stories of recent history.

41. Steve Jobs Gives His Stanford Commencement Address (June 12, 2005)

Since the death of Steve Jobs a few months ago, his famous “Stay Hungry, Stay Foolish” commencement address at Stanford University has seen a resurgence. In this 15 minute address, Jobs relates three anecdotes from his life and lessons learned from them. It would go on to become a window into the kind of man Jobs was and continues to serve as inspiration.

40. Lance Armstrong Wins His 7th Tour de France (July 24, 2005)

Lance Armstrong, the six-time Tour de France winner, notches his 7th win, an unprecedented feat. Armstrongs story in inspiring considering his battle with (and his defeat of) testicular cancer.

39. Hurricane Katrina (August 29, 2005)

A devastating time in American history, Katrina became the biggest natural disaster ever to occur in the United States. The initial brunt of the storm wreaked havoc on the Mississippi and Alabama coastline, but the whiplash effect that occurs as a storm passes by proved to be as devastating. As the storm passed over Mississippi, the back winds pushed water from Lake Pontchatrain on the north-side of New Orleans over and through levees setup to hold the water back from the sub-sea level city. The media coverage was vast. The horrors and atrocities deplorable. And the political response wreaked of incompetence.

38. The Sago Mine rescue (January 5, 2006)

A mining explosion deep in the tunnels of the Sago Mine in West Virginia trapped 13 miners underground for over 2 days. Ultimately, only one survived. This came after the mine released misinformation that led news outlets to report the exact opposite – that one miner was found dead and 12 rescued.

37. Apple sells it’s 1B Song via the iTunes Store (February 22, 2006)

Announced to great hype and with great marketing prowess, Apple sold it’s 1 billionth song via the iTunes Store continuing to mark the iPod as one of the greatest market-transforming technologies ever built by the Cupertino, California company.

36. The Enron Trial Jury Conviction (May 25, 2006)

After a much publicized “media trial”, a jury convicts former Enron CEO Kenneth Lay and COO Jeffrey Skilling. Skilling was convicted on 19 counts of securities fraud and wire fraud. Lay was convicted on 6 counts. Lay died before sentencing and, accordingly, his conviction was vacated. Skilling is currently serving a 24 year sentence.

35. Twitter launched to the public (July 15, 2006)

Formerly known as Twittr and, really, at the time unknown to the public, Jack Dorsey launches a prototype of the short form status message service based on text messaging. With funding and support by Odeo’s Evan Williams and Biz Stone, Twitter quickly becomes the horse they all rode in on. Twitter has become one of the most necessary and integrated forms of online communication and has contributed to social, economic, political and mundane events around the world.

34. Crocodile Hunter Steve Erwin Killed By a Stingray (September 4, 2006)

Beloved crazy man, Steve Erwin, is killed by a stingray who stung him through his chest to his heart while filming a stunt. He was known for putting himself in dangerous situations with unpredictable wildlife.

33. The Louisiana Superdome Re-opens After Katrina (September 25, 2006)

An emotional New Orleans celebrates the re-opening of the Superdome, the location of shelter and horrendous criminal actions following Hurricane Katrina. The Dome was re-opened with a New Orleans Saints-Atlanta Falcons Monday Night Football game. The halftime show featured U2 and Green Day. The Saints won an emotional game 23-3.

32. Facebook Opens It’s Walls to the Public (September 26, 2006)

Facebook before September 26, 2006, was only available to college students or select corporations that were registered with Facebook. That changed when the doors were opened for everyone. This was the first step for Facebook to dominate the Myspace-Facebook war.

31. North Korea Tests a Nuke (October 9, 2006)

North Korea gives a 6-day warning of an impending nuclear test, the first time that any country has ever done that. China is alerted 20 minutes ahead of the test and they promptly sent an emergency dispatch to Washington. North Korea explodes a small-time nuclear bomb under a mountain near the Chinese border. The test garnered international criticism and put troops in South Korea and Japan on high alert.

30. The Democratic Landslide of 2006 (November 7, 2006)

In an election widely scene as a referendum on President George W. Bush, Democrats won the day in a large and sweeping manner. Nationally, the Democrats took control of both the House and the Senate. In the Senate, the Democrats picked up 7 seats for a 51-49 majority. In the House, they commanded a 233-202 majority. They also took 6 Governorships from the GOP giving them a 28-22 majority there. In statewide elections, similar results were reflected as the national electorate was widely seen as rebuffing the Bush Administration.

29. The iPhone Launch (June 29, 2007)

To much pomp, circumstance and expectation, people lined up outside of Apple, AT&T and other partner carrier stores around the world to get their hands on the iPhone, a first of its kind product. To that date, no one had effectively released and mass-marketed a touch screen convergence device such as what Apple promised. People camped out for days to be the first to buy the phone with a price-tag of $600.

28. Public Vote for a Barry Bonds Asterisk on #756 (September 26, 2007)

Mark Ecko makes a controversial purchase of the homerun ball that was Barry Bonds 756th and record-setting homerun. Due to the steroids controversy, sports fans debated ad nauseum about whether the hall of fame ball (and player) should have an asterisk (the proverbial, “oh by the way this is controversial” indication).

Ecko put a website up asking the public to vote on whether his purchased ball, which he intended to donate to the Baseball Hall of Fame, should be marked with an asterisk prior to donation. The public thought it should, and so it does.

27. The Mitchell Report (December 13, 2007)

Former Senator George Mitchell releases his controversial report from the steroid investigation committee he chaired on behalf of Major League Baseball. The report blamed a culture of performance-enhancing drugs on both players and management and implicated a menagerie of current and former players, including Andy Pettite, Miguel Tejada and Jason Giambi, in substance abuse problems.

26. Michael Phelps Wins 8 Gold Medals (August 17, 2008)

Baltimore-born swimming superstar, Michael Phelps, dominates mens swimming at the Beijing Olympics with a record 8 gold medals. He previously won 6 golds and 2 silvers in Athens.

25. Sarah Palin Makes Her National Debut (August 29, 2008)

In what may go down in history as one of politics biggest “oops” moment, GOP Presidential Candidate John McCain, wanting to make a statement with a woman VP candidate, names Alaska Governor Sarah Palin as his running mate. The move proved to be disastrous as Palin was not prepared for the national spotlight. After the Campaign ended, controversy continued to swirl around her, her odd resignation as Governor and her personal and home life.

24. Market Crash of 2008 (October 2, 2008)

The Global Recession, by most accounts, began in late 2006 or early 2007, but it became acute and pronounced on October 2, 2008 when the Dow Jones fell 3.22% (~348 points). It would continue to fall for the rest of the week losing 22% of it’s value in 4 days. The market was exacerbated by the failure of Bear Stearns, Freddie Mac and Fannie Mae and would ultimately lead to government bailouts or facilitated mergers of some of the worlds largest lending institituions under the mantra, “Too big to fail.”

23. Too Big to Fail – Bush Bailouts (October 3, 2008)

Under the Bush administration, with tremendous economic pressure and fatal outlooks, a $700B emergency bailout fund was established by Congress to assist in the closure, restructuring, merger and re-capitalization of major banks and institutions like Bank of America, Washington Mutual, Wachovia, Wells Fargo, AIG and more. It became one of the most controversial economic storylines of recent times and was extended by the incoming Obama Administration.

22. Obama Landslide (November 4, 2008)

With celebrations in Washington, DC and major cities around the United States and world, Obama is elected as the 44th President of the United States marking the end of a terrible Bush Administration and marking the first time a black man was elected to the most powerful Office in the world. Impromptu celebrations were held in front of the White House and in the streets around the world.

21. California Adopts Proposition 8 (November 4, 2008)

Stop the Hate
Photo by Chriki on Flickr. Used under Creative Commons.

In what has been viewed by equal rights organizations around the country as a severe regression, one of the most progressive states in the nation adopts Proposition 8, a statewide ballot initiative that would prohibit gay marriage in California. It also became a hot button issue for critics of special interest influence in politics as the ballot initiative was largely funded by the Church of Jesus Christ of Latter Day Saints – the Mormons – who executed a well-funded grass-roots effort to pass the proposition.

20. Obama is Inaugurated (January 20, 2009)

On a frigid day in January, 1.8M people descended on the National Mall to witness the Inauguration of America’s first African-American president. Parties included a concert the day before at the Lincoln Memorial where rapper Jay-Z sang “I’ve Got 99 Problems but a Bush ain’t one” and the ceremonial Marine One whisking away of the outgoing president was greeted by millions chanting, “Nah nah nah nah. Nah nah nah nah. Hey hey hey. Goodbye”.

19. The Birth of the Tea Party (April 15, 2009)

Around the country, on tax day in 2009, hundreds of thousands of Americans gathered to protest heavy taxation by the government. What began as an anti-tax movement, quickly turned into one of the most influential – and arguably nutty – political fraction groups in the history of the United States. In 2010, the Tea Party successfully elected pro-Tea Party Congressmen in the GOP takeover of the House of Representatives.

18. H1N1 (June 1, 2009)

The Swine flu became a hot button issue of concern for many fearing a pandemic – and a source of ridicule for Halloween goers later in the year who dressed up as the H1N1 virus. The swine flue was a strain of the common flu that was potentially fatal and caused deaths nationwide. The CDC, along with other sister agencies in other countries and the World Health Organization, ran heavy public education campaigns to reduce the risk of pandemic.

17. Michael Jackson Dies (June 25, 2009)

The world mourned the loss of Michael Jackson who died of an overdose mis-administered by his personal doctor. His death was not believed to be suicide, but was the result of negligence. Days later at the Staples Center in Los Angeles, a funeral was held with touching eulogies from his brother and father, among others.

16. Steve McNair Murdered by His Mistress (July 4, 2009)

NFL Quarterback Steve McNair, who played for both the Tennessee Titans and the Baltimore Ravens, was killed by his 22 year old mistress in Nashville. Rumors of jealousy and rage were circled as particular motives.

15. Wikileaks Bursts on the Scene with Cablegate (February 18, 2010)

The controversial grassroots organization founded by Aussie vigilante Julian Assange, Wikileaks, makes huge political waves by releasing State Department cables to select media organizations. Though redacted to protect the identities of spies, informants and individual workers, the cables represent damning internal and international diplomatic decision making and communications.

14. Health Care Reform Act (March 21, 2010)

After over a year of debate, arguing, politicking, and blockage, the House and Senate finally agree to a compromise Health Care Reform Bill that has become President Obama’s signature legislation. Parts of the bill are under judicial review.

13. Icelandic Volcano Grounds Europe (April 14, 2010)

Mount Eyjafjallajökull erupts in Iceland spreading volcanic ash across the UK, Europe and the trans-atlantic flight corridors. Flights are grounded for days and passengers stranded. Some passengers reported trying to drive across Europe to other countries, like Spain, to get to an airport with outgoing flights – like Barcelona – but with no success. It became a massive economic problem.

12. The BP Oil Spill (April 20, 2010)

An explosion on the Deepwater Horizon oil rig operated by BP caused the rig to collapse and snap the pipe dug into the earths crust. The result was 3 months of oil continually flowing into the Gulf of Mexico. Multiple solutions were attempted to seal the well but nothing was successul until September. Cleanup continues to this day.

11. Reggie Bush Gives His Heisman Trophy Back (September 15, 2010)

New Orleans Saints Running Back Reggie Bush, who won the 2005 Heisman Trophy while at USC, gave back his Heisman Trophy amid public pressure after sanctions were dropped on USC for recruiting and other violations. USC was required to vacate all 2004-2005 wins including their National Championship win over Oklahoma, and is banned from post-season play for both the 2010 and 2011 seasons. Bush became the first player ever to return a Heisman Trophy.

10. Brett Favre’s Penis (October 7, 2010)

Brett Favre apparently has a little penis, or so the pictures say. The news of Favre texting pictures of his junk to, then-Jets sideline reporter Jenn Sterger was broken by sports-gossip blog Deadspin. Brett’s taste in women… impeccable. Brett’s taste in text message appropriateness… questionable.

9. The Republicans Win Back the House (November 2, 2010)

In a national referendum on Obama, the GOP retook the House of Representatives and made significant strides in the Senate on a wave of Tea Party momentum. Freshman Republican legislators, such as Rand Paul, would become influential in the budget and taxation issues in the current Congress.

8. The Arab Spring Begins (December 17, 2010)

The Arab Spring, a coordinated series of protests that would ultimately turn the Middle East on its head, begins with a Tunisian man setting himself on fire in protest of police confiscating his vegetable cart. An uprising would subsequently occur that saw the fall of the Tunisian government. Other Arabs, buoyed by a sense of enablement, protested and in some case achieved regime change in Egypt and Lybia. Unrest and calls for revolution were also heard in Yemen, Bahrain, Syria, United Arab Emirates, Saudi Arabia, Morocco, Lebanon, Iran and Algeria.

7. Japanese Nuclear Fallout (March 11, 2011)

After a devastating earthquake rocked Japan, concern began to spread to the Fukushima Nuclear reactor. Despite efforts to contain damage – and initial reports that the reactor was safe and not breached – it became clear that containment was not possible. Though ultimately contained, it did not happen until significant amounts of radiation escaped into the ground, water and atmosphere. Trace amounts of I-131 radiation (non-harmful doses) were detected as far away as California.

6. Osama Bin Laden Killed (April 30, 2011)

With a dramatic late-night address to the nation – called with only an hour warning – President Obama informed America and the world of the death of Osama Bin Laden. Osama was killed by Navy SEAL Team 6 in a raid on a Pakistani compound. Later, some would question the death because the Administration decided not to release pictures.

5. Amy Winehouse Joins the 27 Club (July 23, 2011)

British pop superstar, Amy Winehouse dies of an apparent drug overdose at Age 27. She joins the “Club of 27”, a group of musicians that include Jimmie Hendrix, Janis Joplin and Kurt Cobain, who also died at Age 27.

4. Faster than Light (September 22, 2011)

Battlestar Galactica fans would endorse the concept “Faster than Light”, but physicists at the CERN research center in Switzerland release a preliminary report showing that they had found a neutrino – a tiny sub-atomic particle – that traveled faster than light. Secondary test would reveal the same finding. Other scientific researchers question the results, however. If true, the discovery would undermine the core building block of modern science – that nothing is faster than light. Albert Einstein is turning over in his grave.

3. Occupy Wall Street (September 17, 2011)

The economic difficulties and political climate in the past few years finally force a boil over of sentiment toward the perceptions of class-entitlement. The mantra “We are the 99%” has become a rallying cry for anyone who feels slighted by entitlement. The Occupy Wall Street Movement, while protesting excesses on Wall Street, has been mirrored across the country. In some incidents, occupy movements have turned into political hot potatoes that shine the light on police corruption and brutality as was the case when a police officer casually pepper sprayed a series of kneeling protestors on the campus of UC-Berkeley.

2. Moammar Ghaddafi Killed (October 20, 2011)

After months of civil war, belligerent resistance to national and international calls to step down – generally in the form of hapless, wandering, rambling televised addresses – NATO military intervention and repeated rumors (but no proof) of his death, Moammar Ghaddafi is confirmed dead in Libya. After a NATO airstrike hit a convoy he was riding in, he took shelter in a drainage ditch where he was captured by National Transitional Council forces. He died en route to the hospital.

1. Penn State Child Sex Scandal (November 5, 2011)

We are rocked by the grand jury indictments handed down on former Penn State coach Jerry Sandusky. Sandusky is charged with multiple sex abuse charges as they relate to 4 alleged victims. In the wake of the scandal, fingers are pointed at various people and blame is passed. Ultimately, Penn State’s Board of Trustees remove the President, Athletic Directory, Head Coach Joe Paterno and others from their responsibilities.

So there we have it. 8 years of war. An entire different country. Have we learned from our mistakes? Probably not. We’ll see. Happy Christmas! War is Over! If You Want It!

TUTORIAL: Adding an oEmbed Provider to WordPress

I don’t often write tutorials. I probably should. But normally it’s only when someone asks me something and I think, “Hey, self… you should write up how to do this”. As if a book wasn’t enough.

Last night I was at the Austin Web Holiday party, a gathering of some 15+ technical meetup groups cross-pollinating over beer and socializing. I was introduced to one guy (can’t remember his name!) who had built a video site and enabled it for oEmbed. He couldn’t understand why WordPress wouldn’t just automatically let users use his videos, like it does for YouTube, Vimeo, etc. The full list of default oEmbed providers are listed here.

WordPress doesn’t allow automatic use of oEmbed for security reasons. Otherwise, someone could build a video service stuffed with malicious code that could potentially access your database or create a man in the middle attack or worse. WordPress.com certainly doesn’t allow arbitrary oEmbed sites and the dot-org open source software doesn’t allow arbitrary stuff automatically. But it can be done, on the dot-org side, with a plugin. All it is a hook.

Here’s an example. If you want to register an oEmbed video site that is, say, at (randomly) http:/mysuperawesomevideosite.com and your videos are of the format http://mysuperawesomevideosite.com/video/*, it’s as simple as adding a function in your plugin (or more properly from a PHP perspective, a method in a class – but that’s a personal preference. The method/function should call the  wp_oembed_add_provider() function.

In it’s simplest form, all you have to do is:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class My_Plugin {

  var $oembed_endpoint;
  var $oembed_format;

  function __construct()
  {
    $this->oembed_endpoint = 'http://mysuperawesomevideosite.com';
    $this->oembed_format = 'http://mysuperawesomevideosite.com/video/*';

    $this->new_oembed();
  }

  function __destruct() {}

  function new_oembed()
  {
    wp_oembed_add_provider( $this->oembed_format, $this->oembed_endpoint );
  }

}

Then, to make this code work, just instantiate the class somewhere.

1
$my_plugin = new My_Plugin;

Voila!

10 Things You Need to Know About WordPress 3.3

WordPress Downloaded over 12.5M times

WordPress Downloaded over 12.5M timesWordPress 3.2 has been downloaded a killer 12M+ times. WordPress as a whole continues to grow and is touted to be in the approximate 14% of the web zone. That’s ridiculously huge and it astounds me how big the projects footprint has become in the 7 years I’ve been around the community. Well done to all involved!

With that said, WordPress 3.3 is just around the corner and, as usual, it’s chock full of goodies for everyone. I’d say that the notable changes for developers are the most significant. Improved metadata handling, improved SQL tools, improved cache API and deprecation of several venerable functions are all changes that developers should be aware of.

This article touches mostly on the user experience and features that are new in WordPress 3.3. Developers who want to dive in should reference this running list of “things” that were addressed in WP 3.3.

Admin Bar Overhaul

The Admin Bar that was introduced a few versions ago has become a main-stay of my WordPress experience. At first, I felt like it got in the way, but I soon got used to it. In WordPress 3.3, the Admin Bar gets tweaked and enhanced. For Multisite users, you now have access to the Network Admin from a new “My Sites” menu along with all sites that you have access to 1.

As usual, developers can modify the admin bar using the admin_bar_menu action, and hooking a callback that modifies the $wp_admin_bar global. This object is created by the WP_Admin_Bar class that provides an add_menu() and remove_menu() method for manipulation.

Sample Code:

1
2
3
4
5
6
7
8
9
10
11
12
function ab_add_faq_link()
{
  global $wp_admin_bar;
  $wp_admin_bar->add_menu( array(
    'id' => 'menu_faq',
    'title' => __('FAQs'),
    'href' => 'http://example.com/faqs',
    'meta' => array( 'class' => 'custom_adminbar_menu')
    )
  );
}
add_action( 'wp_admin_bar', 'ab_add_faq_link' );

HTML5 Admin/Responsive Layout

More Admin-side improvements, like a conversion to HTML5 are a little more understated and less pronounced – unless you’re trying to access it from your iPhone or mobile phone. The conversion to HTML5, while meeting the trends of the day, also have the practical effect of providing an adaptive design which conforms to the device or viewport you are using. There’s nothing too crazy here, but with the web world going in the direction of HTML5, this move lays groundwork for new HTML5 features in the future.

Drag and Drop Media Uploader

One of the biggest new features in WordPress 3.3 (and a long time in coming!) is a new and improved media uploader. This is a feature that is discussed every single release cycle but because there’s only so much room in a major release cycle for major features (and this is a huge rewrite), it has continued to get bumped to a future release – until now.

While the new uploader is not the holy grail and I feel like there’s still a lot of room for improvement, it takes a giant leap forward in making the web interface feel more natural and more like a native application.

What am I talking about? Well, three words: Drag and Drop. With the new media uploaded, it’s as simple as dragging files to the “drop zone” in the native way that your OS allows: On Mac, from the Finder or by dragging the title bar icon in the app you’re using (Photoshop? Preview? Skitch?) into drop zone. On Windows, by pulling your file from Explorer into the Drop Zone.

Plus, related to the last feature, this media uploader prefers HTML5. For the geeky, the failover for HTML5 uploading is first Silverlight, then Flash then the old fashioned “Choose File” HTML dialog.

HTML5 Media Uploader
HTML5 Media Uploader

Welcome Screen and Pointers

If you already are using WordPress, you won’t see the welcome screen unless you setup a new WordPress install 2. The Welcome panel gives an overview of WordPress to new users.

More importantly, there is a new jQuery plugin that adds “Pointers” to WordPress whenever a new core, user facing feature is added. In WordPress 3.3, you’ll see one immediately pertaining to the new Admin Bar. However, Plugin and Theme developers who want to highlight new features can also do so. If you know jQuery, the following code is a good head start in the right direction:

Sample Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function ab_pointers()
{
  if( !is_admin() )
    return false;

  // Get Proper CSS involved - probably already included, but we want to be safe.
  wp_enqueue_style( 'wp-pointer' );
  wp_print_styles();

  // Get Proper bundled jQuery plugin involved - probably already included, but just to be safe
  wp_enqueue_script( 'wp-pointer' );
  wp_print_scripts();

  // Define text for the Pointer. Make sure you escape stuff
  $widget_text = '<h3>' . esc_js( __( 'Important!') ) . '</h3>';
  $widget_text .= '<p>' . esc_js( __( "This is where you would put some text that'll help the user understand WTF is up with your new stuff. Use it wisely and make sure it's short (Users won't read it if it's too long and once they dismiss it, it won't be shown again)" ) ). '</p>';
  ?>
  <script type="text/javascript">
  jQuery(document).ready(function(){
    jQuery('#your_dom_element').pointer({
      content    : '<?php echo $widget_text ?>',
      position   : 'left',
      close  : function() {}
    }).pointer('open');
  });
  </script>
  <?php
}
add_action('admin_head','ab_pointers');

I imagine this will get easier to implement in the future.

Improvements to Distraction Free Writing

Distraction Free Writing, which made its debut in WordPress 3.2, offered bloggers vast improvements to how they wrote content by removing the silly things that, well, distract from the job of writing.

In WordPress 3.3, DFW now integrates the content width and other CSS stylings of post content into the editor. This is all based on the active theme CSS and it attempts to aid the blogger in formatting properly for the theme the content will be displayed in.

Admin Menu Flyouts

A minor enhancement, yet important from a UI perspective – especially for those of you who, like me, constantly have wp-admin menus expanded – are menu flyouts. Very simple little thing, but when a user mouses over a menu, the submenu items under it appear in a “flyout” to the right and disappear when the mouse is no longer over the top level menu. Of course, for touch devices and clicky people, the collapse/expand functionality still exists.

Tumblr Importer

Technically, importers are no longer bundled with WordPress core. They are plugins. However, the removed importers are still listed on the Tools > Import console and can be installed from within WordPress.

An importer that has been in demand for some time, due to the popularity of Tumblr but the more popular nature of WordPress, is a Tumblr importer. Now that is available – also as a one-click plugin – to assist Tumblrs in moving to WordPress.

Tumblr Importer
Tumblr Importer

Go forth and enjoy a better blogging experience. And hey, use Press This if you like the Tumble style.

Multisite – Internationalized Domain Name Support

For non-english Multisite installs, it is now possible to designate an international domain name 3 as the site install domain. In Multisite, this means that base installs of WordPress can use IDNs now, which will serve to increase the adoption of these domains in non-English speaking parts of the world.

ワードプレスのイェーイ.jp, FTW!

Multisite – Network Enabled Themes and Theme Updates

Since we’re on the topic of Multisite, WordPress 3.3 brings the Network Activate option that has been available for plugins to themes. The plugin flow and the theme flow is different in WordPress, so this option makes things significantly easier. The plugin workflow only allows Super Admins to install WordPress and gives the Super Admin the ability to turn off the plugin menu for Blog Admins, but if left turned on, any Admin can activate any available plugin for their particular blog. For plugins, Super Admins can designate a plugin as a global plugin by Network activating in the Network Admin.

For Themes, it was an arduous task of making themes available to sub-sites in the past. Now, after installing a theme from the Network Admin, all it takes is a single click on Network Activate to make that theme available to sites in the network.

Deprecating Feeds

Finally, for those of you who rely on your feeds and are stuck in the stone age still, WordPress no longer supports old RSS 0.92 feeds and RDF feeds. For what it’s worth though, the default RSS feed is the still supported RSS 2.0 feed (add /feed to the end of just about any URL in WordPress and that is your RSS 2.0 feed.

Still, I know some of you don’t like to change and may be using the old feeds. There are two things to note:

  1. These now-deprecated feeds will redirect to the proper feed, with 301,
  2. If you use FeedBurner, or similar feed repurposing and syndication service, please make sure you are using the RSS 2.0 feed, not the RSS 0.92 feed. Like I said, a 301 will occur but that is actually additional load on the web server because it generates additional HTTP requests

Wrap Up

Sadly, this was the first WordPress release in some time where I have not contributed any code. There are a lot of reasons for that, none of which are all that important. But the core development team has really done a great job with this release and they should be commended.

If you really like WordPress, thank the team with a donation to the WordPress Foundation. All of the work that has gone into this release has come on the backs of volunteers or dedicated, full time paid employees of other companies who have been “donated” to the project.

Notes:

  1. You will only see sites that you have a Core Role on (Administrator, Editor, Author, Contributor, Subscriber). Super Admins that are not assigned to a blog, even though they have access to it as a Super Admin, will not have that blog listed
  2. You can manually turn the Welcome panel on in the Dashboard Screen Option
  3. IDNs are domain names that contains non-ASCII characters such as are provided by languages like Arabic, Kanji or Hiragana or language styles like Cyrillic

TUTORIAL: Using Sass and Compass for managing CSS in WordPress

I don’t often write tutorials but since the rebuild of the WP Engine website some months ago, I have been turned on to the use of a brilliant combination of tools made for development in a Ruby on Rails environment. That doesn’t mean we can’t make it work for WordPress too.

The tools are Compass combined with Sass (which means Sytactically Awesome Stylesheets or some random crap like that).

Sass is cool because it lets you do a whole bunch of stuff with CSS that you couldn’t normally. It’s a kind of abstraction layer above CSS which means you can write normal CSS if you want, but then why wouldn’t you just write normal CSS instead of using Sass?

I’m getting slightly ahead of myself, but With Sass you can do awesome things like variable/placeholders which is awesome for things like defining core elements of a stylesheet such as a palette of colors.

1
2
3
4
$cloud-blue: #d9e7f3;
$light-blue: #f0f7fc;
$dark-blue: #036;
$green: #7ca60a;

Then using those variables, you can just use these placeholders in your SCSS (Sassy CSS) file:

1
2
a { color: $dark-blue; }
a:hover { color: $light-blue; }

You can also write Mixins. Mixins are essentially reusable blocks of CSS that look a lot like functions you would see in languages like JavaScript, PHP or Ruby:

1
2
3
4
5
6
7
8
$radius:5px;

@mixin border-radius($radius)
{
border-radius:$radius;
-moz-border-radius: $radius;
-webkit-border-radius: $radius;
}

You can use that in your SCSS file as such:

1
form input { @include border-radius(5px); }

But again, I’m getting ahead of myself.

When I talked about using Sass and Compass on Twitter, other WordPress devs made comments that made me want to write this tutorial. One person said that they were tired of Rails developers having all the toys – and it’s true. There are so many awesome things out there for Rails developers that we as PHP and WordPress developers don’t benefit from. This tutorial is non-exhaustive. There are tons of things that you can do with this that I won’t cover. But this should get you going with Mac OS X Lion, developing WordPress locally on your own machine and uploading to a theme file called “test” on a remote server.

Prerequisites

First of all, you need to have a local version of WordPress running. There are a variety of ways to do this, but I use the approach of installing XAMPP. Here’s a tutorial on that. Follow the rabbit trail to configure Apache to look to your Sites directory, as I have, or make that translation in your head to what the default is. There’s plenty of instruction on how to do that on the internet.

For the specifics of this tutorial, it’s very important that you have the latest version of Ruby. The best way to do this is with a tool called rvm, or Ruby Version Manager. Install this with the following Terminal command:

1
bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

Once rvm is installed, use it to install 1.9.3-p0, the only current version compatible with OS X Lion, and refresh your Terminal profile settings. The last command sets 1.9.3-p0 (or whatever future version you choose to use) as your default.

1
2
3
4
rvm install 1.9.3-p0
rvm reload
source ~/.bash_profile
rvm --default use 1.9.3-p0

If you wish to verify that you’ve got the proper version of Ruby active, verify it with the ruby -v command.

My system reported:

1
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]

Now, there are some gems that need to be installed. For developers unfamiliar with Ruby – or Rails – gems, are essentially additional libraries that are installed into the Ruby framework, much like PHP PEAR or PECL modules.

The first is Builder, which is used for building XML structures. The second one is Compass which will give us the ability to leverage Sass for CSS authoring.

1
2
gem install builder
gem install compass

Creating a Sass Project

Once we have everything installed properly, we can start a new project. I keep this out of my web directory (i.e. WordPress structure). Personally, I’ve created a sass directory under my user profile (/Users/aaron/sass) and run my projects out of it with a separate directory for each project.

Now we have to create our compass project. We do that with compass create from our ~/sass directory and then moving into the newly created directory.

1
2
compass create test
cd test

Doing a directory listing should show something along these lines:

1
2
3
4
5
6
7
8
NCC-1701:test aaron$ ls -la
total 8
drwxr-xr-x 6 aaron staff 204 Nov 2 11:36 .
drwxr-xr-x 4 aaron staff 136 Nov 2 11:36 ..
drwxr-xr-x 5 aaron staff 170 Nov 2 11:36 .sass-cache
-rw-r--r-- 1 aaron staff 861 Nov 2 11:36 config.rb
drwxr-xr-x 5 aaron staff 170 Nov 2 11:36 sass
drwxr-xr-x 5 aaron staff 170 Nov 2 11:36 stylesheets

Good. Our project is created but we need to make some changes to make this work with WordPress. To do this, we need to edit the config.rb file which is the project configuration file. You can edit this file in Textmate, vi, or whatever you choose as your preferred text editor.

The default configuration is:

1
2
3
4
5
http_path = "/"
css_dir = "stylesheets"
sass_dir = "sass"
images_dir = "images"
javascripts_dir = "javascripts"

My config file looks like this:

1
2
3
4
5
6
7
8
http_path = "../../Sites"
css_dir = "../../Sites/wp-content/themes/test/css"
sass_dir = "sass"
images_dir = "images"
javascripts_dir = "js"
project_type = :stand_alone
output_style = :nested
line_comments = false

Important changes here:

  • The http_path is a relative path to my DOCROOT – for some reason, things got whacked when using an absolute path.
  • The css_dir is a relative path to the css directory in my WordPress theme directory. At this time, there is no configuration option to control the name of the CSS files being generated so we will have to use @import inside the required WordPress style.css template file to incorporate Compass generated CSS files.
  • You can change the images_dir and javascripts_dir as needed to reflect your taste. Personally, I prefer shorter names, so that is reflected in the config file.
  • The project_type flag is required because, if omitted, Compass assumes we are working in a Rails environment on a Rails project with Rails conventions… WordPress is none of that.
  • The output_style flag has been set to :nested but could be :expanded, :compact or :compressed depending on your tastes.
  • The line_comments flag has been set to false to remove debug information from the generated CSS

All configuration options can be referenced in the Compass docs.

Having modified the config file, we can take one of two approaches to generating the CSS in our WordPress theme. We can use the compass compile which will generate the files one time. Everytime modifications are made, however, this command would have to be re-run. I prefer, instead, to use compass watch which is a small process that remains running and watches your Sass project for changes and recompiles automatically when changes are made.

Simply run this command from inside the Sass project:

1
2
3
4
5
6
7
8
9
compass watch
>>> Change detected to: ie.scss
create ../../Sites/wp-content/themes/test/ie.css
create ../../Sites/wp-content/themes/test/print.css
create ../../Sites/wp-content/themes/test/screen.css
/Users/aaron/.rvm/gems/ruby-1.9.3-p0/gems/fssm-0.2.7/lib/fssm/support.rb:40: Use RbConfig instead of obsolete and deprecated Config.
FSSM -> An optimized backend is available for this platform!
FSSM -> gem install rb-fsevent
>>> Compass is polling for changes. Press Ctrl-C to Stop.

At this point, if you want to develop locally, all you have to do is have your WordPress style.css import these stylesheets.

1
2
3
4
5
6
7
8
9
10
11
/*
Theme Name: Test Theme
Author: Aaron Brazell
Author URI: http://emmense.com
Description: A test theme demonstrating Sass and Compass
Version: 1.0
*/


@import url('css/screen.css');
@import url('css/print.css');
@import url('css/ie.css');

Uploading to a Remote WordPress Install

Fortunately, with a little Ruby magic and some built in Compass hooks, we can also upload these newly created CSS files to our WordPress theme. In order to do this, you have to make sure the remote server has the theme directory created and if you are uploading to a subdirectory of that theme (e.g. theme_dir/css), that that directory is created as well.

In our case, the theme directory is test/ and I want to upload to a subdirectory test/css/.

Next we have to install two new gems – the Net::SSH and Net::SFTP gems. Installing these is as straightforward as the earlier gems:

1
2
gem install net-ssh
gem install net-sftp

Once this has done, include these in your config.rb file. I did this at the top which is best practice with Ruby.

1
2
require 'net/ssh'
require 'net/sftp'

Below all the previous configurations, add some configuration lines and replace values as needed for your own project:

1
2
3
4
5
6
7
8
# note that this is the directory that CSS files will be written. It can be the theme dir
# or a subdirectory (e.g. theme_dir/css). Whatever this path is MUST exist
remote_theme_dir_absolute = '/home/sites/emmense.com/httpdocs/wp-content/themes/test/css'

# SFTP Connection Details - Does not support alternate ports os SSHKeys, but could with mods
sftp_host = 'hostname.com' # Can be an IP
sftp_user = 'username' # SFTP Username
sftp_pass = 'password' # SFTP Password

Finally, we can leverage Compass’ built-in on_stylesheet_saved hook to upload to the remote server using your SFTP credentials:

1
2
3
4
5
6
7
8
9
# Callback to be used when a file change is written. This will upload to a remote WP install
on_stylesheet_saved do |filename|
  $local_path_to_css_file = css_dir + '/' + File.basename(filename)

  Net::SFTP.start( sftp_host, sftp_user, :password =&gt; sftp_pass ) do |sftp|
    puts sftp.upload! $local_path_to_css_file, remote_theme_dir_absolute + File.basename(filename)
    end
  puts ">>> Compass is polling for changes. Press Ctrl-C to Stop"
end

Restart Compass, save one of your Sass .scss files with a change of some sort (from where CSS will be compiled), and watch your files be saved locally and remotely.

At this point, my full config.rb file looks like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Require any additional compass plugins here.
require 'net/ssh'
require 'net/sftp'

# Set this to the root of your project when deployed:
http_path = "../../Sites"
css_dir = "../../Sites/wp-content/themes/test/css"
sass_dir = "sass"
images_dir = "images"
javascripts_dir = "javascripts"

project_type = :stand_alone
output_style = :nested
line_comments = false

# note that this is the directory that CSS files will be written. It can be the theme dir
# or a subdirectory (e.g. theme_dir/css). Whatever this path is MUST exist
remote_theme_dir_absolute = '/home/sites/emmense.com/httpdocs/wp-content/themes/test/css'

# SFTP Connection Details - Does not support alternate ports os SSHKeys, but could with mods
sftp_host = 'hostname.com' # Can be an IP
sftp_user = 'username' # SFTP Username
sftp_pass = 'password' # SFTP Password

# Callback to be used when a file change is written. This will upload to a remote WP install
on_stylesheet_saved do |filename|
  $local_path_to_css_file = css_dir + '/' + File.basename(filename)

  Net::SFTP.start( sftp_host, sftp_user, :password =&gt; sftp_pass ) do |sftp|
    puts sftp.upload! $local_path_to_css_file, remote_theme_dir_absolute + File.basename(filename)
    end
  puts ">>>> Compass is polling for changes. Press Ctrl-C to Stop"
end

Conclusion

Rails developers have all the fun. It’s true. But with Compass, Sass and a little bit of Ruby, PHP developers (including WordPress theme developers) have a great tool that will make workflows more efficient, CSS more readable and structured and central management more coherent.

Obviously, I did not get too far into the details of using Compass and Sass. That’s a whole tutorial to itself. For information on that, I’d recommend checking out these fine articles written on the topic:

(Protip: I love being able to nest CSS… try it)

Disclaimer: I am a PHP developer, not a Ruby developer. My Ruby code could probably be improved upon by someone who is more in tune with the Ruby language.

Changing Roles at WP Engine

For some time, I’ve felt there was a change coming and today, I’m ready to announce that my role within WP Engine is changing. Starting today, I have transitioned into an advisory and consulting role with the company.

Effective immediately, I will be taking the portion of the business that focused on professional services and consulting to allow the company to focus on premiere WordPress hosting. It’s a good thing and I’m excited about the possibilities. Back in November, we decided to start taking on some professional services work to augment demands from many of our customers. It was awesome to have fast, secure, scaleable, managed hosting but they wanted more!

And we wanted more.

However, as the company has evolved, taken funding, hired more people, addressed growth challenges and built out our hosting option, it seemed clear that the professional services portion of the company was a separate kind of deal than what we wanted to focus on.

So today, I’ll be taking that portion of the company (and all related existing and current relationships, as agreed on), and working on that. Meanwhile, I’ll still be working with the company to guide direction and strategy. So it’s good for everyone.

Effective immediately, I am available for all WordPress consulting roles. However, I am also currently entertaining all possibilities involving full time employment as well, and welcome those conversations.

To contact me, please direct emails to aaron@technosailor.com. As transitions go, the immediate financial impact is something that I need to consider.

How is WordPress Subversion Organized


There’s some confusion about how WordPress organizes it’s Subversion (SVN) repository. Most SVN repositories are organized into three main directories, as is best practice — trunk, tags, branches.

The repository can be found at http://core.svn.wordpress.org/ and a primer on how to use SVN for WordPress development can be found on Mark’s blog and, for Windows, on Westi’s blog.

Though there are varying schools of thought as to how branches and tags work, WordPress follows the following system:

/trunk is where future release development occurs. Right now, WordPress development is focused on an upcoming 3.3 release. All development for this release is going into /trunk.

/branches is where 3.3 will go once it is released (or where future “branches” of the software will be housed down the road. The directory contains a series of directories that are branches from the current release development — for example, /branches/3.0, /branches/3.1, /branches/3.2, etc. What you won’t find in branches are security (or dot) releases.

For instance, when a security vulnerability is discovered, it will be patched in /trunk for the current development branch and may be backported to the previous release branch (currently, 3.2). But until the next security release of WordPress comes out for that branch, it is still considered “development” and not “stable”.

/tags is where stable releases are archived. No development goes into tagged releases. These are final releases. You will find every release here in the form of /tags/3.2.1, /tags/3.2, /tags/3.1.4, etc. If you’re looking for the latest current stable for production, this is the place to look.

When branches achieve the next milestone (i.e. a maintenance or security or “dot” release), this is the place where the code is kept.

Hopefully this makes the WordPress repository (and maybe other projects) clear as mud.

Rules for Entrepreneurs: Release Early and Often

Last week, I wrote two articles outlining some philosophical ideas around entrepreneurship. This series of articles is all about giving away lessons I’ve learned throughout my five years as an entrepreneur in four different ventures.

When you’re in the product business, you have to continually improve on your product. As soon as you hit version 1, you’re heading for version 2. You create a roadmap and set milestones, which are just intermediary goals to help you get from inception to some point in the future.

The reality of roadmaps, however, are that they are susceptible to change based on market demands – or, as it’s sometimes called, “pivots”. You can have a great product idea that has a wonderful two year roadmap, but if customers don’t like it or demand other features that have never been thought of, then it would be wise to modify timelines and roadmaps.

Many successful products have been the product of a “release early and release often” mentality where the entrepreneur or product team did not wait to have a fully developed product, and instead, hurried to get something to market for the sake of collecting feedback and input and improving on the product.

Eric Ries in Lean Startup talks about principles of testing market validation by creating an iterative cycle of development where a product is released, tested in the market, feedback aggregated, assumptions tested against that feedback, and new innovation created as a result of those tests.

There are a number of rapid-cycle development philosophies including Agile, Scrum and others. These philosophies put a greater emphasis on involving customer feedback and direction over pre-determined plans where feedback is not collected until the development cycle is completed.

What happens if your assumptions were all wrong? Now you’ve got a product that no one wants to use!

The best way to avoid this problem is simply to release early, even before your product is near complete, and collect feedback along the way. Based on the feedback, you may need to modify your development trajectory but at least you’re able to do that before it’s too late and keep your product relevant to the consumer.

Next time, I’ll continue this series and talk a bit about business visualization to help you track your business and make effective decisions. If you’re not already subscribed to this blog, do so now. Also, follow me on Twitter where I’ll be talking about entrepreneurship, WordPress and a healthy dose of sports on the weekend.

Rules for Entrepreneurs: Compete and Collaborate

Photo by Roger Barker on Flickr.

Google and Apple are not only competitors… they are collaborators. Indeed, Apple and Google both offer top level smartphones – The iPhone from Apple and the assortment of Android devices by Google (Google not only has its own phones but is the main proprietor of the Android open source project).

In the same world, Samsung and Apple are rivals (and becoming even more rival-ous) with competing smartphones (Samsung runs Android) sparking ferocious lawsuits back and forth, but Samsung is also a major supplier of parts to Apple.

This segment of my continuing series on Rules of Entrepreneurship is all about knowing when and how to compete and when collaboration is a better option. They are not mutually exclusive. This is a natural segue from my last post where I suggest that entrepreneurs focus on doing one thing well.

Principle: Don’t Reinvent the Wheel

It frustrates me to watch startups (usually not very good ones) try to reinvent the wheel. A classic example of this was from back in 2007 when I was sitting in a Starbucks in Columbia, MD. We had a group of entrepreneurs who gathered there on a daily basis and cowork together.

One of the guys I was working with introduced me to a pair of African-American entrepreneurs and he wanted me to hear about what they were building. I sat down and listened to their pitch. They were building the “YouTube for the African-American community”.

Full stop.

What? Why? Why not use YouTube?

They were well into the process of building an entire video platform from the ground up, complete with their own video encoding technology, instead of leveraging what YouTube (and subsequently Google) already created.

The entrepreneurs real mission was creating a video-sharing community for African-Americans, not creating video technology for African-Americans to use. I told them that day that they should abandon attempts to build their own video service, and instead leverage YouTube (which is built and maintained by really smart people at Google) to build the community they really wanted to build.

Why re-invent the wheel? You distract yourself from your core goals.

Sidenote: I have never heard of or from those entrepreneurs since.

Collaborate

As an entrepreneur, part of the process is identifying your competition. We certainly have done that at WP Engine. Sometimes, it is to your benefit to team up with your competition to achieve a common goal. Remember, business is business and it’s not personal. Don’t let your desire to “win” get in the way of your ability to get ahead.

Also, remember the age-old saying, “A rising tide lifts all ships”. What is good for your competition is often good for the entire industry you’re in. Everyone wins.

Certainly that’s not always the case, but it certainly isn’t not always the case.

Compete

In my opinion, competition is a bottom-line issue and there are lots of ways to positively affect your bottom line. Usually, competition does not equate to a zero-sum game, an assumption that rookie entrepreneurs tend to make. (I did this a lot in 2006, 2007 while at b5media and trying to take pot shots at competing blog networks – years later, I find it all kind of silly).

When you do choose to take on direct competition, keep it narrow, precise and for a specific purpose. Don’t allow personal feelings to affect your business strategies and, in the process, keep the door open to cooperation with your competition in other areas.

Next week, I’ll continue this series and talk a bit about release cycles – which is always a fun debate. If you’re not already subscribed to this blog, do so now. Also, follow me on Twitter where I’ll be talking about entrepreneurship, WordPress and a healthy dose of sports on the weekend.