Bubble 2.0?

Posted by Shanif 204 days ago

The question is on everyone’s mind – are we repeating the dot-com bubble of 2000?  Having lived (and lost) through that crash, tried my hand at a couple of web startups of my own, immersed myself in the world of mobile and app development, and expanded my knowledge of business, I figured that it may be time to throw in my two cents.  Before I start the requisite comparisons to 2000, I want to talk about what I really mean when I use the word “bubble.”

In this post, I’ll be using the word “bubble” as it applies to capital markets, namely, initial rounds of funding and the stock market.  The only thing I’m concerned about is whether long-term investors will lose money by investing in some of the hot new companies that are going public.  This is a separate concern from those that worry about macro-economic factors like unemployment and GDP growth, so it could be possible that we could be in a bubble as I define it without being in a true economic downturn.

Now, with that in mind, the question remains, are we in a bubble?

Kind of.

You didn’t think I’d give you a straight answer, did you?  I was a consultant in a former life, you know.

Current Landscape

So what do I mean?  How is it possible to kind of be in a bubble?  Let’s start those comparisons.  If you look back to the ridiculousness of the economic landscape in 1999 and 2000, you’ll see that investors were very nearly throwing money at nothing but hopes and dreams.  Total venture investment at its peak was about $27 billion, and total early stage investments were about $1.5 billion1.  Companies were going public without a consistent track record of revenue, much less profit, generation.  The most gullible investors fully believed and even proselytized to others about the new economics of the Internet.  My favorite observation from that era was that everyone believed getting users was the most important factor in making money, even if they didn’t know how to monetize their users!  People stopped caring about the fundamentals of business and became enamored with technology.  This led to an investing environment where retail, and even big money, investors put money into fundamentally unsound businesses, driving their prices ever higher, until the smartest investors cashed out, starting a cascade of falling prices and eventual bankruptcy for most of the new age businesses.

And what about today?

Interestingly enough, we only see a few similarities, but they are significant ones.  It’s true that total tech venture investing is currently around $6 billion, and early stage investments are only in the low hundreds of millions of dollars1.  It’s also true that we’ve only seen a handful of companies go public, and those companies actually have sustainable business models and even impressive revenues!  But what they don’t have are significant, sustainable profits that justify their valuations.  Nor do they have huge barriers to entry or airtight business models resistant to competition.

Market Fundamentals

Despite all the hype surrounding the newest tech IPOs, the fundamentals aren’t there to justify their market caps.  Facebook, a company that is no more than six years old, is valued at $75 billion (about the same as Goldman Sachs), and yet, it only has revenues of $2 billion per year.  Keep in mind those are revenues, not even profits.  One can only wonder how much value they’re actually returning to shareholders.  Similarly, LinkedIn’s $9 billion market cap comes on profits of only $15 million.  Million!  And even Groupon, the current web darling, has significant financial troubles.  In 2010 they lost about $413 million, with another $114 million in the first quarter of 20112, and yet, they just filed for an IPO.  These financials imply a multiple of more than 100x.  That sounds bubble-ish to me.

What’s interesting is that I’ve started to hear people say that a lack of fundamental stability is ok because the number of Internet users is growing like crazy and that the market is huge! All these companies need to do is grab some more users to keep their revenues growing.  Sound familiar?

It seems like we have conflicting evidence.  Some indicators are pointing to signs of a bubble, whereas others are simply pointing to signs of rapid growth.  This is where the uncertainty and my answer of “kind of” comes in.  I’m fairly certain that long-term investors that dump money into these incredibly over-valued IPOs will lose money.  But the number of such companies filing for IPOs is still relatively small, and many investors are still very cognizant of what they lost in 2000, so they’ll be much more prudent this time around.  Moreover, there are many, many analysts currently wondering aloud whether or not we’re in a bubble.  Though there were some similar voices in 2000, we didn’t see the same volume and skepticism that we see now.  If this were a true bubble, I believe that the number of voices warning of impending doom would be much less than what we’re observing now.

Summary

