Banner

Thursday, August 2, 2012

The State of Personal Computing

So here we are, at a tipping point in personal computer history.

Windows 8 and OSX 10.8 seems to want to push us into using, essentially, giant mobile phones. With the giant grids to launch applications, concealment of all inner workings of the OS, and this push to put all of our personal data on "the cloud", what are we to do?

I prefer to have control of my information rather than rely on automatic saving and uncontrolled syncing over the Internet. I feel like we are going through change for the sake of going through change. Sure, a giant phone GUI with pre-k style inputs will help the non-tech-savvy population embrace their computers. But what about those of us that prefer a OS that has a bit more depth than a McDonald's cash register?

The obvious choice is Linux. I really like Linux. I use it on my servers and use it as my main portable OS. However, if you've been keeping track, lead developers of the main Desktop Environments are falling into the same trap! GNOME3 and Unity mark the strongest push yet for 2012 to be "the year of the Linux desktop." The developers seem to think "sleek and simple" means plagiarize popular OS ideas and strip options that don't fit.

So what are our options? Why don't we take the best of each OS and combine them into one?
I like Snow Leopard. I really like Aqua. I love the way OSX handles applications. And, most importantly, there are some proprietary apps that I like more than the open source alternatives.
I like the open source aspect of Linux. The customizability. The packages. The community.
I hate Windows, outside of gaming. Steam is coming to Linux and my favorite games work with OSX. Wine works for everything else.

So lets see...
  • Darwin is open source.
  • X is open source.
  • XQuartz is open source.
  • GNUstep is open source.
 Add a desktop environment of your choosing and you're done? I feel like if it were this easy, it would be a pre-packaged distro by now. Does anybody else share my desperate hope for an alternative OS in these desperate times? Or should I just shut up and go back to Crunchbang?

Thursday, May 31, 2012

Wednesday, March 21, 2012

DIY light show controller with Vixen and Arduino

Back in 2005, I saw Christmas light show and was instantly obsessed. It was well beyond my comprehension at the time but I vowed to one day do something like it.

Fast forward six years to Christmas 2011 and I finally met that goal. Because light-o-rama setups are quite expensive and I wanted a real challenge, I decided to try to build the entire setup from scratch.

I went into this knowing I wanted to use Vixen, as it seemed to be the best free option for light show controlling. The next step was to find a controller to work with it. Being a big Arduino fan, it seemed only logical to start there. I found some scraps of code on doityourselfchristmas.com, and I was off to a good start.


My final setup was Vixen outputting from my MacBook Pro (bootcamped) to the Arduino via Vixen's "generic serial driver". My code in the Arduino broke the serial stream into pins, which then ran to the relay board. The 5VDC from the Arduino would trigger a transistor (and LED), which would then trigger a 12VDC relay on the relay board. This completed the circuit on a homemade 110VAC power strip causing each light to light up. The result...


I was pretty proud, I have a couple other songs on my youtube channel. Still, it has quite a bit of evolving to do. I am making some revisions for next year that I wish I thought of in the initial design. Mainly, make several, smaller relay boards to place at strategic spots and run the signal lines. This is much cheaper and safer than my ridiculous method of a central control with 110VAC lines running all over the place.
 
Another thing to think about is multiplexing the signal line rather than breaking into pins at a central controller. If each relay satellite had a small micro-controller and a method of addressing, you could just spam the serial stream to each and have them decide what to take and what to ignore.

Most importantly, I desperately need PWM to get the lights to fade. I encourage anybody thinking about this project keeping this all in mind as it would have saved me a lot of money in the long-run. How much you ask?

My cost breakdown was roughly as follows:
Vixen Software - Free
Arduino Mega - $60
Relay Board Materials - $100
Outlet Power Strip Materials - $20
Lights - $150
Extension Cords - $200

Yup, the most expensive item were the extension cords. A reel of CAT5 could have replaced 90% of that if I would have thought to run signal wires in length instead of power. Wal-Mart did allow me to get 1500 feet of extension cords in 15' stretches for that price though. And I needed it.



Please don't call the fire dept on me...

If you're looking to do something like this, here is my Arduino code:
int C1 = 2;
int C2 = 3;
int C3 = 4;
int C4 = 5;
int C5 = 6;
int C6 = 7;
int C7 = 8;
int C8 = 9;
int i = 0;
int incomingByte[8];

void setup()
{
  Serial.begin(9600);
  pinMode(C1, OUTPUT);
  pinMode(C2, OUTPUT);
  pinMode(C3, OUTPUT);
  pinMode(C4, OUTPUT);
  pinMode(C5, OUTPUT);
  pinMode(C6, OUTPUT);
  pinMode(C7, OUTPUT);
  pinMode(C8, OUTPUT);
}

void loop()
{
  if (Serial.available() >= 8) {
    for (int i=0; i<=8; i++)
    {
      incomingByte[i] = Serial.read();
    }
    analogWrite(C1, incomingByte[0]);
    analogWrite(C2, incomingByte[1]);
    analogWrite(C3, incomingByte[2]);
    analogWrite(C4, incomingByte[3]);
    analogWrite(C5, incomingByte[4]);
    analogWrite(C6, incomingByte[5]);
    analogWrite(C7, incomingByte[6]);
    analogWrite(C8, incomingByte[7]);
  }
}

As a bonus, here is a poorly cut video showing different views of the setup:

Special thanks to:
Ashley - Motivation and wire debuncher
Josh - Relay board design and assembly
Peter - Uber debugger
Tyler - Light man (no fear of heights)
John - Fix lights that fell off man
Couldn't have happened without all of you.