Wednesday, April 29, 2009

More on the Birding Cup

The Birding Cup has become an annual event for us. Katie first participated in the 24 hours of birding madness two years ago, and last year was my induction. In both cases, we competed for "The Boot", an award given to birders who spot the most species while only using human-powered transportation. After having won The Boot last year, our team, the Timberdoodles, proclaimed that it "smelled of manky victory!" Last year, we got over 40 species by hiking, and camping, around Bald Eagle State Park. This year, however, we're staying in town, and biking an undisclosed path, hopefully to more "manky victory"!

Sunday, April 26, 2009

Birding Cup Preparation

Yesterday, Katie and I were out all day on a bike ride and hike, preparing for the Birding Cup. We biked about 8 miles, and probably walked another 2, and saw about 24 species of birds. We're hopeful that we'll do better during the Cup itself.
Here's a link to an album of the day:
Birding Cup Prep, Kat's Kids, and Blue and White Weekend

Saturday, April 25, 2009

AdSense

Finally managed to get Google AdSense to work. Hope those of you who are still coming here don't mind, and don't mind clicking a few things.

Let me know what you think of it in the comments, especially if you'd like sidebar, between posts, or both.

Friday, April 24, 2009

Today's Special

Bird's Nest
I saw this bird's nest today at work. I love it when birds actually use aviary netting in their nests!
Bikes
And we biked over to Otto's for dinner today.

Check out the flickr photostream, and also the Picasa page over there on the right navbar!

Haiku


Long morning shadows
Ever too quickly become
Long afternoon ones.

My Bike Ride Home

Rode home from Innovation Park on my bike yesterday, and saw a Red Tailed Hawk, a Northern Flicker, a pair of sparkin' Goldfinches, and quite a few other birds. It's funny how much we miss by using cars.
Bike Ride Home

Wednesday, April 22, 2009

A Good Press Fit

Press Fit Detail
I should do an Instructable on this, but here's a brief word on press fitting. In the piece above, which is a counterweight for a dancer arm on a film stretching machine, there is a copper threaded fitting press fit into a brass part. I made this by first drilling out the copper piece to the right diameter, as seen in the video, tapping the hole for a 1/4-20 thread, and then turning the copper down to the right diameter, .318". The copper then had a shelf of this diameter, and an OD of .5". I then turned the brass piece so that the bottom had a .496" diameter hole leading into the .315" diameter hole. I put the whole assembly into the vise and pressed it together, then went at the bottom with a ball-peen hammer. Finally, I turned the center of the bottom in until the copper and brass were sitting coplanar to one another. Then it was file and sandpaper time!
video

I think it looks nice, if I do say so myself.

Monday, April 20, 2009

The Case for Patents

As a maker of things, I want, nay, need for things to be open. I need to be certain that I can find documentation on whatever it is that I'm working with. This calls for open standards of information exchange. The best way to do this is open sourcing.
However, as someone who wishes to make a living making things, and make a living making lots of different things that will eventually be manufactured, I need protection. What I offer here is what I consider to be a common sense approach to intellectual property.

1. Thou shalt be able to license thy IP for cash money.
You can patent your product to license it to companies that will manufacture it. How you negotiate those contracts is up to you.

2. Thou shalt not hurt the little guy.
You should make companies or at least larger businesses pay to be able to reproduce/manufacture your stuff, but individuals and small groups should be encouraged to make their own if they can. Another way of doing this is by allowing access to additional documentation, and by writing a good patent, which according to the USPTO, should be usable to recreate the thing you're patenting by someone "skilled in the art".

3. Code is naught but a pattern in binary, and can occur in unenforcable locales: ergo, it is not a "thing" and should not be patented.
Shoo! Scram! Software should be copyrighted, like music, art, and other arrangements and patterns. This is about patents, not copyrights! Get out of here and discuss that issue somewhere else! Remember that the binary code for DOS could also be an arrangement of states in atoms of gases in the sun's corona. This means nothing, so don't try to pass it off as something physical.

4. Similarly, process patents need to go.
A process, like software, is made up of algorithms, which are patterns of something, not a physical unitary thing like a Pneumatic Boxing Glove, or a Shark Protector Suit.

5. Thou shalt not take ownership of biological patterns.
DNA patents, too, have to go. How many times do I have to say that, if nature could make it randomly, and probably has, you really shouldn't be protecting it as IP?

6. First to file shuts out the little guy; this should not be so.
Though our system is first to invent here in the US, it is practically first to file, and it is first to file in the rest of the world. If you get to the patent office late, it doesn't matter how much proof you have, the patent won't be yours. This shuts out all of the small inventors who can't afford marauding gangs of patent attorneys to rush their patents through.

7. Thou shalt admit that IP protection is necessary.
To allow for people to make more of their wonderful ideas, there must be a way for them to pay their bills without being tied to manufacturing hundred-thousands of their wonderful products. There will always be consumers who, whether for lack of skill, time, or energy, want to buy rather than build. The profits from these sales should enable the creation of more wonderful ideas.

