First upgrade your software as is.

>> sudo apt-get update

>> sudo apt-get upgrade

Then add the following to your /etc/apt/sources.list file.

>> sudo nano /etc/apt/sources.list

deb http://http.us.debian.org/debian stable all
deb http://security.debian.org/ stable/updates main contrib
deb http://packages.dotdeb.org/ stable all

Finally run the update to install PHP 5.2.9.

>> sudo apt-get update

>> sudo apt-get install php5-cli

>> sudo /etc/init.d/apache2 restart

Here’s the scenario. You have a WordPress MU site with multiple blogs, but for whatever reason, you want every blog to have the same main navigation and pages. Your main site/blog hosts all of your pages. So how do you go about creating a WordPress MU Theme that will use the navigation and pages from your main site/blog accross all of your blogs? Well, I’m here to tell you how I did it.

The WordPress Codex has a function called ‘wp_list_pages.’ What I wanted to do is create a new function called ‘wp_list_main_pages.’ So I simply searched my WordPress install and copied the ‘get_pages’ and ‘wp_list_pages’ functions and pasted them into my theme’s ‘functions.php’ file. From here I made a few edits to these functions. To start with, I renamed them ‘wp_list_main_pages’ and ‘get_main_pages.’

Below is the final code I’m using to display the main navigation accross blogs. I made notes in bold to help. Hope this is helpful to you Googling coders. :)

// You can use this function instead of 'wp_list_pages' in your theme
function wp_list_main_pages($args = '') {
	$defaults = array(
		'depth' => 0, 'show_date' => '',
		'date_format' => get_option('date_format'),
		'child_of' => 0, 'exclude' => '',
		'title_li' => __('Pages'), 'echo' => 1,
		'authors' => '', 'sort_column' => 'menu_order, post_title'
	);

	$r = wp_parse_args( $args, $defaults );
	extract( $r, EXTR_SKIP );

	$output = '';
	$current_page = 0;

	// sanitize, mostly to keep spaces out
	$r['exclude'] = preg_replace('[^0-9,]', '', $r['exclude']);

	// Allow plugins to filter an array of excluded pages
	$r['exclude'] = implode(',', apply_filters('wp_list_pages_excludes', explode(',', $r['exclude'])));

	// Query pages.
	$r['hierarchical'] = 0;
	// Right here we call our new 'get_main_pages' function
	$pages = get_main_pages($r);

	if ( !empty($pages) ) {
		if ( $r['title_li'] )
			$output .= '<li class="pagenav">' . $r['title_li'] . '<ul>';

		global $wp_query;
		if ( is_page() || $wp_query->is_posts_page )
			$current_page = $wp_query->get_queried_object_id();
		$output .= walk_page_tree($pages, $r['depth'], $current_page, $r);

		if ( $r['title_li'] )
			$output .= '</ul></li>';
	}

	$output = apply_filters('wp_list_pages', $output);

	// This line is sloppy and needs improvement.
	// You have to remove the name of the blog your currently on from you global navigation.
	// I'm doing this the simplest but least scalable way here.
	$output = str_replace("pressroom/", "", $output);

	if ( $r['echo'] )
		echo $output;
	else
		return $output;
}

// This is essentially a private function
function &get_main_pages($args = '') {
	global $wpdb;

	// This is the magic line.
	// Now when the SQL runs to pull your navigation pages, it'll use your main blogs ID.
	$wpdb->set_blog_id(1);

	// Notice here I call the original get_pages function and return the results
	$pages = get_pages($args);
	return $pages;
}

If you’re running Mac OS X and Boot Camp you may need to increase or decrease the size of your Microsoft Windows Boot Camp partition, depending on what great videos games are out for Windows at the time. ;)

To accomplish this task without losing all your Windows data you need 3 things.

  1. Mac OS X 10.5 (Leopard)
  2. An HFS+ Mac-formatted external drive
  3. Winclone

To decrease the size of your Windows partition use the following steps.

  1. Make a backup of your Boot Camp partition from Windows. (optional)
  2. Run Winclone.
  3. In the “Tools” drop down click “Shrink Windows (NTFS) file system.”
  4. Follow the onscreen instructions.
  5. Wait… it takes awhile.
  6. In Winclone create an “Image” to your Mac-formatted external hard drive.
  7. Use Boot Camp Assistant to return your drive to a 100% Mac-formatted partition.
  8. Use Boot Camp Assistant to make a new Boot Camp partition larger than the file size of your “shrunk” Windows partition image, but smaller than your original Boot Camp partition size.
  9. When it asks for Windows disk, quit Boot Camp Assistant.
  10. Run Winclone again and “Restore” your Windows image to the new partition.

To increase the size of your Windows partition use the following steps.

  1. Make a backup of your Boot Camp partition from Windows. (optional)
  2. Run Winclone.
  3. In Winclone create an “Image” to your Mac-formatted external hard drive.
  4. Use Boot Camp Assistant to return your drive to a 100% Mac-formatted partition.
  5. Use Boot Camp Assistant to make new Boot Camp partition larger than your original partition size.
  6. When it asks for Windows disk, quit Boot Camp Assistant.
  7. Run Winclone again and “Restore” your Windows image to the new partition.

Kind of a pain, but it’s doable. I’ve altered my Boot Camp partition numerous times using the methods above.

After reading The Business of Coworking at NotAnMBA I was inspired to write this post.

The current definition of coworking needs revision. Coworking is not a space, a community, a set of values, a business model, or any combination of those things. Those topics are about coworking, but they do not define coworking.

