in || on

The autobiography of Rachel Lydia Rand

© 2018-2023 Rachel Lydia Rand
All Rights Reserved


"But the oaks can't help their feelings
if they like the way they're made." -bubba


I played jazz trombone in the US Navy for 7 years during the 90's. While I was in the Navy, I studied drums, slap bass, and piano. I also got up to speed with computers and hard disc recording. Right after Y2K, I left the Navy to move back to the west coast to make solo music recordings and websites. You can hear the music I was making at that time by going to the music page and clicking on the "Vintage" button.

Between 2000 and 2003, I got involved in a couple dead end and unreasonable jobs. I was living in cars/vans and couch surfing during that time. This story picks up in the summer of 2003...

On the Streets

Just before the 4th of July in 2003 I was running out of gas. I hadn't had a place to live since I got out of the Navy in the summer of 2000. I failed to become a music teacher. My recordings and websites weren't getting me anywhere. I had 3 jobs over the years. I had worked as a courier, in cable installation and at a pizza place. All jobs failed because of unreasonable circumstances. I had made several albums of music and corresponding websites with varying success. I had been couch surfing and living in my van. I had sold off most of my musical equipment for food and gas.

I had driven from Portland to Seattle, but my Dodge Caravan had a problem. It was some kind of transmission problem. I had to keep the engine running at 2,500RPM or it would die. It's an automatic vehicle so the only way to stop, was to put it in neutral. I was fine when I was on the freeway and I made it to North Seattle. Then I got off the freeway.

It was really challenging. I was coasting to a stop in neutral, revving the engine at the stoplight and then pealing out when I put it back in gear. And to top it all, there was some kind of abnormal holiday traffic going on and it was bumper to bumper. Very stressful.

It was so frustrating, it was the last straw. I turned out of the pack of cars right in front of a Dodge dealership right on the highway and turned her off. The engine was red hot and overheating. It caught on fire. I was like “perfect, you're home!” I got out and opened the sliding door. There was the large comforter my aunt Mary gave me and there was my well used HTML4 book with all the pages coming out. Well, I decided I didn't need that book anymore; I had most of it memorized. I grabbed my backpack and some clothes to go live on the streets. I was really homeless now.

I had lived on the streets for a couple short stretches before, but this was different. No going back now. But wow, I was so scared of this moment, but when it happened, I just felt relief. No more trying to find gas money. No more sleeping in the van in neighborhoods trying not to be noticed. On my two feet with a backpack and the weather was nice. It did feel good.

I had been getting into computer programming since I was out of the Navy. I was pretty good at programming in Flash and Flash was becoming a big thing. Flash 5. I had made the Laser Grid program. I had made a music loop mixer with 12 buttons that was in effect a moveable toolbar. But now I don't have a computer.

I spent the summer relaxing and getting used to being on the streets. The weather was nice and I had clear sky above me. I think I ditched the backpack pretty quickly. I just had my toothbrush, toothpaste, floss and nail clippers with me. The first few days I was picking up half smoked cigarettes out of ash trays. I realized pretty quickly that they tasted nasty. I told myself “You're homeless, you have no business trying to smoke. Don't be one of those homeless people begging for money to buy a smoke.” A lot of my addictions simply died that day. That was a good conscious decision to make.

I spent most of my time around Westlake Center Mall, Pike Place Market and the Space Needle. I had a food stamp card that allowed me to buy $150/month of uncooked food. $5/day. It was tough, but I learned from a thief years ago that you can live on candy bars. You need calories when you are walking around all day and it is hard to get enough calories on $5/day. I liked eating dry Top Ramen noodles too and they are packed with oil and calories.

I had my pennywhistle with me with a hemp cord around my neck. It was pretty slick just hanging from my neck like that. It was a blue Acorn pennywhistle. I called it my lightsaber. I played 12 tone pennywhistle by half-holing to get the notes in between the 7 notes that it can play. It's tough to play that way. I'd play all the jazz standards I knew and whatever I wanted basically. Just couldn't play very fast. I noticed that the grates in the streets in Belltown by the Space Needle make a C# sound (just like the programming language) and I would use that as a drone to play over.

The Seattle Hempfest happened down in the park and I went there for that. I played nice pennywhistle with some hand drummers. I took my shoes off because I had been wearing them constantly. Then I turned around and my shoes were gone. Great, homeless without shoes.

I walked around for a week without shoes. My feet were a mess. One day I was walking up in the park by the museum on Capitol Hill. I got a sliver in my foot and I was walking funny on a path. There was this guy that looked exactly like the Dalai Lama and he offered me some tweezers. Nice, that did help and it was a cool experience to have. Tweezers are nice if you have them, but I've never felt like they are an essential and still don't. Toe nail clippers with a pointy file are an essential though. Yes, you can just bite your nails, but I fixed that habit in my 20's sometime. Jayne taught me how to manicure my cuticles. I did keep my fingernails nice on the streets and brushed and flossed every day.

I was terrible at panhandling. I never made more than a couple bucks in a year doing that. It started getting cold in October. I was playing my pennywhistle on the streets with a hat out. I did manage to make $60 in two weeks doing that. I told people I was saving up to buy a trombone. Just mainly playing the melodies to jazz standards. Twelve tone pennywhistle. It eventually got too cold to play like that. The cold wind was really whipping through downtown. I was freezing and not prepared for that cold.

