This will be a collection of things I’ve stumbled on during my time as a business owner (or just in the business world in general). First off, all of my experience is with small business and the service industry, and the only way I see that changing is if my business really takes off. So far, owning a business has been one of the most unstable, stressful, and aggravating occupations I’ve had…but it has by far been the most fun. There really is nothing better than working for yourself. It takes a lot of drive and you really have to love what you’re doing. If you don’t love it, you aren’t going to be able to do it day after day, week after week, year after year. I guess that’s the first tip:

  • Love what you do. If you don’t love what you do, what’s the point? You aren’t really getting anything out of working for yourself, and I can tell you now that for all the stress and work it takes to get a business going and keep it going, it’s just not worth it if you don’t get to do what you love for at least a small portion of the day. Find something you’re knowledgeable and passionate about, and the money and success will follow.
  • Consider working with a partner. Owning a business is hard work. Sometimes more than one person can handle. In my experience, it’s been a lot easier having a partner than if I had to deal with everything on my own…someone who you trust and who shares your passion for what you do and for success. You can take a sick day and he/she will work in your stead, you can swap meetings with clients/customers, take vacations while the other one works, etc. You have to split the profits, but can make it up by doing almost twice the work anyway, and you get a lot more freedom.
  • Be smart about your time. Since you’re just starting out and don’t have much (if any) capital, it makes sense to try and do everything (bookkeeping, equipment repairs, etc) yourself, right? Absolutely wrong…it almost always makes more sense to hire a professional. You make money by doing what you’re good at. You don’t make money doing time-consuming tasks that you aren’t trained for. Hiring a professional to help you out may seem like a waste of money, but you save money in the long run. They’re great at what they do, you’re great at what you do…so use the time you would have spent floundering with what they’re good at to do what you’re good at, and you can pay them and have leftovers. Need a contract? Hire a lawyer. Doing taxes? Hire an accountant. Being smart about your time is really important, especially when considering your personal sanity.
  • “No” can be a great answer. Speaking of personal sanity, let’s talk about the most important word you can possibly have in your vocabulary. “No.” This word will save you. Trust me. You can’t really use this word when you work for someone else, so enjoy it. Try it now…say “no” out loud. Didn’t that feel great? What the hell am I talking about? You don’t have to do everything everyone needs (read: wants) all the time, and you certainly don’t have to do it when they need it. I’m not talking about when you and a client set a deadline and you decide you just don’t want to do it…that’s called laziness or poor planning. But if you find yourself inundated with work and a client out of the blue decides they need that huge project they’ve been mulling over in their head done THIS WEEK, “no” is a very appropriate response. “No” can also be used in other contexts.

    For instance, someone comes to you with a project that doesn’t make sense or it just sucks. Or the project is the best idea ever, but you get a strange vibe from the person pitching it. You don’t necessarily have to use the word “no” in this case, but the general concept is there: money != happiness. Just because a project seems great at first doesn’t mean it won’t drag you into a fiery pit of everlasting hell later on. Listen to your intuition, and know when to turn something or someone down.

    On a side note, the more you exclusively work on better projects with better clients, the better projects and clients you’ll attract. This isn’t a business technique as much as it is the way of the universe.

  • Communication is essential. Want to know a great way to piss someone off? Go way over budget on their project, then send them a bill at the end of the month. That’s a recipe for the swift end of a business relationship. Are you going to be 2 weeks late on a deadline? Tell your client ahead of time. Are you way over budget? Let your client know what happened and why! The sooner you tell them, the more appreciative they’ll be. Honesty, transparency, and proactive communication are the foundation of any relationship, but also translate well to business relationships.

    Also, be honest and verbose with your estimates. Sure, a prospective client may go with someone else with lower numbers on paper, but when they find out the other company more or less lied just to dupe them into getting their business, they won’t be happy. Also think of it this way: your numbers are the way they are for a good reason. If the client doesn’t want to pay your fair rate for a project, do you really need that penny-pinching tightwad arguing about every invoice with you anyway? Remember: the better the projects and clients you work with, the better the projects and clients you’ll get.

Ok, that’s about all I have in me for now. Maybe I’ll do a followup later, but hopefully these tips can help anyone new to business, or maybe give someone who’s been doing it for a long time a little perspective. A lot of this stuff I apply not only to my business life, but life in general, with great success on both ends. Keep in mind this is mainly geared towards the service industry, and being only 23 I’m not the most knowledgeable person in the world, but hopefully the things I’ve found so far are universal.

