Colorado School of Mines

Fail Sauce

  • Mines

It’s said that a chain is only as strong as its weakest link. Today, we found our weak link.

LunOrediggers was the 10th pick over all to compete, however we ended up going 4th since there were less then 10 ten with entries that were competing.

We passed inspection, weighing in at just over 68kg1. We received our briefing on our allotted five minutes of setup time and then went to work. Like a well oiled machine, we were ready and set with time to spare.

The judges counted down to power on: 5, 4, 3, 2, 1…power on.

Now this is the interesting part. The initialization sequence takes some time to complete. So even after power is applied, there isn’t any movement for a few seconds. However, the seconds soon changed into minutes. The judges reported that we were drawing no current, which was not a good sign.

After five minutes, we finally called it. Testing confirmed that the proper power was present at the connector. The judges reconnected the power cable to rover and powered it back on just to make sure. A few seconds later, things starting moving.

In somewhat of a confused panic, the judges quickly cut power. The issue had been that while we had inserted the plug into our connector, we hadn’t twisted it to lock it. This was simply because we weren’t familiar with the plug, which was a competition defined and provided part.

A temporary reprieve was issued as the judges went off to discus things.

Sometime later, they came back and decided they owned some of the responsibility between the mating of our technology and theirs. Thus, we were allowed to restart and run!

Round two began well enough. The rover powered up and began it’s initialization cycle. The sensor turret on the top moved around and then, nothing. Well not actually nothing, the sensor turret just kept performing its sweep. But the rover didn’t move. After a few minutes, we called it quits again; this time for real.

And that brings us back to the weakest link. What went wrong? Well, we haven’t had a formal diagnostic, but it seems to be a programming issue. The rover was positioned in a corner of the sandbox, with its front facing the corner. The IR sensors were close enough to the wall that they were being triggered before the rover even moved. Due to the way our error handling algorithm works, this caused the rover to continuously skip to the next command in the sequence, which left us standing still.

There is some good news though. Tomorrow, we’ll be testing again in a demonstration program. This will allow us to vet some of our other systems. There will be no rules for this demo, so we should be able to perform a complete cycle.

I’ll have some more updates and pictures tomorrow. However, more sleep is needed at this particular moment in time.

1 The maximum weight allowed was 70kg