I wound up at Adriana's for November and December. I slept on the living room floor and worked full days on my programming. I became obsessed with the idea of making a game like Atari's Centipede where you could move all over the screen instead of being stuck in the bottom part of the screen. And shoot in all directions. Flash had the hitTest() function and people were making games with that. But hitTest() is very limited. It just tells you if one object is on top of the other. It gives you no information about where the collision happened. And if you are going fast enough, you may just skip over the object entirely. No, hitTest was not good enough to make a proper game. What I wanted was real collision detection.

Around Christmas time of 2003, I was obsessed with making collision detection. If I was going to get a job programming, I would have to do some big project like this. I had been answering ads on Craigslist. I almost got a job that month coding a lens flare, but I didn't get the gig. I was using math, ratios specifically. I had made a demo of this that kind of worked. About this time, I think it was New Year's Eve, Adriana kicked me out. So I grabbed my sleeping bag and a briefcase for my paper work and went to Jim's on the other side of the fence. I used Jim's phone to call my lifelong friend Sam. Sam said that I could stay with him, but I'd have to wait a few days to get a bus ticket; they were all full because of the holiday. Jim said that I could stay with him until I could get a ticket. OK, I had a plan.

So I sat down at his kitchen table with my paperwork. I was really close to proving whether this collision detection with ratios could be done. And then Jim just keeps talking to me. I told him repetitively to leave me alone, I had work to do, but he wouldn't shut up. I just couldn't take it, so I left. I went up to the store, it was dark by this time and I worked out my math on paper on the picnic table until I had proven it. And I did, my math said that I can make this collision detection using only ratios. Pretty groovy. So then I started out the long walk to Seattle in the slushy snow with my sleeping bag and briefcase.

A cop stopped me on the way out of Snohomish and asked me what I was doing. I was excited because of the math and I said “I'm going down to Seattle to live on the streets and make a video game.” He said “Sounds great, just make sure you keep going because you can't stay here!” Nice.


It was cold and snowy, but I had lots of clothes on, a thick jacket, a scarf and a sleeping bag. I had my briefcase with my essentials including two lightsabers (pennywhistles, green and blue) and a slinky. The briefcase was one of the thicker ones so I could hold a lot of stuff. I used the briefcase as a pillow and kept my hand on the handle when I slept because I didn't want anyone to take it from me. I usually slept petty good on the streets unless it was really cold out. On those days you just shiver until 3am and then walk to keep warm. I went to the library when it was open. It was quite a hike from the library to the store and I couldn't carry much food with me, so it was pretty much a daily trip. The store was by the Space Needle and the library was downtown. It was the old library, they were almost done building the new one.

I spent a few weeks working out the collision detection on paper. I was getting frustrated because it was a lot of math. I was feeling like there had to be an easier way. I had taken trigonometry in college, so I decided that it was time to brush up on my trig. So I go to the math section. This is kind of the best kept secret of Seattle, but here it is. In the math section there was a small green trigonometry book with a canvas cover called Plane Trigonometry and right next to it there was a slightly larger blue book with a canvas cover on Calculus. I read the first page of the Calculus book. It said that the main point of Calculus was to determine the area of an odd shape by methods of exhaustion. Well, I have no need for that in my video game of course. I knew I was after the trig book, but that did look like a good calculus book.

So there I was up in the middle of the night on the sidewalk studying trigonometry. Trig is a little tricky in the beginning. I think I got a C in it in college. I certainly didn't retain it. The green book was good. I didn't have a calculator, so I used the tables in the back of the book. I realized that the numbers .5, .522 and .707 were important. I was trying so hard to “get my bearings straight” about those numbers. I was dreaming about them. I was playing the mad scientist role on the streets. Then I finally got it! I woke up in the middle of the night and said “.522 is the circumference measure around the circle to 30 degrees and .5 is the sine of 30 degrees!” I get it! .707 is th length of the line if you go straight up to 45 degrees, the sine OR cosine of 45 degrees. .866 is the sine of 60 degrees, which is the lenth of the line straight up to 60 degrees. So there it is. That's called getting your bearings straight.

PI is the circumference measure around the circle. Like wrapping a radius around the outside edge of the circle. There are 3.14 radius wrapped around the circle in a half circle. Since half the circle is 180 degrees, a third of the way around the circle is 60 degrees. So 60 degrees is just slightly more than one radius wrapped around the circle. All these numbers, .5, .522, .707, .866 and PI are of a radius. 3.1418 radius, .5 or half of the radius of the circle. They call it radians. .5 radians. 3.1418 radians. PI radians.

Standard position is an important term and part of getting your bearings straight too. Zero degrees is out to the right, at 3 o'clock. 90 degrees is straight up or 12 o'clock. 180 degrees is to the left and 270 degrees is straight down. Negative 90 degrees is straight down as well and so on and so forth. And then there are quadrants. If you draw a circle in a square, the upper right is quadrant one, the upper left is quadrant 2, the lower left is quadrant 3 and the lower right is quadrant 4. Quadrants really don't matter, but it can be a helpful concept.

It took about 2 weeks, but then I knew trig. Instead of going back to the collision detection, I got interested in mapping 3d space. I wanted to make a webpage slinky with Flash.

