PenguinDreams

Rear View Mirror 0.8.8.1 Released

A new version of RearViewMirror is out. This version fixes several of the crashing problems, uses the camera name as the viewer window title, improves the URL list saving and contains various other bug fixes.

Tennessee River Gorge Explorer

Rear View Mirror 0.8.6 Released

I’ve released a new version of RearViewMirror, an application that turns an ordinary web camera into a fancy mirror. The application also has a motion detector that will keep the camera window hidden until somebody is actually sneaking up on you (or walking behind you).

The biggest new feature of this release is support for multiple cameras. Not only can you view multiple locally connected cameras, but you can connect to remote cameras and share your cameras with others. This is a beta release so use it an your own risk.

BlueHost is a Failure at Customer Service

A few weeks ago my hosting provider, BlueHost, upgraded their servers. In doing so, they also removed the options of using PHP4 and went to PHP5 exclusively. Several angry phone calls to them later resulted in yielding no meaningful resolution. Many of my sites work fine on PHP5, however I had one legacy site from a rather large customer still on an old version of Drupal.

This isn’t the first time I’ve had trouble with BlueHost. They had upgraded their rails installation twice, also without any prior notice, breaking several of my production websites. I’ve read other horror stories concerning BluHhost, including one from my favorite webcomic, but in the several years I had been with them I didn’t have any major issues. It is only this past year that they preformed lots of random upgrades without telling anyone.

When I asked why they hadn’t sent out any notices, the manager on their support line told me they had sent out a notice a year ago that PHP4 would be phased out. I asked repeatedly why they hadn’t sent out a recent notice within the past month or week? He felt as if the notice a year previous had been enough. I checked my e-mail and sure enough, the very last message I ever received from BlueHost was dated November 29, 2007.

The past three week has been spent moving to a much faster and more reliable web hosting solution. I’ve migrated several old legacy applications that were originally managed by Drupal and Ruby on Rails into WordPress. I’ve had a love/hate relationship with Rails so far and with my new host charging extra for Rails, I decided I’m better off migrating those sites to WordPress. I’ve been impressed with WordPress and all its functionality and plug-ins. I’ve come to realize I’d rather spend more time doing what I want to do rather than trying to figure out how to do it.

The last time I had to move web hosts was from DarkFiles. They gave their customers plenty of notice when they decided to get out of the web hosting industry. At the time I was in school and had more time to work on the transition (and fewer sites). This transition has helped me deal with a lot of things that needed to be upgraded and changed. In ways I am glad, but the timing couldn’t have been worse. Moving forward, I would highly suggest to anyone using BlueHost to migrate their web hosting provider soon. BlueHost’s service has been absolutely horrible and is only suitable for the smallest and least relevant website. Their hosting may be cheap, but you do get what you pay for.

Breaking the Multi-Colored Box

I’ve released an alpha version of Bmcb or Breaking the Multi-Colored Box, a framework intended to generate known CAPTCHA challenges and then test various techniques to break them. Although it’s fully functional and has a decent amount of preliminary documentation, it’s far from being really useful. The built in analysis and filtering techniques can only solve the most trivial cases efficiently.

However, the framework is well structured and sound. I’m hoping I can develop interested from other open source developers who have skills in fields I lack in such as image recognition, analysis and AI. It will be the first project I’ve had where I’m actively seeking developers from the community. Anyone interested in a challenge?

If I can generate a decent amount of interest, I’ll move it over to a full project hosting repository such as SourceForge or Google Code.

Converting oggs to mp3s

I created a new script, oggfolder2mp3, to recursively convert ogg files into mp3s while maintaining file meta-data (i.e. copying vorbis comments to MP3 ID3 tags).

Simple Fours Problem

My mom sent me this simple problem.Combine four fours arithmetically (i.e. 4 / 4 – 4 * 4) so the result is 20. The following solution is written in C++ and uses brute force to find all possible solutions:

/*
 *  combo.cxx - Four Fours Combination Problem Solver
 *              (using brute force)
 *
 *  Solves the simple problem: How do you combine four fours 
 *       using standard arithmetic operations to equal 20.
 *
 *  This program solves this puzzle using brute force and 
 *       shows the answer ignoring order of operations.
 *
 *
 *  Sumit Khanna / http://penguindreams.org
 *    free to modify and redistribute
 */

#include <iostream>
using std::cout;
using std::endl;

int doOp(char op, int a,int b) {
  if(op == '+') {
    return a + b;
  }
  else if(op == '-') {
    return a - b;
  }
  else if(op == '*') {
    return a * b;
  }
  else if(op == '/') {
    return a / b;
  }
  else {
    cout << "Error. Invalid Operation " << op << endl;
    exit(2);
    return 0;
  }
}

int main(int argc, char **argv) {

 char *ops = new char[4];
 ops[0] =  '+';
 ops[1] =  '-';
 ops[2] =  '*';
 ops[3] =  '/';

 for(int i=0; i<4; i++) {
   for(int j=0; j<4; j++) {
     for(int k=0; k<4; k++) {

          int r = doOp(ops[i],4,4); 
          r = doOp(ops[j],r,4);
          r = doOp(ops[k],r,4);

          if(r == 20) {
            cout << " 4 " << ops[i] << " 4 " << ops[j] << " 4 " << ops[k] << " 4 = 20 " <<  endl;
          }

     }
   }
 }
 
 cout << "Note: Solutions ignores order of operations" << endl << endl; 

 delete[] ops;
 exit(0);

}

Scripts

I’ve added a new Scripts section to the website. It contains several shell scripts I’ve written over the years for automating basic tasks on my Linux machines including Gentoo Package Updating, lnSponge which keeps track of new files in a given directory tree, and an Email Script which will e-mail the standard output of an application. Expect more scripts to be posted in the near future.

Billary Explains It All

Last Thursday I had an idea, and that idea turned into purchasing a domain and creating a website. I really don’t care for any of the candidates in the current presidential race, nor do I explicitly hate Hillary (or Billary as I like to call her) more than anyone else. But she is so easy to make fun of. So I give you my creation:

HillaryClintonExplainsItAll.com

Web Portfolio

I finally got around to adding a Web Portfolio to the site. It has a list of my most recent commercial and non-profit works. For months many of these sites have had the text “Designed by PenguinDreams.org” at the bottom linking back here. Now people coming to my site will get a better idea of what I design rather than just the one site they came here from.