Surveyee’s Unite!

Posted in Guns on March 10th, 2010 by bemasher

So I’m sure most of you are aware that the US Government is being stupid and decided to waste a metric crap ton of money on sending out letter notices that they’ll be sending out the 2010 Census in the coming weeks.

Well it’s that time for me too except I’m not wasteful like the government is. I’m taking an evolutionary psychology course at the University of Arizona and I’ve got a research project to do for it. Collecting data for it is going to be in the form of a simple online survey which I’d like you to take. Mind you the class limits the complexity of the data we’re allowed to collect because this is a psychology class not a statistics course so I’m limited in the number of questions I’m allowed to ask and the complexity of the responses so bear with me on this.

There are only a few requirements for it, you must be:

  • Human
  • Alive
  • At least the minimum age to obtain a concealed-carry weapons permit or open-carry a firearm which in most states is 21 years of age

If you meet these requirements congratulations! You’re qualified to take my survey. You don’t need to be a firearm owner, all that I’d like is you to be aware of what guns are and that they exist. Knowing that you point the loud end at what you want to destroy and pull the bang switch is good enough knowledge of firearms to take this survey.

If you’ve made it this far then go ahead and take the survey: Firearm Survey

Tags: , , , , , , , , , , , , ,

Ridiculous

Posted in Guns on November 14th, 2009 by bemasher

DSC_5365

This last Wednesday (Venteran’s Day) several friends and I went out to our local shooting range the Tucson Rifle Club and brought along a few new shooters. My brother was kind enough to lend me his Ruger MkIII Hunter to shoot since I had never done any shooting with it before. As it turns out the particular barrel he’s using on it is threaded to accept a suppressor. My friend Pete was kind enough to allow me to try his Gemtech Outback II suppressor on it and boy does it work great. Since the suppressor puts it well within safe hearing levels this is quite possibly the most fun firearm I’ve ever done target shooting with. Not to mention it looks absolutely ridiculous.

Tags: , , , , , , ,

Quote of the Day and Something Cool

Posted in Code, Guns on September 10th, 2009 by bemasher

So I was sitting in my discrete structures analysis class today when a student asked a question about the homework. It went a little like this:

Student: How should we format pseudo-code in the homework?
Professor: Ah see pseudo-code is in that grey area. It’s somewhere in between code and english.
Professor: You see me do it one way in class, the book does it another way and the homework assignment does it an even different way.
Professor: Think of it this way, pseudo-code is a lot like pornography: you’ll know it when you see it.
Professor: So I’m not very worried about how you do your pseudo-code as long as I understand it.

The other cool thing that happened today was that I found out the owner of my favorite coffee shop is a pro-gun person. Apparently some of his relatives own a gun shop and he’s done some shooting competitions. All very cool. It definitely explains why none of the employees ever freak out about me carrying my 1911 which looks giant on my hip compared to others. I’m a tall skinny guy if you didn’t already know.

Tags: , , , , , , , , ,

Guns in a Bank

Posted in Guns on August 28th, 2009 by bemasher

Pardon me for the terrible pun on Snakes on a Plane in the title but I just couldn’t resist. Anyway the main point of this post is to discuss a recent experience my brother had, in a bank, with a gun.

Considering that Arizona is pretty conservative I’m still constantly surprised at how skittish people here are about open-carrying. My brother constantly has his precious Kimber Desert Warrior1 with him. Basically if he’s not at home or at work it’s on his hip.

Today he an unpleasant experience at the local bank. He regularly visits the bank to deposit checks and do other bank-like things all while carrying his gun with him and has never had any trouble with anyone//anything until this point. The employees have never had a problem with it, it was a patron that did.

He was standing in line at the bank waiting for a teller to become available when a woman of unknown age (older than him he said) came into the bank to the merchant teller and promptly said very deliberately to the teller “I’m surprised to see a gun in a bank” the teller was very confused by this and replied with a simple “huh?”. The woman then turned around and extended her arm fully to point at my brother and say “Him, he’s got a gun”, now my brother being generally a quiet guy in public replied very calmly “it’s perfectly legal”. This of course rubbed the woman the wrong way since she didn’t get the kind of reaction I expect she was trying to procure from him, so she scoffed and went about her business.

Not a terrible experience, just supremely awkward for my brother to be confronted like that in a public place where he’d done absolutely nothing wrong but land on the wrong side of a woman who clearly holds distrust for anyone carrying a gun that doesn’t also have a badge.

  1. Kimber Desert Warrior []
Tags: , , , , , , ,

High(ish)-speed Photography (followup)

Posted in Code, Guns, Photography, Technology on February 20th, 2009 by bemasher

DSC_3299