I’ve been using Google Analytics for quite some time. I do love it. It’s easy, it’s pretty, it’s addicting to look at the charts and graphs. Lately I’ve been trying out an alternative to Google Analytics, Piwik.

I’m not going to list a bunch of bullet points with features of both compared. I am, however, going to tell you my experiences with both. I started with Google Analytics. The setup and install is so easy, a blind ape could do it. Once tracking, the graphs, maps, numbers are all easy to understand. You can compare your site to others like it, and you can set up different segments of visitors and display the graphs according to your segments.

Google Analytics has been fun and easy. I do have some hangups about it. Although there is no cost, Google owns your data. They are giving you a service, you are selling them your data in return. They know about your visitors and can track them based on their interest in various pages of yours. They can do whatever they want with this information. For some people, this is fine. I personally don’t give much of a rat’s ass what Google thinks they know about me. For others, this is a privacy issue.

I also ran into some limitations with Google Analytics. It doesn’t track downloads very easily, and getting any sort of report that it doesn’t already give you is impossible because you only get what you see.

I decided to try Piwik. It’s open source, they advertise themselves as an alternative to GA, and you own all of your data. I threw up a new site on NearlyFreeSpeech.net, installed Piwik (literally a 5 min. install, just as they say), and started playing with it. A lot of the graphs are the same, the dashboard is completely customizable and is not jenky at all. After tracking some sites with it, I’m convinced it’s actually more accurate than Google. It picks up more visitors and keywords from search engines.

So I’ve been using Piwik regularly for about 3 or 4 months. There are some things I miss. Goals in Piwik do not have the awesome funnel that GA does. Not even close. The goals are pretty stupid, honestly, and all the ones I track are done manually through javascript. It’s nice to be able to track them, but it’s something I can get through any of my apps anyway. So from what I’ve noticed, Piwik is missing the funnel view (although they are working on it), and it’s missing an IP filter: half the visits are from me sometimes, and it’d be nice to be able to browse my own apps without having to worry about messing up the analytics.

Aside from those two points, Piwik is the winner for me. I really never actually check Google Analytics anymore. Piwik really has stepped up and provided a service that’s comparable in features to GA, but free as free for me to use it without having to give away info about my awesome users. I would definitely urge anyone who likes Google Analytics to check out Piwik. The best part is, they’re actively developing it and there more and more features to look forward to as new releases come out.

With a name like “California Taxpayers Right to Vote Act,” you know there is an ulterior motive. We already have the right to vote, right? In fact, we do. So what is Prop 16, really?

Prop 16 is designed such that before a city or state entity buys a section of power grid and resells that power to its residents, it must hold an election and get a 2/3 majority vote. While it may seem nice to have the voters decide on whether or not a government entity should be spending their money, it actually doesn’t make sense. The reason is the expenses involved in NOT allowing the entities to do this.

Think of it this way. A government agency spends some of your tax dollars buying up sections of the power grid. Money lost, right? Not necessarily. After they own that part of the grid, they start charging you for the power they give you. Great, so they spend your money to charge you money…but wait, there’s more. Because the government entity is essentially a business at this point which provides a service and charges for that service, it’s making money back. On top of this, the residents now have a choice of who they get their power from. This is known as “competition” and is the leading force against monopolization in any industry. If a market segment is profitable, doesn’t it make sense for the government to capitalize on that market segment?

Now let’s look from another angle. You are a taxpayer (I’m assuming) and you want to make the final decision about whether or not a section of power grid is bought. This is great, but your local government spends a lot (I mean, a LOT) of money without your express permission because we as a city/state/country give our government that power. We elect people to handle this in our stead because we are busy and don’t have the time to make every decision collectively. That’s how a representative republic works (no, the U.S.A. is not a democracy, sorry!!)

So why bother holding an (expensive) election so the govt. entity can spend more money petitioning and explaining to you why it’s good that they actually make money? Especially when they’re spending your money on lots of other things, all the time. Holding an election to give a local government entity the right to actually turn your tax dollars into profit (or at least offer you lower prices on energy) seems like a waste of time, no?

So where did this bill come from? If you read the Wikipedia page, it’s obvious: PG&E. Now, I have nothing against these guys. They do a great job, and obviously they’re just protecting their interests. They do not want the government competing with them, which is why thus far they have donated $6.5 million to the campaign, and have stated they plan to donate up to $35 million total. They obviously have a vested interest in forcing local governments to get 2/3 support in elections (which is very, very hard to do).