I had a slinky with me. I spent a lot of time looking at it and thinking about how to turn it into a mathematical equation with trig. It's a circle. Trig is about circles. But trig is also about triangles. 3 points always make a perfect plane. Plane Trigonometry. I thought, OK, you need to map the slinky coordinates and then you need to view it from a camera or point of view. The camera has coordinates and viewing angles. OK, so mapping out the coordinates of the slinky.

If you are looking at it from above, it looks completely round. I always call height or elevation the z variable and x/y as the “map coordinates”. On a planet, with a sky and ground, you have North and South, East and West. X is East and West, Y is North and South. Zero on Y is the equator or wherever we want center to be. And you know, zero on X is just where we want center to be, a longitude line. OK, that might not be textbook correct, but it makes sense to me.

Looking at the slinky from above, going around the circle we have points along the circle. Dots. Perfect, I'd been using dots in my musical weirdness for years. I'll make it with dots! So you use trig to plot the x/y position around the slinky. It is more than one rotation, it keeps on going round and round, but the x/y for each dot is the same for different heights going around the slinky. For every dot around the slinky, the z becomes a little bit less.

OK, well, you get the idea. I went to Adriana's and coded the slinky easily. I put it on my Tubespace website and went back to the streets. I was feeling pretty good. It was starting to get warmer out and I was making good progress with math. I made some other dot objects and then got back to the business of collision detection.

Collision Detection

I was going through a lot of notebook paper. I would buy the loose leaf paper packs of 150 sheets for about $1.50. I just had one pen. It wasn't hard to not lose my pen, I Just had it in my briefcase. I would go to Adriana's every month or so to enter my work into the computer to see if it actually worked. I would spend about 2 days there. I'd do my laundry and take a shower. I'd do some cleaning in the apartment and she would give me $5 that I would use to buy paper and a bus ride back to Seattle. It was the only shower and cleaning that I got.

Sometimes I would wake up on the streets to find a couple twenty dollar bills next to me. Those were great days. I'd go to the little deli a couple blocks from where I was sleeping and get an egg salad sandwich and Henry Weinhard's root beer. Man was that good. It cost about $5 to get that. Most of the time I'd buy two of each. The first day the food stamp money came in I usually did that too, but I had to be really carful to limit that to just once a month. But that is about the best thing you can do for a homeless person. Just lay some money next to them while they are sleeping.

This is the part of the story where Jason comes in. He was a gay guy who offered me a shower a few times. I had several gay experiences in the previous two years. I don't identify with being gay, so at this point I was getting a little tired of it. But the reality is that it is quite possible that Jason was THE ONLY person who was nice to me while I was on the streets. He was likely the guy putting the occasional $20 bill next to me while I was sleeping. He was trying to help me and he was not overtly sexual with me. So anyway, thank you Jason! I'm sorry I was so hard to deal with back then.

So, back to the math. I could now use the trig in my collision detection. Nice! The idea is that we have two rectangles: Us and Them let's call them (I'm a big Dark Side of the Moon fan). If we are to the left of them, then we can only hit their left side.

If we are to the left and below them, we can hit their left side OR their bottom side.

I spent quite a lot of time drawing pictures like these to figure all this out. You see, when you code this, you have to figure it out from any direction. I was using a lot of conditional logic (if/else) in my code. Really, the code was very simple; it was mostly math. Let's use this last image as our base to explain this. We take the top side of US and the bottom side of THEM and call that side “a”. Little a. Big A is angle A and little a is the side opposite of it. All we know is the current position of US and THEM along with their dimensions and the direction we are going (the angle) and our velocity (our speed). From this information we know side “a” if we are below them. From this information, we can calculate side “c” by using the cosecant (reciprocal sine) of angle A times side a. That looks like this:

So great, that was easy and now we know side c. If side c is greater than our velocity, then we have not hit it. If side c is less than our velocity, then we have hit it. I call this “hit or shit!” In fact I use this terminology all over my programming for Boolean (true or false) variables (conditional logic). Hit is true, shit is false. If(hit){} else{}

So, if we didn't hit, then we loop over all the other objects and if none of them are a hit, then we just move and call it good. If it is a hit, then we need more information to see if it is really a hit. We need to know exactly where it hit and to get that information; we need side “b”. We use the side “c” to get side “b”. It is simply b = cos(A) * c.

Using sides a and b, we can now determine where we hit. We'll have to take into account the width of our rectangle which requires more math, but it is all known now. And then we have to work all that out for all the ways we can hit it from different quadrants. It takes some effort to make a computer program with all of that. Trig did make it a lot easier than using ratios though. I'm still convinced that I could have just used ratios.

Then comes “the slide.” Leave it to a trombone player to code a collision detection on the streets that slides! What you do after a collision is important. If we hit it like in this last diagram, then we are sliding to the right, straight to the right. If we hit something, it has to be their left side which simplifies the math. If we make it to the end when sliding and did not hit something, then we are back to moving in our original direction with whatever is left of our velocity. At that point we just start the whole thing over with our reduced velocity. And we keep on looping until we are either totally blocked, by sliding to the right and hitting something, or all our velocity is used up.