So this Tuesday I got my Arduino in the mail. I really mean just in the mail… it was in an anti-static bag in a bubble-wrap envelope! Anyway I managed to waste about 6 hours screwing around with it the first night I got it. Since then after a lot of researching, googling, swearing and scratching my head I’ve successfully setup the first major part for the camera trigger project.

I discovered that the delay functions built into the Arduino C library are mostly useless. The microsecond delay function is most useless of all because it will only produce accurate delays between 4 microseconds and 16383 microseconds. So I gave up on that and just wrote a custom delay function. But before I wrote the custom delay function I looked at creating my own timer using Timer2 and giving up digital pins 11 and 3 for accurate times. Eventually I ditched this method because I never got any of the sample code to work at all.

Eventually I arrived at this at least reliable if not accurate delay function:

1
2
3
4
void customDelay(unsigned long time) {
    unsigned long end_time = micros() + time;
    while(micros() < end_time);
}

The advantage to this over the delayMicroseconds() function is that this will at least pay attention to how long it’s actually been since it started where the delayMicroseconds() function just blindly sleeps for an arbitrary amount of time and wakes up when it sees fit. The function for oscillating the IR led at the frequency I needed for triggering the camera is of the same form just with a bit of code for switching the LED on and off twice every clock cycle in the while loop. It also turns out that changing the state of a digital pin isn’t near instantaneous either, which is to be expected. I’ve compensated for this using a constant defined for the number of microseconds it takes for it to turn a digital pin on or off.

Once I solved the timing issues it was essentially about cleaning up the code from that point on. I ended up storing the sequence of oscillation and pausing that Nikon SLR’s use in two arrays, one for oscillation and one for the matching pause between each oscillation period. Which makes for a clean section for firing the led and pausing all inside a for loop that iterates over each item in the two arrays.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
Author:         BeMasher
Description:    Code sample in C for firing the IR sequence that mimics the
                ML-L1 or ML-L3 IR remote control for most Nikon SLR's.

Based off of:   http://make.refractal.org/?p=3
                http://www.cibomahto.com/2008/10/october-thing-a-day-day-7-nikon-camera-intervalometer-part-1/
                http://ilpleut.be/doku.php/code:nikonremote:start
                http://www.bigmike.it/ircontrol/

Notes:          This differs slightly from the other 3 versions I found in that this doesn't use the built in
                delay functions that the Arduino comes with. I discovered that they weren't accurate enough for
                the values I was trying to give them. The delayMicrosecond() function is only accurate between about
                4uS and 16383uS which isn't a very workable range for the values we need to delay in for this project.
                The ASM code that Matt wrote works well but is limited to only pin 12 and I haven't got a good enough
                grasp of the architecture to modify the code to work on any pin. So this is what I've come up with to
                produce the same result.
*/


#define IR_LED 13        //Pin the IR LED is on
#define DELAY 13         //Half of the clock cycle of a 38.4Khz signal
#define DELAY_OFFSET 4   //The amount of time the micros() function takes to return a value
#define SEQ_LEN 4        //The number of long's in the sequence

unsigned long seq_on[] = {2000, 390, 410, 400};        //Period in uS the LED should oscillate
unsigned long seq_off[] = {27830, 1580, 3580, 0};      //Period in uS that should be delayed between pulses

void setup() {
    Serial.begin(19200);        //Initialize Serial at 19200 baud
    pinMode(IR_LED, OUTPUT);    //Set the IR_LED pin to output
}

void customDelay(unsigned long time) {
    unsigned long end_time = micros() + time;    //Calculate when the function should return to it's caller
    while(micros() < end_time);                  //Do nothing 'till we get to the end time
}

void oscillationWrite(int pin, int time) {
    unsigned long end_time = micros() + time;    //Calculate when function should return to it's caller
    while(micros() < end_time) {                 //Until we get to the end time oscillate the LED at 38.4Khz
        digitalWrite(pin, HIGH);
        customDelay(DELAY);
        digitalWrite(pin, LOW);
        customDelay(DELAY - DELAY_OFFSET);        //Assume micros() takes about 4uS to return a value
    }
}

void triggerCamera() {
    for(int i = 0; i < SEQ_LEN; i++) {            //For each long in the sequence
        oscillationWrite(IR_LED, seq_on[i]);      //Oscillate for the current long's value in uS
        customDelay(seq_off[i]);                  //Delay for the current long's value in uS
    }
    customDelay(63200);                            //Wait about 63mS before repeating the sequence
    for(int i = 0; i < SEQ_LEN; i++) {
        oscillationWrite(IR_LED, seq_on[i]);
        customDelay(seq_off[i]);
    }
}