By voting “Yes!” on prop 16, you gain absolutely no more rights than you had before, you only make it harder for local and state governments to turn your tax dollars into something useful: cheap power for you. The name “California Taxpayers Right to Vote Act” is a misleading name designed to dupe the voters (that’s you!) into voting for higher energy prices and less competition in the energy market.

It’s important that our local governments are accountable for the money they spend, but passing highly targeted, specific bills that force them to ask, nay, beg, the voters for approval on everything they spend money on slows (if not stops) progress and makes our government much less useful…after all, we’re already electing them and paying them to decide where our money goes. Doesn’t voting on every single issue defeat the purpose of appointing representation?

Also, if the residents of a city really do not want the government spending their money on buying areas of power grid, they can get a ballot intiative (which takes a handful of signatures) and vote on it themselves.

https://www.nearlyfreespeech.net/I’ve never formally written about NearlyFreeSpeech.net until now, even though I’ve always had good things to say. Even after some extended downtime I’m excited to say I’m still on the bandwagon. The reason is their transparency. I’ve worked with many hosts before, and none are as honest or transparent. Even the Rackspace Cloud gave glossed over responses to their problems. A few of my NFS sites went down just about all of yesterday because of a server failure. I logged into the control panel (proprietary, but I actually prefer it over cPanel or hsphere) and looked at the sticky support note left for all customers.

I half-expected to see “teh service is dwn!! were trying to fix it! sry lol!” as with most hosts. Instead, there was page after page of updates with details and explanation. After this, I was able to rest easy, because I had a good idea of how long it would take to get everything back up. Whenever it didn’t go as planned, they’d post another update.

I cannot stress how awesome this was. Yes, they made my downtime awesome by treating me and the other customers as if we were techs in the server room. I didn’t really care about my sites being down, because I knew they were working really hard on it and probably wouldn’t go to bed until it was fixed.

This brings up another point though: transparency makes your customers wet. I know it’s been discussed time after time, but it really is true. People don’t like “Our apologies, our service went down,” as much as they like “Our service went down from 6:30-8:30 UTC today when lightning struck main Big-IP load-balancer, and our failover didn’t switch the backup on.”

What’s a Big-IP? What’s “failover?” It doesn’t matter…treating your customers as equals and letting them decide if information is relevant or not will make them wet.

In my three years experience with NFS, this is the first downtime I’ve experienced. Their support was amazing enough to update every customer with detailed information about the problems they were experiencing and how they were fixing it. I cannot recommend them more. For larger sites that require custom services running, you’re out of luck. For blogs, informational sites, paypal-driven shopping carts (no SSL, yet), etc this is the best shared host I’ve dealt with, ever. They’re dirt cheap, and the only host I know of who won’t disable your site without a court order or copyright violation.

In case you haven’t heard, a man, Joe Stack, angry at the IRS crashed a plane into his local IRS chapter. I don’t have much to say about the issue itself. Obviously, I disagree with crashing airplanes, or other means of transportation, into buildings. I also disagree with violence in general. The man left behind a suicide note on his site (which the FBI promptly removed) that detailed his hardships with the government during his life and why he did what he did. I don’t agree with what he did, but, save the last page, I do agree with most of what he said.

I’m posting what’s left of the suicide note on here in the form of images (all that was left of it).

0218102stack1a0218102stack2a0218102stack3a0218102stack4a0218102stack5a0218102stack6a

The part that struck me the most:

The communist creed:
  From each according to his ability, to each according to his need.
The capitalist creed:
  From each according to his gullibility, to each according to his greed.

I’m posting this because I agree with what was said. I believe that America is a wasteland of deceit where gains are privatized, and losses are socialized.

Like I’ve said and believe firmly, violence never solves anything… it continues cyclically and endlessly. It’s important, though, to see why violence happens and not just pass it off as “terrorism.” Yes, terrorism exists, but that doesn’t mean there isn’t a reason behind it, no matter how misguided.

My heart and thoughts go out to those who lost their lives as a result of this incident. Yes, they were part of this unjust, corrupt system, but isn’t everyone? They were obvious targets but we’re all in this together, and it’s not fair they should pay when everyone involved (everyone) is just as guilty as the politicians and corporations.

UPDATE – found the original text, linked on what used to be Joe Stack’s website.

I recently read a post on a web development firm’s blog (anonymous to protect them and myself). It was talking about how open-source web software is inferior to closed-source. The main reasoning was that open-source allows attackers to find vulnerabilities just by sifting through the code. The company touts their proprietary CMS as better than Drupal or Wordpress because only they (and their customers, heh) see the source code. Therefore it’s rock solid.