One day I got pulled into a long, long line of other homeless people. They were all standing in line at about 3:30 in the afternoon. I assume it was for some soup kitchen or something. I stood there for about 20 minutes. Then it was just like, look, wherever this line leads it is going to be hard to do my work, I'm going back to the library or park bench or at least the sidewalk where I can concentrate. I know I was the exception to the rule. You're probably correct in thinking that homeless people are doing drugs and I had certainly done some drugs in my life. I was completely clean and sober on the streets though. I define sobriety as “giving up the party” and being clean as simply not using. With those definitions I became sober in about 2002. Maybe I was lucky; I had always put working over drugs and made it a point to not hunt down drug dealers. If drugs found their way to me, I was down for trying them, but I'm not going to spend my time trying to find them. That definitely worked well for me over the years. I was primarily homeless because I was an anti-social musician. Musicians need a lot of connections to get gigs. I'm just not good at that. I had hoped to get out of the Navy and be a music teacher, but without a degree and a place to live, that was impossible. Jobs that I got didn't work out. You know, I could have found work, but it takes time to study and that is work too. I wasn't standing still, not in despair. Not blaming anyone for my situation, just on with the business of educating myself in hopes that I'll get into a profession that can support the way I want to live.

I also did the circle/circle collision detection needed to make a pool game. The math is a little more complicated there using arc tangent 2 and the law of sines and cosines. I think I used the law of cosines to do it. It involves solving the ambiguous case. I haven't done it in while and want to get back into it. I also coded a circle/rectangle and rectangle/circle collision detection. That was complicated and basically a waste of time, but it was a challenge and if you need it, you need it. I didn't need it, but I did eventually finish it. I've never used it or really tested it though.

Rebounding is something you can do instead of sliding. The math for that is fun. I do that with circle/circle. I have it coded into the rectangle/rectangle too.

I was thinking a lot about robotics, specifically making a robot barista. Feeding in a cad drawing of the building. The robot is behind the counter so there is no potential of things being around that it doesn't know about. The angles of the arms. The image detection algorithms. Using a special color code on the cups that tells it what size they are. Something easy to pick out in the images. You know, math!

By the end of the spring of 2004, I was a mad scientist on the streets doing a ton of math on paper, but my health was beginning to suffer. The lack of showers combined with the high sugar/oil diet was causing a crotch rot condition. I went to hospitals, but no one was too eager to help me. I did get some suppositories. Kind of a waxy substance. I remember going to an AA meeting (I was convinced I was a dry drunk because of AA) and putting one of these suppositories in. Temporary, minor relief. They were totally laughing at me in the meeting and so was I! About a week before the 4th of July, it was unbearable. It was all I could do to walk to Bill's place in West Seattle. Bill then drove me to my brother's place in Olympia. Then my brother drove me to Portland. I was rolling around in agonizing pain in the back seat of his car. I think he was taking me to Sam's place. By the time we got to Portland, the pain had subsided. I don't remember him taking me to Sam's but that was probably what happened. Sam was not there, so I was just on the streets of Portland then.

I was a mess. I had my paperwork with me, but work was the last thing on my mind. I wound up walking to Cindy's mother's place through the park. She wasn't there, but I waited for her. She showed up in about an hour and let me in. I talked with her a bit. She let me take a shower and gave me some clean clothes. I left my pants on her bathroom floor. I had been wearing black dress pants that had a tight corduroy weave. I always loved those pants. I got them when I was in the Navy. Then she gave me $20 and dropped me off in front of the Portland Rescue Mission. I took that $20 and went to a normal pub and got a 16oz beer and a nice big sandwich. I had been working so hard and just wanted a normal life again.

I waited a few days for Sam to show up. I was feeling a little bit better. I had never lived on the streets of Portland before. I didn't like the idea of being homeless in Portland for some reason. I was sleeping in the bushes near Sam's place just across the river in Vancouver. It turns out that Sam and his family was out of town for the 4th of July. He showed up a couple days later.

Sam said I could stay with him in his basement. That was the plan all along before I did the 6 months of math, but that math changed my life. Glad I did that. What a story!

Sam had some old computers and we were geeking out with computer stuff. We recorded some music using the Reason 1 software. And then I coded my two player, Asteroids type game, Bumper Bubbles in 4 hours.

I used the music I had made for it. The math was the circle/circle collision detection. Instead of copying it from my papers, I just coded it from scratch. I was a trig master by this point. Sam and I were playing Bumper Bubbles in no time.

I stayed with Sam for about a month and a half. Then he finally got me to seek help at the VA.

Off the Streets

I didn't think I had any benefits from the Navy, but it turns out that because I had at least one honorable discharge, I do get some healthcare benefits. The VA tracked down this information and then admitted me to 5C, the mental health hospital in Portland up on Pill Hill. I didn't want to go there. I felt that all I really need was a place to live and a job opportunity. But the other option was going back on the streets. It was a pretty tough decision for me. I chose the VA and they put me in there with the magnetically sealed door. You don't get out until they let you out.

I had all this newly found math running around my head. I was basically creating a 3d gaming engine from scratch on the streets. I would close my eyes and see all the angles and the equations. I asked for paper and pen. They gave it to me so I was like, groovy, back to work. I had a roof over my head and they were bringing me meals. I went to work on my collision detection. I had it all worked out, just need to make a final copy of it.

