Jeff Sayre's Blog, page 2
April 14, 2012
Fracturing The Stream
I just read an interesting article on the BBC’s website (in their Science & Environment section) and was surprised to see this little social gem at the end of the article:
Do you think Quentin has got it right? If you would like to comment on this story, head over to our Facebook page or message us on Twitter.
Explorers examine a crevasse on Lyman Glacier in 1916. (Photo courtesy of the United States Forest Service. Archived at the World Data Center for Glaciology, Boulder, CO.)
The BBC has apparently outsourced the commenting functions on its site to Facebook and Twitter. Of course, Twitter is not truly a commenting service as there is no way to follow a threaded conversation.I do not know how long the BBC has relied on an outside site to host and hold conversations about their articles. I believe that BBC’s decision — or any site’s — to fracture their content stream by choice is a bad idea.
Why? Because it makes users have to leave their site — why would they want that — and log into another site just to read and post comments about an article. As some of us do not have Facebook accounts by choice (like me), it also means that they are alienating some people from the conversation.
Fracturing By User
Whereas fracturing your own Stream by choice is not a good idea, sometimes it is the users who fracture your commenting stream.
One well-known and respected VC, Mark Suster (G+, T), has publicly stated that he does not like to announce his blog posts on Google Plus or Facebook as it fractures the conversation stream. People would comment on his post within his Google Plus or Facebook thread but not bother to reply on his blog post. He wisely prefers to have the conversation stream occur in one place — on his blog. That way it can easily be accessible to all, and moderated by him. So instead of using Google Plus to announce his newest postings, he relies on Twitter as it is suited to broadcasting about his posts.
I, too, have debated the desirability of announcing my latest blog articles on Google Plus as 95% of the comments I receive occur on my Google Plus thread and not within my blog post. I have made the observation before that Twitter is more a broadcast platform and Google Plus is more of a conversation ecosystem. Mark’s experiences and mine seem to back up this assertion.
You run the risk of giving your readers the opportunity to fracture your article’s conversation stream if you announce it on Google Plus or Facebook. To prevent that from happening while still benefiting from announcing their posts on social networking sites, some bloggers will turn off commenting within Google Plus and Facebook and ask their readers to leave comments on their original posting.
Are There Solutions?
As long as there are multiple Stream Channel providers, the reality of Stream fracturing will remain. However, fracturing your own stream on purpose, as the BBC does, seems like a bad idea. But, it is something that you can control. Preventing others from fracturing your own stream can be a little more difficult as readers can repost or reshare your content and create new channels of conversation that are divorced from the original content bucket.
It is clear that part of the issue with fracturing of streams in the blogging has to do with the outdate paradigm of blogging engines. I wrote about the need for blogging to evolve in my article, It’s Time for Blogging to Evolve. In that article, I propose a path toward making blogging a fully-integrated member in the real-time social web.
Other Articles of Mine On Stream Fracturing
Is Surrogate Blogging via Google Plus a Good Idea?
February 13, 2012
All Rise or A Standing Ovation
Last week I decided it was time for a major change in my working lifestyle. This weekend I made it happen. I spent the entire weekend offline, tearing apart my home office and working on my solution. I now have a beautiful, modern, standing desk.
To be accurate and fair, this lifestyle change was spurred on by my wife. She's wanted a standing desk in her office for sometime. As I looked into the benefits of such a setup, I decided that I should switch to a standing desk as well. Now, both of us have a standing desk in a home office that we share.
Pull Up A Chair
I spend a considerable amount of time at my home office, sitting in a chair, working at my computer — writing, coding, chatting, and sometimes just starring at the screen. I average about 60 hours a week sitting on my rear in front of my computer. Since I usually do that six days a week, that means I average 10 hours per day sitting at my computer.
With only 24 hours in each day on Earth, and with my often-met goal of getting at least eight hours of sleep each night, that meant I was spending at least 18 hours of each day in a sitting or supine position. When I added in sitting for meals and other activities, I calculated that that meant I was in a fully-upright position (standing, running, walking) for fewer than 5 hours each day — only about 20% of my life.
Wow! For creatures that evolved efficient, bipedal locomotion, it sure seems like a twenty precent usage rate might make such a feature secondary in importance. Modern office dwellers should have evolved much larger butts as sitting is clearly more important. Of course, many modern-day office workers do indeed obtain that feature overtime because they fail to appreciate our body's natural design.
It's About Wellness and Productivity
I'm an active person. I usually workout an average of 1.4 hours per day, six days a week. However, I am not getting any younger. I'm always interested in steps I can take to maximize and maintain my health for as long as possible.
In the past, I had read articles about the adverse health effects and risks associated with sitting for hours on end — pun intended — and learned about the many benefits of working in a standing position. Along with reduced back strain and increased energy, you can burn up to 60 calories more per hour than sitting. That means that in a week's time, and at my average hours worked per day, I will burn 3600 additional calories per week just by standing at my desk instead of sitting.
Now I am not really too worried about burning extra calories, but as I said, I am not getting any younger. Every little bit will help me stay in good to great shape, to age more gracefully, and to continue leading an active life.
My Solution
I spent literally a day and a half last week researching the ergonomics of standing desks and looking at a number of pre-constructed options. I finally decided I didn't like most of the options (especially the cost). So, I would design and build my own standing desk.
A few more hours on the InterWebs getting design ideas and I was ready to locate the parts. Surprisingly, I ended up purchasing most of the parts from Ikea. As Ikea is known for their love of particle board, I was skeptically that I could find a solid wood table top. That was an important feature. I avoid particle board and other processed, composite wood products as they outgas formaldehyde — often for up to two years. Whereas you can get low-emission composite wood products (Ikea apparently uses such material in their particle board offerings), why would you want to expose yourself to any emissions.
Fortunately, Ikea has a few solid wood, edge-glued countertops and tabletops that are acceptable. Their solid wood tabletops have been pretreated with linseed oil, so there is a slight outgassing from that, but it is not nearly as toxic as formaldehyde. Besides, I plan to finish treat the desktop with a non-toxic beeswax furniture polish which will not only protect the surface better, but also it will help reduce any remaining linseed oil from outgassing.
Here are the items I purchased from Ikea for each standing desk I made:
1 Vika Byske tabletop
5 Vika Byske adjustable legs
6 Capita brackets (they come two per set, so three sets)
For the shelf, I went to my local Lowes and purchased an edge-glued 3/4" x 15" x 48" solid aspen panel. Since the screws that come with the Capita brackets were too long — they're meant for shelf depths of at least 1" — I purchased 5/8" #8 flat head phillips wood screws. They worked fine to anchor the Capita brackets to the shelf.