If we look at the definition of coworking on the Coworking Wiki, we read that “coworking is a cafe-like community/collaboration space for developers, writers and independents.” This defines coworking as a noun and as a type of community space. Wikipedia does a bit better at defining coworking, but still place a lot of emphases on “the space.”

From my experience with Jelly, coworking is not a space or a noun. It is a verb. Coworking is something you are doing. For example, I’d use it in a sentence like this: “Today I am coworking at Jelly.” Or, “I might go to Citizen Space to cowork.” From this usage I’d like to propose the following definition.

Coworking is two or more individuals working independently or collaboratively who are socially interacting while they work.

As a verb you can cowork with people, you can be coworking, or you may have coworked. You may even go to a designated coworking space.

Also note, that this definition does not mention anything about a space or even proximity. This leaves the possibility to cowork remotely. Second Life and Yahoo! Live come to mind.

When we talk about creating a “coworking space,” “coworking community,” or having a specific set of values, we’re really talking about how to create an environment or community that will encourage the activity of coworking. Arguments over values, profits, business models, and furniture can neither undermine nor enhance the definition of coworking. Build a pool and I may go swimming. Is it a free pool? Do I have to pay to swim? Is the water clean? Are kids allowed in the pool? Is there a swim team that meets at this pool? Is the pool’s owner honest? All of these thing may affect my decision to swim in the pool, but are ultimately a matter of taste.

In summary, coworking is NOT a cafe-like community/collaboration space. That’s like saying swimming is a pool. And arguments such as for-profit versus non-profit need not become heated. Coworking is coworking regardless of where it’s at, what values people share, or how big the community is. If you’re working and socializing, you’re coworking.

For large projects I usually databind my dropdown lists, but sometimes you just need a no-nonsense dropdown list of US States. For all you folks Googling to save time, here’s that code. Enjoy! :)

<asp:DropDownList ID="DropDownListState" runat="server">
	<asp:ListItem Value="AL">Alabama</asp:ListItem>
	<asp:ListItem Value="AK">Alaska</asp:ListItem>
	<asp:ListItem Value="AZ">Arizona</asp:ListItem>
	<asp:ListItem Value="AR">Arkansas</asp:ListItem>
	<asp:ListItem Value="CA">California</asp:ListItem>
	<asp:ListItem Value="CO">Colorado</asp:ListItem>
	<asp:ListItem Value="CT">Connecticut</asp:ListItem>
	<asp:ListItem Value="DC">District of Columbia</asp:ListItem>
	<asp:ListItem Value="DE">Delaware</asp:ListItem>
	<asp:ListItem Value="FL">Florida</asp:ListItem>
	<asp:ListItem Value="GA">Georgia</asp:ListItem>
	<asp:ListItem Value="HI">Hawaii</asp:ListItem>
	<asp:ListItem Value="ID">Idaho</asp:ListItem>
	<asp:ListItem Value="IL">Illinois</asp:ListItem>
	<asp:ListItem Value="IN">Indiana</asp:ListItem>
	<asp:ListItem Value="IA">Iowa</asp:ListItem>
	<asp:ListItem Value="KS">Kansas</asp:ListItem>
	<asp:ListItem Value="KY">Kentucky</asp:ListItem>
	<asp:ListItem Value="LA">Louisiana</asp:ListItem>
	<asp:ListItem Value="ME">Maine</asp:ListItem>
	<asp:ListItem Value="MD">Maryland</asp:ListItem>
	<asp:ListItem Value="MA">Massachusetts</asp:ListItem>
	<asp:ListItem Value="MI">Michigan</asp:ListItem>
	<asp:ListItem Value="MN">Minnesota</asp:ListItem>
	<asp:ListItem Value="MS">Mississippi</asp:ListItem>
	<asp:ListItem Value="MO">Missouri</asp:ListItem>
	<asp:ListItem Value="MT">Montana</asp:ListItem>
	<asp:ListItem Value="NE">Nebraska</asp:ListItem>
	<asp:ListItem Value="NV">Nevada</asp:ListItem>
	<asp:ListItem Value="NH">New Hampshire</asp:ListItem>
	<asp:ListItem Value="NJ">New Jersey</asp:ListItem>
	<asp:ListItem Value="NM">New Mexico</asp:ListItem>
	<asp:ListItem Value="NY">New York</asp:ListItem>
	<asp:ListItem Value="NC">North Carolina</asp:ListItem>
	<asp:ListItem Value="ND">North Dakota</asp:ListItem>
	<asp:ListItem Value="OH">Ohio</asp:ListItem>
	<asp:ListItem Value="OK">Oklahoma</asp:ListItem>
	<asp:ListItem Value="OR">Oregon</asp:ListItem>
	<asp:ListItem Value="PA">Pennsylvania</asp:ListItem>
	<asp:ListItem Value="RI">Rhode Island</asp:ListItem>
	<asp:ListItem Value="SC">South Carolina</asp:ListItem>
	<asp:ListItem Value="SD">South Dakota</asp:ListItem>
	<asp:ListItem Value="TN">Tennessee</asp:ListItem>
	<asp:ListItem Value="TX">Texas</asp:ListItem>
	<asp:ListItem Value="UT">Utah</asp:ListItem>
	<asp:ListItem Value="VT">Vermont</asp:ListItem>
	<asp:ListItem Value="VA">Virginia</asp:ListItem>
	<asp:ListItem Value="WA">Washington</asp:ListItem>
	<asp:ListItem Value="WV">West Virginia</asp:ListItem>
	<asp:ListItem Value="WI">Wisconsin</asp:ListItem>
	<asp:ListItem Value="WY">Wyoming</asp:ListItem>
</asp:DropDownList>