I was writing with a pen all this time. I don't like the wood feel of the pencils. That dry wood on my skin sends shivers up my spine. You can't erase a pen though. So a page was only complete if it had no mistakes on it. Maybe one or two characters crossed out, but if it was more than that, I would continue on making sure it was all correct and then copy it to a fresh page error free. I was going through a lot of paper and they were pretty much comfortable giving me more paper. I had a desk by the window. There was a morning group where they talked about the plan of the day or whatever. There was an art therapy class. Whatever.

One day while I was writing at my desk, a doctor popped in to look at what I was doing. I explained the whole thing to him and showed him my equations. He asked why I was using if, ifelse, else instead of a switch statement. I had heard of switch statements before, but I had never used one. If/elseif/else does the job. At the end of all my equations was the computer code that moves the "brick" and there is the code that does the loops that you feed the "bricks" into. I'm always more concerned about the business logic of a program rather than the methods of a programming language. But the doctor knew what I was doing and that it made sense. I've heard of stories before about crazy people writing math that doesn't make sense. No, I definitely knew what I was doing and they figured that out.

Some people met with me to form a plan of discharge. Brianna and Jill were assigned to me. They said that because I was living on the streets for a year, I qualified for a HUD program through Central City Concern that would get me my own one bedroom apartment. The problem was that I had lived with Adriana for 2 months in the middle. It had to be a consecutive year. But I was living in a vehicle for 3 years before that. I certainly did qualify as chronically homeless, didn't I?

I was willing to go back on the streets and do my math. They ultimately accepted me into that program. I spent 5 weeks up on 5C. I had my collision detection pretty much completed and they let me out.

I had to find the apartment on my own. They gave me a $500 voucher for an apartment, but I had to find a landlord that would accept this. $500 was on the bottom end of the market, but it was doable. I found a nice 4-plex near where I went to high school on the west side of town. It was right on the bus line. I lived with Sam while I was finding my place. It took about a week.

They had me on anti-psychotic medications while I was in the VA. I certainly was acting weird enough. I was very nervous about everything and doing hard math to “work my way off the streets.” When I got out, I stopped taking the medication. Being on the medication made it hard to do my math.

My brother brought my computer to me and other items I had stashed at my mom's place in Olympia. He also gave me a corded drill. I got good use out of that drill over the years. Brianna was my main counselor after I got out of the hospital and I was required to see her once a week at various coffee shops. I had an Honored Citizen bus pass so I didn't have to pay cash for the bus. I still had my food stamps card. Brianna helped me get a bed and a table and chair. I think it was Bill that gave me a 49 note MIDI keyboard. I ended up recording about 30 minutes of music I called Dot Dot Dot. It had a nice In a Silent Way section in it with an Indian sitar drone. My hard drive ended up crashing, but I was good with making backups, so I didn't lose that recording.

I had met a girl on Craigslist right when I was staying with Sam. Her name is Jan. She lived on the same side of town that I did. Brianna got me an old 10 speed bicycle and I would bike through the hills to Jan's place. I somehow managed to get the money to buy a waffle maker. I was obsessed with waffles. I had a red courier bag and would put the Belgian waffle maker in its original box in the courier bag and take it to Jan's. I loved making those Belgian waffles.

I think I used her computer to type in my collision detection. When I had it entered, this is what I had:

It wasn't working very well, but I knew the math was correct. Computer programming can be pretty difficult. When you are dealing with variables, those variables wind up being a range of values. The equations have to account for whatever values those variables are. Something wasn't right, but it worked some of the time. It was kind of disappointing.

I didn't know what to do after my computer crashed. I needed a computer to make something with my collision detection. I ended up taking a break from work. I was off the streets. I had a warm apartment and my food stamp card. I ended up sleeping a lot. When I caught up on my sleep and got relaxed a little bit, I started reading some books. I ended up reading a book on Theodore Roosevelt. That's how I ended up 2004.


One time when I was on the streets... It was a Sunday morning at about 7am. I was downtown and needed to piss. So I did my usual thing of grabbing a 20oz empty plastic bottle out of a trash can and went to an alley to piss in it. Half way through, a cop car comes down the alley. I finish up as they were getting out of the car and they were getting all huffy. And then they saw that I had a bottle full of urine. Well, that shut them up pretty quickly. They had probably never seen a homeless guy pissing in a bottle before. They mumbled "you can't do that here", but they had no authority anymore.

One day in the spring of 2004, I come back to the place I normally sleep to find that someone had pissed there. I didn't know what to do. Good places to sleep on the streets were not easy to come by. I decided to stay there anyway. I literally rolled my sleeping bag out on the pissed on ground and slept in it. It was the wrong call, but I was just sick of the whole thing. Here I am pissing in bottles and cleaning up after myself and probably some drunk guy pisses on my sleeping area. I just did not have the energy to figure out a better solution.

Once in a while, some tripper kid would give me the end of a marijuana roach. This happened two or three times. I would take the roach and find an aluminum can in the trash. I always kept a sewing needle on me and I would poke holes in the can and have the two or three hits of weed. Then I would sit by the grates in the sidewalks in Belltown and play my pennywhistle to the C# drone. Those were my vacations.

One time on the streets, I just needed a distraction from all the work. I got the 6/4 rhythm of Rush's Big Money in my head. I think I made it back to Adriana's and managed to get an old cassette walkman and a tape of Power Windows. I was really rocking out to that for a week there. Ultimately keeping a walkman with me was just carrying too much junk, but it was fun for a little bit. I also had a tape of Miles Davis' Steamin' with me.