And finally...
8. Thou shalt pay thy staff to develop their ideas, whether or not they are part of their job, and give them due compensation in the form of majority ownership and control of their patents.
In Germany, there is a strict legal procedure governing exactly this, and saying exactly that, which can be found in this paper.

Trademarks are fine and dandy, but I think that copyright is a bad concept to begin with, and that you should pay for the media or for the file size when you buy a DVD or download a song, plus some amount to go directly to the artist. Either way, this is a post about patents. I think they're necessary to avoid having people taken advantage of by large manufacturers. And now for the comments!

Saturday, April 18, 2009

A Flag for Hack Pittsburgh

After seeing this on hackerspaces.org...

I figured that Hack Pittsburgh, aka hackpgh, needed a flag, too.
Coat_of_Arms_of_HackPittsburgh
The symbology is as follows: City walls of the coat of arms of Pittsburgh ascendant atop three bars horizontal in the blue of the city coat of arms' checker pattern; the bars represent Pittsburgh's three rivers, and the outer border of the shield is comprised of a Wheatstone bridge diagram, for the "City of Bridges", and also for its electronic significance as an amplifier, making a small thing larger, as does our organization.

Friday, April 17, 2009

Strain Test

After the dancing wires, I began thinking that perhaps I should do a little more experimentation with this technology. The video below shows the end result of my testing. The wire, it turns out, extends when heated, and shrinks, even though it's under load, when cooled. Overall, I achieved a result of 1-2% Strain, meaning that the wire extends to 101-102% of its original length when a current is run through it.

The wire itself is Nichrome, and the setup includes a stand, which holds a BNC-to-banana (female) connector, which anchors the two halves of the heating wire. The mass is a spare part made of aluminum, of approximately 1-1.5 kg, and the wire is being fed current from a temperature controller set for 30 °C, which is connected via a relay to a transformer, sending 12 VAC to the wire. The temperature controller is interfaced to the wire via a K-type thermocouple wrapped under the wire at the top of the setup.

Thursday, April 16, 2009

Hand-Drawn Madness

I got to harken back to the olden days of pen, ink, paper, and a ruler when I had to draw up these mechanical drawings this morning at work. None of the CAD software was giving me any love, so over to the desk and out with the necessaries it was.

Wednesday, April 15, 2009

The Incredible Dancing Wires


The Incredible Dancing Wires
Originally uploaded by petmar0
A couple of Nichrome heating filaments in the new heater bar that I'm designing hooked up to the new controller I built today began dancing. This is due to the fact that, when heated, they expand along their length. Since they're firmly anchored at each end, they flex away from the channels that they lay in under tension when they're at room temperature, thereby dancing when heated.

I'm going to see if I can find some time tomorrow to explore this with different wire forms. I know that the stress is proportional to heating, and that the heating, aka Joule heating or Ohmic heating, is a feedback effect which will keep going until it either melts the wire, or current is shut off. I think this could lead to some very interesting actuators, especially if I make a brush with a few of these wires together.

Flickr

This is a test post from flickr, a fancy photo sharing thing.

Tuesday, April 14, 2009

On the Importance of Z-transforms

A response to a comment on the Make: Blog post about my former entry:
My recommendations are made due to my experience. Physics is THE best program, from what I've seen and done, to go into if you want to make new, interesting, and useful things. Chemistry ranks a close third behind the engineering disciplines. Of course, if you just want to perpetually use technology without understanding it, you could skip the whole math-based curriculum, but to actually make something new, you need to understand the first principles behind how things work.
Or you could just make stuff that's interesting in other majors.
At this point, my physics career has taken me from making optical acoustic transducers, to building and testing medical devices, to working with cool magnetostrictive materials, to designing and building tests and test setups for machine calibrations to building custom experimental setups, to being in charge of the refurbishment of a particle accelerator, all in about eight years. And it looks like the fun isn't going to stop any time soon!

636 of You!

Wow! My Analytics tracker shows that there were 636 of you on my blog today! Given the huge response I've gotten off of the Make: Blog, I was wondering, what would YOU like to see me write about? I'm thinking of doing a project article for Make Magazine, and was hoping to get some inspiration in the comments.

Making in College