void loop() {
    if(Serial.available()) {        //Wait 'till something is connected
        if(Serial.read() != 0) {    //If anything but 0 is sent take a photo
            triggerCamera();        //Take a photo
        }
        delay(100);                 //Delay an arbitrary amount of time, serial isn't instantaneous
    }
}
Tags: , , , , ,

High(ish)-speed Photography

Posted in Code, Computers, Guns, Photography on February 16th, 2009 by bemasher

This semester I’ve started a class with the electrical and computer engineering college called Microprocessor Organization. The purpose of this class is to familiarize the students with you guessed it microprocessors. So far it’s basically a glorified lab they wanted to turn into a lecture. The lab portion of the course is heavily oriented around assembling your own prototype board and programming said board. In the class we’re using a PIC18F4550 microcontroller, which is fascinating and a bit more complex than I wanted to play with at home.

I started looking around for a microcontroller that was simpler and easier to play around with. Eventually I found the arduino which fit my needs perfectly, it’s powered through USB, is cheap, has a built in programmer and enough processing power for most of the simple projects I’ve been thinking about doing at home for fun. As soon as I picked a decent online store I bought an Arduino Duemillanove and a lithium ion battery pack (rechargable  through mini-usb).

I should have both in the next few days and the very first thing I decided on trying was a high-speed camera trigger. I’ve already done some high-speed flash photography and it was amusing but it was too much of a hassle. Focusing in the dark isn’t the easiest thing to do and setting up analog circuits to do this sort of thing aren’t the simplest in the world and without custom PCB (breadboards instead) they fall apart as you go. I immediately got started coding a sound-sensitive trigger for firing the IR sequence for shutter release on my Nikon D50. Turns out I’m in luck since I was able to find the sequence and it works for almost all Nikon DSLR’s of which my friends have a few. My friend pete wrote about this briefly on his blog and a reader offered to bring his camera out for the expirement to the shooting range (which I haven’t mentioned yet… patience).

Now that I’ve gotten the code written out and a small microphone for sensing sound, an IR LED and at least 3 Nikon DSLR’s, all that’s left is going out to the shooting range. My main goal for this is to get photographs (in sequence or parallel for stereoscopic photos) of different guns ejecting shells and cycling bolts. Since we’re not using the same camera’s for each shot they’ve all got different shutter lag times. My D50 is about 130-140ms when pre-focused. The D40 is 95-105ms when pre-focused. Last but not least the D80 is about 75-85ms. This will turn out well because they’re all close enough in time that I won’t even need to trigger each camera individually for quick sequences of photos. However this makes doing stereoscopic photos a bit more difficult since I’ll have to synchronise two of the camera’s to the slower shutter lag of the two. Doing that requires that I have at least two IR LED’s, and in the case that I want the cameras to fire in much faster sequence I’ll need at least 3 IR LED’s (and hope that I can trigger them as quick as I need with the Arduino).

The actual photographic part of this experiment is relatively simple, all I’ll need is a similar focal length on each of the cameras which isn’t difficult since they all use DX format sensors and it’s safe to assume that we all have a lense which can match the same focal length on each camera. And suppose we’re shooting at the equivelant sensitivity of iso 400 on each camera (since I doubt we all have prime 35mm lenses that are as fast as the one I’ve been using) with the same aperture, shutter speed (~1/500-640th) and white-balance we can achieve near identical exposures between the different cameras.

Tags: , , , , , ,

I Warned You

Posted in Guns on February 16th, 2009 by bemasher

as tanks developed armour too thick to be penetrated by even this large, powerful rifle, its uses switched to fields such as long range sniping, tank harassment and an improvised anti-aircraft weapon.

via Lahti L-39 – Wikipedia, the free encyclopedia.

I’m well aware that I’m already straying from the suggested topics I outlined in the Problem Statement, but then I did warn you. I sort of feel like Tim the enchanter from Monty Python and the Holy Grail saying that.

Anyway I was talking with my friend Pete a rather gunny person and he sent me a link to a photo of two guns. Now this isn’t a very strange occurrence between Pete and I, except that he immediately said “the one on the right is .50BMG” which sort of produced a jaw-dropping effect because the gun on the left was a good 3x larger than the gun on the right. Sure enough it was a 20mm rifle which you may have noticed from the quote above was used in the second World War. I read the wikipedia article on it and found a rather amusing statement that once tanks evolved to become resistant to it it was used for “tank harassment” which I found hilarious.

I’m trying really hard to think of any other way you might “harass a tank” but I can’t come up with any other way short of destroying them but that’s a lot less harassment than it is destroying which I suppose would still be irritating to those inside. Either way tank harassment doesn’t sound like a very fun activity not like cow tipping or other mischievous acts would be.