Another time I was having a diarrhea moment downtown at 3am. There was no way I was going to make it the 20 blocks to the porta potty and even if I did, it might be locked. So I did what had to be done, I grabbed a plastic grocery bag out of the trash and took a dump right there in the middle of the square. No one was around anyway.

It felt like there was some trend of college students harassing homeless people. I remember reaching into a trash can once and my hand landing in a pot of grease. Like grease from a fast food restaurant. That was really unpleasant since I had no where to wash up. Another time I woke up in my sleeping bag to find that someone had painted graffiti on my sleeping bag while I was sleeping. I also woke up one morning to find that someone was pissing on me.

At one point I had aquired a ball of hemp twine. I needed some distractions from all the work, so I just started braiding long strings of it. I eventually had a bunch of these and tied them all together and tied my sleeping bag up with them. It had a loop coming off of it that I could put over my shoulder. And then I would loop it through the handle of my briefcase and then I could have my briefcase hanging on one side of me and the sleeping bag on the other without me holding them. It was pretty cool, but it was a little bit awkward.

People often ask me why my family, especially my mother didn't help me out more. I don't have good answers to this. People think you are a down and out druggy and that they would just be enabling you. You know, when I was looking for a job and people would ask about my employment history, I proudly said that I was a jazz trombonist in the US Navy for 7 years. Doesn't that say that I'm smart? I have a creative website with my music on it. I made a database program for the Navy Band music library. I'm smart! But that never seemed to help me very much. They probably couldn't see past my long hair. Maybe they were like "none of that applies here." I don't know. I really don't know.

One day I just had enough of it all. Where were all my friends from high school and the Navy? I thought that if I just sat there long enough in one place, someone would notice and help me out. I stood there for a couple hours. It was cold. No one was going to come. This is really happening to me. The only thing that makes sense is to get back to work. At least the work was good.

Sometimes when I could afford to take the bus to Adriana's and back, I would find myself on the bus with the rush hour crowds. All those people dressed up for work. What do they all do? Boy. And then I would get out my math and start writing. Why isn't this good enough to get a proper meal and a place to sleep? I know that a lot of people have ordinary jobs where they are playing a small roll in the bigger picture. And then I know there are some people crunching the numbers in the engineering behind the scenes. I really only learned one thing from my uncle James. He said "You don't have to go to college to get an education." He was totally on the mark with that one. You may need to go to college to get a job, but you don't need it to get an education. In fact, you can go to college and not get an education. The libraries are a very civil place for homeless people. I have no idea what percentage of homeless people educate themselves, but I imagine the percentage is in the single digits.

The Backend

First of all, I was totally sick of eating the crappy food I could afford with my food stamp card. It was much better than the streets, but I wanted something GOOD! So I got into cooking. I got a few dollars together and went to the bookstore to buy a cookbook. I bought the Everything Indian cookbook. I knew I wanted to cook Indian cuisine. I then bought a mortar and pestle. I spent a good chunk of money buying the ingredients to make a lamb vindaloo and some curried cauliflower, but the spices could be used over and over. I was fine for having just one good meal a month and then eating Top Ramon for the rest of the month. I needed a good meal. So that is how my adventures with cooking took flame.

In early 2005, Sam brought over a spare computer and I ended up ripping the hard drive out of it. It had this security feature where you needed like a foot long screw driver to take it out. I ended up trashing the computer and literally ripping the hard drive out of it. It worked and I put it into my old machine, the one I did all my recordings on.

I was back in business. For some reason, I didn't get back into collision detection. I was interested in coding the backend so that I can make applications that save their state. Choosing a language was next. The LAMP stack had three P languages: PHP, Perl and Python. I didn't know which one to choose and wound up picking PHP. I got a big book on PHP4 from the library.

I had a desk, coffee and a computer. Brianna helped me get an internet connection. It was a DSL connection. It really sucked and I later tracked it down to a shorted wire in the phone jack in the kitchen. After I found that, the connection was solid. I used my FTP program to post files to a server that was running PHP. I was studying around the clock. I added file saving controls to my Laser Grid program first:

That was awesome. I had some problems understanding one of the concepts in the PHP book so I called the author. He answered the phone right away and talked me through it. I was getting confused about a variable called records and one called record. That is typical in back end programming. You loop through records and then do work on each record. Notice the “s” in records. He got me straight with that. I also insisted that the PHP code mysql_fetch_row() was stupid. He argued that it made sense, but right from the beginning there, I made a wrapper for it that turned the whole mysql query result into an array and then looped over that. I've done it that way ever since and most programmers do that as well. I did have some smarts about computers and programming.

Brianna was putting pressure on me to get a job. I was working around the clock on programming and of course I was answering Craigslist ads for work, but I wasn't getting any interviews. I wound up applying at a temporary agency. They got me a job binding books at a real estate office. I wore my suit jacket to the job and was just a machine doing that. It seemed like all the other people my age in the office were standing around doing nothing while I was working my butt off and going home to do another 8 hour shift programming.

