• First day at work in a week. It’s like I just got back from a vacation. #
  • Need new year’s party! #
  • Where are the good parties in Portland this New Year? #
  • Sounds like Backspace/Ground Kontrol will be fun, as does Someday Lounge, and Saucebox has DJ Mr. Mumu and DJ The Perfect Syn. What else? #
  • The portland indoor smoking ban is now in effect! Wish it were before my clothes got saturated with smoke. #
  • Eating pho and watching Shogun. #
  • Another night of Pho and Shogun! My life rocks! #
  • Mmm.. Wiibrew. #

Powered by Twitter Tools.

For dorkbotpdx last night, I made this little toy:

WiiMatrix

It’s an 8×8 red+green LED Matrix, driven by three shift registers driven by a Bare Bones Board Freeduino by Modern Device Company.

Before the meeting I just had it flashing fun patterns based on odd bit-math equations. During the meeting, I was urged to add some code to make it controllable by the Wii Nunchuk. So, I wrote a simple program that takes the X and Y of accelerometer and plots it on the matrix.

I drove the LED Matrix with three shift registers: One 74HC595 8-bit register gave power to the rows of the display, and one Maxim-IC MAX6969 sank current for the columns to the display. To turn on row 1, column one, you shift “B10000000″ into the row register, and “B10000000″ into the column register:

  1 0 0 0 0 0 0 0  
1 x o o o o o o o
0 o o o o o o o o
0 o o o o o o o o 
0 o o o o o o o o 
0 o o o o o o o o 
0 o o o o o o o o 
0 o o o o o o o o 
0 o o o o o o o o 

Altogether, it was about 30 lines of code to drive the matrix with some fun patterns.

In order to encourage us to play with electronics more, JWA and I have begun doing monthly challenges. For our inaugural challenge, we decided upon an LED Birthday Candle. This is my entry to that challenge.

LED Birthday Candle

You blow the center pole towards one side, and the LED shuts off. To turn it back on again, blow it the other direction. It’s a circuit known as a bistable multivibrator, or “flip-flop”.

I do like that it’s so simple and cheap, though.

My parts list is simply:

2 – 10k ohm resistors
1 – 1k ohm resistor
1 – 220 ohm resistor
2 – 2n3904 NPN Transistors
1 – LED
3 – AAA batteries (this thing’ll last forever!)

Not including the batteries, this thing costs less than 15 cents in parts. If I could work out the “blow” mechanism a little better, I think this would be a marketable product.

Okay, now for some photos:

On the breadboard:
LED Birthday Candle

Before being shoved in the pill bottle:
LED Birthday Candle

I had originally wanted to be able to shove this thing into a fat straw, like you get with a bubble tea, so I made it as small as possible, and soldered the pieces together straight rather than using protoboard:
LED Birthday Candle

Next: Brighter LEDs!

Awed By The Beauty Of The Light The electronic man holds his joy aloft.  He loves it, because he was built to love it.  It shines with the energy that courses through his body.  He wants to share his Light with the world, but fears that if he lets it go, he’ll never know it’s glow again. 

I’ve recently become enraptured with a little microcontroller development board called the Arduino (pronounced “Arr-dwee-no”).

Arduino Diecimila

This little thing is a great way to get started with electronics. You hook some electronic component to it, write a little bit of C, upload it to the board, and “tada!”, you’ve invented some new Gizmo.

1 box double cheese hamburger helper
2 cups nonfat milk
1 1/2 cups hot water
6.5 ounces whole wheat rotini
1 pound frozen chopped spinach
1/2 pound ground turkey

Prepare as per box instructions. Yum!

0142 – Workgroups
This is for sending messages to roles. Several entities may join a Workgroup queue, and other entities may request chats with the workgroup (which then routes to the different entities when the chat is accepted by one of them). So, for alerting, we can send to the “alerting” workgroup, which will route to an appropriate AlertAgentBot.

0095 – Stream Initiation
For setting up a binary stream between two entities. This is cool because it could let us push all system checks to the nodes over the JabberNet. So we have a core stub ManagementAgent on each managed node, and it just logs on, and bootstraps itself.

0137 – Publishing SI Requests
For publishing available binary streams (using pubsub). So now our binary distribution nodes can publish available code, and our ManagementAgent stub can see what’s available for pulling.

0135 – File Sharing
Provides a way for entities to publish files to other entities. This looks kinda like what 0137 does, except farther evolved.

Combined, a bootstrap would be something like:
* Agent starts
* Agent checks local cache for code, loading what’s necessary.
* Agent receives pubsub list of available code
* Agent downloads (and caches) what it needs.

0136 – Message Archiving
For using the Jabber server as a persistent message store. Provides a method of adding, updating , and removing items from the store. This could be used as an audit log for the Agents.

Solaris patching is, frankly, a pain.

Patch Check Advanced makes it less painful– even pleasant.

It’ll automatically download the patch list from Sun, correlate it against what you have on your system, and present you with a list of what needs to happen. You can tell it to install all recommended patches, all security patches, or all the patches that don’t require a reboot (saving those for special occasions).

Extremely cool tool.

X4100s have a pretty cool integrated lights-out management card, but it doesn’t have an easily integrate with Conserver.

To fix, I created an expect script named “ilom-connect” like this:

#!/usr/bin/expect -f
expect { 
"(yes/no)?"    {exp_send "yes\r"; exp_continue; }
"password: " {exp_send "\r"; }
}
expect "\\-> "
send "cd /SP/console\r"
send "start\r"
expect "(y/n)?"
exp_send "y\r"

Then, in conserver:

console x4100 {
include sun-ilom;
exec ssh -l admin x4100-m;
type exec;
initcmd "/usr/local/sbin/ilom-connect";
}