So in my opinion, we’re probably in a time when careless investors are getting caught up in hype, ignoring fundamentals, and risking capital in certain businesses.  But we’re not in a 2000-style dot-com bubble.  I don’t think we’re going to see the type of market crash that we saw back then (at least not from tech, sovereign debt and state bankruptcies may yet do us in), but I do believe that the share prices of many of these companies will eventually fall significantly in the future.  As far as the tech scene in Silicon Valley goes, I think that hiring will continue to be strong, more and more web and mobile apps will be released to an increasingly tech savvy consumer base, and clever, intelligent entrepreneurs will begin to form small, stable companies that will endure for many years into the future.  Who knows, somewhere in the basement of a Palo Alto home, someone could be building the foundations of the next IBM.



1http://mashable.com/2011/07/13/bubble-infographic/
2http://www.practicalecommerce.com/articles/2912-Groupon-Files-for-IPO-Rapid-Growth-No-Profits
Image from http://www.flickr.com/photos/nickso/2983553150/sizes/o/in/photostream/



New Solution For WordPress “White Screen of Death”

Posted by Shanif 1 year, 25 days ago

I’m in the process of rebuilding Intigril’s website, and as I do so, I have to tightly integrate the Rails and WordPress pieces of it. One of the issues I was recently having was the WordPress “White Screen of Death.” This is a problem that most WordPress managers have probably seen at one point or another.

You try to go to your WordPress homepage and the only thing you see is a blank white screen. There’s nothing in the logs. There’s nothing in the source of the page. Just blank, white, death (thus the name). Doing a quick Google search shows that thousands of others have experienced this problem. Like any other technical issue, there are a variety of causes and solutions (bad plugins, extra spaces at the end of files, messed up wp-config.php files) – all of which I tried to solve my current issue, and all of which subsequently failed.

After going through a whole day’s worth of efforts, I read through a couple of forum posts on my web hosts’s support site and realized that they may have to make some entries into my Apache vhost file (since I am running WordPress as a subdirectory of a Rails app that is running on Passenger).

When I contacted them, they gave me a one line, extremely simple answer. As far as IT things go, these are generally the best solutions, and in my case, it fixed my issue. All I had to do was put PassengerEnabled off in the .htaccess file of my WordPress root directory.

As soon as I did that, both the homepage of my WordPress installation as well as my admin login page came up without a hitch. Hopefully this will help those of you out there that are experiencing the WSOD and are seeing no success with the other, more common solutions out there.



Getting Tidy To Work On 64-Bit Linux Systems

Posted by Shanif 1 year, 234 days ago

Image from Riebart (Flickr)

For one of the tools I’m making for Intigril’s new site, I need to do some scraping and parsing.  There’s a great Rails plug-in for this called scrAPI.  This plug-in uses a separate plug-in called Tidy.  Tidy is used to clean-up bad HTML so that it’s easier to parse.  A while ago, I wrote an application that utilized both of these plug-ins to do some extensive scraping and parsing.  Everything was working fine until my shared host decided to upgrade their system (isn’t it funny how upgrades usually tend to break everything).

Well, they ended up going to a 64-bit server, which caused a whole lot of issues for me.  It turns out that in order to use Tidy, you have to have the compiled binary for it loaded onto your system.  scrAPI comes with that binary when you install it, but that binary is compiled for 32-bit systems.  When you try to use it on 64-bit systems, you’ll get an error that says the file can’t be loaded.  It’ll read something like this:

Scraper::Reader::HTMLParseError: Scraper::Reader::HTMLParseError: Unable to load /var/lib/gems/1.8/gems/scrapi-1.2.0/lib/scraper/../tidy/libtidy.dylib

It took me a while to figure out what this really meant, but ultimately, it means you’ll need to get a different version of the file “libtidy.so” – one that’s compiled for 64-bit architectures.  This seemed easy enough – after all, all I had to do was find a file and toss it onto the server.

It’s never really that simple, though, is it?