There's an article on the Make: Blog asking about schools for making stuff. I'd like to respond to this: first of all, if you're into making things, you need to pick what kind of things to determine your major. Personally, if you're into making electronic or mechanical things, I'd recommend either going with Electrical Engineering, or Mechanical Engineering, respectively. However, if you're like me and like making anything, it's electronic or mechanical nature notwithstanding, go instead for a Physics major.
I went to two universities during my undergraduate career: the New Jersey Institute of Technology, and Ramapo College of New Jersey. The former was a great place to make things, as they are a large engineering school. However, it is located in Newark, NJ, which is a bit of a crime-ridden pit, especially in the University Heights section where NJIT is located. My major there was Applied Physics. While there, I was mentored by a brilliant professor by the name of Dr. Gordon Thomas. On my first day in his lab, he showed me to the main room of the lab suite and said, "This is your playground. The most important thing is that you have fun, and create something new."
Due to external pressures, I eventually had to leave Dr. Thomas's lab, and moved to Ramapo College. Here I enrolled in the Physics program, which has since changed to Engineering Physics. I also made the acquaintance there of two similarly brilliant professors, Drs. Anderson and Halpern. Dr. Halpern is the reason that the Physics department at Ramapo got started the way that it did, and the reason that the students always have someone to talk to about various issues. He is a professor emeritus ("retired"), and as he says, is "unable to cut his ties with the students." Since he lives locally, that comes in the form of still showing up on campus most days, hanging out in the "Physics Lounge" in G116, and mentoring students.
However, the reason to attend Ramapo College as a maker and as an Engineering Physics student, despite its small size and Liberal Arts emphasis as a college, is Dr. Phil Anderson. Dr. Anderson (not the Nobel Laureate) is the inventor of the magnetic security tag that you see used in retail stores. He is also on the board of directors of a few companies, a licensed pilot who has also flown fighter jets for the Air Force, and an EE, technically; he's full of fun and inspiring stories of vaporizing small fruit with 55-gallon drum sized capacitors, and other fun things like that. In my opinion, however, his biggest contribution outside of his interactions with students is his work in crafting the college's intellectual property policy: thanks to Dr. Anderson, if you invent something at Ramapo, you own it in its entirety. This is very, very rare in a college/university environment, and I have several friends who have used Ramapo's facilities to create things that they later patented. Dr. Anderson also teaches an "Invention for Scientists and Engineers" course that focuses on IP policy and law, prototyping, and other issues involved in making making your profession.
More information on life as a student at Ramapo can be found on my old blog, "Tales from the Lab", and for general advice to Physics students, check out "The Informed Physics Student".

Later I might tell you why not to go to Penn State, where I'm now working, but just take my word on it for now.

Friday, April 10, 2009

Smoking Dremel!

I hate it when a Dremel, especially a real, brand-name Dremel tool, begins emitting smoke. This happened to me today when I was cutting an aluminum case for a temperature controller that I was making at work.
Temperature Controller
I was making this controller for this heater that I made for our film-stretching machine.
Film Heater

Sunday, April 05, 2009

Morser 5 VDC Out

The quick brown fox jumped over the lazy dog?!

MORSER

After a long time sitting doing DCD (Dust-Collection Duty), I got my Arduino NG out, and realized it wasn't broken: I just needed to press the reset button before uploading a program! I just created a program on it to take text from a serial input and turn it into more code (CW for the hams reading this).
0405091023a.jpg
The output device is connected to pins D13 and GND, and a potentiometer is connected as a variable voltage divider between 5 VDC and GND, with the middle pin connected to A3. The potentiometer controls the speed of the code, and the output device receives TTL output for the morse code. Code follows:
/*
MORSER
cc 04/05/2009 Pete Marchetto
This program translates serial text input into morse code output. Morse code is comprised of five kinds of character elements: the short, or "dit", which is 1 u long, the long, or "dah", which is 3 u long, the intra-character pause, which is also 1 u long, the inter-character pause, which is also 3 u long, and the inter-word pause, which is 7 u long.
*/

int outputPin = 13; //pin for the LED
int inPin=3; //pin for the potentiometer
int val; //value passed from serial interface
int u=50; //unit value, for time

void setup()
{
Serial.begin(9600);
pinMode(outputPin, OUTPUT);
}

void loop()
{
u=1+analogRead(inPin);
if (Serial.available()) {
val = Serial.read();
delay(3*u);
if (val == ' ') {
delay(5*u);
}
if (val == 'A') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'B') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'C') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'D') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'E') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'F') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'G') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'H') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'I') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'J') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'K') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'L') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'M') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'N') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'O') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'P') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'Q') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'R') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'S') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'T') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'U') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'V') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'W') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'X') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'Y') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'Z') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '0') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '1') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}

if (val == '2') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '3') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '4') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '5') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '6') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '7') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '8') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '9') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}

if (val == '.') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == ',') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '?') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}

if (val == '!') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
}
}

Saturday, April 04, 2009

Shroomery!

Today, Katie and I went to a mushroom inoculating party! We drilled holes, plugged them with mushroom mixes for both oyster and shiitake mushrooms, and sealed them with wax. We now have three pet logs sitting on our balcony, while we wait for the fruiting bodies to grow.

Friday, April 03, 2009

Hack Pittsburgh, etc.

Recently, while looking around at Pittsburgh, where I'll be moving at the end of next month, I came upon a new hackerspace that's coming online over there: Hack Pittsburgh. After perusing the forums, I quickly found that they want some classes taught. Meanwhile, I've also been in communication with dorkbot-pgh, which wants me to do a talk on AIAP and the accelerator in August. Plus which I also have a talk to do in October for MS&T in Pittsburgh. In short, it looks like my presentation skills are going to be in high demand, so I'd better brush up.

It's funny that, before I even move to Pittsburgh, I know that I'll have at least 3 evenings per month in meetings: Hack Pittsburgh, dorkbot-pgh, and 2600. I may also eventually join a wilderness SAR team to get back into that, so that's 4. Also, it's a very short hop from what I'm doing with the hacking/making groups to ham radio, so make it 5 with the Steel City Amateur Radio Club.

Not even moved yet, and already my schedule's filling up. Jeez!