Raam Dev

Hello, future.

Planning for the upgrade to WP 2.5

I spent this past weekend setting up a copy of this blog in my local development on my laptop. I wanted to see if upgrading from WP 2.3 to 2.5 would break my current theme and as I suspected, it did. What broke wasn't obvious (category browsing I believe), but it was enough to make me decide to change my theme. There's nothing wrong with the current theme, it just feels like it's time for a change.

Setting up a local copy of my blog was really easy. I only needed to modify two WordPress settings and even then, that was only because I choose to use a different domain name locally. The basic process looked like this:

  • Copied all of the WP files for my blog to my laptop
  • Exported the live WP database and imported it into the local MySQL database using phpMyAdmin
  • Created a database user to match the one on the live site (with the same password)
  • Created a VirtualHost entry in my local httpd.conf:
  • 
       ServerAlias blog.raamdev.dev
       DocumentRoot "/Users/raam/workspace/raamdev.com"
       ServerName www.blog.raamdev.dev
    
    
  • Added an entry to my local hosts file (/etc/hosts) so that blog.raamdev.dev would resolve to the local web server:
  • 127.0.0.1      blog.raamdev.dev
    
  • Opened the local phpMyAdmin and modified the following database entry, changing the URL to my local development address: wp_options -> siteurl = http://blog.raamdev.dev
  • I was then able to login to my WP admin page at http://blog.raamdev.dev/wp-admin/ and modify the second setting: General Options -> Blog Address = http://blog.raamdev.dev

Now I could type in http://blog.raamdev.dev in my local web browser and use my blog on the local machine. This is great because it allows me to test themes and make changes without screwing up my blog.

Every Little Bit Counts

I watched a great documentary tonight called The 11th Hour, produced and narrated by, of all people, Leonardo Dicaprio. It was definitely weird to see and hear him talk about something serious, but I suppose thats always the case when actors take non-acting positions on the screen. If you're interested in watching the movie, there are plenty of ways to get it.

Despite it being very cold both at night and in the morning, I've had the heat off in my apartment for the past month. I didn't turn it on even once. I did this mainly because the previous two months' gas bills were over $250 and I simply couldn't afford paying that much for heat. When I received this month's bill, I was happy to see it under $150.

That's when I realized how living without heat wasn't all that bad. Sure, it was a little annoying, but it wasn't cold enough to make me sick -- I simply dressed warm. It never got below 45 degrees because the residual heat from the furnace in the basement (for the apartment above me) rose up and provided some heat to my first floor apartment. I saved a ton of money and helped the environment at the same time. All that by simply overcoming a minor inconvenience.

I keep all of my lights off in my apartment (there are seven rooms) except maybe one where I sit at my computer. I turn off all of my computer screens when they're not being used and I unplug things like my multi-function printer until I need to use it. I have three computers and two routers running 24/7 and I turn on an electric space heater every now and then when my feet are cold. For the past three months my electric bill has not topped $50.

There are tons of more ways that I can reduce unnecessary energy expense and I will continue to look for new ways to reduce waste. Every little bit counts.

Using Adium and Witch

I wrote a post last year about replacing Command+Tab with Witch, an application switcher replacement for Mac OS X. When I moved to my new apartment early in January, my Linux server was without Internet access for a few weeks so I was forced to use a graphical IM client (as opposed to a console-based client).