I was kind of blown away by this. Obviously it’s a marketing ploy to scare unknowing customers into using them instead of doing a simple Wordpress install, but it’s blatantly wrong and I feel the need to respond. Oddly enough, their blog is in Wordpress. Hmm.

First off, all software has vulnerabilities. All servers have vulnerabilities. Yes, it’s easier to find them if you know the setup or know the code, but from what I’ve seen in my lifetime of computer work is this: if someone wants to hack your site, they will. If there is a vulnerability, they will find it. And as I just said, all software has vulnerabilities. It’s stupid to assume that because the source is only readily available to people who pay you money and the people who work on their site after you that no vulnerabilities will ever be found. They will be found. Look at Google. They were just hacked by China. Does Google open source their Gmail app? No, completely closed-source. But someone wanted to hack them, so they got hacked. That’s what happens. Also, if your proprietary CMS is written in PHP, Python, Ruby, Perl, etc etc…you’re still using open source. Someone could attack the site at the language level. Does it make sense to now develop your own closed-source programming language so nobody will ever be able to hack it?

Secondly, most well-known open-source software has been around a very long time and has had hundreds of thousands (if not millions) of people using it. This means that over time, it gets battle-hardened. The common and not-so-common vulnerabilities are found, leaving the users with the latest versions a rock-solid code base that has gone through thousands of revisions to be extremely secure. With open-source, you’ve got hundreds of eyes looking over everything that’s added/changed/removed at all times. With proprietary code, you get a few pairs of eyes at best, with much fewer installs, much fewer revisions to harden and secure.

Is open-source better than proprietary? If you’re poor, most likely, but otherwise they both have their good and bad points. The main point of this article isn’t to bash proprietary software at all, it’s to refute the claim that because the source is open the product is less secure. I believe the exact opposite, in fact. If your code is open for everyone to look at, you damn well better be good at seeing vulnerabilities before they even get deployed…and if you don’t catch it, someone else developing the project probably will.

Is open source too open? Hell no.

googlesearch_pcI don’t know about everyone else, but I’m starting to get insanely pissed off with Google. They keep changing their site. First their homepage with the ridiculous Google Fade. Now their search listings have updated.

It appears Google is on a mission to alienate and anger their users. Mission accomplished. You know why I don’t use other searches? Because there’s too much clutter in the results. Google is simple. You type something, it shows results. Thanks. End of transaction. No need to show me “OH! Because you typed ‘gonorrhea’ you might like AIDS!!!” or “See news about ‘gonorrhea!’” No thanks. Just show me the listings. Or would you like to see images of gonorrhea?? If I did, I’d click the “Images” link you so graciously supply on top.

So now Google is on a quest to be more like Yahoo. Idiots. Google, why do you think nobody uses Yahoo? Why do you think everyone uses Google? IT’S THE FUCKING INTERFACE, you dumb shits. Are you really too fucking stupid to realize this? The more you copy other search engines, the more your appeal slips into the ether.

I really want to not hate you Google, but you make it so hard lately. PLEASE STOP FUCKING WITH YOUR INTERFACE.

So I got to thinking. There are some good caching reverse proxies out there, maybe it’s time to check one out for beeets. Not that we get a ton of traffic or we really need one, but hey what if we get digged or something? Anyway, the setup now is not really what I call simple. HAproxy sits in front of NginX, which serves static content and sends PHP requests back to PHP-FPM. That’s three steps to load a fucking page. Most sites use apache + mod_php (one step)! But I like to tinker, and I like to see requests/second double when I’m running ab on beeets.

So, I’d like to try something like Varnish (sorry, Squid) but that’s adding one more step in between my requests and my content. Sure it would add a great speed boost, but it’s another layer of complexity. Plus it’s a whole nother service to ramp up on, which is fun but these days my time is limited. I did some research and found what I was looking for.

NginX has made me cream my pants every time I log onto the server since the day I installed it. It’s fast, stable, fast, and amazing. Wow, I love it. Now I read that NginX can cache FastCGI requests based on response caching headers. So I set it up, modified the beeets api to send back some Cache-Control junk, and voilà…a %2800 speed boost on some of the more complicated functions in the API.

Here’s the config I used:

# in http {}
fastcgi_cache_path /srv/tmp/cache/fastcgi_cache levels=1:2
                           keys_zone=php:16m
                           inactive=5m max_size=500m;