It turned out that my host already had a copy of this file on their server (in fact, they had several copies of this file, which I found by using the command “find / -name ‘libtidy.so’”.  Once I found the right file, I thought that all I’d have to do next would be to tell Tidy to use that file by setting the path in my production.rb config file, as such:

Tidy.path = "/path/to/libtidy.so"

When I did that, though, I got the following error the next time I tried to run my code:

/path/to/gems/tidy-1.1.2/lib/tidy/tidybuf.rb:40: [BUG] Segmentation fault

Things went from bad to worse.  It turns out that this was a known bug, and there was a patch for it.  You can see the details on this page.  I read all of the posts on that page and made the following changes, as suggested:

  1. Added the line "extern void tidyBufInit(void*)" to the ‘load’ method in the file tidy-1.1.2/lib/tidy/tidylib.rb
  2. Added the following method to the same file (Tidylib):

    #tidyBufInit, using default allocator
    def buf_init(buf)
    tidyBufInit(buf)
    end

  3. Added the following line to the initialize method in the tidybuf.rb file:

    Tidylib.buf_init(@struct)

  4. Added the following field to the TidyBuffer struct:

    "TidyAllocator* allocator"

I saved those changes into the version of Tidy that I had frozen to my Rails app.  Once I made those changes and re-deployed my code, everything was working perfectly.



Getting XAMPP, Passenger, And Rails To Play Nicely On A Mac

Posted by Shanif 1 year, 249 days ago

Image from Flickr

Even though I’ll be switching into the world of sales and trading (and hopefully entrepreneurship) fairly soon, I’m always going to be a techie at heart.  Ultimately, I think that will help my career.  I’ll always be interested in developing applications to solve problems.

Most recently, I needed to install and configure Phusion Passenger and Apache on my Mac so that I could get to work on Intigril’s website.  I wasn’t too worried about this, since everywhere I look, I read articles about how easy it is to install Phusion Passenger.  Oh ye of too much faith.

I just spent the past day struggling with my system.  Fortunately, I’ve been able to get everything up and running, but not without a lot of hassle.

The first thing I tried was installing MAMP on my Mac.  That went off without a hitch.  Then I tried to install Phusion Passenger.  The installation went okay, but when I tried to start the server, it wouldn’t do anything.  It turns out that Macs come pre-installed with Apache, and that when you install Passenger, it will get compiled against that version.

In order to solve this, the Passenger documentation site says that you have to export a certain environment variable.  The website also clearly states that you need to open a “root shell” before running any commands, because using the “sudo” command will eliminate any environment variables you previously set.  I didn’t read that part, so when I tried to install Passenger, it would never get installed to MAMP’s Apache, so when I made the necessary changes to my httpd.conf file, Apache would never start.

So I tried to compile Passenger against my native Apache installation instead.  However, the problem with that was that I would continually get 403 Forbidden errors.  I obviously tried “chmod”ding the heck out of all of my directories and files, but to no avail.

So the next thing I tried was installing XAMPP for the Mac and then compiling Passenger to that installation of Apache.  I made the same mistake as before, so it obviously didn’t work.  That’s when I took a closer look at the documentation and saw that I needed to switch into a root shell by using “sudo -s”.  Once I did this and exported the correct environment variable, I was able to install Passenger into my XAMPP installation.

Following that, I updated my hosts file so that “intigril.local” would point to my local installation, fired up my web browser, and instead of my shiny new site, I got “Passenger Error #2.”  It said something about not being able to “stat” the “config.ru” file in my Rails root directory.

I had no idea what this meant.  I don’t even know what config.ru is used for.  It turns out this was another permissions issue.  The resolution was to update Apache’s configuration file with the following:

  1. Make sure the “User” that Apache runs as is not listed as “nobody.”  I tried changing it to “www” but it still didn’t work, so instead I just used my own user account (hey, it’s just a dev box).
  2. Update the Virtual Host so that Rails runs with the correct username.
  3. Update the Virtual Host so that Rails has the correct DocumentRoot.
  4. Update the httpd.conf file so that it includes the module for virtual hosts.

This post helped a lot in getting through a lot of the configuration issues.

After I did all that, I finally got it working.  The next step will be to get WordPress up and running as a subdirectory of my Rails site.

Wish me luck.