(cross posted from http://csmnerds.com/2008/08/02/fail-sauce/)

0

Alumni Profile: Andrew Ferguson ’04

Over winter break, I had a chance to talk with Michael Fiorito, a faculty member at Seattle Academy (where I went to high school). He asked me to write a “synopsis of [my] scholastic and internship experiences for the alum newsletter.” The profile I wrote was just published in the Summer 2008 edition of After SAAS. The following is the original article I sent to Michael and is slightly different then the version published in After SAAS.

I graduated in June of 2004 and spent the summer having fun (as opposed to working). I started at the Colorado School of Mines in the Fall of 2004 and I’ll be graduating in May of 2009 with a Bachelors of Science in Engineering with a Specialty in Electrical Systems and an Area of Special Interest in Mechanical Systems.

I interned in the IT department at Nordstrom in Downtown Seattle the summer after my freshman year. It was a great experience and a great primer for working in the “real world.” Contrary to popular belief I was not a secretary and did not have to fetch coffee and make copies for the higher ups. My time at Nordstrom was spent helping with the 4th release of the Point-of-Sale system and included everything from helping run tests after the builds were updated (called smoke testing) to creating a database to help coordinate the nationwide training process to creating materials for the training processes.

I went back to school and studied some more. I was also the Chief Engineer for Mines Internet Radio, a new club on campus that was formed to broadcast music and sports games to students, parents, faculty, alumni, et al. We received funding from the school and I spent a large majority of my free time setting up computers, a server, remote broadcast system, website, and all the other things that fell under the per view of the Chief Engineering (which, as it turned out, was a lot). I also applied to, and interviewed with, the CIA; although I did not get in (they rarely accept students who are not juniors or seniors). However, an internship at Boeing ended up finding me. So the summer after my sophomore year, I worked at Boeing at Kent Space Center in Kent, Washington for the Integrated Defense Systems division (side note: the Lunar Rover was built in the building next to where I worked). I was tasked with writing code for a pending upgrade to the United States Air Force AWACS (Airborne Warning And Control System) fleet. In a word, the experience was: phenomenal. I had a fantastic mentor, an excellent boss, working at a fantastic job, doing something exciting.

I went back to school again, studied even harder and decided to come back to work for Boeing again (at the end of the previous summer, they had invited to me to come back again and placed me on Educational Leave of Absence). So I came back to the same group (USAF AWACS upgrade). But software programming wasn’t my thing. I had made this known at the end of last summer and on my last day, I asked what my other options were. I sat in on a meeting with the Mission Computing Hardware group and so I made my home there for this summer. My job this was a lot more interactive. I designed, updated, marked up Interface Control Documents (large drawings and documents that show where cables connect to, what type cable it is and what type of connector is needed). I also was tasked with selecting some of the hardware for the AWACS. Again, I had a great time and learned even more.

I’m now a non-graduating senior (4th year) with the end in sight. I left Mines Internet Radio at the end of last year to pursue other endeavors and I’m currently involved with a team on campus that is working on building a rover for a NASA contest to scoop up 150kg of lunar regolith (moon dirt) in under 30 minutes. I’ll be taking a three week field session this summer (a requirement to graduate from Mines) and then heading back to Boeing where I’ll work with the same group, but a different project which is to be determined.

Other things of note:

  • The summer after my freshman year, I spent a weekend (and then some) participating in a 72 hour film competition. I started out as an assistant and ended up editing the film when the other editor left. We won the Audience Award for our entry “No Witnesses”.
  • I’ve entered several photos over several semesters in our schools art shows.
  • I maintain a blog, https://www.andrewferguson.net, where I write several times a week.
0

MediEval Days – EDays 2008 Roundup

I was going to post this over the weekend, but I ended up writing my paper instead (which I’ll post as a serial soon). I also appologize for the length of this post. It’s a little on the long side, but I packed it with some pictures and graphs for all you ADD kids. So here’s the much belated EDays 2008 post:

I’ve been shooting EDays for about 3 years now and it’s one of my favorite things to shoot. It’s three days of non-stop action with little sleep and lots of variety. Over the three days of shooting, I got about 11 hours of sleep. But I took 1190 photos and only 456 made the decent cut (38% isn’t actually half bad). Of those, I think there’s less then a dozen (about 1%) that I really like (and you’ll see those in a few months when I do my next round of inductions into my portfolio.

But, I still wanted to do something fun and different this year, so I rented a lens. In my current setup, I have a:

  • 18-70mm
  • 70-300mm
  • 50mm f/1.8

…all Nikkor.

I decided that going with a small focal length lens, somewhere on the order of 10-18mm, would be ideal to rent. The first thing I did was find places to rent from. In the greater Denver area, I found Mike’s Camera Store and Camren Photography.

Mike’s didn’t have any Nikkor lenses with a small enough focal length, so I was able to narrow the selection to the DX 10.5mm f/2.8 AF-S G and DX 12-24mm f/4.0 AF-S G.

Both those links go to Ken Rockwell’s site. He does what I believe to be the best and most useful review of lenses. When I get an aching to buy a lens, I pretty much always head over to his site and see what he thinks.

Based on data from Wikipedia on viewing angles, I whipped up this graph that shows viewing angle as a function of focal length:

DSC_3081 (by Mr Ferguson)

I found it very interesting that relationship isn’t linear, so I opted to go with the smallest focal length to get the most “bang for my buck.” That and I’ve always wanted to shoot with a fisheye.

So I rented the 10.5mm for two days and since Camren Photography isn’t open on the weekends, I got it for four days (for the price of the aforementioned two days).

Here’s a breakdown my day of the lens I used, how many photos I took with each lens, and how many photos with each lens (by day, again) ended up making the cut. Numbers above the zero axis are photos taken, numbers below the zero axis are photos that made the cut.

DSC_2267 (by Mr Ferguson)

When I edit photos, I ask myself three things: Do I like it, does it tell a story, and does it move the story along. If it doesn’t meet all three of those criteria and I can’t make it meet those three criteria, then I dump it.

That’s why there is a lot of atrophy on the lasts days pictures. I tend to take a lot of photos of action shots (because you can’t predict everything) and then severely whittle them down to ensure the story continues.

Shooting the fireworks was absolutely amazing this year. Having the wide angle lens allowed me to get all of the fireworks and often times the crowd (at least for the non-aerial shots). Many people thought that this has been the best show since 2004.

Norm Zehr (L) and  Al Ireson (R) (by Mr Ferguson)

The alumni panel was pretty interesting. I wish I could have stayed for the entire thing, but I had to race over to shoot Deanne Bell from Smash Lab. If you’ve ever seen Smash Lab, you know that Deanne is very animated when she talks. I had a blast photographing her while she presented.

DSC_2626 (by Mr Ferguson)She also had a great slide about her life philosophy that I thought was pretty spiffy as well and worth mentioning here:

  • Surround yourself with people who love what they do and are damn good at it
  • Don’t get too comfortable
  • Suck it up sometimes
  • Be confident and persistent
  • Imagine the impossible

The concert was also pretty good. The music was okay. I think that I Hate Kate should have headlined instead of Goldfinger (who enjoys listening to 40 year-old emo has-beens?). Learning from last year, I talked with all the bands and CSC before hand to get the rules for this show. All three bands were very fine with me taking picture throughout. Wes, the CSC supervisor, was also very helpful and nice, especially when compared to their performance last year.

Here are some notes I made while editing; mostly for my reference, but you may find some use as well:

  • Don’t use a flash during concerts (or anywhere else where there is non-white light), it destroys the Look and Feel (LnF).
  • When nothing is going on (relatively), posed shots always win over bland.
  • Using a fisheye makes it bit harder to crop since the distortion is uneven across the plane.
  • I need to shoot with a faster shutter more often.
  • Talk with the comics before hand. This will ensure that you don’t tick them off and that they don’t make fun of you.

DSC_2431 (by Mr Ferguson)

I’ve also come up with the official checklist for a good EDays:

  1. Are you drinking, drunk, and/or hungover?
  2. Are you sleep deprived?
  3. Are you sore?
  4. Do you have a sunburn?
  5. (Bonus) Did you meet attractive members of the opposite sex?

Answering “yes” to all of the questions means you had a good EDays.

0

Study Abroad Update

  • Mines

I’ve actually needed to write this post for a while now. Nobody really ever asked about it, so I didn’t feel a particular need to write it.

And there’s the fact that I’m still in Colorado, so it should go without saying that I never did study abroad.

But let me back up a bit.

I did a lot of investigating, but things really didn’t fall into place the way I wanted them to. This year has been a rather vigorous year and I ended up deciding around November of 2007 that it made more sense to stay at Mines then study abroad.

However, I have not given up on my dream. At the very least, I will spend some time abroad. However, I am also hoping to work abroad as well, using three day weekends to purchase preciously cheap tickets from local airlines.

Insert cheesy joke about studying several broads instead of just one here.

0

Discernment

I had a post a couple weeks ago regarding callings…the holy kind. I think Jeff Staples’ comment was the most helpful:

One of my favorite professors here says that discernment is about the intersection of three things. Discover what brings you joy. Discover what you’re good at. Discover what the world needs. The intersection of those three things at any given moment is your calling. If (as I think you might be) you’re choosing between two good options, listen to where your desires are strongest and deepest. I think God wants us to be most fully ourselves, so I think that for some people emotion may play a significant role in the decision-making process, and I don’t think that’s necessarily a bad thing.

At the end of the day, knowing what you’re called to do means knowing who you are. It’s not a one-time deal, based on an isolated decision that impacts the rest of your life. It’s about living in a way that is in touch with your real identity, and the more you understand about that the more all of your actions and decisions are just an extension of yourself.

Kind of a ramble, let me know what you think or if it was helpful (or not).

The paraphrase originated from Father Michael Himes, a professor of theology at Boston College (where Jeff goes to school if you didn’t make that connection). Jeff was able to give me some more information about Father Himes thoughts: Three Keys to Intersection and a book Doing the Truth in Love: Conversations About God, Relationships, and Service.

I read the web page and I requested the book be sent over from Regis (they were the only library which had the book which makes it rather fitting I think).

I really like the concept of Three Keys to Intersection. I’ve know what I wanted to do for a long time now. It what brings me joy, which Himes differentiates from happiness because “[joy]comes from within and has to do with a deep and abiding sense of the rightness, the goodness, the fruitfulness of what you do with your life” whereas happiness “often depends on external things, your physical well being, the weather, whether you had a good night’s sleep or a good meal.” I think the joy/happiness differentiation also helps explain my love/hate paradox of Mines. In any event, the current thing that brings me joy is working on space exploration and that’s what I am doing and that’s what I’m going to continue to do for now.

I suppose it helps that I’m good at what I do, at least in theory. Himes also notes that knowing what I’m good at may not be a cut-and-dried answer and that there are people in my life who might be able to use to act as a mirror.

The final key to the puzzle is need. Not what I need, but what others need. To me, this seems like a “no duh” point, but I see people making this same mistake all the time and I pretty sure I’m not immune to it either. You could probably fill entire encyclopedias with stories of young and hot programmers who couldn’t just wait to code something, only to find out that it was something that nobody wanted.

That brings me to the Venn diagram I made up and included above. It has all three aspects: Joy, Ability, and Need. The intersection of those three circles is my target — my calling.

There’s a fourth point worth noting as well. What brings me joy, the abilities I have, and what the world need are all constantly changing. “We are constantly searching, not just for answers to our questions, but for new questions. We are explorers. We explore our lives, day by day.” 1

There’s a reflection part of the Three Keys to Intersection. One of the questions asks:

Perhaps you now find yourself entertaining several life choices. That would not be surprising at all. Vocational discernment is an evolving process, a journey. Your goals may change several times as you try out some choices and learn more about the match between your passions and the world’s needs. But do you feel that you are growing in possession of the kind of knowledge that will enable you eventually to narrow down these choices in the future or to figure out how to combine them?

1 See https://andrewferguson.net/2008/01/22/constantly-searching/

0

CSM Wellness Day

  • Mines

It’s been three years since I went the CSM Wellness Day events and been checked out. I figure this would be a good year to see how my health is doing:

  • 15.6% Body Fat – This is ideal for my age, gender, and weight
  • 4.54 Liters Forced Expiratory Volume (amount of air exhaled in the first one second) – 104% of predicted
  • 5.73 Liters Forced Vital Capacity (lung capacity) – 113% of predicted
  • Ratio of FEV1/FVC – 74% of predicted (this means I have trouble getting air out of my lungs)
  • Fusional Ranges:
    • 21.12 BI Break (Normal: >= 10 diopters) – Pass
    • 12.86 BI Recovery (Normal: >= 6 diopters) – Pass
    • 40.41 BO Limit Without Break (Normal: >= 20 diopters) – Pass
    • 40.41 BO Recovery (Normal: >= 16 diopters) – Pass
  • Accommodative Facility
    • Right Correct: 100.00% (Normal: >= 80%) – Pass
    • Left Correct: 100.00% (Normal: >= 80%) – Pass
    • Average Cycles/Minute: 30.17 (Normal: 12 Cycles/Minute) – Pass

I also have really, really flat feet. The flattest feet of the day so far with almost no arching. I have some basic arch support insoles for my shoes, but I may need to get some real, custom fitted ones.

I didn’t get my blood pressure checked this year, but every time I do I’ve always been told it’s excellent.

0

For Rent: Students From NATO Countries Only

0121080828 (by Mr Ferguson)

If you overlook the fact that this violates the Federal Fair Housing Act1, it’s kinda funny at first.

After a bit more thought, it becomes less funny, especially when you consider the fact that many of the International Students at Mines are from the Middle East, none of whom are part of NATO.

You can examine the advert yourself down at Higher Grounds Cafe.

1 U.S. Code Title 42, Chapter 45, Subchapter 1, Section 3604 (b): “To discriminate against any person in the terms, conditions, or privileges of sale or rental of a dwelling, or in the provision of services or facilities in connection therewith, because of race, color, religion, sex, familial status, or national origin.”

0

Combination Lock

I have a long standing desire post my school work online. There are a couple reasons for this:

  • I usually work too long and too hard to just turn it in to teacher
  • I believe that by posting my work, I will help others

There is always the concern that someone may just cold spike it1, but I think the benefits are clearly present.

Now a slight tangent on “cold spiking.” I just now looked it up on Urban Dictionary:
From www.urbandictionary.com:

cold spike

To copy homework with no understanding of how to do it. Typically accomplished in the 10 minutes before said homework is due.

Originates from the Colorado School of Mines, where cold spiking is so revered that every year they award a prize for the best spiker.

Hey Jeremy! Let me cold spike your thermo or I’ll beat you bloody.
by Spjorkster Mar 10, 2005

A couple thoughts: I don’t know who “Spjorkster” is. I don’t cold spike; it’s stupid and I rather not turn in the homework. The term has been around since at least 2005, that’s amazing.

So now the project. The object reads:

The objective of this take-home project is to design and implement an electronic combination lock. The combination lock is to have a start-up combination code of 1-2-3-4 that MUST be changed immediately upon first-time activation. Furthermore, if the new combination code has three numbers all the same then an error message is to be sent and a different code has to be entered as the combination. Each number in the four-number combination code is to be an eight-bit vector.

The requirements are thus:

The combination lock design MUST be implemented as a state machine (using VHDL), with a minimum of three states: open, lock, set_combo. More that three states may be used (may or may not require greater than 3 states). The outputs should include a lock signal, indicating that the lock is currently locked, an open signal indicating that the lock is currently unlocked. The data inputs are to include the combination code (for when setting a new unlock code.) Additional there is to be a mechanism for resetting the entire circuit. Plus your design is to handle the succession of three wrong guesses at the combination by going into a security mode in which the initial code (1-2-3-4) followed by the entry of the correct code is required to unlock the lock. In your simulation waveforms, you MUST display the state variable (this will display the states traversed in setting, locking and unlocking the combination) along with the inputs and outputs.

There must also be at least four cases in which the combination is incorrect and at least three cases in which the combination is correct. And there is to be a string of three consecutive wrong attempts to unlock putting the circuit in the the security mode in which the initial code (1-2-3-4) immediately followed by the entry of the correct code is required to unlock the lock Remember to include in your report all schematics and/or VHDL code, simulation waveforms and state diagram/table.

Doing this all in VHDL isn’t as painful as I thought, but it was still very painful. I think the only thing I hated programing more so far was threaded tasks in Java. The idea of using states is somewhat similar, but not the same functionally.

Here’s the plan in a nutshell:

Yes, I did that state diagram. Isn’t it pretty?

Here’s the code:

LIBRARY ieee;	
USE ieee.std_logic_1164.all;
USE IEEE.STD_LOGIC_ARITH.all;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY combinationLock IS
	PORT(	Clock, Reset		: IN		STD_LOGIC; -- use positive logic for the reset
			w					: IN		STD_LOGIC_VECTOR (1 DOWNTO 0); -- user action: 00 is no action; 01 is action; 11 is lock
			a					: IN		STD_LOGIC_VECTOR (7 DOWNTO 0); -- digit a input
			b					: IN		STD_LOGIC_VECTOR (7 DOWNTO 0); -- digit b input
			c					: IN		STD_LOGIC_VECTOR (7 DOWNTO 0); -- digit c input
			d					: IN		STD_LOGIC_VECTOR (7 DOWNTO 0); -- digit d input
			aCode				: BUFFER	STD_LOGIC_VECTOR (7 DOWNTO 0); -- code of the first digit
			bCode				: BUFFER	STD_LOGIC_VECTOR (7 DOWNTO 0); -- code of the second digit
			cCode				: BUFFER	STD_LOGIC_VECTOR (7 DOWNTO 0); -- code of the third digit
			dCode				: BUFFER	STD_LOGIC_VECTOR (7 DOWNTO 0); -- code of the fourth digit
			unlockAttempt		: BUFFER	STD_LOGIC_VECTOR (1 DOWNTO 0); -- to keep track of how many attmpts have been made to unlock
			isLock				: OUT		STD_LOGIC; -- is the safe locked
			isError				: OUT		STD_LOGIC); -- is there error -- both lights on indicate in combo setting mode!
END combinationLock;

ARCHITECTURE Behavior OF combinationLock IS
	TYPE State_type IS(SET_COMBO, LOCK_OPEN, LOCK_SECURE, SECURITY_MODE);
	SIGNAL y : State_type;
	
BEGIN
	PROCESS( Reset, Clock)
	BEGIN
		IF Reset = '1' THEN
			aCode <= CONV_STD_LOGIC_VECTOR(1,8);
			bCode <= CONV_STD_LOGIC_VECTOR(2,8);
			cCode <= CONV_STD_LOGIC_VECTOR(3,8);
			dCode <= CONV_STD_LOGIC_VECTOR(4,8);
			y <= SET_COMBO;
		ELSIF (Clock'EVENT AND Clock = '1') THEN
			CASE y IS
				WHEN SET_COMBO =>
					IF (w(1) = '0' AND w(0) = '0') THEN
						y <= SET_COMBO;
					ELSIF (w(1) = '0' AND w(0) = '1') THEN
						IF ( ( (a = b) AND (b = c) ) OR ( (a = c) AND (c = d) ) OR ( (a = b) AND (b = d) ) OR ( (b = c) AND (c = d) ) )THEN -- three numbers are repeated -- ----- 
							isError <= '1';
							y <= SET_COMBO;
						ELSE -- program new code
							aCode <= a;
							bCode <= b;
							cCode <= c;
							dCode <= d;
							isError <= '0';
							y <= LOCK_OPEN;
						END IF;
					END IF;
								
				WHEN LOCK_OPEN =>
					isLock <= '0';
					unlockAttempt <= CONV_STD_LOGIC_VECTOR(0,2); -- reset the security lockout
					IF (w(1) = '0' AND w(0) = '0') THEN
						y <= LOCK_OPEN;
					ELSIF (w(1) = '0' AND w(0) = '1') THEN
						y <= SET_COMBO;
					ELSIF (w(1) = '1' AND w(0) = '1') THEN
						y <= LOCK_SECURE;
					END IF;
				
				WHEN LOCK_SECURE =>
					isLock <= '1'; -- set the lock indicator
					isError <= '0'; -- clear all errors because it's locked now
					

					
					IF (w(1) = '0' AND w(0) = '0') THEN
						y <= LOCK_SECURE;

					ELSIF ( w(1) = '0' AND w(0) = '1') THEN
						
						IF (unlockAttempt = CONV_STD_LOGIC_VECTOR(0,2) ) THEN
						
							IF (a = aCode AND b = bCode AND c = cCode AND d = dCode) THEN
								y <= LOCK_OPEN;
							ELSE
								unlockAttempt <= CONV_STD_LOGIC_VECTOR(1,2);
								y <= LOCK_SECURE;
							END IF;
							
						ELSIF (unlockAttempt = CONV_STD_LOGIC_VECTOR(1,2) ) THEN
						
							IF (a = aCode AND b = bCode AND c = cCode AND d = dCode) THEN
								y <= LOCK_OPEN;
							ELSE
								unlockAttempt <= CONV_STD_LOGIC_VECTOR(2,2);
								y <= LOCK_SECURE;
							END IF;
						
						ELSIF (unlockAttempt = CONV_STD_LOGIC_VECTOR(2,2) ) THEN
						
							IF (a = aCode AND b = bCode AND c = cCode AND d = dCode) THEN
								y <= LOCK_OPEN;
							ELSE
								unlockAttempt <= CONV_STD_LOGIC_VECTOR(3,2);
								y <= SECURITY_MODE;
							END IF;
							
						ELSIF (unlockAttempt = CONV_STD_LOGIC_VECTOR(3,2)) THEN
								y <= SECURITY_MODE;
						END IF;
					END IF;
						
				
				WHEN SECURITY_MODE =>
					IF (w(1) = '0' AND w(0) = '0') THEN
						y <= SECURITY_MODE;
					ELSIF (w(1) = '0' AND w(0) = '1') THEN
						IF(a = CONV_STD_LOGIC_VECTOR(1,8) AND b = CONV_STD_LOGIC_VECTOR(2,8) AND c = CONV_STD_LOGIC_VECTOR(3,8) AND d = CONV_STD_LOGIC_VECTOR(4,8)) THEN
							unlockAttempt <= CONV_STD_LOGIC_VECTOR(2,2);
							y <= LOCK_SECURE;
						END IF;							
					END IF;
			
			END CASE;
		END IF;
	END PROCESS;
END Behavior;

In all states (except Reset, which isn’t defined as typical state), ’00’ is used to stay within the state. ’01’ is used as an action key and ’11’ is used to lock the device (as noted with comments within the VHDL code). isError is ‘1’ when a user has entered a new invalid combination (any combination with where 3 digits are the same). Security Mode is entered when three unsuccessful attempts have been made to unlock the device. When this happens, the Security Mode-state is entered and the user must enter ‘1 2 3 4’. When this happens, the user is sent back to the Lock Secure-state and is granted one try before being kicked back to the Security Mode-state. However, if the attempt is correct, the user is sent to the Lock Open-state where they can change the combination or lock the device again.

Here’s the schematic:
schematic.PNG

…and the waveforms, which shows that it does indeed work:

waveform_0us.PNG
waveform_2us.PNG
waveform_4us.PNG
waveform_6us.PNG

Note: realACode, realBCode, realCCode, realDCode, realUnlock[1] and realUnlock[0] are debugging variables used to ensure that the device is working properly during testing. real*Code is used to display the stored combination code and realUnlock[*] is used to count how many attempts have been tried to unlock the device.

All in all, pretty cool. Minus the nine hours or so it took to do it.

1 Amanda turned me on to this phrase.

0

Boston: Day Two

Note: This actually took place 10/14/2007. I’m just super busy and haven’t been able to get it all typed up until now.

The following takes place between 6ampm and 2am, Boston Local Time:

Three hours of sleep is not near enough. Fortunately, it was race day and the adrenaline began rushing soon after the alarm went off. We were all out by 6:40am and had Colin dropped off around 7am.

We drove to the prime spectating spot and then found a Dunkin’ Donuts for breakfast.

DSC_0835 It wasn’t long before Colin made his first appearance. I think he took us all by surprise since when had no idea where he was in the pack. Jeff, Tim, James, and Elizabeth were ready with Gatorade, goo, and change of clothes. I stood back a bit with the camera.

DSC_0847 Colin shed his hat and jacket and kept on running. It would be about an hour before we saw him again. Elizabeth, with some input for others, made a hilarious sign for Colin.

DSC_0865 The next time around, we were a bit more ready. Gatorade and goo hand off, plus a little bit of running along by Tim.

DSC_0852 As we later learned, Colin never notice the sign. Which is unfortunate because it’s awesome.

Once more around the loop for Colin. Tim and James when a couple miles down the way to prepare for jelly bean dispensing (pure sugar for a quick energy boost). Meanwhile, Jeff, Elizabeth, and I moved across the bridge for the third meeting.

DSC_0941 Colin was looking good. The last Gatorade and goo handoff when without a hitch and Colin was on his way. The three of us jumped into the van and drove to the finish line.

Traffic was hectic near the end. With streets blocked off, runnings in the road, and bridges closed, it was near impossible to get around. Jeff dropped Elizabeth and me off near the stadium where the finish line was. We started into the arena when I saw Colin passing me on my left.

Not wanting to miss him finishing, I took off in a dead sprint to beat him into the stadium. Unfortunately, I had no idea where I was going and was almost bear hugged by a volunteer to prevent me from racing onto the field.

DSC_0984 I back tracked a few paces, whipped out my camera and had plenty of time to capture Colin crossing the finish line.

DSC_1001Colin recovered pretty quickly. We doddled around the stadium for a while, took a group picture to commemorate Colin’s Boston Marathon Qualifying Time, and then headed back to BC.

I had a nap on the way back since I was dead tired.

We had dinner when we got back; which reminds me that BC has pretty fantastic dining service. It’s frustrating that Mines is locked into Aramark, because they do a pretty shitty job. This, however, is a topic for another day.

To cap of the day, Jeff and I went to Mass. I think I’ve only been to Mass once before, and that was for Stephanie’s High School Graduation. My Mom’s cousin was married this summer and they had a Catholic wedding, but no Mass (although we all bet heavy money that there would be one).

0