I worked the job for 2 days and then asked if they needed me next week. He didn't give me a clear answer. I literally didn't know whether I was supposed to show up on Monday or not. I ended up crashing. I couldn't sleep. I lost a night or two of sleep there. I was stressed out about the whole thing. I ended up hearing voices that told me to cut my wrist with a hand saw. I ended up cutting my wrist on the top side with the hand saw. Just sawing away, but slowly, cautiously. It was two weeks before the Star Wars Revenge of the Sith came out. I don't think I was aware of that, but I was watching some late night talk show programs. I made a pretty good gash in my arm and the neighbor wound up calling the police.

The police took me to 5C again and I wound up staying there for a month again. I was back on medications and trying to do programming on paper again. I made the dot trombone while I was there. I also made a 3d environment like the Star Wars arcade game. You know, that kind of vector 3d game. It was really a nice little engine I wrote.

I was working on my Blinkies! program before the hospital stay. It was another animation application with server side saving like the Laser Grid program but this time with dots. I had it almost done before going to the hospital and it was easy to finish up when I got out.

Brianna was impressed with Blinkies! She knew I was trying. A few months later I tried working for the temp agency again. This time I got a job working in a large building doing data analysis for a class action law firm. They had a large print shop there where they could send off millions of personalized letters. I would do the typical data analysis job of hunting down the edge case claims. I primarily used Excel to do this which I was pretty good at.

I learned a lot of good skills at this job. They had me tracking my working hours (my timesheet) in Excel in 15 minute increments. So if I worked 3.5 hours on one task, I would write the task name in and then highlight 14 cells that were 15 minutes a cell. I still track my hours this way. It's a great thing to track your time like that.

They had a custom backend program that we would query the master database with. And then it would send the results of the query back to us as an Excel sheet. What a great thing! I did enjoy this job.

I was taking the bus to work. It took about 20 minutes to get there. It was just one bus, but there was a 10 block walk from the bus stop. I was doing my programming work on paper on the bus ride. And then I got 30 minutes for a lunch break and would do my programming work on paper in the lunch room. And more work on the bus ride home. I was pretty exhausted when I got home and would typically just have dinner and go to sleep.

I was coding an online Scrabble game. I was trying to make a hand coded window with scroll bars and a list box to make the game work. I was successful at doing that entirely on the bus rides and lunch breaks. I was also working on making a Snood clone. Snood was a great casual game that Jan was addicted to. It was a great game and it was an arcade game that required math and array work.

After 3 or 4 months of working that job, I was getting burned out. I was still hitting the programming pretty hard, and although I enjoyed the data analyst work, I was really an aspiring programmer. I was starting to crash again. I was not taking medication. Brianna and I both saw it coming and decided that I should quit the job. So then I put all my time into Scrabble and Snood. Just after Christmas 2005, I crashed. I was hearing voices again. I had left my little kitten in the park across the busy street because I thought she was a wild animal and wanted to be free. I started wandering around the city and went to an AA meeting.

I wound up walking back home in the rain and I had a message on my machine from the animal shelter saying they had my cat and she had gotten hit by a car. So I started walking to the animal shelter in the cold rain with barely any clothes on. I only knew that the animal shelter was in Troutdale, a good 40 or 50 miles away. The cops picked me up. “What is your name?” I was convinced that these cops were going to hand cuff me and throw me in the river. I froze and couldn't answer, so they hand cuffed me and put me in their car. I was scared they were going to throw me in the river! They wound up taking me to a mental hospital, not 5C this time.

So there I am locked up again. They put me on medication. I didn't do much work this time. I remember making a clown refrigerator magnet there. After about a month, they let me go.

Something had changed this time though. I said to myself “I keep on hearing voices and getting locked up, maybe there is something wrong with me.” I thought I was just putting myself under too much stress studying so hard. I couldn't believe that I could not find entry level work as a programmer. How good do you have to be anyway? After I got out, I quickly finished up my Scrabble and Snood Clones.

Both games were really impressive. Maybe not completely polished, but totally functional. The Scrabble clone was basically Words with Friends 4 years before Words with Friends came out. A few weeks later I ended up getting an interview with Microsoft. They were looking for someone to prototype new Office for Mac features in Flash. It was a 6 month contract for $30,000. I interviewed with them twice over the phone. Both times I played Scrabble with my interviewer while on the phone. They were impressed and it came down to me and one other guy. I didn't get the job. Still, I knew I was on the right track. I didn't need Microsoft to tell me that.

Everyone, my family, my counselors, my friends, were urging me to get on Social Security Disability. I did not want to do that. I'm working my little heart out. I don't want a handout, I just want an entry level job programming. But I kept on ending up in the hospital. I did not want that to happen again. Maybe there was something wrong with me. So I started taking the medication and applied for SSD.

It was hard to work while on the meds. Not impossible, just hard. I told myself that if I can't stay out of the hospital without the meds and I can't do my programming work on the meds, then I guess I am disabled. Anyway. I stayed on the meds and worked through the difficulties. I wound up getting SSD in 3 months and they gave me 14 months of retroactive benefits. They cut me a check for $14,000. Wow, from half a decade being homeless to having $14,000 in my bank account. And $950/month going forward. I remember taking a shower one day and cleaning my butt. And I found a dime up there. What? I've got so much money that it is coming out my ass!

