Tuesday, February 28, 2006, 04:06 PM ( 2 views )
Much has happened in the month of February.As such I give you:

permalink
Wednesday, February 1, 2006, 06:57 AM ( 1 view )
First some "backstory":If you're like me then you have too many computers... well more like too many keyboards and mice. While working at my current job, I bought a laptop and brought it into work. Now I could keep moving back and forth from keyboard and mouse to keyboard and trackpad, but that seems inefficient. A co-worker does the same thing I do, he brings in his laptop but he can slide his mouse from one screen to another, and suddenly his desktop machine's keyboard is active on the laptop. Yes, I'm talking about synergy.
Synergy captures the input from the keyboard and mouse and passes it on to the appropriate computer, based on the location of the cursor. This performed by sending the raw data over the network connection when the client has the focus. This becomes a problem because, if you were in a hubbed network or a switched network with arp poisoning, Eve could read every keystroke. My solution to this is ssh. So instead of my synergy client connecting to the synergy server directly, my client connects to localhost (the laptop) on the synergy port (24800) and then ssh takes all communication and passes it over to the ssh server on my desktop, which then forwards the data to port 24800 on the server. Secure Synergy. Also I setup my .ssh/authorized_keys on the desktop to allow for key based authentication instead of password.. so I just run the command in the morning, and synergy is good to go!
Without further ado the command (replace synergyserver with your server!):
ssh -f -N -L 24800:synergyserver:24800 synergyserver
Tuesday, January 31, 2006, 02:10 PM ( 1 view )
A question
I recently got an email requesting elaboration on the serial port controlled relay, and inquiring the number of devices that can be controlled with a single serial port.
An Answer
Essentially I'm using low-level ioctl calls to directly communicate with the pins on the serial port. This allows me to switch the relasy on and off. The reason the Solid State relay works so well is the way is because of the relay uses optical isolation to perform the switching.
Be sure that your circuits are completed as so:
PIN TO BE SET ------ Load ------ SERIAL GND
You can see in my picture:
That I've connected DTR to one side of the relay and GND to the otherside.
About the source code
(and why is may not compile!)For whatever reason pipes or the character that allows for bit-wise or'ing, do not show up as pipes in simplephpblog.. rather they show up as colons. So when copying and pating be sure to search and replace : for the "pipe" character.
A couple extra comments in the source code
Please see this site as it is a great reference for serial programming for POSIX operating systems.//Open the devices... /dev/tty or /dev/com....
int device = open("/dev/com2", O_RDONLY : O_NONBLOCK)
//Make sure it opened....
if(device > 0)
{
//First get the status of the relays:
ioctl(device, TIOCMGET, &status);
//Next set the pins that I want
status := TIOCM_DTR; // <- Thats a bit wise or, not Pascal assignment
//Finally tell the serial port what I want.
ioctl(device, TIOCMSET, &status);
}
Now what are the available flags for setting?
IBM PC/AT pinouts
TIOCM_CAR //DCD
TIOCM_DTR //DTR
TIOCM_DSR //DSR
TIOCM_RTS //RTS
TIOCM_CTS //CTS
TIOCM_RNG //RNG
How many devices???
Using a single serial port, gives you the option of easily controlling upto 6 independent devices by or'ing the flags together. You might be able to use TXD as well, but I'm not sure. Some of them are bidirectional, so they could be used for feedback. This is a naive approach, but should work for simple projects.
Disclaimer
Now a disclaimer.. this is pretty much abusing the serial port. I am not responsible in any way for any damages incurred with these instructions. This is not the way the serial port was intended to be interfaced. But... it works. It gives you +12V when on which is enough to switch some relays.
Future considerations
You might consider getting snazzy and add some logic to the relays that actually communicates using serial communication, that way (depending on your design) you could control a virtually unlimited number of devices from a single serial port.
Monday, January 23, 2006, 10:00 AM ( 2 views )
Thanks to Nate True for the javascript.His script has allowed me to document the lock pick project pretty well:
Lock Picks
Wednesday, January 18, 2006, 08:59 PM ( 2 views )
*nix command that is!Samba. It can be difficult to configure or it can be easy. I wanted it to be easy. Since I was only allowing internal hosts to connect to the samba server, I pretty much wanted them to have free reign on the shared drive. I want to be able to throw files on it and allow my wife to be able to access them.
Sounds easy. I had the config file written months ago. I had it working, and then suddenly it stopped. I'm not sure what caused the error, but without further ado:
# smbpasswd nobody
Enter NEW password:
Retype NEW password:
Tada, nobody now has no password. Still not a perfect situation, but I now have the shared drive. Also, it may be helpful to note that having everyone in the same workgroup is a good idea.
Hurray!
Monday, January 16, 2006, 04:37 PM ( 2 views )
Got a question from Chad Philips about the combination locks. He's been doing cool stuff with ping pong balls, lasers, and dc relays. Anyhow his question is concerning the combination lock cracker, which is still sadly unfinished. How did you drive the stepper motor from your laptop? Did you use the parallel port and your own circuit or did you use a serial port?
I used the parallel port. Here's where I found the circuitry for the stepper motor control:
Neil Fraser: Hardware: Stepper Motors: Computer Control
While I didn't get the idea for the combo lock cracker from Neil he has his own approach:
Neil Fraser: Hardware: Locracker
I got my stepper motors here (CHEAP!)
BGmicro
Sadly I paid $$$ out to radio shack for the transistors and breadboard.
In my implementation the high nibble of the parallel data was for a stepper motor that would tighten a bolt to "pull" the shackle. The low nibble of the data would "dial" in the combination. This way I could pull while dialing but ... never got around to it.. :(
Source available upon request.
Cool stuff.
Monday, January 16, 2006, 09:56 AM ( 997 views )
Recenty I was perusing the Make: Blog and happened to come across a howto on Controlling a relay and motor with a serial port. I commented on the project and have received two responses, one from the author, and one from a reader.Several months ago using a Solid State Relay, I built a serial port controlled switch. This allowed me to turn on any AC device I want with a simple C program.
Crude Circuit Diagram
---------
AC ---- 15 A FUSE ---- Switch ---- : : ------ DTR
: Relay :
AC ------------------------------- : : ------ GND
---------
If you'll notice in the pictures I also left the unused pins connected in the event I found time or use for them. Alas I have not, but the box still does it's job.
Voila:

The "switchbox"

What's in the box??!?!
Phew it's just some components.
And here's the code:
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <termio.h>
#include <sys/fcntl.h>
void initAC(int device);
void turnACon(int device);
void turnACoff(int device);
int status;
int nap = 0;
main(int argc, char *argv[])
{
struct termios tp;
int dataRead = 0;
int device;
if ((device = open("/dev/com2", O_RDONLY : O_NONBLOCK)) < 0) {
printf("Couldn't open com2\n");
exit(-1);
}
if (tcgetattr(device, &tp) < 0) {
printf("Couldn't get term attributes");
exit(-1);
}
if(argc == 3){
nap = strtol(argv[2], NULL, 0);
}
printf(" SERIAL ANALYZER V1.0 ");
printf("DCD RXD TXD DTR GND DSR RTS CTS RNG\n");
initAC(device);
while(1){
turnACon(device);
usleep(740000);
turnACoff(device);
usleep(200000);
}
}
void initAC(int device){
ioctl(device, TIOCMGET, &status);
status &= ~TIOCM_RTS;
ioctl(device, TIOCMSET, &status);
printStatus();
}
void turnACon(int device){
ioctl(device, TIOCMGET, &status);
status := TIOCM_DTR; // <- Thats a bit wise or, not Pascal assignment
ioctl(device, TIOCMSET, &status);
printStatus();
}
void turnACoff(int device){
ioctl(device, TIOCMGET, &status);
status &= ~TIOCM_DTR;
ioctl(device, TIOCMSET, &status);
printStatus();
}
printStatus(){
printf("\r");
printf(" %c ", (status & TIOCM_CAR) ? '1' : '0'); //DCD
printf(" * "); //RXD
printf(" * "); //TXD
printf(" %c ", (status & TIOCM_DTR) ? '1' : '0'); //DTR
printf(" * "); //GND
printf(" %c ", (status & TIOCM_DSR) ? '1' : '0'); //DSR
printf(" %c ", (status & TIOCM_RTS) ? '1' : '0'); //RTS
printf(" %c ", (status & TIOCM_CTS) ? '1' : '0'); //CTS
printf(" %c ", (status & TIOCM_RNG) ? '1' : '0'); //RNG
sleep(nap);
}
Thursday, December 29, 2005, 08:02 AM ( 4 views )
I hope that all have been enjoying their holidays. I certainly have.My parents came up to visit this season. Tomorrow we'll be heading to Chicago to watch my brother graduate from Navy basic training.
A couple days ago my mother's sister and family came to visit us. It was a very nice visit, filled with laughs and Euchre. We were all amazed as my mom stomped us in the TV edition of SceneIt?
My sister-in-law gave me a Vintage Game Collection version of Risk. It is very nice. Instead of the plastic figurines, there are little wood pieces that are used to amass your armies.
Yesterday we played a complete 6 hour game of risk. The highlights were mom had seemed to solidify her position in North America with about 7 armies in each territory. Then my dad, with his southern hemisphere, turns in his three cards and destroys all but three of my territories (good work Kamchatka!) Then my dad once that battalion had been stopped, set his sights on my wife. He destroyed all but two armies in Iceland. My dad's armies now occupied more than half the board. It seemed like it was all over for my wife, but then it was her turn, and suddenly ICELAND HAD 50+ armies. She quickly reclaimed Europe. Then it was my turn, I turned in my cards... and in one turn was able to over take the US. Unfortunately we had not read the rule that you get an opponents cards after they have no armies... alas I was pretty barebones in North America. After two more rounds my father was ready to attack again, he was able to overtake me. Then it was down to my wife and dad. A couple rounds passed and Kristen turned in her cards AGAIN! After two more turns she won!
It was an amazing game.
Have a happy new year!
Thursday, November 24, 2005, 07:10 AM ( 2 views )
A Happy Thanksgiving to all.Racquetball round-up. Lost 4 games this week. I won the 5th.
LCD Project. We can write to the LCD, read the buttons, and set the LEDs all via the daughter board. Still can't do two lines of display. Need to get a more "portable" power supply than the molex plugs inside a computer (but hey its 5V)
Combo Lock Project. Stalled while I worked on the LCD.
Safe travels all, and don't eat too much
Sunday, November 20, 2005, 08:14 PM ( 2 views )
Yup, the results are in. My wife and I will be parents again! Hurrah!Ah August the turning point of our lives. I graduated in August, got married in August, became a father in August, celebrated my son's first birthday in August, watched my wife graduate from grad school in August, and will become a father again in August.
Thursday, November 17, 2005, 07:42 PM ( 11 views )
There are few things in this world that I enjoy more than tinkering with electronics. I understand some of the principles that govern the operation of the devices, but there is always a sense of awe and amazement when it works.A fellow co-worker, Jim Vaught, shares a similar passion for tinkering. Together, quite a few interesting devices have been created. For instance, the first project I recall was when we were working on a commercial contract. During this contract email alerts would signal that we needed to fulfill a part of the contract within 24 hours. Well, an email bouncing in your inbox signally such a task wasn't enough. So a little tinkering later, we created a device that interfaces with the serial port and acts a switch for a revolving red light. The project was a great success, whenever an email was sent a special filter would invoke a progam that would turn on the light for a preset amount of time.
The next hacking project was combination locks. This project is not totally complete, but is close.
And most recently involves a present I got two years ago. I asked for an $6 LCD module and accidentally fried it. Months later I order another one and fried it too. A few months ago I ordered two more along with the two stepper motors for the combination lock cracker. I noticed that the daughter board the LCD module was connected to had some very simple circuitry. So I wondered if I could reverse engineer it, but I figured I could use some help.. and Jim was happy to offer his assistance. In a couple days we were able to reverse engineer most of the circuitry. Currently data can be read from the switches on the module!
Next steps are actually getting the LCD module to display. Expect a full disclosure on how we actually got it to work, including source code... Cheers!
Monday, November 7, 2005, 07:14 PM ( 2 views )
How's that for dramatics?Seriously, we've repainted. The living room is no longer the Sunflower Yellow colorwashed with Burnt Sienna. While the textured orange was a very nice color, it clashed too much with the pinkish brick of the fireplace. We've now gone back to a much more subdued Mission Rock, which is better described as a tannish brown with a hint of red. It's like Raisin only two shades lighter, observe:
Before
After
In other news, I've started my first run of a tool that counts the frequency of instructions in executables, so that I can find the most frequently used opcodes. After this test run I plan to go back and add more statistical analysis so we can really get interesting findings. Here's hoping.
Friday, November 4, 2005, 07:01 AM ( 2 views )
Last weekend I went home for the Appalachian State University homecoming and to visit family and friends. The trip was rather nice, sans airport craziness. Attempted to open two of my parents' locks for them, only to find disappointment. At work Tuesday my boss handed me a combination lock and asked if I could open it. I tried and initially failed. I began to think that maybe the lock I had opened at work was a fluke. Turns out the shackle locks on the left side (dial side up). I was trying to shim the wrong side, at home and at work. SO, I need to ask try again with my parents' locks. Anyhow we were also able to recover the combination
39-21-39.
Cheers!
More on the way concerning the automated lock cracker....
Tuesday, October 18, 2005, 11:46 AM ( 2 views )
The new thing to do at the office seems to be ask a simple question, then get into a long, fairly intense discourse on who is right and what really happened. Then it dawns on one of us to look up said simple question in Wikipedia and prove that you are right... Thursday, October 13, 2005, 11:11 PM ( 167 views )
Though most of us are hackers, not many of us are locksmiths. That is until the relatively recent posts on hack-a-day. They mentioned two ways to hack a combination lock. These little balls of metal have always intrigued me so I read the how-stuff-works post about them and learned about the internal working. Then I read the hack-a-day post about creating a shim to open virtually any shackle bolt lock. Much more elegant than bolt cutters. All you needed for this was an aluminum can. On the second try I was able to open the lock. Now I had the lock open, but I still didn't have the combination. So I read the hack-a-day post on how to reduce the keyspace of combination locks.
Not only was I able to eliminate the 64,000 possible combinations with these instructions to 100 but I new that the first number began with 1 becuase part of the lable was still on the back of the lock.. So really I only had to try about 20 combinations.
And like magic it opened!!! 13-27-33!!!
Then I got to thinking.. I can automate this. Apparently some have already beaten me to the punch on this, but I still wanted to make one.
So I bought a stepper motor (well ok 2 stepper motors) Then I went to Radio Shack three or four times. Long story short I was able to create the necessary circuit so that I could drive the stepper motor from my laptop.
A stepper motor is a special motor that allow for precise movement. A normal motor is either on or off. This motor will move one fixed amount per "step". The stepper motor I purchased can make 48 steps per revolution. The lock only has 40 positions. As it turns out, the lock acutally only has about 20 +- positions. To really the keyspace of a lock is about 8000..
Anyhow, I can dial in a combination with my stepper motor in 3 seconds. Assuming there are only 100 combinations and that a linear actuator would take roughly 2 seconds to test the lock.. I should be able to open a lock in less than 10 minutes.
Next steps are to get an actuator on the shackle so that I don't have to try the lock myself. As a proof of concept, though, this is a resounding success.
Wednesday, October 12, 2005, 11:03 PM ( 2 views )
Yeah, I think I'm about done.I've watched films and television for nearly 23 years. I've seen bad movies, good movies, cartoons, sitcoms, dramas, 3d animation, action, adventure, fantasy, film noir, horror, thriller, family, etc.
Even Gilmore Girls.
I'll continue to watch the show even though the commercials make my head hurt. It has a good storyline, but unfortunately they drag it out.
My main beef with Movies, TV, and gasp Video Games is that nothing happens. Don't tell me I'm entertained. The people in Plato's Allegory of the Cave were entertained. What if the two hours were spent doing research? developing? exercising? interacting? praying? meditating? reading? talking? helping?
The two hours will pass, whether you stare in one direction for two hours or you live.
My most difficult dilemma is how to convey this to my children. They will not grow up with 23 years of "experience." I feel the only way they will understand is if they experience it. However, I will not know until I try. I hope that Sebastian appreciates the time we spend together interacting someday, because I know there is nothing "memorable" about watching another detergent commercial.
****
Has this new culture of information inundation stifled imagination? Frequently my wife and I have found ourselves bored, and void of ideas. What do you want to do? I dunno, you? There is more than images on a screen. I'm tired of staring at shadows.
Tuesday, October 4, 2005, 12:30 PM ( 2 views )
Quote of the day:It may well be doubted whether human ingenuity can construct an enigma -
which human ingenuity may not, by proper application, resolve.
-- Edgar Allen Poe
This has been one of my favorite quotes to ponder. The interesting part about it is that it embodies my work. Summarized:
Man cannot create a puzzle, which man cannot solve.
This is rather disheartening for my work. Essentially we try to make really difficult puzzles to solve, in software. Ultimately there is a solution, albeit a difficult one to find. We continually strive to make the puzzle more and more difficult. However this quote maybe promising for things like the Halting Problem.
In short, the Halting Problem is:
Given program P, will the program ever halt or stop (reach the end, or will it run forever?). Furthermore, is there an algorithm that can solve this?
Alan Turing, the father of modern computer science, determined that such a solution cannot exist. Specifically the halting problem is undecidable over turing machines (a theoretical representation of a computer).
Can we find a way? Poe thinks so. Of course, Poe isn't the most model citizen... but then again... neither is Turing.
Friday, September 30, 2005, 09:21 PM ( 1 view )
Yes the business trip to St. Louis was yet another success in my cache of work experience. So here's a summary.Wednesday morning pack a bag, take Sebastian to the babysitters and head in to work. Work about 5 or 6 hours assisting in the assembly of 50 training notebooks (about 150 sheets of documentation in 5 sections, a burned labeled CD, all in a 3 hole binder) and pile into a 12 passenger van. It was only 5 of us in the van, but good thing we had it. We left for St. Louis around 2:00. Around 2:56 I got a call. The number wasn't recognized by my cell phone, so I wasn't certain who it was. Then I heard the voice, and I distinctly remember hearing the same voice back around New Year's. Yup, it's my boss. Not just my boss, the CEO of the company. We don't talk that often together so I knew this must be a "special occasion." He goes on to tell me about what was happening in St. Louis. Apparently at the event someone tried to stick it to Arxan. Essentially it went something like this, a member of the audience posed the question: If "this technology" is so good, why do we need Arxan? Then the presenter went on to say: It is my belief we don't.
Yeah that can kinda make a CEO edgey. You know when a room full of people are told by a fairly respected presenter, your stuff is crap. Needless to say the CEO was conveying this agitation. After about five minutes the whole van triaged to counter this falsehood of "our stuff is crap." The "technology" that was "better" than ours had a severe limitation. You had to use custom hardware. Furthermore the presenter was making the technology out to be the holy grail of security. This is perhaps a good presentation, but not the full truth. Security needs to be at all levels, for it to be effective. Anyhow, our technology doesn't require specialized hardware. After about an hour (now 4:00) we were able to calm ourselves down, and be ready for our presentation.
Then we hit the storm. We drove through hours rain and heavy wind. Fortunately just as we were on the outskirts of St. Louis the storm was over.
At 7:00 we get to the hotel, check-in, meet another fellow employee, and are off to a casino for dinner. It was a really tasty meal. I had a salad to start, and then for the entree filet mignon, mashed potatoes, and broccoli. Very good. Once dinner was over it was around 9:00. Time for bed eh? We got back to the hotel, reviewed the presentation and slept.
Thursday 7:00a breakfast. Got to the customer's location around 8:00a. Setup 25 laptops and put out the 50 training notebooks. People starting filing in around 8:30 - 9:00. Soon everyone was there and we were presenting. We drove home the point that we like the other technology are but one piece in the puzzle. Once again we were able to captivate the audience, everyone loves to learn how to hack. Unfortunately some were expecting something else from the presentation. Originally we were going to train the group on our product.
In the past, Mike and I trained 6 students together, each student had their own laptop. For us to be able to train the 50 proposed students would have meant we needed 16 trainers and 25 more laptops, not going to happen. Anyhow, the training went well. We got alot of positive feedback and some negative feedback, not without constructive criticism though. By 3:00 we were all packed. But before we left we got to tour their facility. It was indeed impressive. By 4:00 we were back on the road. Got back to my car around 9:00p, and was in bed by 9:15p.
Monday, September 26, 2005, 08:05 PM ( 1 view )
Today was monumental. Perhaps that's an exaggeration, but todays accomplishments were tremendous. We finally got the software working on the hardware!!! The odd thing was that we were able to get the software to work on other hardware but not the hardware the customer supplied. There are quite a few more details, but thats the main gist. Basically what the problem boiled down to was this:
: free space : code : data : Now what was supposed to happen is the data was supposed to move into the free space, but since we chose a memory address that we thought would be empty this it what happened:
: free space : data : data : Now this is a problem the data has overwritten the code, and the hardware didn't know what to do. Furthermore the crude diagram is only half true because the code only ran so long before it clobbered itself. *sigh* After much investigation we discovered that the address whe chose to put the data was the exact address our code was loaded into... this is bad. After some tinkering the resolution became:
: free space and a little more : code : data : So that after the code ran we had:
: free space : the cooked data : code : data : And there was much rejoicing.
Today was my wife's first day at work. She's recently graduated with her Master's Degree in Speech Language Pathology and is now working for a staffing agency. Her current placement is in two retirement homes, one closeby and one about thirty minutes away. Unfortunately the current attitude towards SLPs in the placements is that her work is unnecessary. This is far from the truth. Over the past two years I've learned a couple things about the field. And its a really big field, from swallowing to language, from throat cancer to articulation, from cranial facial anomalies to stuttering. How can this be disregarded??? If the patients can't talk to the other therapists, or eat for that matter, how can they be properly administered?
Hopefully she can change some minds.
Wednesday, September 21, 2005, 03:22 PM ( 2 views )
As you may or may not know, I participated this past weekend in the Hunger Hike fundraiser. While waiting for the hike to begin I was interviewed. Kinda neat eh?The Hunger Hike met the goal of $50,000 which is good news for the hungry of West Lafayette. It's good to see that even admist other disasters, local charities are still strong.
It was a fun day. We got there around 12:30pm, turned in our donations and got free t-shirts and water bottles. There were some door prizes and then while we were standing there a gentleman from WLFI came by and interviewed me about the hike. We sat and listened to the hub-bub and watched Sebastian find new canine friends. Then the Purdue Crew was off to carry their boat the 2-mile distance, preceded by jogger's taking on the 4.5 mile track. We trailed along with the rest of the families. Along the way we met up with Nick who Kristen met at RCIA. He's another sponsor-to-be like Kristen, waiting for someone to help along the way of becoming Catholic.
Tuesday, September 20, 2005, 08:38 AM ( 2 views )

My current past-time project has been capturing images from the publicly available Purdue Webcams . Specifically the Neil Armstrong Engineering Hall that is being built. Last night we had a pretty significant storm roll through and I was hoping to be able to capture an image of lightning.
Friday, September 16, 2005, 08:14 AM ( 2 views )
That didn't take too long.Thursday, September 15, 2005, 06:31 PM ( 1 view )
My lovely wife Kristen took me home and now here I am.Details:
So left work early. Got home changed into my recommended short sleeve shirt. Was a bit worried, the Toyota had no gas in it. --- gause change --- Where was I. So got to the doctor's office a tinge late.
An aside, this morning I had misplaced my referral slip. I have now talked to each ot the listed Oral Facial and MaxilloFacial surgeons. Anywho I finally found doc I was going to .
Now I'm at the office and I fill out the mandatory personal inforamation, as well as the myrriad of yes no questions. NO, I'm not allergic to anything, NO i'm not chemically delpendent, NO I don't smoke...etc.
After that it was time to head back, Sebastian was ready to go. We decided it might be a bit too early for him to need any teeth pulled.
A quick X-ray and then a eval later, and I was strapped to the vital signs monitor. Kinda neat, I could play with the hearbeat monitor, and breath rate. Then the IV, and the drugs .. heh. Doc said I'd begin to feel wierd. He was right I don't remember awhole lot more after that. I think he may have asked what I do. I hope I was intelligible. Pretty cool experience. Anyway I seem to recall getting in a wheelchair. Then it was in the car, a transfer from the wheelchair to the car. And I was off. I have no recollection of the car ride. I'm still a bit loopy right now.. but it appears as though my jaw is infact intact. Yay they didn't break it ... phew.
Well loopy is strong.. I'm just sleepy.
i guess thats it.
Can't wait to proof read. It looks coherent... sorta. Maybe I should write a statement of purpose... hehe
Cheers!
Thursday, September 15, 2005, 10:01 AM ( 2 views )
Yup, as they should, the fellas at work have been giving me hell about the impending operation:"They might have to break your jaw"
"You'll be black and blue"
"Don't use a straw"
"It's fun seeing the bone of your jaw"
Bah, it'll be great fun. When it's over, it'll be over!
Cheers!
Edit: 11:41am
"We should have brought in a hammer and chisel..."