As you can see in the pictures, each table has five legs. Based on my research, I discovered that the Vika Byske adjustable legs do not offer the most stable base if used for a free-standing table. Unfortunately, the higher you extended the legs, the more unstable they can become. I decided to go with a fifth leg to add a little more stability.
Although that did seem to work, in the end I determined that the table still wobbled too much for my liking. Since we planned to position our new standing desks next to a wall, I took Ikea up on their assertion that the legs "should only be combined with a wall-mounted table top" (see the "Good to know" section on the Vika Byske adjustable legs webpage). Each leg comes with one small angle bracket. You attach one end to the bottom of the tabletop and the other to the wall. I used two of the small brackets to secure one side of the standing desk to a horizontal 2 x 3 board (not 2 x 4) that I attached to the wall. The depth of the board is what mattered, not the width. So a 2 x 4 or 2 x 6 would have worked equally as well. I just had an odd dimensional piece of stock lumber in the garage so I used it.
With the additional stability of the wall attachment, our standing desks are very solid. Furthermore the three sets of Capita brackets and the fifth leg centered under the centerline of the shelf, allow the shelf to hold considerable weight. How much? I am not sure, but my iMac weighs thirty pounds. Normally, you would not want to place such weight on a solid 3/4" thick board that is supported on only two ends (laminated wood would be much stronger).
The total cost (not including my time, of course) for each finished standing desk was $300. As I was in Chicago last Thursday, I took advantage of the trip to visit one of their local Ikea stores and picked up all the items needed. When you deduct the cost of gas and toll, traveling to Ikea saved $230 on shipping. The Vika Byske tabletops are too bulky to ship via UPS or FedEx, so they must be shipped freight. To ship two of the Vika Byske tabletops to our house would have cost $300 extra.
The End Result
What is the end result? Well, I am off my end and have started this week working at my awesome standing desk. So far I'm enjoying the experience. I'm having no issues using my computer, typing on the keyboard while in a standing position. I'll let you know how it turns out but I've already burned 420 more calories today than I would have had I been sitting on my rear.
And yes, as tomorrow is Valentine's Day, this is my gift to my wife. Instead of chocolate, it is better health and longevity. Besides, we always have plenty of dark chocolate around the house.
More Resources
Gina Trapani's interesting read, Why and How I Switched to a Standing Desk
February 8, 2012
Do You Live to Work, Or Work to Live?
At my previous company, my partners and I agreed on many issues. We also disagreed on a number of issues. But perhaps the biggest area of disagreement between myself and my partners was work style.
As a consulting company, we tracked each hour of each employee's day. We knew what they did and for how long they did it. We could calculate an employee's total number of hours worked per year, average hours worked per day/week/month, what activities they spent most of their time focused doing, and therefore, each employee's chargeability. That is consulting slang for how much profit we could squeeze out of each lemon employee.
As it turned out, I had some leverage concerning the big disagreement that I had with my partners on this yet-to-be-revealed work-style issue. For each of the years I worked at the firm (except for the first year), I had the highest average working-hours-per-month total out of all the employees in the firm (over a hundred). To make matters worse (from my partners' perspective), the division with which I had P & L responsibility was not only the most profitable in percentage terms but also in real dollars. Finally, before I came along, this division had never turned a profit and was a significant cash sink from the corporate coffers. I turned my division around in 18 months and it stayed strong from that point on.
So, when I did or suggested something that was not popular, I managed to at least get a slight pause and a few moments of consideration before the arguing would begin. I was a stellar model of an exemplary employee, manager, and director. But to most of my fellow partners, I was not a stellar example of a partner. Why? Because I was seen as the maverick who not only looked at things differently, but also who was constantly trying to stir things up.
Of course, I was trying to evolve the corporate culture so that our employees would enjoy their time at the company, so that they would have less stress, so that they would not only feel more appreciated but would actually be more appreciated. This would lead to greater productivity, faster growth, and more profits. My partners could not see this.
The Big Work Style Issue Revealed
I never liked the inherent, non-spoken, holier-than-thou, outdated and absurd mantra, and sacred covenant that businesses and their employees buy into — that it is not appropriate for employees to bring their home issues to work. Whereas it of course can be distracting to the productivity of the workforce when an employee lets her or his personal issues mix with their work issues, we are human beings after all and it is almost impossible — except maybe for true sociopaths — to avoid periodically letting home life impact work life. Furthermore, companies never have issues with employees bringing their work life and issues home. In fact, for most white-collared workers, it is often expected that you will always be available for contact when you are at home or on vacation. This is a double standard with which I could not tolerate.
To that end, I did two things that most partners at successful consulting firms would never dream of doing — mostly because they would view it as abhorrent and unprofessional behavior.
First, I allowed my employees to bring their personal lives to work. I sat down with employees who were having a bad day, week, or month as a result of personal issues at home or their own serious health issues. I became someone who did not frown upon those who showed vulnerabilities. Second, I used each and everyone of my vacation days each year and did not allow my firm to contact me when I was on vacation.
It is unfortunate that most employees feel that by not taking all their allotted and earned vacation days, that it shows dedication. Employees also often sub optimize their vacation days taken as they feel that their managers frown on them when they use their vacation days. To me, however, I knew that I earned and deserved each and every one of those vacation days — and even more.
So, I took all my vacation days each year and would leave explicit instruction with my employees and partners not to call me. I made that especially easy as my wife and I usually traveled to an exotic, remote locale where it would be very difficult — if not impossible — to contact me. I also strongly encouraged each of my employees to use all of their vacation days each year (some did, some did not). I even promoted this practice outside of my division, although it was up to my partners to allow that for their employees.
Why did I do this? Because our employees deserved the time off. They earned it. I also believed that if someone could not afford to take all of their earned vacation days in a given year, then that meant that either they were poor time managers or, that we needed to hire more quality employees to distribute the workload.
Most employers give vacation allotments as an incentive but then when it comes time for an employee to use them, they make the employee feel guilty. However, they appreciate employees who underutilize time off. In fact, they use an awful trick to "reward" them for not using vacation days — they pay them for those days. Of course, this is a much better deal for the employers than the employee. An employer expects to earn a profit for each hour an employee works. So, paying them not to take their vacation days results in them making more money than if that employee had taken the vacation day.
Stirring The Pot To Make Gold
I stirred up the pot in other ways as well. I fought to share a larger portion of profits in an equitably manner with each employee (and not in the ridiculously formulaic way in which it was done — and then, not with any regularity or real fairness). I pushed for better wages and salaries. I argued that the company should award more aggressive bonuses. I even lobbied to have our employees treated and viewed as assets instead of resources.
Resources, after all, are something that is mined, consumed, and then discarded when every last drop of usefulness has been extracted. The phrase Human Capital was just beginning to come into vogue, but I disliked that term just as much as Human Resources. Capital expenditures are depreciable investments. No, instead I pushed, with very little success, to be innovators in the HR field, to treat and view our employees as appreciable assets.
Fight For Your Life
So, if you are a startup founder, a partner, manager, or lower-lever employee, do you live for work or work to live? It is up to each of you to decide how you are treated and to treat others in a way that lets them thrive, grow, and lead a life in which work is not viewed as an all-consuming necessity but instead is welcomed as a wonderful partner in achieving personal and family goals.
Comments?
Please feel free to comment below or join the active conversation on this article on Google Plus.
Image Credits
Royalty-free image thanks to Image: digitalart / FreeDigitalPhotos.net
February 3, 2012
Integrating MongoDB Into BitNami’s MAMPStack
This article is for all you OS X Lion-based Mac developers who use BitNami’s MAMPStack and dream of being able to add a NOSQL database engine, like MongoDB, to the stack. If you are not running Lion, then there is no reason to proceed.
BitNami offers a variety of development and production stacks that make it quick and easy to set up a localhost-based development environment or even provision a production-based server with a full suite of tools. If you are familiar with the better known MAMP, offered by the German company appsolute GmbH, then you should have no issues using BitNami’s version instead.
What are the benefits of using BitNami’s MAMPStack?
First, as of the date of this article, their stack is up to date. It is compiled and built with the most recent, stable versions of PHP, Apache, MySQL, and phpmyadmin. Second, they offer a very easy-to-install PostgreSQL addon module that integrates into the MAMPStack. This provides the opportunity to use an alternative database, even leveraging PHP’s PDO extension to create a truly SQL-agnostic application. It should not be too hard in the future to add support for other open source SQL-based RDBMSs like Percona or even Drizzle. Third, they seem very responsive to their user community.
Why would you want to integrate MongoDB into your MAMPStack?
The days when a RDBMS could be the end all and be all of your backend are over. For more on this point, read part three of my five-part Smartup series, Web 3.0 Smartups: Moving Beyond the Relational Database.
In short, in the Social Web, smartups cannot use a RDBMS as their only backend tool for every job. A RDBMS is not a universal tool. In fact, RDBMSs — MySQL in particular — are overused and often misused.
Let’s Get Started!
Integrating MongoDB into your BitNami MAMPStack is a relatively straightforward process — at least if you are a developer accustomed to building and modifying your dev stacks. Reading this article will take you some time. But, once you fully understand this process, it should take no more than fifteen minutes to install and configure MongoDB to work within your BitNami MAMPStack.
How do I know? Because before posting this article, I deleted my BitNami MAMPStack using the uninstall.app application with which it ships. This deleted all the work I did in integrating MongoDB into the stack. I then reinstalled the stack and repeated the process below. Of course, I had backup copies of the BitNami MAMPStack because there is no need to redownload that. But, I did go through the entire below process. Total time? Thirteen minutes and four point six seconds — and that is with two MAMPStack server restarts. Bam!
Disclaimer: Before you begin, you agree that you have read this disclaimer and the next one and agree with them. You understand that you are entirely on your own with this process. If you are not comfortable with UNIX commands, if you have never worked within Terminal before, if you do not know how the steps listed below will affect your computer, and if you do not know how to fix any issues that may arise out of trying out these steps, then do not proceed. I am not responsible for what happens to your computer as a result of these suggested techniques. You have been warned. Proceed at your own risk.
Disclaimer 2: This process should not be used on production servers. It is only suitable for a development environment running on localhost.
A. Compiling the MongoDB PHP Driver From Source
Grab the very latest version of the MongoDB PHP Driver. Download the tarball version.
(Note: Although you can try installing the driver using PHP’s PECL command, I’ve had spotty luck with that approach in the past when attempting to install MongoDB into a third-party dev stack. The driver did not always get installed in the proper location. Sometimes it got installed in the extension directory of the default version of PHP that ships with OS X. When that happens, you have to uninstall the driver and try reinstalling it into the proper directory. As this has proven unreliable in the past, I find it easiest to compile from source then move the extension into the proper location within the MAMPStack. It just takes a few more minutes but ensures that everything is in its proper place.)
Drag the tarball out of your Downloads folder onto your desktop. Then double click on the mongo-x.x.x.tar tarball to extract the files. This will create the driver folder. Open up Terminal and navigate to that folder. Each line below starting with a “$” indicates a new terminal command. Before beginning, see the notes below the ordered list. Enter these commands one at a time in Terminal:
NOTE: You may need to change the mampstack version number below if you are installing a newer version — in other words, a version that came out after this article was posted or updated. It is currently updated for MAMPStack version 5.3.10-1 and PostgreSQL Module Addon 5.3.10-1.
$ cd /Users/{your_user_name}/Desktop
$ ls
$ cd mongo-x.x.x
$ cd mongo-x.x.x
$ sudo /Applications/mampstack-5.3.10-1/php/bin/phpize
$ ./configure
$ sudo make install
Terminal Notes
Step 1: Replace {your_user_name} with the name of your mac account user. It is the name that appears within the /Users folder.
Step 2: The list command will allow you to double check the MongoDB file folder name which you will enter in the next step.
Step 3: Switch to the directory that contains your MongoDB PHP Driver and associated files. Replace the x.x.x with the version number of the driver which should be the same as that listed for the folder name.
Step 4: This seems like a repeat of above, but if you inspect the folder structure of the driver download, you will see what is going on. This switches into the directory within the downloaded folder that contains the actual driver source files. It is within this directory that you run the compile commands.
Step 5: The phpize command prepares the build environment for PHP extensions — in this case, for building the MongoDB PHP Driver extension (mongo.so). You will be prompted to enter your administrator password. This is your mac user account password (assuming that you are the owner of the mac).
When the screen of output is finished, you will have a compiled MongoDB Driver extension located in the modules directory of the driver folder. Look in /mongo-x.x.x/mongo-x.x.x/modules for the extension named mongo.so. Copy that extension into the following folder in your BitNami MAMPStack directory:
mampstack-5.3.10-1/php/lib/php/extensions
Now you need to add the following to your listed extensions within the php.ini file. In the BitNami MAMPStack, the php.ini file can be found here:
mampstack-5.3.10-1/php/etc
Open the php.ini file in your favorite IDE and add this to the “Dynamic Extensions” section of the file, just below the last active extension:
extension=mongo.so
Save and close the php.ini file.
Now, before continuing on to the next step, if your MAMPStack server is running, stop it and then restart it. Visit your phpinfo page to make sure that the MongoDB PHP Driver has been installed and is active. If you don’t know what a phpinfo page is, visit this link. (I made my PHP Info Page and placed it at root level in the apache2/htdocs folder before I began this process.) Run your phpinfo page and look for the “Configuration” section in the output. Now scroll down until you see “mongo”. Check to make sure the version number is what you expect.
If you do not see “mongo” listed, or the version number is incorrect, you’ll have to start the process again — but first you will need to delete the mongo.so file from BitNami MAMPStack’s PHP extension folder. However, if everything looks fine, you’re ready for the next section below — part two.
B. Adding and configuring the MongoDB Database
In this section, we’ll setup the MongoDB backend and make sure that it is functioning properly.
Follow these simple steps:
Download the most recent, stable OS X 64-bit binary version of MongoDB. Double click the tarball to extract the files.
Create a new folder called “mongo” in BitNami MAMPStack’s root. When you are done, you will have this directory structure: mampstack-5.3.10-1/mongo
Create three subfolders in this newly-created mongo folder, setting their permissions to 775:
bin
data
tmp
Within the newly-created data directory, add the following subfolder with permissions set to 775 as well:
db
Install the MongoDB files you’ve just downloaded and extracted into the mampstack-5.3.10-1/mongo/bin. Make sure you install just the contents of the bin folder within the downloaded MongoDB folder and not the bin folder too.
Next, you’ll create a configuration file for mongoDB. This file will tell mongo where to store data, log errors, and which directory to use for temporary stuff. In your favorite IDE, create a new file named mongodb.conf in the root directory of your mongo install ( mampstack-5.3.10-1/mongo ). In that file, add the following:
Important Note: You can copy the entire text below and paste it into your new, empty mongodb.conf file. However, before saving and closing this file, make sure there are no spaces on the blank lines between the code blocks. If you have even a single space on a blank line — or even after a command line — your Mongo server will not start up as it will believe the line with a space is a command line. It will not know how to interpret this phantom command. So, when attempting to start your Mongo server in step 6 below, if you receive this error, error command line: unrecognized line in ‘ ’, that means you have a space somewhere in this file. Find it, delete it, and try again. As much as I tried, I could not get the Syntax Highlighter to create the below text without adding an extra space between lines.
# Store data in default MongoDB directory structure, /data/db/
dbpath = /Applications/mampstack-5.3.10-1/mongo/data/db
# Set location where all MongoDB errors should be logged.
# This should create a log file if it does not exist
logpath = /Applications/mampstack-5.3.10-1/mongo/mongodb.log
# Set location of pid file; this should create one if it does not exist
pidfilepath = /Applications/mampstack-5.3.10-1/mongo/tmp/mongo.pid
# Only accept local connections
bind_ip = 127.0.0.1
Save and close your newly-created mongodb.conf file.
To launch MongoDB server, open up terminal and type the following command all on one line. However, as we have just made significant additions and changes to the basic, out-of-the-box BitNami MAMPStack, you need to restart your BitNami MAMPStack servers to make sure all the changes are picked up.
Once the MAMPStack servers have restarted, type this into Terminal — place your cursor in the box and copy the entire string as it does extend beyond the margins of the box:
sudo /Applications/mampstack-5.3.10-1/mongo/bin/mongod --config=/Applications/mampstack-5.3.10-1/mongo/mongodb.conf
Please note: From now on, this is how you will start your mongod server.
Test your MongoDB install to make sure that the server is running. By default, MongoDB listens to port 27017. You can verify which port MongoDB is listening to by looking up the configuration settings of your MongoDB PHP Driver in the PHP Info page. However, Mongo’s Web-based admin console listens to port 28017. Therefore by visiting “localhost:28017” in your browser, you can see if you have a connection. If you do, you’re all set!
To learn more about starting and stopping the MongoDB server (Mongod), see this resource.
(Note: You could install MongoDB into your /usr/local/ directory and then symlink the binaries out of the /usr/local/mongo/bin folder to the BitNami MAMPStack. However, the idea in this method is to keep all the applications bundled under the same master folder — your BitNami MAMPStack. That way, uninstalling the stack is very simple. You just delete the BitNami MAMPStack folder from your /Applications directory. The method presented here also makes it easy to move this application setup to another machine. Finally, although it is normally not an issue, with this method you do not have to worry about potential problems when upgrading your OS.)
C. Download and install phpMoAdmin
We are almost finished! If you’ve successfully completed parts one and two above, congratulations! You have integrated MongoDB to run inside of your BitNami MAMPStack. This last step will provide you with a tool to manage MongoDB.
Just as you use phpmyadmin to administer and manage your MySQL databases, MongoDB has several database admin tools written in PHP. We’re going to be installing phpMoAdmin. Grab the most recent stable version.
Once you’ve downloaded a copy, unzip it if it did not automatically unzip. Next, create a new folder within Apache’s htdocs folder called phpmoadmin. Copy the moadmin.php file into this new folder.
Done! You now can access this very simple, but useful MongoDB admin tool by visiting “localhost:8080/phpmoadmin/moadmin.php” in your browser.
Alternatively, you can use MongoHub or RockMongo to administer your MongoDB backend. I suggest checking all three out and deciding which one you like best.
Why are we using phpMoAdmin? It offers the most recently-updated version out of the three and it is simple to install as it is a single, small file. For this article, it is sufficient. However, the other tools may provide better GUIs and a stronger set of features. So, you should check them out and decide which one you like best.
Don’t Forget to Give Thanks!
That’s it!
You can further expand your BitNami MAMPStack by setting up VHOSTs in your Apache config file, but that is beyond this article. If you’re interested in that, see the documentation in the /apache2/manual folder.
Finally, please remember to give back to the open source community as it provides you with high-quality, powerful software with many freedoms — and often free as in cost, too. Share this article, write your own, create a version of this article for Linux distros or Windows, volunteer time to an open source project, contribute bug fixes, thank BitNami for their services, or donate to help fund an open source project. Free and Open Source Software (FOSS) needs your support!
Now go out there and create the next, greatest Smartup!
More resources
Learn more about MongoDB
MongoDB books
Blending the Doctrine ORM with the Doctrine MongoDB ODM
Integrating MongoDB Into BitNami's MAMPStack
This article is for all you OS X Lion-based Mac developers who use BitNami's MAMPStack and dream of being able to add a NOSQL database engine, like MongoDB, to the stack. If you are not running Lion, then there is no reason to proceed.
BitNami offers a variety of development and production stacks that make it quick and easy to set up a localhost-based development environment or even provision a production-based server with a full suite of tools. If you are familiar with the better known MAMP, offered by the German company appsolute GmbH, then you should have no issues using BitNami's version instead.
What are the benefits of using BitNami's MAMPStack?
First, as of the date of this article, their stack is up to date. It is compiled and built with the most recent, stable versions of PHP, Apache, MySQL, and phpmyadmin. Second, they offer a very easy-to-install PostgreSQL addon module that integrates into the MAMPStack. This provides the opportunity to use an alternative database, even leveraging PHP's PDO extension to create a truly SQL-agnostic application. It should not be too hard in the future to add support for other open source SQL-based RDBMSs like Percona or even Drizzle. Third, they seem very responsive to their user community.
Why would you want to integrate MongoDB into your MAMPStack?
The days when a RDBMS could be the end all and be all of your backend are over. For more on this point, read part three of my five-part Smartup series, Web 3.0 Smartups: Moving Beyond the Relational Database.
In short, in the Social Web, smartups cannot use a RDBMS as their only backend tool for every job. A RDBMS is not a universal tool. In fact, RDBMSs — MySQL in particular — are overused and often misused.
Let's Get Started!
Integrating MongoDB into your BitNami MAMPStack is a relatively straightforward process — at least if you are a developer accustomed to building and modifying your dev stacks. Reading this article will take you some time. But, once you fully understand this process, it should take no more than fifteen minutes to install and configure MongoDB to work within your BitNami MAMPStack.
How do I know? Because before posting this article, I deleted my BitNami MAMPStack using the uninstall.app application with which it ships. This deleted all the work I did in integrating MongoDB into the stack. I then reinstalled the stack and repeated the process below. Of course, I had backup copies of the BitNami MAMPStack because there is no need to redownload that. But, I did go through the entire below process. Total time? Thirteen minutes and four point six seconds — and that is with two MAMPStack server restarts. Bam!
Disclaimer: Before you begin, you agree that you have read this disclaimer and the next one and agree with them. You understand that you are entirely on your own with this process. If you are not comfortable with UNIX commands, if you have never worked within Terminal before, if you do not know how the steps listed below will affect your computer, and if you do not know how to fix any issues that may arise out of trying out these steps, then do not proceed. I am not responsible for what happens to your computer as a result of these suggested techniques. You have been warned. Proceed at your own risk.
Disclaimer 2: This process should not be used on production servers. It is only suitable for a development environment running on localhost.
A. Compiling the MongoDB PHP Driver From Source
Grab the very latest version of the MongoDB PHP Driver. Download the tarball version.
(Note: Although you can try installing the driver using PHP's PECL command, I've had spotty luck with that approach in the past when attempting to install MongoDB into a third-party dev stack. The driver did not always get installed in the proper location. Sometimes it got installed in the extension directory of the default version of PHP that ships with OS X. When that happens, you have to uninstall the driver and try reinstalling it into the proper directory. As this has proven unreliable in the past, I find it easiest to compile from source then move the extension into the proper location within the MAMPStack. It just takes a few more minutes but ensures that everything is in its proper place.)
Drag the tarball out of your Downloads folder onto your desktop. Then double click on the mongo-x.x.x.tar tarball to extract the files. This will create the driver folder. Open up Terminal and navigate to that folder. Each line below starting with a "$" indicates a new terminal command. Before beginning, see the notes below the ordered list. Enter these commands one at a time in Terminal:
$ cd /Users/{your_user_name}/Desktop
$ ls
$ cd mongo-x.x.x
$ cd mongo-x.x.x
$ sudo /Applications/mampstack-5.3.9-0/php/bin/phpize
$ ./configure
$ sudo make install
Terminal Notes
Step 1: Replace {your_user_name} with the name of your mac account user. It is the name that appears within the /Users folder.
Step 2: The list command will allow you to double check the MongoDB file folder name which you will enter in the next step.
Step 3: Switch to the directory that contains your MongoDB PHP Driver and associated files. Replace the x.x.x with the version number of the driver which should be the same as that listed for the folder name.
Step 4: This seems like a repeat of above, but if you inspect the folder structure of the driver download, you will see what is going on. This switches into the directory within the downloaded folder that contains the actual driver source files. It is within this directory that you run the compile commands.
Step 5: The phpize command prepares the build environment for PHP extensions — in this case, for building the MongoDB PHP Driver extension (mongo.so). You will be prompted to enter your administrator password. This is your mac user account password (assuming that you are the owner of the mac).
When the screen of output is finished, you will have a compiled MongoDB Driver extension located in the modules directory of the driver folder. Look in /mongo-x.x.x/mongo-x.x.x/modules for the extension named mongo.so. Copy that extension into the following folder in your BitNami MAMPStack directory:
mampstack-5.3.9-0/php/lib/php/extensions
Now you need to add the following to your listed extensions within the php.ini file. In the BitNami MAMPStack, the php.ini file can be found here:
mampstack-5.3.9-0/php/etc
Open the php.ini file in your favorite IDE and add this to the "Dynamic Extensions" section of the file, just below the last active extension:
extension=mongo.so
Save and close the php.ini file.
Now, before continuing on to the next step, if your MAMPStack server is running, stop it and then restart it. Visit your phpinfo page to make sure that the MongoDB PHP Driver has been installed and is active. If you don't know what a phpinfo page is, visit this link. (I made my PHP Info Page and placed it at root level in the apache2/htdocs folder before I began this process.) Run your phpinfo page and look for the "Configuration" section in the output. Now scroll down until you see "mongo". Check to make sure the version number is what you expect.
If you do not see "mongo" listed, or the version number is incorrect, you'll have to start the process again — but first you will need to delete the mongo.so file from BitNami MAMPStack's PHP extension folder. However, if everything looks fine, you're ready for the next section below — part two.
B. Adding and configuring the MongoDB Database
In this section, we'll setup the MongoDB backend and make sure that it is functioning properly.
Follow these simple steps:
Download the most recent, stable OS X 64-bit binary version of MongoDB. Double click the tarball to extract the files.
Create a new folder called "mongo" in BitNami MAMPStack's root. When you are done, you will have this directory structure: mampstack-5.3.9-0/mongo
Create three subfolders in this newly-created mongo folder, setting their permissions to 775:
bin
data
tmp
Within the newly-created data directory, add the following subfolder with permissions set to 775 as well:
db
Install the MongoDB files you've just downloaded and extracted into the mampstack-5.3.9-0/mongo/bin. Make sure you install just the contents of the bin folder within the downloaded MongoDB folder and not the bin folder too.
Next, you'll create a configuration file for mongoDB. This file will tell mongo where to store data, log errors, and which directory to use for temporary stuff. In your favorite IDE, create a new file named mongodb.conf in the root directory of your mongo install ( mampstack-5.3.9-0/mongo ). In that file, add the following:
# Store data in default MongoDB directory structure, /data/db/
dbpath = /Applications/mampstack-5.3.9-0/mongo/data/db
# Set location where all MongoDB errors should be logged.
# This should create a log file if it does not exist
logpath = /Applications/mampstack-5.3.9-0/mongo/mongodb.log
# Set location of pid file; this should create one if it does not exist
pidfilepath = /Applications/mampstack-5.3.9-0/mongo/tmp/mongo.pid
# Only accept local connections
bind_ip = 127.0.0.1
Save and close your newly-created mongodb.conf file.
To launch MongoDB server, open up terminal and type the following command all on one line. However, as we have just made significant additions and changes to the basic, out-of-the-box BitNami MAMPStack, you need to restart your BitNami MAMPStack servers to make sure all the changes are picked up.
Once the MAMPStack servers have restarted, type this into Terminal — place your cursor in the box and copy the entire string as it does extend beyond the margins of the box:
sudo /Applications/mampstack-5.3.9-0/mongo/bin/mongod --config=/Applications/mampstack-5.3.9-0/mongo/mongodb.conf
Please note: From now on, this is how you will start your mongod server.
Test your MongoDB install to make sure that the server is running. By default, MongoDB listens to port 27017. You can verify which port MongoDB is listening to by looking up the configuration settings of your MongoDB PHP Driver in the PHP Info page. However, Mongo's Web-based admin console listens to port 28017. Therefore by visiting "localhost:28017" in your browser, you can see if you have a connection. If you do, you're all set!
To learn more about starting and stopping the MongoDB server (Mongod), see this resource.
(Note: You could install MongoDB into your /usr/local/ directory and then symlink the binaries out of the /usr/local/mongo/bin folder to the BitNami MAMPStack. However, the idea in this method is to keep all the applications bundled under the same master folder — your BitNami MAMPStack. That way, uninstalling the stack is very simple. You just delete the BitNami MAMPStack folder from your /Applications directory. The method presented here also makes it easy to move this application setup to another machine. Finally, although it is normally not an issue, with this method you do not have to worry about potential problems when upgrading your OS.)
C. Download and install phpMoAdmin
We are almost finished! If you've successfully completed parts one and two above, congratulations! You have integrated MongoDB to run inside of your BitNami MAMPStack. This last step will provide you with a tool to manage MongoDB.
Just as you use phpmyadmin to administer and manage your MySQL databases, MongoDB has several database admin tools written in PHP. We're going to be installing phpMoAdmin. Grab the most recent stable version.
Once you've downloaded a copy, unzip it if it did not automatically unzip. Next, create a new folder within Apache's htdocs folder called phpmoadmin. Copy the moadmin.php file into this new folder.
Done! You now can access this very simple, but useful MongoDB admin tool by visiting "localhost:8080/phpmoadmin/moadmin.php" in your browser.
Alternatively, you can use MongoHub or RockMongo to administer your MongoDB backend. I suggest checking all three out and deciding which one you like best.
Why are we using phpMoAdmin? It offers the most recently-updated version out of the three and it is simple to install as it is a single, small file. For this article, it is sufficient. However, the other tools may provide better GUIs and a stronger set of features. So, you should check them out and decide which one you like best.
Don't Forget to Give Thanks!
That's it!
You can further expand your BitNami MAMPStack by setting up VHOSTs in your Apache config file, but that is beyond this article. If you're interested in that, see the documentation in the /apache2/manual folder.
Finally, please remember to give back to the open source community as it provides you with high-quality, powerful software with many freedoms — and often free as in cost, too. Share this article, write your own, create a version of this article for Linux distros or Windows, volunteer time to an open source project, contribute bug fixes, thank BitNami for their services, or donate to help fund an open source project. Free and Open Source Software (FOSS) needs your support!
Now go out there and create the next, greatest Smartup!
More resources
Learn more about MongoDB
MongoDB books
Blending the Doctrine ORM with the Doctrine MongoDB ODM
January 5, 2012
The Emerging Global Brain and the Internet’s Future
A few interesting posts and seemingly-unrelated themes have been circulating around Google Plus for the past few weeks or so. These thoughts have, I believe, been spurred on by the impending threat of the insanity of the SOPA and PIPA legislation.
I see the issues of Internet censorship, access rights, and content reuse as part of a much larger phenomenon that many people are unaware. Whereas the Internet has been a revolutionary force in humanity’s communication capabilities, facilitating numerous societal, cultural, political, and economic changes, I believe that it is the emerging evolutionary changes fueled by the accelerating growth in technology that will bring about the most radical and fundamental transformation.
Let me lead you through my thinking.
The Internet as a Right
Today I’ve seen this article by Vint Cerf posted twice to my Google Plus Stream, Internet Access Is Not a Human Right (independently posted by Tim O’Reilly and John Blossom). John Blossom’s post and ensuing comments present a well-reasoned argument on why access to the Internet should be considered a human right. Discussing the seminal insights in America’s First Amendment (freedom of speech, freedom of the press), John successfully argues that the right to unfettered Internet access is a natural extension of these two rights.
This issue was thrown into the spotlight in the middle of last year when the United Nations’ Human Rights Council declared that access to the InterWeb was a basic, global human right. Vint Cerf, on the other hand, makes his case in his article why he believes that is an improper viewpoint.
I agree with the UN’s declaration and respectfully disagree with Vint Cerf’s reasoning. To me, however, this debate misses a larger issue — the Internet is transforming in profound ways that push this discussion beyond the simple notion of access rights.
The Internet as a Cultural and Spiritual Resource
Also floating by in my Google Plus Stream this morning was this article (shared by Kingsley Idehen), about the Missionary Church of Kopimism being approved as an official religion in Sweden.
In my rehashing of Kingsley’s post, I mused about the possible ramifications the religion of Kopimism could have in the United States on the SOPA / PIPA legislative process. I asked if, “policy makers [could] be infringing on [freedom of religion] and the separation of church and state by trying to regulate the Internet and its activities.”
In the article about Kopimism, I found this statement very intriguing:
It makes perfect sense to observe that all life comes from copying and remixing of previous life, and to therefore hold copying and remixing as higher, sacred acts worthy of reverence…People who have observed that copying and remixing is the basis for all our being deserve every bit of respect for considering those acts connected with life itself.
(Note: Here is another article on this issue, A Few Thoughts on Kopimism as a Religion)
This is an interesting perspective. Of course biological life maintains and perpetuates itself via mitosis and meiosis. Our past cells and current self can only survive via the copying and passing on of genetic information. Evolution proceeds via the copying and mixing of various genes and through creation of novel genes thanks to mutations. Copying is also fundamental to disseminating and perpetuating software, content, knowledge, ideas, and cultural memes.
Thus copying can be viewed as something that transcends the myopic view of intellectual property protection and its strict enforcement of infringement laws. Censorship and a reduction of access rights to the Internet eschews the higher-level cultural and spiritual import of our social interactions on the InterWeb.
I suppose it could be argued that copying, remixing, sharing, and disseminating are at the core of the fabric of the universe. So how is the Internet moving past the basic issue of access rights and evolving into a more holistic manifestation of our biological and universal predilections to copy, share, disseminate and connect?
The Emerging Global Brain
As the growth of computing technology accelerates at an accelerating rate, the tools and means with which our species communicates will radically change. Already at least one billion people are emotionally connected and attached to their social media networks and obsessively enamored with their smart devices. At least a billion people more covet the notion of being connected in the same way.
For those of us intimately tied into the Social Web, our connection and devices might as well be a permanent piece of our neural anatomy. In my article, Who Should Own the Internet, I make this observation:
The Internet has become our global data ecosystem. It is an evolutionary force in the speciation of humanities’ communication and computation infrastructure. As a result of the ease with which data of all types flows around the global, and with the increasing connections made to this data on a daily basis, our species is on the verge of seismic and profound changes.
In just a few decades, the Internet has grown like a developing nervous system, transcending national boundaries, shrinking geographic distances, dissolving geopolitical barriers, and binding many of us together into a single, global network. If allowed to continue its course unshackled by shortsighted power players, then it may become humankind’s most powerful, liberating, unifying, and transformational force.
As our computing and communication technologies become smaller, more powerful, cheaper, and ubiquitous, humanity will begin to merge with these tools. Currently, we have superficially merged with our communication tools, but in a few decades, we will have augmented reality interfaces in our glasses and contact lenses, various Internet-enabled sensors in our bodies, and a copious amount of micro sensors providing reams of data from the Web of Sensors—a global mesh network of sensors.
At some point, the Global Brain will come to life. It will be part organic, part inorganic. It will be part us and part our creations. It will be a universal communications binding whose existence is greater than the sum of its parts.
(Note: I go into more detail about the Global Brain in my thought piece, Cybernetics, the Social Web, and the (Coming?) Singularity)
Because of this belief, in my Who Should Own the Internet article, I put forth my view of the needs of the Internet as follows:
…the Internet [should be] granted its own rights and freedoms—freedoms to grow, to prosper, to evolve unencumbered by corporate or governmental red tape as if it were its own emerging metaphysical entity.
In the coming decades, humanity’s sojourns and journeys across the Social Web will transform as the technological and cultural seismic shift in global communication patterns and infrastructure brings use closer together and intimately connects us. The Internet is evolving in ways that may be currently hard to comprehend. If the global netizenry does not stand up for its rights and those of an unencumbered Internet, then corporate greed, myopic political leaders, and misplaced fear will prevent humanity from achieving an amazing future.
My Related Articles
The HyperWeb: it’s All About Connections
Cybernetics, the Social Web, and the (Coming?) Singularity
Who Should Own the Internet?
The Emerging Global Brain and the Internet's Future
A few interesting posts and seemingly-unrelated themes have been circulating around Google Plus for the past few weeks or so. These thoughts have, I believe, been spurred on by the impending threat of the insanity of the SOPA and PIPA legislation.
I see the issues of Internet censorship, access rights, and content reuse as part of a much larger phenomenon that many people are unaware. Whereas the Internet has been a revolutionary force in humanity's communication capabilities, facilitating numerous societal, cultural, political, and economic changes, I believe that it is the emerging evolutionary changes fueled by the accelerating growth in technology that will bring about the most radical and fundamental transformation.
Let me lead you through my thinking.
The Internet as a Right
Today I've seen this article by Vint Cerf posted twice to my Google Plus Stream, Internet Access Is Not a Human Right (independently posted by Tim O'Reilly and John Blossom). John Blossom's post and ensuing comments present a well-reasoned argument on why access to the Internet should be considered a human right. Discussing the seminal insights in America's First Amendment (freedom of speech, freedom of the press), John successfully argues that the right to unfettered Internet access is a natural extension of these two rights.
This issue was thrown into the spotlight in the middle of last year when the United Nations' Human Rights Council declared that access to the InterWeb was a basic, global human right. Vint Cerf, on the other hand, makes his case in his article why he believes that is an improper viewpoint.
I agree with the UN's declaration and respectfully disagree with Vint Cerf's reasoning. To me, however, this debate misses a larger issue — the Internet is transforming in profound ways that push this discussion beyond the simple notion of access rights.
The Internet as a Cultural and Spiritual Resource
Also floating by in my Google Plus Stream this morning was this article (shared by Kingsley Idehen), about the Missionary Church of Kopimism being approved as an official religion in Sweden.
In my rehashing of Kingsley's post, I mused about the possible ramifications the religion of Kopimism could have in the United States on the SOPA / PIPA legislative process. I asked if, "policy makers [could] be infringing on [freedom of religion] and the separation of church and state by trying to regulate the Internet and its activities."
In the article about Kopimism, I found this statement very intriguing:
It makes perfect sense to observe that all life comes from copying and remixing of previous life, and to therefore hold copying and remixing as higher, sacred acts worthy of reverence…People who have observed that copying and remixing is the basis for all our being deserve every bit of respect for considering those acts connected with life itself.
(Note: Here is another article on this issue, A Few Thoughts on Kopimism as a Religion)
This is an interesting perspective. Of course biological life maintains and perpetuates itself via mitosis and meiosis. Our past cells and current self can only survive via the copying and passing on of genetic information. Evolution proceeds via the copying and mixing of various genes and through creation of novel genes thanks to mutations. Copying is also fundamental to disseminating and perpetuating software, content, knowledge, ideas, and cultural memes.
Thus copying can be viewed as something that transcends the myopic view of intellectual property protection and its strict enforcement of infringement laws. Censorship and a reduction of access rights to the Internet eschews the higher-level cultural and spiritual import of our social interactions on the InterWeb.
I suppose it could be argued that copying, remixing, sharing, and disseminating are at the core of the fabric of the universe. So how is the Internet moving past the basic issue of access rights and evolving into a more holistic manifestation of our biological and universal predilections to copy, share, disseminate and connect?
The Emerging Global Brain
As the growth of computing technology accelerates at an accelerating rate, the tools and means with which our species communicates will radically change. Already at least one billion people are emotionally connected and attached to their social media networks and obsessively enamored with their smart devices. At least a billion people more covet the notion of being connected in the same way.
For those of use intimately tied into the Social Web, our connection and devices might as well be a permanent piece of our neural anatomy. In my article, Who Should Own the Internet, I make this observation:
The Internet has become our global data ecosystem. It is an evolutionary force in the speciation of humanities' communication and computation infrastructure. As a result of the ease with which data of all types flows around the global, and with the increasing connections made to this data on a daily basis, our species is on the verge of seismic and profound changes.
In just a few decades, the Internet has grown like a developing nervous system, transcending national boundaries, shrinking geographic distances, dissolving geopolitical barriers, and binding many of us together into a single, global network. If allowed to continue its course unshackled by shortsighted power players, then it may become humankind's most powerful, liberating, unifying, and transformational force.
As our computing and communication technologies become smaller, more powerful, cheaper, and ubiquitous, humanity will begin to merge with these tools. Currently, we have superficially merged with our communication tools, but in a few decades, we will have augmented reality interfaces in our glasses and contact lenses, various Internet-enabled sensors in our bodies, and a copious amount of micro sensors providing reams of data from the Web of Sensors—a global mesh network of sensors.
At some point, the Global Brain will come to life. It will be part organic, part inorganic. It will be part us and part our creations. It will be a universal communications binding whose existence is greater than the sum of its parts.
(Note: I go into more detail about the Global Brain in my thought piece, Cybernetics, the Social Web, and the (Coming?) Singularity)
Because of this belief, in my Who Should Own the Internet article, I put forth my view of the needs of the Internet as follows:
…the Internet [should be] granted its own rights and freedoms—freedoms to grow, to prosper, to evolve unencumbered by corporate or governmental red tape as if it were its own emerging metaphysical entity.
In the coming decades, humanity's sojourns and journeys across the Social Web will transform as the technological and cultural seismic shift in global communication patterns and infrastructure brings use closer together and intimately connects us. The Internet is evolving in ways that may be currently hard to comprehend. If the global netizenry does not stand up for its rights and those of an unencumbered Internet, them corporate greed, myopic political leaders, and misplaced fear will prevent humanity for achieving an amazing future.
December 17, 2011
Making the Stream More Intelligent
We've all heard the term CMS — Content Management System. These systems broadly fall into the blog platform category although they can often be more than simple blogging engines. WordPress and Drupal are the two most famous open-source CMSs.
The current Web has moved past the point where personal blogging is a big focus into the realm of real-time (RT) social interaction. Most content is now generated and shared via RT social networks than on CMS-based systems. However, unlike a CMS's focus on content, the RT social networks' focus is on users and their Streams.
No longer is it sufficient to place content at the center of a system's model. Instead, the RT Social Web demands that users have primacy, that their content preferences, that their Stream choices and channels, are just a part of their overall presence on the Web.
Instead of blogging-1.0 styled CMSs, the paradigm has shifted to what I call User Stream Manager (USM) systems. A USM places the user at the center of the system, not the user's content.
One such USM is Bottlenose, a self-described tool "that helps you engage with your streams more intelligently." Bottlenose was founded by Nova Spivack (T, G+) , a prolific Venture Producer, and Dominiek ter Heide (T, G+), a very talented developer and CTO.
I've been privy to Bottlenose's development for more than a year, watching it evolve into a more robust, well-envisioned Stream management tool — a USM. Although I have not used it on a daily or weekly basis, I've kept an eye trained on its progress, stepping back in every so often to test its waters.
I just did so again last week and all I can say is Bottlenose will become my default real-time Stream management system. I've grown tired of TweetDeck, HootSuite, and other social media dashboards. Whereas Bottlenose is still a nascent platform and therefore should not be compared apples to apples with the aforementioned dashboards, it's future prospects are greater in my opinion.
Bottlenose's foundation embraces Web 3.0; the company lives in what I call the Smartup space. The technology and the company are leading the way toward the era of the User Stream Manager. As consummate Smartup practitioners, they're aiming at building an ecosystem around their core technology, including the ability for 3rd-party plugins to enhance the Bottlenose experience. Add to this the possibility of an app store, and you have a smartup that not only will monetize in a smart way, but share some of their financial success with other developers.
There is a lot of low-level, amazing, and cool technology that churns underneath Bottlenose's surface, helping to sort out the flotsam and jetsam in your Stream from the treasures. Their proprietary tech helps extract the signal in your Stream from the noise in your channels. It learns what you like and dislike. It allows you to teach it how you prefer paddling your reach of the RT social river.
Currently, Bottlenose's oars, rudders, and keel are just in the Twitter and Facebook Streams. As it continues to evolve, hopefully adding additional Streams into the mix (Google Plus, Quora), its utility will only increase and each user's journey down their RT social Stream will become more meaningful.
If you have not yet tried Bottlenose, it's time for you to jump on in. The water is fine and the flow is just right!
My Related Articles
Flocking To the Stream
Building the Social Web: the Layers of the Smartup Stack
How Many Streams Can You Kayak At Once?
The HyperWeb: it's All About Connections
The first article in my five-part smartup series, Web 3.0: Powering Startups to Become Smartups
December 9, 2011
The Ecosphere And the Economy
One of the many joys I periodically experience is that aha moment of seeing connections within and between systems. As a trained scientist with a graduate degree in business, my insights often transcend the myopic blinders of those who remain oblivious to the larger connections on Earth. One such aha moment I had almost 20-years ago was that of the relationship between the economy and the ecosphere.
Life Is About Complex Adaptive Systems
What was the impetus behind this aha moment? In 1995 I read the first edition of the book, Complexity: Life at the Edge of Chaos by Roger Lewin. It changed my perspective on humanity's relationship to the ecosphere.
This book was my introduction to complexity theory and the concept of Complex Adaptive Systems (CASs). In brief, a CAS is a network of self-similar adaptive agents. These agents operate as a supra-entity, as a collective. Each individual agent interacts and communicates with the others in a dynamic way. A CAS's overall behavior is shaped, altered, and dependent on the experiences of each individual agent and that of the collective as a whole.
Before reading this book, I had an innate sense of the interconnectedness of humankind with Earth's ecosystem services. After all, prior to receiving my MBA, I majored in ecology (I also majored in molecular microbiology). But the notion of CASs opened up a more technological understanding of this interconnectedness and made me realize that economies cannot thrive in the longterm without full integration into the ecosphere.
Economies As Malfunctioning CASs
Economies depend upon raw materials that are processed to create and exchange value of some form or fashion. The raw materials range from basic materials such as natural resources to higher-level materials such as human thought, energy, and action. All along the way, inputs of one type of material are transformed into outputs of another type of material.
Each subsystem within an economy is its own Complex Adaptive System (CAS). In fact, economies operate as nested CASs. Transactions within and between an economy's CASs ebb and flow across information channels—the outputs and inputs that conjoin the various parts of the overall system.
The set of all economic subsystems is a singular high-level economic CAS, the master CAS in which all other economic system exists. Here we use the singular term "economy" to encompass the global economic engine, the net affect of all subset economies.
In a healthy functioning economic system, the likelihood (probability) of outputs from one Complex Adaptive System being properly received and utilized as inputs to another CAS is high. The issue with today's economy is that outputs that are deemed of low-value (have limited utility in being processed into new outputs) are usually classified as waste products and expunged from the system.
Another way of stating this is that waste products are not perceived by the economy as worthwhile inputs for any other process. The terms byproduct and waste are often used interchangeably to differentiate what is considered low-value materials from that which is considered useful output.
The Economy Has Become Malignant
The economy is not the highest-level Complex Adaptive System. And as much as some people may like to believe, the economy is not the most important CAS either. For purposes of this discussion, we will assume that the highest-level system is the ecosphere—the concatenated, symbiotic network that encompasses the atmosphere, biosphere, geosphere, and hydrosphere. It is the complex web of planet-wide foundational services upon which all life depends.
From an information theory viewpoint, CASs can only have two operating states—they ingest inputs and release outputs. In order for CASs to operate in harmony, in a healthy and symbiotic manner, all inputs and outputs must be processed. In other words, nothing is considered waste. Another CAS exists that can readily accept a given output as its needed input. This is exactly what a properly functioning ecosphere does. There is not a single output that does not act, is not received, as an input into some other CAS at the same or different level.
A malfunctioning economy–such as our current global economy–accepts the existence of some outputs that cannot be reused or repurposed anywhere. The issue that the global economic CAS currently is facing is that some of the waste products expunged by lower-level economic CASs are not readily usable by the ecosphere—or at best are not needed in the quantities that they are currently being produced.
What does this mean? The "waste" generated by a diseased economy might actually not find a CAS at any level that wants or needs it as an input. From this sense, an unhealthy economy acts more like a cancer than a valued collection of tissue. Over time, it provides little value, maybe even harm, to the larger CAS of which it is a part.
All economic outputs need to be viewed as resources that should and can be utilized by at least one other CAS—whether a subsystem CAS within the economy or a higher-level CAS outside of the economy. By retooling the economy to properly think about its inputs and outputs, this diseased, misbehaving tissue cluster can be reintegrated into the larger CAS.
Shouldn't we want to truly integrate the economy into the ecosphere? After all, the ecosphere is the higher-level CAS upon which the global economy ultimately depends.
Additional Resources
For more resources on Complex Adaptive Systems, visit the Santa Fe Institute's site.
Notes
Part of this article was originally posted to a Google Plus post by me as a comment. I've decided to extract my comment and expand the concept into an article that lives on my blog, under my full control. Why would I do this? See my article, Is Surrogate Blogging via Google Plus a Good Idea?
November 1, 2011
The New Garage: Bootstrapping Your Startup
I came across a Google Plus debate awhile back discussing what the new garage was for startups. To give you a brief background, a few famous startups actually started in a garage.
The Apple boys used Jobs' parents' free garage. The Google boys used a friend's garage for free (initially). HP founders used an unattached garage that was part of the home for which they shared the rent (Dave Packard and his wife lived in the house).
Thus the G+ thread was a discussion about what has replaced real garage spaces as a place where startups should startup. In the post's comments, a number of apparent startup founders were praising the virtues of co-working spaces, claiming that they are the new startup garage.
I found this statement odd. Bootstrapping founders don't pay for anything until they absolutely need it. Even if a startup has more money than they know what to do with, wise founders don't pay for something until it is essential. To me, whatever is the cheapest location option for a startup is the new garage.
The key with the startup-bootstrapping approach is to minimize expenses upfront. Use space for which you are already paying but not using efficiently–your bedroom, dining room, garage, shed, basement, one-room apartment, or dorm room. Or borrow (for free) extra space in your parents' or friend's home or apartment. Coffee shops or even libraries might work too but co-working spaces definitely do not. Why spend precious resources when you can get space for free. Once you have an initial product to demo, and you're beginning to gain traction, it may make sense to look for better facilities.
Renting an expensive place will not make you successful. The "it's key for networking" mantra is a thinly veiled excuse. Nothing prevents you from networking if you work out of your house. If people only networked with people whom they share the same physical office building, then the world would collapse.
Whether you're a bootstrapped startup or a well-funded startup, the key is execution on building your prototype, creating your MVP. Don't foolishly waste cash just to be in a cool place. If you don't have a founder's team that can successfully execute the startup's vision, then the team is flawed. Having the coolest place on earth will not change that. Besides, what can be cooler than starting up in a real garage — especially in the winter!
Note: Before any of my readers get a guilty feeling that I'm talking about you and your startup, relax. I've held this view for years and decided to share it after reading the interchange on the aforementioned G+ post. After all, my current startup uses the already-paid-for space in my house and my business partners' houses. Although there is a fabulous co-working space in a high-tech park less than three miles from my house, I have zero interest in paying for more real estate when I already have real estate that I can use.
Jeff Sayre's Blog