OK, $14,000 a millionaire make does not as Yoda would say. I bought all my recording gear back. A MOTU interface, a Mackie mixing board, speakers, an 88 note MIDI keyboard, a laptop and a trombone. I also bought another Dodge Caravan for $1,200. I still got the HUD voucher for my apartment, but they wanted me to chip in about $250/month now. No problem. At this point, I could have gone back to pursuing a music career again. But I had come so far with programming; I really wanted to do it. So I stuck with it.

... I ended up getting employed as a programmer in 2007. I've enjoyed a decent programming career ever since. I wound up being on SSD for 2 years. Medicare part A lasted for 7 years before it expired.

Fast forward to 2012 for the linear algebra collision detection.

In the beginning of 2012, Patty Bear moved in with me. Patty was a friend of Jilli's mom. She needed a place to stay. Her life had become a train wreck. She called herself a drowned rat. She was just about 60 years old and a life-long alcoholic. Her drug of choice was two 40oz beers. Honestly, she was knocking on deaths door when she moved in. People didn't like her when she drank and I was no exception. She wasn't violent, but she could be obnoxious.

I got to know her and fell in love with her. She began drinking less and less. She's actually quite wonderful when she isn't drunk. She encouraged me to do my music thing, so I started recording more. In the spring of 2012, work was slow at DHX and my freelance clients wanted me back. So I started working from home again.

We got into a happy little groove there. I met Warren online. He draws mazes which is a good counterpart to collision detection. I Googled “The intersection of two lines” to find the math to do a linear algebra collision detection that would work at any angle. I built that up into Maze-ing Earth. There was a bug in it initially where the ball would sometimes stick to a point. I eventually found that there was an incorrect pocket of code and then it became 100%. I started running my own servers so that I could ping them 12 times a second so that you could have multiple people in the maze at the same time so you could race each other. I wound up spending 300 hours on that project. It doesn't look professional, but it is kind of cool. We're still working on making it better.

Many years later...

Collision Detection Part 2

OK, well, let's talk about the collision detection going on in Maze-ing Earth here. I was spot on Googling for “The intersection of two lines.” I had been coming to that idea for years and then it finally just dawned on me that the intersection of two lines is what I needed and then I was quickly in business. Here is my Collision Detection page. Down at the bottom is the intersection of two lines. It looks like this:

The linear algebra I found on the internet was called “slope intersect form.” This example simply makes the lines red if they are intersecting. I also made the equation return where the intersection is if it is intersecting. I realized that with this equation, I can now make a pinball game. Before I became a programmer, I thought one measure of being a good programmer was to be able to code a pinball game from scratch. Well, this is it. I was finally able to do it. This is how it works...

The pinball is round, but the linear algebra collsion detection only works with straight lines. So the simplest way to make the ball is to use a pentagon.

Again, let's say that US is the one in the upper left and THEM is the one in the lower right. We are moving in a direction (angle) at a certain speed (velocity or "v"). Lines have a starting point and an ending point. The pentagon is made from five points. What we do is draw an imaginary line from each point of US at the angle we are moving in and the length of the velocity and then see if that imaginary line intersects with any of the lines of the THEM pentagon. The interesting thing here is that the lines of US cannot intersect with the lines of THEM. Think about it. Any way you try to draw one of the lines of US intersecting with a line of THEM is going to involve one of our points.

If one of our imaginary lines intersects with one of their lines, then we have hit it. But, we also have to detect collisions by drawing imaginary lines from the points on THEM to the lines on US.

To do this, we need to add 180 degrees to the angle. Then the programming logic is the same as for any collision detection. If any of them intersect, we find the closest intersecting one and then move that distance. I have also coded a slide into this collision detection. If we have a collision, then we are sliding along the line we collided with in the angle of that line we collided with. That sounds complicated and I'm sure it took some work to make that slide happen, but the slide is crucial.

Anyway. I find it interesting that we are always detecting points intersecting with lines. Now that we have this collision detection that works at any angle, we can make an elaborate maze or pinball game using lots of straight lines to make curves. For a pinball machine, we simply apply a force of gravity pulling down a little bit each frame we render. Again, I spent about 300 hours making Maze-ing Earth with this. 300 hours in my spare time. It was actually quite a bit of work. We have it working on mobile devices. You tilt the device and the ball moves around the maze. It's pretty cool. We don't have this on the stores. Truthfully, it isn't that fun from a game perspective. Phones are a little small to display a whole playable maze and when you are zoomed in and playing, you are just kind of aimlessly moving around. We have a Flash computer version (Flash is now dead :() where you just drag the ball around with your mouse. It's an older version of it and still has a bug in it that makes the ball stick to points once in a while. And then I've coded the maze part into Unity to make it 3D. That was just a quick experiment. The real Maze-ing Earth experience is the mobile version which we don't have available at the moment. Like I said, it would take another round of work to really make it fun and I just don't have the time/money to invest another round of work into it. Maybe someday.

2020-11-10 I ported this collision detection to javascript a couple years ago. If you want to see it in action, go to the collision-detection page. I also did end up making my Micropede game with it. After I got off the streets, I got interested in server programming with PHP and shelved the collision detection for a few years. I made the Micropede game around 2009. I hired 3 different artists to do about $1,000 work on it, but I wasn't too happy with the results that I got. It still has an unpolished vibe about it, but there is some magic to it! You can download that on the products page.