David was using Adium at the time, so I decided to give it a try. It's definitely a nice messaging application -- nice enough that I haven't felt compelled to get my console client setup again (but I'm sure I will at some point; the command line rules!). Now, on to the point of this post.

After pressing Command+Tab to switch from an IM conversation to another application, here is what I saw when I pressed Command+Tab to return to the IM window:

As you can see, Witch doesn't select my Adium IM conversation window ("Raam Dev" in this example) but oddly selects the Adium Contacts window, even though I was never looking at that window. This meant every time I switched from a conversation window to an application, I had to press Command+Tab+Tab+Tab just to get back to the previous window! Not only that, but normally I was trying to switch back to the IM window just to get rid of the distracting "new message notification" in the dock and being unable to do this quickly was really frustrating.

As extremely annoying as it was, it always bugged me at a time when I was too busy to figure out how to fix it. And by the time I was not busy I had forgotten about it. This pattern continued for THREE MONTHS (yes, I'm a very patient person)!

Today I decided I'd had enough. I took a peek at the Witch preferences (System Preferences -> Witch) and discovered that I could simply tell Witch to ignore the Contacts window! Doh!

Witch preferences

Now when I press Command+Tab after switching to another application, the IM conversation window is the first item selected.

Witch fixed

Woohoo! Sanity!

An Active Weekend

I've decided it's time to start making my weekends more active. Summer is fast approaching and I really need to get back into tiptop shape. So on Saturday I went to Hampton Beach to go for a nice long run. It ended up being a lot colder than I expected -- too cold to run. I suspected that might happen, so I brought my mountain bike along.

There is a place further North of Hampton Beach called Odiorne Point which has several trails that are nice for a quick bike ride. It was still very cold with the wind blowing off the ocean and after noticing that my tires were low on air, I decided to end my short 10 minute trip.

On the way back, I stopped and watched at least three dozen people surf:

surfing

This is where I wrote my first tweet:

My first tweet! I guess it's fitting that I'm doing it far from my normal means of Internet access: North Hampton Beach where I'm watching tons of people surf. I had no idea so many people surfed so close to where I live. This means I defintely don't have an excuse not to learn how to surf!

On Sunday I decided to go trail running in the Lowell-Dracut-Tyngsboro State Forest. It was the first time I had ever done any serious trail running. On the welcome board at the entrance to the park, I read that evidence has been found that shows the area has been inhabited as far back as 9,000 years. Learning that fact really made me appreciate the land even more than I already had. I spent 1 1/2 hours running the trails. Damn, my body is sore today!

Four Characters That Break WordPress

I was trying to write a post about some code for generating HMAC signatures without PEAR or PHP5 and I discovered that I was unable to post anything that contained these three characters (without the space):

chr (

When I clicked "Save and Continue Editing", I received a 404 error. It took me a good 30-40 minutes of blaming the iG:Syntax Hiliter plugin before I discovered it was actually WordPress. It breaks even if those three letters are enclosed in pre or code tags and I also confirmed this problem occurs when posting a comment.

I'm using WordPress 2.33 so I upgraded one of my other blogs to WordPress 2.5 just to see if this problem was gone (and to maintain my sanity) and was glad to see that it had been fixed*. The new WP looks very spiffy, except for the missing "Save and Continue Editing" button and the annoying lack of a preview feature (the Preview Frame plugin fixes this and I was glad to see it supports the latest WP).

I don't like fixing what isn't broken, so I've been holding off upgrading this blog to the latest WordPress. Besides, I'm pretty sure my customized theme will break with the new version and I simply don't have the time to be fussing around with my theme. If I'm going to fuss around with it, I'd rather change it altogether. This site is due for a new look anyway.

*UPDATE: I don't know if I'm losing my mind or what, but after upgrading this blog to WP 2.5 I'm having the same exact problem with creating a post containing those four characters!

UPDATE UPDATE: I did some Googling and discovered that the Apache mod_security might be doing something because apparently the chr () function is commonly used in exploits. This blog post explains 10 ways to secure WordPress and if you search for chr you'll see that it's part of the SecFilterSelective THE_REQUEST line.

CONFIRMED: I tried disabling mod_security for my entire account by adding SecFilterEngine Off to a .htaccess file in my root web path. I was then able to post those four characters without any problem. After creating a post containing chr(), I removed the .htaccess file to enable mod_security and as expected the post still displayed fine.

So, since this is only a problem when submitting a post, and since permanently disabling mod_security isn’t a great idea, I’ll just temporarily disable it in those rare situations when I need to create a post containing chr().

WordPress MU and BuddyPress

I have a lot of big ideas in my head for different types of sites that I think the masses would find very useful. What I've been struggling with over the past few months is deciding where to start with these sites. There is so much involved in making a site successful and even more involved in running a successful site.

What I really wanted was some type of platform that allowed me to turn my idea into a reality without worrying about basic things like the underlying user account database structure or basic functions like creating a blog post.

A few weeks ago I was pleasantly surprised to learn about WordPress MU, which basically allows you to run hundreds of thousands of blogs using a single installation of WordPress (it runs wordpress.com). And then it got even better.

Today I came across BuddyPress, which takes WordPress MU one step further by developing a collection of plugins that turn your WordPress MU installation into a social networking platform (see John's post about the differences between the two). BuddyPress is just getting started, but I already see the huge potential behind it.

I can see the Internet eventually being full of little social networks covering every niche imaginable -- much like the huge mess of web pages and forums on the Internet are today. The best way to find what you're looking for on the Internet now is to either know of a forum or website, or to search Google and hope you find what you're looking for. Imagine being able to join or browse an area of the Internet that has been designed, authored, and created by the very people who have the same interests as yourself.

Maybe that isn't the final goal of BuddyPress, but I can definitely see how WordPress MU combined with the BuddyPress plugins will make bringing my ideas to life that much easier. WordPress MU + BuddyPress basically solve 75% of the problems for many of the sites I have in mind, so besides making me feel comfortable about scale, they will definitely save me time.

Interfacing with the Internet in the Year 2208

What happens when the virtual world becomes more important, more interesting, and more popular than the real world? How many people do you know who would rather own the domain name google.com or myspace.com than own the entire Empire State Building or the entire state of New York? Will the value and popularity of real things decrease as more and more of the world becomes aware of the Internet's potential?

Worse yet, will we as a society forget what it means to be human? Will we slowly evolve into this creature that yearns for a connection to the net because our brains have adapted to rely on the instant availability of a vast source of information? If technology continues to evolve new ways to interface with that source of information (Wiimote, iPhone, RFID, GPS, Google), what will come next? How will the people of 2208 interface with the Internet?

BristleBot

I have got to build me one of these:

Probably the coolest thing I picked up on in the video, however, is the use of what looks to be a whiteboard as a table. That seems like a great surface to work with tiny objects.

Buyer Backs Out of Sale

The buyer who was interested in purchasing my $350,000 property for $180,000 has decided to back out (even after the bank accepted the offer, despite it being $170,000 less than what is owed). I rushed like crazy last weekend to clear all my stuff out thinking the property would be in someone else's name by the end of last week.

There are numerous reasons why he backed out, but mainly because of complications with the illegal studio apartment in the attic. It was clearly stated in the MLS listing that it was a 2-family property with an illegal in-law unit.

Needless to say, the bank's $180,000 offer acceptance is only good through April 10th and I received a letter in the mail stating the foreclosure date has been set for April 28th. My agent has relisted the property in MLS and is desperately looking for a new buyer.

What form errors?

I tried creating an account on the Mozilla Firefox AddOn site and got this error:

It would definitely be helpful if it could tell me what error it's referring to, because I have no idea what it's talking about. I triple checked that the passwords match and even tried a non-free email address. No dice.

Hard Work Weekend

The past three days (including today) have been spent clearing out the 12x16' shed and the basement of my first property in preparation for the sale that is supposed to take place at some point this week.

I am exhausted.

But one thing is for sure: I have too much stuff. Mostly tools, hardware, and other house-related things -- I can partly justify having so much stuff because for many years my sole intention was to own properties for long term investment and do most, if not all, of the repair and maintenance myself. Now plans have changed.

One of my new years resolutions for this year is to reduce what I own and that's exactly what I intend to do. I estimate everything I own would take at least a dozen, maybe even one and half dozen, truck loads to move using my pickup. I'd like to reduce that to at least half a dozen or even three truck loads by the end of this year.

Forward Slash, not Backslash!

I was listening to the radio last night and heard the radio host announce their MySpace URL:

"Check us out at www dot myspace dot com backslash blahblah"

It's not called a backslash! It's called a forward slash!

I wouldn't mind if this was a rare occurrence, but I have heard so many people, even people who work in the computer industry, confuse the two slashes. An easy way to remember which is which is to simply "read" the slash like you do a regular sentence.

Think of a tiny person standing in the middle of the sentence: | <-- that's the little person. Now, if he leans back (\) it's called a backslash. If he leans forward ( / ), it's called a forward slash (or just a slash).

Prevent Long URLs From Running Wild

When Raf commented on one of my recent posts by pasting a URL into the comment box, the Recent Comments widget didn't handle the long URL properly:

The fix was simpler than I'd imagined. By adding the following CSS style to the

  • tag that contained the recent comments,

    style="overflow:hidden!important;"

    I was able to prevent the URL from breaking out of the box:

    Of course this doesn't fix the problem in Internet Explorer 6 (go figure), but I'm sure there's a way of fixing it with some Javascript. If you happen to know how, please leave the solution in the comments.

  • Obama Speech: 'A More Perfect Union'

    I don't usually watch political speeches, but I've been reading a lot of news about how Obama's recent speech on race may have been one of the most important, and best, of his career, so I had to see what all the fuss was about. It's an awesome speech, but what's even more impressive is the fact that he wrote the entire thing himself!

    I think Obama really understands the big problems facing this country. What remains to be determined, however, is if he is capable of bringing about the great changes he talks so much about.

    Bank Accepts Offer on the Sale of my First Property

    A few weeks ago someone made an offer on my Cumberland Rd property and my agent submitted the offer to my bank to get approval of a short-sale (I owe $350k on the property and I'm trying to sell it for $180k).

    Late this week, my agent called to inform me that the bank has accepted the offer (they're probably happy to get anything kind of offer in this market) and the closing date has been set for March 28th. That's only a few weeks away and I still have lots of stuff in the big shed I built and in the basement I renovated. This weekend and next weekend are all I have to move everything out.

    It still doesn't feel real, but I suppose owning the house and all the work I put into it also hasn't felt real. I'm already beginning to feel the mental relief with one of the houses no longer in my name and I suppose it can only get better from here.

    What is the Purpose of an Ending?

    Everything has an ending, doesn't it? When we're talking about life and relationships, the ending often brings out many emotions. Opposite to the ending, the start and beginning are often associated with joy and happiness. Other endings and beginnings, however, are often not so defined.

    When you're hungry, you feel a sense of gratification the minute you start eating. When you're on an airplane starting a 5-day vacation to a tropical island, you're happy and relaxed knowing the next few days will be enjoyable. When a baby is born, happiness is associated with the event. As the child grows up, all he is concerned with is how he will enjoy that day.

    But when you finish eating and you're full, you quickly forget the gratification you felt minutes earlier. Your return trip home on the airplane is filled with only memories of the enjoyment you experienced, as you slowly adjust back into the thinking mode of daily life that you associate with grunt work. When the baby grows up, has kids and grand-kids of his own, he will lie on his deathbed where there is no happiness to be found. As the child grew older, he found less and less happiness from life. Continue reading →

    Research Before Committing

    For the past few months, I've been meaning to purchase the latest version of WHM.AutoPilot, the web host billing software I use for Akmai.net. There are lots of bugs in the current version and many of my clients have complained about the problems with the billing system (it doesn't work). I finally put it on my calendar and told myself I would purchase the $180 upgrade and get it installed this week.

    I was on the WHM.AutoPilot website with the V3 Owned License in my shopping cart ready to checkout when I realized that I should probably do some research to see what other web host billing software was out there. I wasn't even aware of any other options, but with the size of the web hosting industry I knew there had to be competing products.

    I quickly came across a couple of different ones, namely ModernBill, ClientExec, and WHMCS. After spending about half an hour searching Google and reading forum posts, I concluded that ModernBill was definitely the most popular and most recommended. But realizing that I had only known of the existence of these products for thirty minutes, I decided to spend some more time researching.

    All of these applications have demo areas where I can try the admin and client areas, so I spent some time playing around with them. I then decided to do in-depth searches for recent forum discussions on these products. The software world changes so quickly.

    What did I learn? I learned that ModernBill was recently bought by a bigger company (Parallels) and that the ModernBill software has been very buggy since the release of V5. Wow, and a few minutes ago I was thinking that it was the best option for my money! To add to my shock, almost everyone on the Web Hosting Talk forums seemed to think of WHM.AutoPilot as the "beginners web host billing software".

    It's looking like I will probably go with WHMCS for my new billing software, but not before I do more research!

    Quick Wireless Security using SSH Tunneling

    I'm a little paranoid when it comes to wireless security. Even if I'm on an encrypted wireless network, I won't access any of my bank accounts or login to any website that requires a password without securing my traffic with an additional layer of security using SSH tunneling.

    SSH tunneling can also be used to circumvent network-based restrictions in the workplace or on a free public wifi hotspot, giving you the freedom to browse whatever websites you want. If implemented on an OS networking level, you can even use the tunnel for your email and other applications. However the focus of this post is on using SSH tunneling to secure your web traffic.

    Here is a quick list of what you'll need:

    • Firefox or Internet Explorer (this technique also works with Opera and Safari, although I don't cover those here)
    • Putty (Windows); The terminal (Linux or OS X)
    • SwitchProxy Tool (nice-to-have Firefox Plugin)
    • Access to an *nix-based computer. This will probably be the most difficult to obtain and if you're not familiar with Linux or OS X I recommend you ask a friend if they wouldn't mind giving you an account on their Linux computer. You can try to find a free shell that allows port forwarding, but they are rare.

    Setting up the SSH Tunnel

    Windows

    Since Windows doesn't have an SSH client built in, you will need to use the wonderful SSH client application called Putty. After you've downloaded and launched Putty, you should be presented with the main screen. Fill in the Host Name (or IP address) field with that of your Linux computer and be sure to select SSH from the Connection type.

    On the left column of options, select Connection -> SSH -> Tunnels. Enter 9000 in the Source port field, select Dynamic from the option at the bottom, and then click Add. Your screen should now look something like this:

    Note: If you don't see the Dynamic option in Putty, make sure you have the latest version.

    Now go ahead and click the Open button to connect to and login to your Linux computer. Once you have successfully logged in, the tunnel will be open and you can proceed to configure your web browser to use the tunnel.

    Linux/OS X

    Since you're using a *nix based system, your computer already has everything it needs to setup an SSH tunnel. Simply access the terminal (Applications -> Utilities -> Terminal.app on OS X) and connect to the remote Linux computer as follows:

    ssh -l -D 9000

    After logging into the remote computer, the dynamic SSH tunnel will be opened and we can continue to configuring the web browser.

    Configuring the Web Browser to use the SSH Tunnel

    Firefox with SwitchProxy Tool plugin (the method I use)

    Download and install the SwitchProxy Tool plugin. After installing the plugin, open its configuration window (Tools -> Add-ons -> SwitchProxy Tool -> Preferences on OS X). This will open the basic configuration window for the plugin. Click Manage Proxies and then Add. Choose Standard for the proxy configuration type and click Next. Fill in the fields as shown below.

    After saving the connection, you should be able to use the plugin to easily switch between browsing through the SSH tunnel and browsing without it. I have it configured to show in the Firefox Status Bar, as I find that to be the easiest method of toggling between the two:

    Firefox without SwitchProxy Tool

    Although SwitchProxy Tool to easily switch my proxy settings, I will also explain how to configure the browser without the plugin.

    Open the Firefox Preferences (Firefox -> Preferences on OS X) and click the Advanced icon at the top. In the connection section, click the Settings... button. Choose Manual proxy configuration and fill in the SOCKS Host and Port fields as shown below.

    Internet Explorer

    From the Internet Explorer menu, choose Tools -> Internet Options. Select the Connections tab and then click the LAN Settings button. Enable the Use proxy server for your LAN option and click Advanced.

    In the Servers section, make sure all the fields are empty except for the Socks field. Type localhost in the Socks Proxy address field and 9000 in the Port field. Your screen should look something like this:

    Click the OK button all the way back to your browser. You should now be browsing the Internet securely through the SSH tunnel! An easy way to confirm this is to disconnect from the Linux computer by closing Putty and checking if you can still browse the web. Since the browser has been configured to use the tunnel, you won't be able to browse the web if that tunnel is closed.

    If you wish to revert back to browsing the web normally, simply uncheck the Use proxy server for your LAN option in LAN Settings.

    The Customer Service Salesman

    There is a reason why popular brands are popular and a reason why you will eat something that was prepared by a total stranger: trust. There are many ways to create a feeling of trust including being well known, being referred to by someone else who is trusted, or even by simply being able to relate to someone in a way that is mutually understood.

    A natural disaster brings total strangers together because those strangers can both appreciate life. They both understand what each other is going through and they realize they are going through it together. Even something as simple as the electricity going out can make an entire neighborhood feel closer and bring neighbors together. Mutual understanding brings people together and helps create a sense of trust, even if that trust simply means you both understand what it's like not being able to watch TV or use the computer.

    So what does trust have to do with selling? Everything! If given contradicting advice from a friend we trust and from a total stranger, who would we be most likely to trust? Our brain works by using reason to determine which is the better choice. Obviously, our brain will whichever is more trustworthy.

    I've never studied marketing and I've never been a salesman, but I do observe things very closely and pick out patterns rather quickly. Advertisements in magazines, TV and radio commercials, and yes even salesmen, all do the same thing: they try to make you believe that they understand you and that they know what you need and want. All of this is done to indirectly gain trust from your brains and make you feel comfortable giving them your hard earned money.

    Understanding the importance of trust behind sales and marketing is key to understanding the importance of customer service within a company. There is no better method of advertising than to be referred by an existing customer. We already saw that a recommendation from a friend trumps any advertisement, so it's easy to see how a referral from a friend is the most important advertising tool for a business.

    So, how do you increase the chances that your customer will refer you to those whom they trust (and who, in return, trust their opinion)? You give your existing customers a reason to come back; a reason to recommend your services (or products) over someone else's, regardless of whether your products or services are more expensive. This means you need to treat your existing customers as being more important than new customers. After all, a very satisfied existing customer has the potential for awesome advertising power in that if they refer your product or service to a friend, the chances of that friend becoming a new customer of yours is very, very good.

    The problem with most businesses is that they think of sales and customer service as two separate departments, totally unrelated to each other. This couldn't be further from the truth. In fact, an excellent customer service department has more potential to bring new customers to the business than catalogs than advertisements put together, and all without spending a penny extra.

    So, how do I know all this if I have no "marketing" experience? Well, for the past few years I've been running a business that has enormous competition. There are literally hundreds of thousands of people selling the exact same service as me, with fancier looking sites, more advertising, and much better prices. And yet, I have people coming to me for service. They are leaving my competition for one reason: I provide excellent customer service.

    One of the biggest reasons I can provide excellent customer service is because I have the skills, the knowledge, and the tools necessary to know what I'm doing and how to get it done. If something goes wrong, I know how to fix it. I don't need to make excuses or lie to my customers in an attempt to give them impression that everything is under control.

    I have discovered this same "service-is-money" effect while being a landlord for the past 6 years. Tenants really appreciate a landlord who cares about the property and cares about their wellbeing. Developing a relationship with a good tenant is extremely important. As a landlord, I'm providing a place for someone to live; the least I can do is make the tenant comfortable. Too many landlords think of themselves as kings with tenants as their slaves from whom they need to collect money.

    Good customer service makes happy customers. Happy customers mean more money for the business. More money for the business means happier owners and happier owners with more money can pass on those extra profits to their employees, which makes happy employees. Everyone is happy and everyone is making more money.

    Customer service is often thought of as a necessary evil; something that is necessary because customers exist. The direction of the company is constantly focused on ways to attract new customers without putting enough value on the advertising power of their existing customers, and the importance of keeping those customers happy. In fact, if a business can sell something without needing to deal with customer service, they consider it the best way to make money.

    In reality, a strong and loyal customer base insures the longevity of a business. For this reason, the majority of a company's attention should be put towards existing customers while only a small percentage is focused on sales and gaining new customers.

    Unfortunately, that statement is probably considered blasphemy to many businesses, which results in unhappy customers, stressed owners, stressed employees, and less profit and happiness for everyone.

    Take Customer Service seriously. If he were a person, he would be your top salesman.