# after our normal fastcgi_* stuff in server {}
fastcgi_cache php;
fastcgi_cache_key $request_uri$request_body;
fastcgi_cache_valid any 1s;
fastcgi_pass_header Set-Cookie;
fastcgi_buffers 64 4k;

So we’re giving it a 500mb cache. It says that any valid cache is saved for 1 second, but this gets overriden with the Cache-Control headers sent by PHP. I’m using $request_body in the cache key because in our API, the actual request is sent through like:

GET /events/tags/1 HTTP/1.1
Host: ...

{"page":1,"per_page":10}

The params are sent through the HTTP body even in a GET. Why? I spent a good amount of time trying to get the API to accept the params through the query string, but decided that adding $request_body to one line in an NginX config was easier that re-working the structure of the API. So far so good.

That’s FastCGI acting as a reverse proxy cache. Ideally in our setup, HAproxy would be replaced by a reverse proxy cache like Varnish, and NginX would just stupidly forward requests to PHP like it was earlier today…but I like HAproxy. Having a health-checking load-balancer on every web server affords some interesting failover opportunities.

Anyway, hope this helps someone. NginX can be a caching reverse proxy. Maybe not the best, but sometimes, just sometimes,  simple > faster.

After being a customer for the Rackspace Cloud (formerly Mosso) for quite some time, I’m happy to say that my business and anyone who listens to our advice will never be using this hosting service, ever again.

Rackspace is an amazing company. They are know for having great servers, great support, great everything. You can’t beat them. Mosso was a side project that was swallowed up by them which aims to run websites in a real, actual cloud. This is a valiant cause. To be able to upload a site to one server and have it scale infinitely over however many servers their datacenter has without ever having to touch it…that’s a miracle. It’s a great idea, that unfortunately just doesn’t work.

Mosso has repeatedly let us down, again and again. Their service is always going down. It’s hard to find a month where one of our sites hosted on the “cloud” hasn’t seen at least an hour of down time. I’d expect this from a shoddy “HOST 100 SITES FOR $2.99/mo!!” host, but not from someone charging a base rate of $100/mo. Here’s what it boils down to: you’re paying Mosso a lot of money for the privilege of beta testing their cloud architecture. Great business model.

And while Rackspace is known for fanatical support, the Rackspace Cloud is known by us for support that is fanatical about ignoring or avoiding the issues plaguing them on a week-to-week basis. Questions go unanswered, support requests ignored, etc etc.

So all in all, it’s been a terrible experience. And yes, we have been using them for more than a month…a little over a year now. Yes, we stuck it out and payed outlandish hosting rates for horrible service. Why? Because I really do wish it worked. I wish I could put a site on it and have it be up 100% of the time. That’s the point of a cloud, no? To have >= 99.999% uptime? I really wish I could put a site on there and let it scale with demand as it grew without ever having to touch it – and I can do this – but the price is my site goes down for long periods of time at short intervals (oh, plus the $100/mo). We tried to give them the benefit of the doubt, and tried to believe them every time they told us that this was the last downtime they’d be having (yes, we heard it a lot). I just can’t lie to myself any more though. Mosso sucks.

So please save yourself some time and realize that it’s too good to be true. The Rackspace Cloud is the most real and cool cloud hosting you’ll ever see, but as far as I’m concerned they are still alpha-testing it, and your site WILL go down. Want hosting that scales automatically, is zero customer maintenance, always up, and has amazing support? You won’t find it anywhere.

Mosso comes close, but they just can’t get it right. Save your money and learn how to scale on a good VPS provider.

340xYeah, so this amazing new device will, like, revolutionize the way we all look at things and stuff. Because you can touch it, things will be way better. Our lives just got a ton better. This revolutionary device will revolutionize the way we look at news and movies. Oh, and it will also change the way cities are structured.

So, in case you haven’t heard, Apple took their iPod touch, made it 5x bigger, and are now marketing it as the iPad (or “Tablet”). Where does that leave us? A portable device that’s not portable and really fucking difficult to use. The reason laptops have keyboards and pointing devices is because people don’t like on-screen keyboards. They suck. It’s necessary on small and mobile devices like the iPod touch, but on a bigger level it’s not…which why laptops exist.

So before you follow the marketing hype and buy your new $500 tablet, ask yourself “What the fuck am I thinking?! I already have an iPod, and I already have a laptop. Those swindling asslickers don’t need more of my money!”

That’s right, the iPad is a shitty in between piece of shit which is shitty and smells like shit. It’s not quite a laptop, and it doesn’t quite fit in your pocket. Stay away!! Don’t be a dweeb!